💡 Inspiration

We wanted a mood tracker that actually helps in the moment, not just a calendar of feelings. Friends said generic tips felt hollow and hard to act on. MOJO turns tiny check-ins into timely, personal support.

🎯 What it does

  • Tracks moods (Happy, Sad, Anxious, Excited), intensity (1-10), and context notes
  • Visualizes trends on a calendar with simple insights
  • Delivers AI-powered, context-aware recommendations (movies/TV, music, activities, cocktails/mocktails)
  • Lets users share and discover helpful ideas in a lightweight community
  • Works mobile-first, privacy-first, with offline logging and gentle reminders

🛠️ How we built it

Frontend

  • Lynx framework for cross-platform development
  • TypeScript/React patterns for type safety and component architecture
  • Rspeedy dev server for fast development and building
  • CSS3 animations and responsive UI design

Backend

  • Python (Flask) for lightweight web framework
  • Flask-CORS for cross-origin resource sharing
  • Marshmallow validation for data serialization
  • JWT auth (PyJWT) for secure authentication
  • bcrypt for password hashing

Data

  • MongoDB (PyMongo) for flexible data storage
  • Collections: users, moods, recommendations, community posts, feedback

AI & External Services

  • OpenRouter API via HTTPX (async) for AI recommendations
  • Fallback templates and rate-limit cooldowns for reliability

Performance & Operations

  • Redis caching for improved performance
  • Environment-based configs for deployment flexibility
  • Biome/Prettier for code quality and formatting
  • Vitest for unit testing

🚧 Challenges we ran into

  • Cold-start personalization before enough history exists
  • Prompt design and safety, including age filters
  • CORS and auth edge cases across web and mobile
  • Timezone handling and backfilling for accurate calendars
  • Network resilience, graceful AI/API degradation, and caching without stale results

🏆 Accomplishments that we're proud of

  • A working end-to-end experience: log → analyze → tailored suggestions → share
  • Privacy-first defaults (hashed credentials, scoped tokens) with clear consent flows
  • Offline-first mood logging with a fast, touch-friendly UI
  • A community feed that turns good ideas into reusable micro-interventions

📚 What we learned

  • Cross-platform UX with Lynx is fast when components are clean and state is minimal
  • Small context clues (notes, time, intensity) dramatically improve recommendations
  • Designing for emotional moments means latency, copywriting, and safety matter as much as code
  • Clear fallbacks make AI features feel dependable, not fragile

🔮 What's next for MOJO

Enhanced Features

  • Deeper analytics: pattern detection, triggers, and "what helps me" insights
  • Voice input and richer journaling (photos, tags)
  • Integrations: Apple/Google Health, calendars, music services

Social & Community

  • Social graph: opt-in friend circles and mood sharing
  • Enhanced community features for better peer support

Technical Improvements

  • GraphQL and microservices to scale read/write paths and experimentation
  • Push reminders and A/B tests to build sustainable check-in habits
  • Advanced analytics to measure impact and user engagement

MOJO transforms mood tracking from passive observation into active emotional support, helping users understand their patterns and discover personalized ways to feel better.

Built With

Share this project:

Updates