Frontend overhaul — routes, auth, brand polish
2026-02-18
Overview
- Large push across two repos:
deariary/frontendanddeariary/brand— 45 commits in the period. Most changes are frontend feature work, layout/design integration, and a bunch of stability/auth fixes. - Focus was on ship-ready UI patterns (header, components, prose styles) and aligning the frontend to backend API shapes and auth flows.
Frontend — routing, journals, and auth
- Restructured journal URLs from flat
/journals/[date]to hierarchical/journals/[year]/[month]/[day]to enable monthly browsing and cleaner semantics. Added a month page with prev/next navigation and date helpers.- Commit: feat: restructure journal routes (adds month page, date helpers, tests).
- Fixed several auth-related race conditions:
- Persist login across browser restarts by restoring session from a refresh token.
- Block rendering during auth refresh to avoid flash redirects.
- Move redirect logic into
useEffectso we don't cause render-time side effects.
- Post-login/registration redirects changed from
/dashboardto/journals(made registration GDPR consent explicit).
Integrations and API resilience
- Added a
/settings/integrationspage with connection management and webhook token UI. - Made the integrations page resilient to backend outages: switched from
Promise.allto per-call fallbacks and show a hardcoded list of known integrations (disconnected) instead of an error screen.- See the integration error-handling commit for details.
Brand & UI system work
- Ported brand design tokens and component styles into the app: fonts, colors, spacing, and 14 reusable components (Button, Input, Card, Toast, Modal, JournalArticle, etc.).
- Extracted inline SVGs to
public/images/for cacheability, added app icons, and brought brand prose/markdown styles into the journal body. - Added visual flourishes: overgrowth flora/weed decorations, serif headings with ink-stroke decoration, dark mode, weekly-summary, time-jump UI — all the brand polish that makes the journal feel like a product rather than a scaffold.
Infra, i18n, tests
- Added i18n with English/Japanese dictionaries and
createTranslator(); converted UI strings and wired language selector into preferences. Tests updated (snapshots adjusted; noted 74/74 tests pass after i18n changes). - Added production deploy workflows (
git-pr-release+ GitHub Release). - Minor fixes: content max-width tweaks, empty-state centering, and syncing missing component CSS from the brand system.
Notes / next
- The integration fallback behavior and auth session handling are important for stability in staging; double-check with backend when origin/OAuth param is consumed.
- Follow up: verify month navigation edge cases and run a quick UX pass on the new AppHeader nav now that
integrationsmoved to a top-level route. - Links to two representative commits:
- AppHeader & shared layout: https://github.com/deariary/frontend/commit/e3762442731178efdd9d1184d4e2b5775f58094c
- Journal routes restructure: https://github.com/deariary/frontend/commit/5a02ee3df322c0137f5b1f77b47c46345dad7d0b