MindBloom is a modern web application designed to be a safe and supportive space for users to focus on their mental well-being. By integrating AI-powered features with proven wellness techniques, the app provides personalized guidance to help users understand their emotions, practice self-reflection, and discover effective self-care strategies.
The primary goal of MindBloom is to empower users on their journey toward better mental health. It aims to provide accessible, engaging, and personalized tools that encourage consistent, positive habits. Whether it's through a moment of quiet reflection, a guided breathing exercise, or discovering a new coping strategy, MindBloom is here to support users every step of the way.
- Daily Check-ins: Users can log their current mood (e.g., Happy, Sad, Anxious) and stress level on a simple scale.
- Mood Visualization: A beautiful chart on the dashboard and history page visualizes mood fluctuations and stress trends over time, helping users identify patterns.
- Detailed Log: A complete history of all past check-ins is available, which can be edited or deleted.
- Personalized Prompts: Based on the user's selected mood, Genkit generates thoughtful and relevant journaling prompts to encourage self-reflection.
- Secure Entries: A rich text editor provides a private space for users to write and save their thoughts.
- Past Entry Review: Users can easily review, edit, or delete their past journal entries.
- Tailored Activities: After a mood check-in, the app uses Genkit to generate a list of personalized self-care activities. Suggestions are tailored to the user's mood, stress level, age, and recent journal entries.
- Activity Details: Users can click on any suggestion to get a detailed, AI-generated guide on how to perform the activity, specifically framed to their current emotional state.
- Multiple Techniques: The app includes several guided breathing exercises like Box Breathing, 4-7-8 Breathing, Belly Breathing, Pursed-Lip Breathing, and Alternate Nostril Breathing.
- Animated Visual Guide: A clean, intuitive animator helps users synchronize their breath with the instructions (inhale, hold, exhale), making the practice easy and effective.
- Email & Google Auth: Users can sign up or log in securely using their email and password or their Google account.
- Personalized Profile: Users can manage their profile information, including their name, date of birth (for age-tailored AI responses), and avatar.
- Personalized Positive Messages: The app generates daily affirmations to help users start their day with a positive mindset.
MindBloom is built with a modern, robust, and scalable tech stack:
- Framework: Next.js 15.3.3 (App Router)
- Language: TypeScript
- UI Components: ShadCN UI (based on Radix UI primitives)
- Styling: Tailwind CSS
- Generative AI: Genkit with Google's Gemini models
- Backend & Database: Firebase (Authentication for users, Firestore for data storage)
- UI Animation: Framer Motion
- Form Handling: React Hook Form with Zod validation
- Data Visualization: Recharts for mood history charts
src/
βββ ai/ # AI integration with Genkit
β βββ flows/ # AI flows for different features
β β βββ generate-activity-details.ts
β β βββ generate-daily-affirmation.ts
β β βββ generate-journaling-prompts.ts
β β βββ generate-self-care-activities.ts
β βββ genkit.ts # Genkit configuration
βββ app/ # Next.js App Router pages
β βββ home/ # Main app pages after login
β β βββ activities/ # Self-care and breathing exercises
β β βββ journal/ # Journaling feature
β β βββ mood/ # Mood tracking and history
β β βββ more/ # Additional features
β βββ register/ # User registration
β βββ page.tsx # Landing page
βββ components/ # Reusable UI components
β βββ ui/ # ShadCN UI components
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions and configurations
βββ firebase.ts # Firebase configuration
βββ utils.ts # Helper functions
- Node.js (v18 or higher)
- npm or yarn
- Firebase account
- Google AI (Gemini) API key
- Clone the repository
git clone https://github.com/SolutionSneeker/MindBloom.git
cd MindBloom- Install dependencies
npm install
# or
yarn install- Set up environment variables
Create a .env file in the root directory with the following variables:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
# Google AI (Gemini) API Key
GENKIT_API_KEY=your_genkit_api_key
- Run the development server
npm run dev
# or
yarn devThe application will be available at http://localhost:9002.
MindBloom uses Google's Gemini models through the Genkit library to provide personalized experiences:
- Journaling Prompts: Generates thoughtful prompts based on the user's mood and age, encouraging meaningful self-reflection.
- Self-Care Activities: Suggests personalized activities tailored to the user's emotional state, stress level, journal content, and age.
- Activity Details: Provides detailed guides for performing self-care activities, with instructions specifically framed to address the user's current emotional needs.
- Daily Affirmations: Creates positive affirmations to start the day, refreshed daily on the dashboard.
Each AI flow is defined in the src/ai/flows/ directory with proper input validation using Zod schemas. The prompts are carefully designed to be supportive, empathetic, and avoid potentially harmful content.
MindBloom uses Firebase for authentication and data storage:
- Authentication: Users can sign up and log in using email/password or Google authentication.
- Firestore Database: Stores user profiles, mood check-ins, journal entries, and other user data.
MindBloom is built with a mobile-first approach, ensuring an optimal experience across all devices:
- Adaptive Layouts: The UI automatically adjusts to different screen sizes, from smartphones to large desktop monitors.
- Touch-Friendly Controls: All interactive elements are sized appropriately for touch input on mobile devices.
- Optimized Navigation: The navigation menu collapses into a hamburger menu on smaller screens.
- Responsive Charts: Data visualizations adjust to maintain readability on all screen sizes.
- Fluid Typography: Text sizes scale proportionally based on viewport width.
- Orientation Support: The app works seamlessly in both portrait and landscape orientations on mobile devices.
The responsive design is implemented using Tailwind CSS's utility classes and ShadCN UI's responsive components, ensuring consistency and performance across all devices.
MindBloom can be deployed to various platforms:
-
Connect Repository
- Link your GitHub, GitLab, or Bitbucket repository to Vercel
- Select the repository containing MindBloom
-
Configure Project
- Set the framework preset to Next.js
- Configure the build settings (usually automatic)
-
Set Environment Variables
- Add all required environment variables from your
.envfile - Ensure all Firebase and Genkit API keys are properly set
- Add all required environment variables from your
-
Deploy
- Click deploy and Vercel will build and deploy your application
- Your app will be available at a Vercel-generated URL
-
Install Firebase CLI
npm install -g firebase-tools
-
Login to Firebase
firebase login
-
Initialize Firebase in your project
firebase init
- Select Hosting
- Choose your Firebase project
- Set public directory to
out - Configure as a single-page app
-
Update Next.js configuration
- Modify
next.config.tsto enable static exports:
module.exports = { output: 'export', // other config options... }
- Modify
-
Build the application
npm run build
-
Deploy to Firebase
firebase deploy
For containerized deployments, a Dockerfile is provided in the repository:
-
Build the Docker image
docker build -t mindbloom . -
Run the container
docker run -p 3000:3000 -e NEXT_PUBLIC_FIREBASE_API_KEY=your_key -e GENKIT_API_KEY=your_key mindbloom
Regardless of deployment method, ensure these environment variables are configured:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
# Google AI (Gemini) API Key
GENKIT_API_KEY=your_genkit_api_key
Contributions to MindBloom are welcome and appreciated! Here's how you can contribute:
-
Fork the Repository
- Create your own fork of the project
- Clone it to your local machine
-
Set Up Development Environment
- Follow the installation steps in the Setup section
- Make sure all dependencies are installed
- Verify that the application runs correctly
-
Create a Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Follow the coding style and patterns used in the project
- Add or update tests as necessary
- Keep changes focused on a single feature or bug fix
-
Test Your Changes
- Run the application locally to verify your changes work
- Ensure all existing tests pass
- Add new tests for new functionality
-
Commit Your Changes
git commit -m "Add feature: your feature description" -
Push to Your Fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Go to the original repository on GitHub
- Click "New Pull Request"
- Select your fork and branch
- Provide a clear description of your changes
- Title: Use a clear and descriptive title
- Description: Explain what your changes do and why they should be included
- Reference Issues: Link to any related issues or discussions
- Screenshots: Include screenshots for UI changes
- Follow TypeScript best practices
- Use meaningful variable and function names
- Write comments for complex logic
- Follow the existing project structure
We appreciate your contributions to making MindBloom better!
This project is licensed under the MIT License - see the LICENSE file for details.
MindBloom stands on the shoulders of these amazing technologies and communities:
- Next.js - The React framework for production that enables server-side rendering and static site generation
- React - A JavaScript library for building user interfaces
- TypeScript - Typed JavaScript at any scale
- Tailwind CSS - A utility-first CSS framework for rapid UI development
- ShadCN UI - Re-usable components built with Radix UI and Tailwind CSS
- Framer Motion - A production-ready motion library for React
- Recharts - A composable charting library built on React components
- Firebase - Google's platform for app development, providing authentication and database services
- Genkit - A framework for building AI-powered applications
- Google Gemini - Google's multimodal AI model that powers the personalized features
- React Hook Form - Performant, flexible and extensible forms with easy-to-use validation
- Zod - TypeScript-first schema validation with static type inference
- To all the open-source contributors whose work makes projects like this possible
- To the mental health professionals whose research and insights inform our approach to wellness
- To our users who provide valuable feedback to help us improve

