Skip to content

A comprehensive personal finance management application built with React Native and Expo, featuring real-time wealth tracking, multi-account management, and smart analytics.

License

Notifications You must be signed in to change notification settings

AlanJumeaucourt/wealth_manager

Repository files navigation

💰 WealthManager

WealthManager Logo

A comprehensive personal finance management platform available as a mobile app and web application, designed to help users take control of their financial lives with powerful features and an intuitive interface.

🌐 Try Web App | 🎯 View Mobile App Showcase | 🐳 Quick Start with Docker

🐳 Docker Setup

Prerequisites

  • Docker
  • Docker Compose

Development Environment

# Start the development environment
docker compose -f docker-compose.dev.yml up

# Populate the database with sample data
docker compose -f docker-compose.dev.yml exec backend python3 /app/test/add_api_fake_data.py --months 12

The development environment will be available at:

Production Environment

# Start the production environment
docker compose -f docker-compose.prod.yml up

# Or with a custom API URL (must be set at build time)
API_URL=https://api.example.com docker compose -f docker-compose.prod.yml up --build

The production environment will be available at:

Demo Setup with Cron

To automatically refresh demo data, you can set up a cron job inside the backend container by adding a configuration to your .env file:

# Add this to your .env file
DEMO_MODE=true
DEMO_CRON_SCHEDULE="0 */2 * * *"
DEMO_MONTHS=48

This configuration will:

  • Enable demo mode with automatic data refresh
  • Run every 2 hours (at minute 0)
  • Generate 4 years (48 months) of sample transaction data
  • Automatically set up the cron job in the backend container on startup

The backend container will detect these environment variables and create the following cron job:

0 */2 * * * python3 /app/test/add_api_fake_data.py --months 48

You can customize the schedule and amount of data generated by modifying the values in the .env file.

Using with Docker Compose

In your production environment, you can enable the demo mode directly in your docker-compose.prod.yml file:

services:
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile.prod
    # ... other configuration ...
    environment:
      - FLASK_ENV=production
      - FLASK_APP=run.py
      - SQLITE_DB_PATH=/app/data/wealth.db
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      # Demo mode configuration
      - DEMO_MODE=true
      - DEMO_CRON_SCHEDULE=0 */2 * * *
      - DEMO_MONTHS=48

Alternatively, you can set these variables in your backend/.env file.

Environment Variables

  • API_URL: URL of the backend API accessible from the users
  • JWT_SECRET_KEY: Secret key for JWT authentication (default: your-secret-key-here)

🎯 Platform Overview

WealthManager is available in two formats, with a showcase website:

📱 Mobile Application (Coming Soon)

Our flagship mobile app built with React Native and Expo, perfect for on-the-go finance management.

Key Features:

  • 📊 Real-time wealth tracking and visualization
  • 💳 Multi-account management with bank integration
  • 📈 Investment portfolio tracking and analysis
  • 💰 Smart budgeting and expense analytics
  • 🔄 Intelligent transaction management

View mobile app showcase

🖥️ Web Application

A full-featured web version offering enhanced visualization and keyboard shortcuts for power users.

Features:

  • 🖥️ Desktop-optimized interface
  • 🚀 Real-time data synchronization
  • 📊 Advanced data visualization
  • ⌨️ Keyboard shortcuts support
  • 🔄 Seamless backend integration

🌐 Showcase Website

A static website demonstrating the mobile app's features and capabilities to potential users.

🚀 Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Bun (for web application)
  • Python 3.12+ (for backend)
  • Expo CLI (for mobile)

Quick Start

  1. Backend:
cd backend
python3 -m venv .venv
source .venv/bin/activate  # or `venv\Scripts\activate` on Windows
pip install -r requirements.txt
SQLITE_DB_PATH=database_directory python3 run.py

You can populate the database with the following command:

BACKEND_URL=http://localhost:5000 python3 backend/test/add_api_fake_data.py --months 12
  1. Web Application:
cd web_application
bun install
VITE_API_URL=http://localhost:5000 bun run dev --host
  1. Mobile App:
cd frontend
bun install
bun run start
  1. Showcase Website:
cd showcase_website
npm install
npm run dev

📚 Documentation

🛠 Development

The project uses GitHub Actions for CI/CD with separate deployment pipelines for:

  • Web Application (/app)
  • Showcase Website (/)
  • Mobile App (Expo)

📦 Import from Firefly III

Import transactions from Firefly III transactions export and some csv file to track investments. (very specific things for the maintainer of this repository)

python3 import_from_firefly.py 2024_10_04_transaction_export.csv --sync --delete-user
python3 import_from_firefly.py csv/alan_cto.csv --investment --investment-account CTO --sync
python3 import_from_firefly.py csv/alan_pea.csv --investment --investment-account PEA --sync

About

A comprehensive personal finance management application built with React Native and Expo, featuring real-time wealth tracking, multi-account management, and smart analytics.

Topics

Resources

License

Stars

Watchers

Forks