v3.0.2 · Features
2 min read
Migrated authentication from Supabase to a custom API backend with JWT + refresh token flow
Problem
Migrated authentication from Supabase to a custom API backend with JWT + refresh token flow
Pain point
Features
Solution
Custom API Backend
• Migrated authentication from Supabase to a custom API backend with JWT + refresh token flow
• Added email OTP login with 6-digit verification code and cooldown timer
Example
• Added OAuth callback page for Google and GitHub login redirects
• Persistent token storage in localStorage with automatic refresh on 401
3-Tier Subscription Plans
• New pricing structure: Free, Pro, and Max plans
• Redesigned pricing drawer with Free banner and Pro/Max side-by-side comparison
• Plan-aware feature gating with typed `Plan` union type
Backend i18n Error Messages
• API errors now carry localized messages (`en`/`zh`) from the backend
• Redemption code errors display in the user's language automatically
Bug Fixes
• Fixed login state lost on page refresh — only clear auth on UNAUTHORIZED, not on network errors or 5xx
• Removed redundant profile fetch in `initializeAuth` that doubled API calls on every page load
Refactor
• Removed `@supabase/supabase-js` dependency and `src/lib/supabase.ts`
• Added `ApiError` class with `getLocalizedMessage()` for i18n error handling
• Removed frontend-maintained redemption error translations (backend-provided now)
• Cleaned up `console.log` in environment validation
Decision Criteria at Bottom Funnel
Bottom-funnel readers are evaluating confidence, switching cost, and output predictability. Generic feature lists are rarely enough.
Content should prioritize decision dimensions: onboarding time, migration friction, and quality consistency.
For "locusify update", define clear evaluation criteria so readers can choose quickly based on their workflow reality.
Comparison Method That Builds Trust
Use one real dataset across tools and compare three metrics: completion time, correction workload, and final publish quality.
A practical baseline flow remains: Custom API Backend • Migrated authentication from Supabase to a custom API backend with JWT + refresh token flow • Added email OTP login with 6-digit verification code and cooldown timer. Keep claims tied to observable process outcomes.
Write conclusions as fit-by-scenario, not absolute winner claims. This increases credibility and conversion quality.
Bottom-Funnel Conversion Actions
End with explicit actions: test run, import real assets, export first version. Concrete actions move decisions forward.
Include risk notes and fallback paths. Balanced framing often converts better than aggressive claims.
Interlink to tutorial and case-study pages to complete the comparison -> trial -> validation loop.
Target keywords
If the update solves your workflow pain point, test it with your next trip album.
Try Locusify with your travel photosFrequently asked questions
What is the fastest way to start with locusify update?
Use one recent trip folder and run the full flow once: import, timeline check, outlier cleanup, and short replay export.
What if some photos do not contain GPS metadata?
Build the core route from geotagged photos first, then place non-geotagged images as chapter visuals instead of route points.
How do I make outputs more shareable on social channels?
Keep runtime concise, start with route overview, highlight key stops, and export directly in the target aspect ratio.
Where does Locusify fit in this workflow?
If the update solves your workflow pain point, test it with your next trip album.
Related articles
v3.2.0 · Features
Add Pricing Drawer for plan management and redemption flow
Read morev3.1.1 · Features
Real-time nearby explorer markers on the map with clustering support
Read morev3.1.0 · Features
Redesigned replay photo panel with polaroid-style ticket cards, tape decorations, and photo filters
Read more