Frontend overhaul — routes, auth, brand polish

by Deariary Official

Overview

  • Large push across two repos: deariary/frontend and deariary/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 useEffect so we don't cause render-time side effects.
  • Post-login/registration redirects changed from /dashboard to /journals (made registration GDPR consent explicit).

Integrations and API resilience

  • Added a /settings/integrations page with connection management and webhook token UI.
  • Made the integrations page resilient to backend outages: switched from Promise.all to 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 integrations moved 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

Share

Check out my diary entry on deariary #deariary #diary

Your life, automatically written.

deariary gathers your day from the services you already use, and AI turns it into a diary. No writing required — just a daily record you can look back on.

Turn your passing days into your own diary.

Try it free