Skip to content

Repository files navigation

Serava App Icon

Serava

AI Support for Your Inner World

A 24/7, privacy-first AI mental wellness companion — mood-aware chat, guided journaling, and mindfulness tools, all in your pocket.

Android Version License Status Play Store

Table of Contents

Problem Statement

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.

Solution Overview

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.

Key Features

Core Features

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.

Engagement Features

  • 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.

System Architecture

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.

Tech Stack

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

Installation

Prerequisites

Before you begin, ensure you have the following installed:

Clone the Repository

git clone https://github.com/MohdAqdasAsim/Serava.git
cd Serava

Install Dependencies

# Mobile app
cd mobile
npm install

# Website (optional)
cd ../website
npm install

Setup Instructions

1. Firebase Setup

  1. Go to the Firebase Console and create a new project named serava-app (or any name you prefer).
  2. Enable Authentication (Email/Password or Anonymous, as appropriate).
  3. Create a Firestore Database in production mode.
  4. Enable Cloud Storage.
  5. Under Project Settings → Your apps, register an Android app with package name com.mohdaqdasasim.serava.
  6. Download google-services.json and place it in the android/app/ directory.
  7. Copy your Firebase config values — you will need them for the .env file.

2. Gemini API Setup

  1. Visit Google AI Studio and create an API key.
  2. Copy the key — you will need it for the .env file.

3. Environment Configuration

cd mobile
cp .env.example .env

Open .env and populate all required fields (see Environment Configuration below).

4. Run the App

# 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 start

Environment Configuration

Create 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 .env file to version control. The .gitignore is pre-configured to exclude it.

Usage Guide

First Launch — Onboarding

  1. Welcome Screen — Tap Get Started or continue as a guest to minimize sign-up friction.
  2. Mood Check-In — Select how you're feeling today using the emoji/slider interface. This immediately personalizes the UI color theme.
  3. 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.
  4. Personalize — Choose Serava's conversation tone (Calm, Cheerful, or Professional) and set your focus areas (anxiety, sleep, self-esteem, etc.).

Daily Routine

  • 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.

Offline Mode

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.

Folder Structure

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.yaml and README.md sit at the root alongside them.

API Overview

Google Gemini API

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.

Firebase Firestore

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(),
});

Emotion Analysis (NLP Libraries)

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 confidence

Deployment Guide

Development Build (Local)

cd mobile
npx expo start          # Start dev server
npx expo run:android    # Build and run on Android

Production Build (Android APK / AAB)

Serava 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

Google Play Store Submission

  1. Download the .aab file from the EAS dashboard.
  2. Go to the Google Play Console.
  3. Create a new release in the Production track (or Internal Testing first).
  4. Upload the .aab, complete the store listing, and submit for review.

Website (Vercel)

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 --prod

Contributing

Contributions 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-name

Please also read our Code of Conduct before contributing.

License

This project is licensed under the MIT License — see LICENSE for details.

Acknowledgements

  • 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.

About

A 24/7, privacy-first AI mental wellness companion — mood-aware chat, guided journaling, and mindfulness tools, all in your pocket.

Topics

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages