MooMinder is a delightful SMS-based mood tracking application that helps users monitor their daily emotions. With a playful cow theme and user-friendly interface, it makes emotional self-awareness fun and accessible.
- 📱 SMS Check-ins: Receive daily mood check-ins via text message at your preferred time
- 🎯 Simple Responses: Reply with one word describing your current emotion
- 📊 Mood Tracking: View your recent emotional responses in a clean, organized interface
- 🔔 Customizable Timing: Choose when you want to receive your daily check-in
- 🎨 Beautiful UI: Clean, modern interface with a fun cow theme
- Frontend: Next.js 14, React, TailwindCSS
- Backend: Next.js API Routes
- Database: Supabase
- SMS Service: Twilio
- Scheduling: node-cron
- Users sign up with their phone number and preferred notification time
- At the specified time, they receive an SMS asking about their mood
- Users respond with one word describing their emotion
- Responses are stored and displayed in a clean interface
- Users can track their emotional patterns over time
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
TWILIO_ACCOUNT_SID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number
Note: Docker must be running to start the local Supabase instance.
Start the local Supabase instance:
npx supabase start
Stop the local instance:
npx supabase stop
Create a new migration:
npx supabase migration new your_migration_name
Apply migrations:
npx supabase migration up
Reset database and rerun all migrations:
npx supabase db reset
If ports are already in use:
- Stop existing instances:
npx supabase stop
- Check port usage:
lsof -i :54323
- Kill processes if needed:
kill -9 <PID>
- Alternatively, modify ports in
supabase/config.toml
Current tables:
-
users
: Stores user information and notification preferencesid
: UUID primary keyphone_number
: Text, uniquenotification_time
: Timetimezone
: Textcreated_at
: Timestamp
-
responses
: Stores mood responsesid
: UUID primary keyuser_id
: UUID foreign keyemotion
: Textcreated_at
: Timestamp
app/components
: React componentsapp/api
: API routesapp/utils
: Utility functionsapp/hooks
: Custom hooksapp/lib
: Reusable codeapp/styles
: Global stylesapp/types
: TypeScript typesapp/config
: Configuration filespublic
: Static assetsutils
: Utility functionsutils/supabase
: Supabase client and server utilities
Deploy the Next.js app:
npm run deploy
- Error Handling: Detailed error messages are provided for debugging
- Security: Uses Supabase for authentication and database
- Performance: Caches responses where appropriate