<HC />
Back to Projects
Full-Stack Web & Mobile DevelopmentActive Development

Reverie

A cross-platform emotional journaling platform that combines mood tracking, AI-powered reflections, memory capsules, analytics, and mindful journaling across web and mobile applications backed by a unified API and database.

Next.js 14React 18React NativeExpo SDK 56Node.jsExpressTypeScriptMongoDB AtlasMongooseZodJWT AuthenticationCloudinaryGoogle Gemini 1.5 FlashNodemailerNode CronTanStack QueryZustandAxiosTailwind CSSTipTapFramer MotionHelmetbcryptjs

Screenshots

Reverie — Onboarding
Onboarding
Reverie — Home Dashboard
Home Dashboard
Reverie — Journal Editor
Journal Editor
Reverie — AI Reflection
AI Reflection

Key Metrics

Web · Android

Monorepo (Backend + Web + Mobile)

JWT Access Tokens · Refresh Token Rotation

Weekly AI Reflections

Overview

Reverie is a private emotional archive that allows users to journal their thoughts, track moods, receive AI-generated weekly reflections, analyze emotional trends, and create time-locked memory capsules. The platform provides a consistent experience across web and mobile devices while maintaining secure authentication and offline capabilities.

Problem

Most journaling applications focus solely on writing entries and fail to provide meaningful reflection, emotional pattern analysis, or long-term engagement mechanisms. Users often lack tools that help them understand and revisit their emotional journey.

Solution

Built a cross-platform journaling ecosystem that combines mood-based entries, AI-generated reflections, analytics dashboards, mood calendars, memory capsules, and offline-first mobile support to create a more meaningful and reflective journaling experience.

Architecture

Three-tier architecture consisting of a TypeScript Express API, a Next.js web application, and an Expo React Native mobile application. MongoDB Atlas serves as the primary database, Cloudinary manages media storage, and Gemini powers AI reflections. Authentication uses JWT access and refresh token rotation with different storage strategies for web and mobile clients. :contentReference[oaicite:0]{index=0}

Challenges

  • Maintaining consistent authentication across web and mobile platforms.
  • Implementing secure refresh token rotation and device tracking.
  • Building reliable offline synchronization for mobile journaling.
  • Creating graceful AI fallback mechanisms when Gemini is unavailable.
  • Managing shared data contracts across three separate application surfaces.
  • Handling state hydration between Zustand and React Query.

Lessons Learned

  • Cross-platform application architecture.
  • Secure authentication and token lifecycle management.
  • Environment validation using Zod.
  • Offline-first mobile development patterns.
  • AI integration and fallback design strategies.
  • Rate limiting and API security practices.
  • Managing shared contracts across web, mobile, and backend systems.
  • Building production-inspired TypeScript applications.

Future Improvements

  • End-to-end encrypted journal entries.
  • Semantic and vector-based journal search.
  • Gamified streak and achievement systems.
  • Reflection history timeline visualization.
  • Shared memory capsules for multiple recipients.
  • Conversational AI reflection assistant.
  • Apple Health and Google Fit integration.
  • Redis caching layer.
  • Automated testing suite.
  • CI/CD pipelines.
  • Docker containerization.

Development Log & Engineering Decisions