A 24/7, privacy-first AI mental wellness companion — mood-aware chat, guided journaling, and mindfulness tools, all in your pocket.
- Problem Statement
- Solution Overview
- Key Features
- System Architecture
- Tech Stack
- Installation
- Setup Instructions
- Environment Configuration
- Usage Guide
- Folder Structure
- API Overview
- Deployment Guide
- Screenshots
- Roadmap
- Contributing
- License
- Acknowledgements
Millions of people experience daily anxiety, loneliness, stress, and burnout — yet access to professional mental health support remains limited by cost, availability, and stigma. Between therapy sessions (or for those who have never attended one), people are left without a safe, non-judgmental space to process their emotions.
Existing mental health apps either feel clinical and cold, offer generic chatbot responses that fail to build real rapport, or lock essential features behind expensive subscription tiers. There is a clear gap for an empathetic, intelligent, always-available companion that respects user privacy and works even without an internet connection.
Serava is a free, AI-powered mental wellness companion designed to be a sanctuary in your pocket. It offers:
- A mood-aware conversational AI that adapts its tone and the app's visual theme to how you're feeling right now.
- A guided self-care suite — journaling prompts, breathing exercises, grounding techniques, and mindfulness tools.
- Personalized memory so the AI grows more contextual and supportive with every session.
- An offline mode that keeps core tools accessible without internet, protecting your privacy and reliability.
- End-to-end encryption with zero third-party data sharing and no ads — ever.
Serava bridges the gap between daily emotional struggles and professional support, providing a compassionate first layer of care for college students, remote workers, and anyone navigating stress and anxiety.
| Feature | Description |
|---|---|
| Mood-Aware Chat | AI detects emotional cues from your text and adapts its responses and the UI color palette to your current mood. |
| Emotionally Intelligent AI | Powered by Google Gemini with personalized memory — the AI recalls your past conversations, triggers, and coping history. |
| Dynamic Theming | UI colors, fonts, and animations shift in real time based on your emotional state (e.g., warmer hues during anxiety, cooler tones when calm). |
| Mindfulness & Journaling | Guided journal prompts, grounding exercises, breathing tools, and focus techniques. |
| Self-Care Toolbox | Breathwork, motivational tools, and varied coping strategies beyond conversation. |
| Offline Mode | Core journaling and mindfulness features work fully without an internet connection. |
| Privacy & Security | All data encrypted in transit. No third-party sharing. No ads. No in-app purchases. |
- Mood Tracking — Log and visualize your emotional trends over time.
- Optional Voice Input — Hands-free interaction via speech-to-text (powered by Mozilla DeepSpeech).
- Daily Check-In Prompts — Gentle reminders to maintain your emotional wellness routine.
Key architectural principles:
- Modular layers — AI chat, content, and community modules evolve independently.
- Serverless backend — Firebase scales automatically without dedicated server management.
- Offline-first core — Essential tools are pre-cached locally; cloud sync happens when connected.
- Privacy-by-design — Data encryption enforced at transport and storage layers.
| Layer | Technology |
|---|---|
| Mobile Framework | React Native (Expo) |
| Language | TypeScript |
| AI / LLM | Google Gemini API |
| Emotion Detection | NLP Emotion Libraries (open source) |
| Backend | Firebase (Auth, Firestore, Cloud Storage) |
| Local Storage | AsyncStorage |
| Voice Input | Mozilla DeepSpeech |
| Website Hosting | Vercel |
| CI/CD & Build | Expo EAS Build |
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher recommended)
- npm or yarn
- Expo CLI —
npm install -g expo-cli - Android Studio (for Android emulator) or a physical Android device (Android 7.0+)
- A Firebase project (free tier is sufficient)
- A Google Gemini API key
git clone https://github.com/MohdAqdasAsim/Serava.git
cd Serava# Mobile app
cd mobile
npm install
# Website (optional)
cd ../website
npm install- Go to the Firebase Console and create a new project named
serava-app(or any name you prefer). - Enable Authentication (Email/Password or Anonymous, as appropriate).
- Create a Firestore Database in production mode.
- Enable Cloud Storage.
- Under Project Settings → Your apps, register an Android app with package name
com.mohdaqdasasim.serava. - Download
google-services.jsonand place it in theandroid/app/directory. - Copy your Firebase config values — you will need them for the
.envfile.
- Visit Google AI Studio and create an API key.
- Copy the key — you will need it for the
.envfile.
cd mobile
cp .env.example .envOpen .env and populate all required fields (see Environment Configuration below).
# From the mobile/ directory
cd mobile
# Start the Expo development server
npx expo start
# Run on Android emulator
npx expo run:android
# Run on physical device (scan QR code with Expo Go app)
npx expo startCreate a .env file in the project root. See .env.example for a template.
| Variable | Description | Required |
|---|---|---|
GEMINI_API_KEY |
Google Gemini API key for AI chat functionality | ✅ Yes |
FIREBASE_API_KEY |
Firebase project API key | ✅ Yes |
FIREBASE_AUTH_DOMAIN |
Firebase authentication domain | ✅ Yes |
FIREBASE_PROJECT_ID |
Firebase project ID | ✅ Yes |
FIREBASE_STORAGE_BUCKET |
Firebase storage bucket URL | ✅ Yes |
FIREBASE_MESSAGING_SENDER_ID |
Firebase Cloud Messaging sender ID | ✅ Yes |
FIREBASE_APP_ID |
Firebase application ID | ✅ Yes |
DEEPSPEECH_MODEL_PATH |
Path to local DeepSpeech model (voice input) | ❌ Optional |
Security Note: Never commit your
.envfile to version control. The.gitignoreis pre-configured to exclude it.
- Welcome Screen — Tap Get Started or continue as a guest to minimize sign-up friction.
- Mood Check-In — Select how you're feeling today using the emoji/slider interface. This immediately personalizes the UI color theme.
- Tutorial — A 3–4 step interactive overlay introduces the core features: Chat, Journal, and Tools. Serava is clearly labeled as an AI assistant, not a therapist.
- Personalize — Choose Serava's conversation tone (Calm, Cheerful, or Professional) and set your focus areas (anxiety, sleep, self-esteem, etc.).
- Dashboard — Opens to today's mood check-in widget, quick links to favorite tools, and a daily challenge.
- Chat — Tap Talk with Serava to begin a conversation. The AI greets you by name, references your past sessions, and suggests coping exercises based on detected sentiment.
- Journal — Access guided journal prompts tailored to your current mood.
- Mindfulness Tools — On-demand breathing exercises, grounding techniques, and focus tools.
- Mood Trends — View charts of your emotional patterns over days and weeks.
Core features (journaling, breathing exercises, and mindfulness tools) are available without an internet connection. The app will sync data to Firebase when connectivity is restored.
Serava/
├── mobile/ # React Native mobile app (Expo)
│ ├── app/ # Expo Router screens and navigation
│ ├── assets/ # Images, fonts, and static media
│ ├── components/ # Reusable UI components
│ ├── constants/ # App-wide constants (colors, config, etc.)
│ ├── hooks/ # Custom React hooks
│ ├── scripts/ # Build and utility scripts
│ ├── app.json # Expo app configuration
│ ├── babel.config.js # Babel transpiler configuration
│ ├── eslint.config.js # ESLint rules for the mobile app
│ ├── expo-env.d.ts # Expo TypeScript environment declarations
│ ├── global.css # Global styles (NativeWind / Tailwind)
│ ├── metro.config.js # Metro bundler configuration
│ ├── nativewind-env.d.ts # NativeWind TypeScript declarations
│ ├── package.json # Mobile app dependencies
│ ├── tailwind.config.js # Tailwind / NativeWind configuration
│ └── tsconfig.json # TypeScript configuration (mobile)
│
├── website/ # Companion web app (Vite + React)
│ ├── public/ # Static public assets
│ ├── src/ # Web app source code
│ ├── index.html # HTML entry point
│ ├── eslint.config.js # ESLint rules for the web app
│ ├── global.css # Global web styles
│ ├── package.json # Web app dependencies
│ ├── vite.config.ts # Vite build configuration
│ ├── tsconfig.json # Base TypeScript configuration (web)
│ ├── tsconfig.app.json # App-specific TypeScript configuration
│ ├── tsconfig.node.json # Node-specific TypeScript configuration
│ └── README.md # Web app-specific notes
│
├── docs/ # Additional project documentation
├── logo.png # Official Serava logo asset
├── metadata.yaml # Project metadata (version, stack, roadmap)
├── CHANGELOG.md # Version history and release notes
├── CONTRIBUTING.md # Contribution guidelines for developers
├── CODE_OF_CONDUCT.md # Community standards and conduct policy
└── README.md # This file
Key conventions:
- Mobile app code lives entirely under
mobile/— all Expo/React Native work happens here. - The companion website is isolated under
website/with its own dependencies and build pipeline. - All project-wide governance files (
CHANGELOG,CONTRIBUTING,CODE_OF_CONDUCT) live at the root for immediate GitHub discoverability. metadata.yamlandREADME.mdsit at the root alongside them.
Used for the core AI chat and mood-aware response generation.
// Example: Sending a message to Gemini
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const result = await model.generateContent(userMessage);
const response = result.response.text();Rate limits and pricing: See Google AI pricing. The free tier is sufficient for development.
Used for encrypted storage of user data, mood logs, and chat history.
// Example: Saving a mood log entry
import { db } from './services/firebase';
import { collection, addDoc, serverTimestamp } from 'firebase/firestore';
await addDoc(collection(db, 'moodLogs'), {
userId: currentUser.uid,
mood: 'anxious',
note: 'Feeling stressed about upcoming deadline',
timestamp: serverTimestamp(),
});Local NLP library used to detect emotional tone from user input and drive dynamic theming.
// Example: Detecting emotion from text
import { analyzeEmotion } from './services/emotionAnalysis';
const { emotion, score } = analyzeEmotion(userInputText);
// emotion: 'anxious' | 'calm' | 'sad' | 'happy' | 'neutral'
// score: 0.0 – 1.0 confidencecd mobile
npx expo start # Start dev server
npx expo run:android # Build and run on AndroidSerava uses Expo EAS Build for production builds.
# Install EAS CLI
npm install -g eas-cli
# Log in to Expo
eas login
# From the mobile/ directory
cd mobile
# Configure the build
eas build:configure
# Build for Android (generates .aab for Play Store)
eas build --platform android
# Build a standalone APK (for sideloading / testing)
eas build --platform android --profile preview- Download the
.aabfile from the EAS dashboard. - Go to the Google Play Console.
- Create a new release in the Production track (or Internal Testing first).
- Upload the
.aab, complete the store listing, and submit for review.
The companion website lives in website/ and is deployed on Vercel.
cd website
npm run build # Build with Vite
# Or deploy via Vercel CLI
npm install -g vercel
vercel --prodContributions are welcome and appreciated! Please read CONTRIBUTING.md for full guidelines.
Quick start:
# Fork the repository, then clone your fork
git clone https://github.com/YOUR_USERNAME/Serava.git
cd Serava
# Create a feature branch
git checkout -b feature/your-feature-name
# Make your changes, then commit
git commit -m "feat: add your feature description"
# Push and open a pull request
git push origin feature/your-feature-namePlease also read our Code of Conduct before contributing.
This project is licensed under the MIT License — see LICENSE for details.
- Google Gemini API — for powering Serava's emotionally intelligent AI conversations.
- Firebase — for the robust, scalable backend infrastructure.
- Mozilla DeepSpeech — for the open-source voice-to-text model.
- React Native & Expo — for the cross-platform mobile development framework.
- The open-source mental health and NLP community — for the emotion analysis libraries and research that informed this project.
- Early users and testers — whose feedback has been invaluable in shaping Serava's direction.
Serava is built by Mohd Aqdas Asim
Website · Play Store · Instagram
Remember: Serava is an AI assistant and is not a substitute for professional mental health care. If you are in crisis, please contact a qualified mental health professional or a crisis helpline.