A playful neo-brutalist mood tracker and podcast scrapbook that helps you notice, name, and nurture your feelings.
Moodify combines journaling with sentiment analysis to provide personalized mental health resources. Users can track their emotional journey, discover curated content, and explore community-shared podcast recommendations—all in a vibrant, accessible interface.
- 📝 Mood Journaling - Write daily entries with automatic sentiment analysis
- 📊 Emotional Dashboard - Visualize mood trends over time with interactive charts
- 🎯 Smart Resource Matching - Get articles, videos, and podcasts based on your current mood
- 🎙️ Community Podcast Scrapbook - Explore mental health podcasts curated by the community
- 🆘 Crisis Resources - Quick access to verified emergency hotlines and support services
- 💬 Peer Stories - Read and share anonymous mental health experiences
Frontend:
- Next.js 14 (App Router), React with Hooks, TailwindCSS (Neo-brutalist design), Chart.js for data visualization
Backend:
- Next.js API Routes, MongoDB with Mongoose, VADER Sentiment Analysis
Scraping & Data:
- Cheerio for web scraping, Axios for HTTP requests, RSS feed parsing for podcasts
- Node.js 18+ and npm
- MongoDB database (local or Atlas)
- Clone the repository
git clone https://github.com/your-username/moodify.git
cd moodify- Install dependencies
npm install- Set up environment variables
# Create .env.local file
MONGODB_URI=mongodb://localhost:27017/moodify
# or use MongoDB Atlas connection string- Run the development server
npm run dev- Populate initial data (one-time setup)
# Visit http://localhost:3000 and add this button temporarily to page.js:
# <button onClick={() => fetch('/api/resources/scrape', {method: 'POST'})}>
# Scrape Resources
# </button>- Open your browser
http://localhost:3000
src/
├── app/
│ ├── api/ # API routes (journal, resources, stories, emergency)
│ ├── components/ # React components (forms, dashboards, panels)
│ ├── globals.css # Tailwind + Neo-brutalist styles
│ └── page.js # Home page
├── lib/
│ ├── scrapers/ # Web scraping (articles, podcasts, videos)
│ ├── utils/ # Helpers (sentiment matching, tagging)
│ └── dbconnect.js # MongoDB connection
└── models/ # Mongoose schemas (JournalEntry, Resource, etc.)
- Journal - Write entries, get automatic mood analysis
- Dashboard - View emotional trends over time
- Resources - Discover mood-matched content (articles, videos, podcasts)
- Community - Browse podcast scrapbook and peer stories
- Crisis Support - Access emergency hotlines anytime
- User authentication and personalized profiles
- Scheduled scraping with cron jobs for fresh content
- Therapist/counselor directory integration
- Mobile app (React Native)
- Social features (follow friends, share entries)
- AI chatbot for immediate emotional support
- Dark mode toggle
- Multi-language support
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.