Remember scrolling through your feed at 2 AM, feeling anxious, and the algorithm keeps showing you success stories that make you feel worse? Yeah, me too. Thatβs exactly why I built MoodFeed.
The Problem Nobodyβs Talking About
Social media feeds are dumb. They think because you liked one post about productivity, you want to see 50 more. They donβt care if youβre having the worst day of your life or celebrating a major win. Same content, different mood, wrong vibe.
I spent three months building something different. A feed that actually adapts to how youβre feeling right now. Not what you liked yesterday. Not what your demographic usually engages with. But what YOU need in THIS moment.
What Makes MoodFeed Different?
The app does something simple but powerful: it asks hoβ¦
Remember scrolling through your feed at 2 AM, feeling anxious, and the algorithm keeps showing you success stories that make you feel worse? Yeah, me too. Thatβs exactly why I built MoodFeed.
The Problem Nobodyβs Talking About
Social media feeds are dumb. They think because you liked one post about productivity, you want to see 50 more. They donβt care if youβre having the worst day of your life or celebrating a major win. Same content, different mood, wrong vibe.
I spent three months building something different. A feed that actually adapts to how youβre feeling right now. Not what you liked yesterday. Not what your demographic usually engages with. But what YOU need in THIS moment.
What Makes MoodFeed Different?
The app does something simple but powerful: it asks how youβre feeling (or detects it through your camera), then curates content that matches or improves that mood. Feeling stressed? Here are calming memes and chill videos. Pumped up? Motivational content and hype music. Heartbroken? Weβve got wholesome stories and comfort food recipes.
But hereβs the kickerβit learns. The more you use it, the better it gets at understanding your emotional patterns. It knows you prefer dark humor when youβre down, or that nature videos calm your anxiety better than meditation content.
The Tech Behind the Magic
I built this entirely with Flutter because I wanted one codebase for iOS, Android, and potentially web. No React Native drama, no separate teams. Just clean, fast, beautiful Flutter.
The Stack
Frontend: Flutter (obviously) with Provider for state management and dio for HTTP requests. I kept it simple because complexity kills side projects.
Backend: Node.js with Express because itβs fast to prototype and scales well. MongoDB for the databaseβperfect for storing user preferences and content metadata without rigid schemas.
AI Integration: This is where it gets interesting. Iβm using OpenAIβs API for sentiment analysis on user input and Hugging Face models for facial emotion detection. The content tagging system uses a combination of pre-labeled data and real-time analysis.
Infrastructure: Docker containers for everything, deployed on AWS with CloudFront for CDN. Nothing fancy, just reliable.
System Architecture: Keeping It Real
Iβm not going to pretend this is some enterprise-grade system with microservices and Kubernetes. Itβs a clean three-tier architecture that actually makes sense:
βββββββββββββββββββββββββββββββββββββββ
β Flutter Mobile App β
β (iOS, Android, Web - One Codebase) β
βββββββββββββββ¬ββββββββββββββββββββββββ
β
β REST API / WebSocket
β
βββββββββββββββΌββββββββββββββββββββββββ
β Express.js Server β
β β’ Auth & User Management β
β β’ Content Aggregation Engine β
β β’ Mood Processing Pipeline β
β β’ Real-time Mood Updates β
βββββββββββββββ¬ββββββββββββββββββββββββ
β
ββββββ΄βββββ
β β
ββββββββββΌβββ ββββΌβββββββββββ
β MongoDB β β AI Services β
β Database β β β’ OpenAI β
βββββββββββββ β β’ HuggingFaceβ
ββββββββββββββββ
The flow is dead simple:
- User opens app β mood check (manual selection or camera)
- Mood data sent to backend β AI processes emotion
- Content engine queries database β filters by mood tags
- Personalized feed sent back β user gets exactly what they need
Folder Structure: No BS Organization
I hate messy codebases. Hereβs how I organized the Flutter project:
moodfeed/
βββ lib/
β βββ main.dart
β βββ config/
β β βββ theme.dart
β β βββ routes.dart
β β βββ constants.dart
β βββ core/
β β βββ api/
β β β βββ api_client.dart
β β β βββ endpoints.dart
β β βββ models/
β β β βββ user_model.dart
β β β βββ mood_model.dart
β β β βββ content_model.dart
β β β βββ feed_item_model.dart
β β βββ utils/
β β βββ mood_detector.dart
β β βββ camera_helper.dart
β βββ features/
β β βββ auth/
β β β βββ screens/
β β β β βββ login_screen.dart
β β β β βββ signup_screen.dart
β β β βββ widgets/
β β β βββ providers/
β β β βββ auth_provider.dart
β β βββ mood/
β β β βββ screens/
β β β β βββ mood_selector_screen.dart
β β β β βββ mood_camera_screen.dart
β β β βββ widgets/
β β β β βββ mood_card.dart
β β β β βββ emotion_indicator.dart
β β β βββ providers/
β β β βββ mood_provider.dart
β β βββ feed/
β β β βββ screens/
β β β β βββ home_feed_screen.dart
β β β β βββ content_detail_screen.dart
β β β βββ widgets/
β β β β βββ feed_card.dart
β β β β βββ video_player_widget.dart
β β β β βββ meme_viewer.dart
β β β βββ providers/
β β β βββ feed_provider.dart
β β βββ profile/
β β βββ screens/
β β β βββ profile_screen.dart
β β β βββ mood_stats_screen.dart
β β βββ widgets/
β β βββ mood_chart.dart
β β βββ stats_card.dart
β βββ shared/
β βββ widgets/
β β βββ custom_button.dart
β β βββ loading_indicator.dart
β βββ theme/
β βββ app_colors.dart
βββ assets/
β βββ images/
β βββ icons/
β βββ animations/
βββ test/
βββ pubspec.yaml
Backend structure is equally clean:
moodfeed-backend/
βββ src/
β βββ config/
β β βββ database.js
β β βββ environment.js
β βββ models/
β β βββ User.js
β β βββ Content.js
β β βββ MoodLog.js
β βββ routes/
β β βββ auth.routes.js
β β βββ mood.routes.js
β β βββ feed.routes.js
β β βββ user.routes.js
β βββ controllers/
β β βββ authController.js
β β βββ moodController.js
β β βββ feedController.js
β βββ services/
β β βββ aiService.js
β β βββ contentService.js
β β βββ recommendationEngine.js
β βββ middleware/
β β βββ auth.middleware.js
β β βββ errorHandler.js
β βββ utils/
β βββ logger.js
β βββ validators.js
βββ tests/
βββ package.json
βββ server.js
The UI/UX Philosophy: Less is More
Iβm tired of apps that assault your eyes with gradients and animations. MoodFeedβs design is brutally simple:
Color Psychology: Each mood has a subtle color theme. Not in-your-face, just enough to create the right atmosphere. Calm blues for relaxation, warm oranges for energy, soft purples for reflection.
Micro-interactions: Every tap, swipe, and scroll feels intentional. No random animations that slow you down. Just smooth, purposeful transitions that guide you through the experience.
Content-First: The UI gets out of the way. Large, readable cards with clear typography. No clutter, no distractions. Your mood content is the star.
Dark Mode by Default: Because most people use this app late at night, and nobody wants to be flashbanged by a white screen at 1 AM.
Features That Make People Come Back
1. Mood Camera
Open the camera, look at your phone for 3 seconds, and the AI detects your emotion. No typing, no selections. It uses facial landmarks and expression analysis to determine if youβre happy, sad, stressed, or neutral. Sounds creepy, feels magical.
2. Mood Journal
Every time you log a mood, itβs saved with timestamp and context. Over time, you get insights like βYouβre usually stressed on Monday morningsβ or βNature content improves your mood by 40%.β Itβs like therapy, but cheaper.
3. Smart Content Mix
The algorithm doesnβt just show you one type of content. It creates a balanced mixβsome matching your mood, some to gently shift it, and occasional surprises to keep things interesting. Because staying sad isnβt healthy, and being hyped 24/7 isnβt realistic.
4. Social Sharing Without the Pressure
You can share your daily mood statsβnot the content itself. Itβs a conversation starter without the performative pressure of regular social media. βHad an 80% calm dayβ hits different than βLook at my perfect life.β
5. Offline Mode
Downloaded content stays available offline. Because bad moods donβt wait for good WiFi.
The Challenges Nobody Warns You About
Content Moderation: Building a mood-based feed means you CANNOT mess this up. Showing triggering content to someone in a vulnerable state can be harmful. I spent weeks implementing safety filters and content warnings.
Privacy Concerns: People are weird about facial analysis. I made everything opt-in, with clear explanations. The camera feature is optionalβmanual mood selection works just fine.
Content Licensing: You canβt just scrape the internet for memes. I built partnerships with content creators and used APIs from platforms that allow redistribution. Legal stuff is boring but necessary.
AI Accuracy: Emotion detection isnβt perfect. The model gets it wrong sometimes. I added a βThis isnβt rightβ button so users can correct it, which also helps train the model.
Performance Optimizations That Matter
Flutter is fast, but you can still screw it up. Hereβs what I did:
- Lazy loading: Feed items load as you scroll. Never load everything at once like an amateur.
- Image caching: Using cached_network_image package. Load once, cache forever.
- Video optimization: Videos start at low quality, upgrade as they buffer. Nobody notices, everyoneβs happy.
- State management efficiency: Provider updates only what needs updating. No unnecessary rebuilds.
Monetization (Because Servers Arenβt Free)
I hate ads as much as you do. MoodFeed uses a freemium model:
Free tier: 50 mood checks per month, basic feed Premium ($4.99/month): Unlimited checks, advanced analytics, custom mood categories, priority content
The conversion rate sits around 8%, which is solid for a consumer app. Turns out people will pay for something that genuinely helps them.
Whatβs Next?
The roadmap is ambitious but focused:
Q1 2025: Apple Watch integration for quick mood logging Q2 2025: Group mood circlesβshare vibes with close friends Q3 2025: AI-generated personalized content based on mood patterns Q4 2025: Therapist integration for users who want professional support
Lessons Learned (The Real Ones)
1. Start with MVP: My first version had 1/10th of current features. Ship fast, iterate faster.
2. User feedback is gold: Half my best features came from users DMing me suggestions.
3. AI isnβt magic: Itβs a tool. The real magic is how you apply it to solve real problems.
4. Design matters more than you think: I rebuilt the UI three times. The difference between good and great is those tiny details.
5. Mental health tech is sensitive: Be responsible. Add disclaimers. Partner with professionals. Donβt overpromise.
Want to Build This?
The full codebase isnβt open source yet (still deciding), but Iβve written detailed docs on my approach. The tech stack I mentioned isnβt the only wayβyou could swap Flutter for React Native, MongoDB for PostgreSQL, OpenAI for local models. The core concept matters more than the tools.
If youβre building something in this space, hit me up. Iβm always down to chat about mood tech, AI applications, or why Flutter is superior to React Native (fight me).
Final Thoughts
Building MoodFeed taught me that the best apps solve real problems, not imaginary ones. Social media makes people feel worse, not better. We can do better. We should do better.
This isnβt about creating another dopamine slot machine. Itβs about using technology to actually understand and support peopleβs emotional needs. If I can help even a few thousand people have better days through better content, thatβs a win.
The appβs live on both stores. Go check it out, break it, tell me what sucks. Thatβs how we make it better.
Thatβs a wrap π
Now go touch some code π¨βπ»