Stellar Mood is a full-stack web application that provides a unique space-themed approach to mood tracking and personal journaling. The application combines mood logging with mission logs (journal entries) and provides analytics to help users understand their emotional patterns over time. Built with a React frontend and Express backend, it features a cosmic aesthetic with planet-based mood selection and stardate timestamping.
Preferred communication style: Simple, everyday language.
January 26, 2025:
- Created comprehensive code documentation in
CODE_DOCUMENTATION.md - Fixed mobile horizontal scrolling issues with viewport constraints
- Removed icons from analytics cards (kept fire icon for cosmic streak only)
- Enhanced mobile navigation with icon-only display on small screens
- Applied global CSS fixes for mobile responsiveness
- Framework: React 18 with TypeScript
- Routing: Wouter for client-side routing
- State Management: TanStack Query (React Query) for server state
- UI Framework: shadcn/ui components built on Radix UI primitives
- Styling: Tailwind CSS with custom space theme
- Build Tool: Vite for development and production builds
- Framework: Express.js with TypeScript
- Module System: ES Modules
- API Design: RESTful API with JSON responses
- Database: PostgreSQL with Drizzle ORM
- Database Provider: Neon Database (@neondatabase/serverless)
- Development: In-memory storage fallback for development
- Development: Vite dev server with Express backend
- Production: Static assets served by Express
- Build Process: Vite builds frontend, esbuild bundles backend
- Replit Integration: Custom Vite plugins for Replit environment
- Users: Authentication and user management
- Moods: Mood entries with intensity ratings and notes
- Mission Logs: Journal entries supporting text and voice recordings
- Voice Recordings: Audio data associated with mission logs
- Dashboard: Overview with quick mood entry and recent logs
- Mood Tracker: Detailed mood logging with planet selector
- Mission Log: Journal entry creation and management
- Analytics: Mood trends and statistics visualization
- Planet Selector: Visual mood selection using space-themed planets
- Voice Recorder: Audio recording functionality for mission logs
- Mood Calendar: Calendar view of mood history
- Mission Log Entry: Individual journal entry display and editing
- Stardate System: Custom timestamp format mimicking Star Trek
- Space Theme: Cosmic background with animated stars and planets
- Mood Guidance: Contextual suggestions based on selected moods
- Voice Integration: Audio recording capabilities for journal entries
- User selects mood from planet-based interface
- User sets intensity level and optional note
- Data sent to
/api/moodsendpoint with stardate - Real-time updates via React Query invalidation
- Analytics automatically recalculated
- User creates text or voice-based journal entry
- Voice recordings processed through Web Audio API
- Entry saved to
/api/mission-logswith status tracking - Entries displayed with edit/delete capabilities
- Audio playback functionality for voice entries
- Server aggregates mood and log data
- Calculates statistics like streaks and averages
- Mood distribution analysis
- Predominant mood identification
- Real-time dashboard updates
- @tanstack/react-query: Server state management
- drizzle-orm: Type-safe database operations
- @neondatabase/serverless: PostgreSQL database connection
- wouter: Lightweight React router
- date-fns: Date manipulation and formatting
- @radix-ui/*: Accessible component primitives
- class-variance-authority: Component variant management
- tailwindcss: Utility-first CSS framework
- clsx: Conditional class name utility
- Web Audio API: Browser-native audio recording
- MediaRecorder API: Audio data capture and processing
- vite: Build tool and dev server
- tsx: TypeScript execution for development
- esbuild: Fast JavaScript bundler for production
- users: User authentication (id, username, password)
- moods: Mood entries (id, userId, mood, intensity, note, date, stardate)
- mission_logs: Journal entries (id, userId, title, content, status, entryType, audioData, audioDuration, stardate, createdAt)
- voice_recordings: Audio data (id, missionLogId, audioData, duration, createdAt)
- Users have many moods and mission logs
- Mission logs can have associated voice recordings
- All entries timestamped with both regular dates and stardates
Currently implements demo mode with hardcoded user ID for development. The schema supports full user authentication with username/password, ready for implementation of proper auth flows.
- React Query handles caching and background updates
- Drizzle ORM provides type-safe, efficient database queries
- Vite's hot module replacement for fast development
- Audio data stored as base64 strings (suitable for demo, may need optimization for production)
- In-memory storage fallback ensures development without database setup
The application features a comprehensive space aesthetic including:
- Animated star field background
- Planet-themed mood selection with hover effects
- Cosmic color palette with nebula-inspired gradients
- Stardate timestamp system
- Space-themed terminology throughout the UI
- Floating animations and glow effects for interactive elements