Skip to content

Egv2/neu-mood-tracker

Repository files navigation

Neu Mental Health App

A cross-platform mobile application for mental health tracking and mood management. Built with React Native, Expo, and TypeScript.

Features

  • Mood Tracking - Record your daily mood on a scale of 1-10
  • Tags & Notes - Add context with tags (work, family, health, etc.) and personal notes
  • Statistics - View your mood trends over time with 7-day and 30-day averages
  • Reminders - Set daily reminders to track your mood consistently
  • Local Storage - All data is stored locally using SQLite for privacy
  • Modern UI - Clean, intuitive interface with dark mode support

Tech Stack

  • React Native - Cross-platform mobile framework
  • Expo - Development platform and tooling
  • Expo Router - File-based routing
  • TypeScript - Type-safe development
  • SQLite - Local database storage
  • Zustand - State management
  • TanStack Query - Data fetching and caching
  • NativeWind - Tailwind CSS for React Native
  • Lucide React Native - Icon library

Prerequisites

  • Node.js 18+ (install with nvm)
  • pnpm (install pnpm)
  • iOS Simulator (for iOS development) or Android Studio (for Android development)
  • Expo Go app (for testing on physical devices)

Installation

  1. Clone the repository

    git clone <YOUR_GIT_URL>
    cd neu
  2. Install dependencies

    pnpm install
  3. Start the development server

    pnpm start
  4. Run on your device

    • Press i for iOS Simulator
    • Press a for Android Emulator
    • Scan QR code with Expo Go app on your phone

Development

Available Scripts

  • pnpm start - Start Expo development server
  • pnpm start-web - Start web development server
  • pnpm android - Run on Android
  • pnpm ios - Run on iOS
  • pnpm lint - Run ESLint
  • pnpm prebuild - Generate native projects

Project Structure

├── app/                    # Expo Router screens
│   ├── (tabs)/            # Tab navigation
│   │   ├── index.tsx      # Home screen
│   │   ├── stats.tsx      # Statistics screen
│   │   ├── reminders.tsx  # Reminders screen
│   │   └── settings.tsx   # Settings screen
│   ├── mood-input.tsx     # Mood input screen
│   └── onboarding.tsx     # Onboarding flow
├── src/
│   ├── components/        # Reusable components
│   ├── screens/           # Screen components
│   ├── hooks/             # Custom React hooks
│   ├── storage/           # Database and storage logic
│   ├── theme/             # Theme configuration
│   └── utils/             # Utility functions
├── constants/             # App constants
└── app.json              # Expo configuration

Building for Production

iOS

# Install EAS CLI
pnpm add -g @expo/eas-cli

# Configure project
eas build:configure

# Build for iOS
pnpm run build:ios

# Submit to App Store
eas submit --platform ios

Android

# Build for Android
pnpm run build:android

# Submit to Google Play
eas submit --platform android

Web

# Build for web
pnpm run build:web

# Deploy (example with Vercel)
vercel deploy

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

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

Privacy

All data is stored locally on your device. No data is sent to external servers. Your privacy is our priority.

Support

If you encounter any issues or have questions, please open an issue on GitHub.


Made with ❤️ for better mental health tracking