An open API service indexing awesome lists of open source software.

https://github.com/alanjumeaucourt/wealth_manager

A comprehensive personal finance management application built with React Native and Expo, featuring real-time wealth tracking, multi-account management, and smart analytics.
https://github.com/alanjumeaucourt/wealth_manager

budget-tracker cross-platform expo flask investment-tracker javascript jwt mobile-app personal-finance python sqlite typescript wealth-manager

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

          

# 💰 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](https://alanjumeaucourt.github.io/wealth_manager/app)** |
🎯 **[View Mobile App Showcase](https://alanjumeaucourt.github.io/wealth_manager)** |
🐳 **[Quick Start with Docker](#-docker-setup)**

## 🐳 Docker Setup

### Prerequisites
- Docker
- Docker Compose

### Development Environment
```bash
# 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:
- Backend API: http://localhost:5000
- Web Application: http://localhost:5173

### Production Environment
```bash
# 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:
- Backend API: http://localhost:5000
- Web Application: http://localhost:80

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

```bash
# 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:
```bash
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:

```yaml
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
- Development: Can be changed at runtime (default: http://localhost:5000)
- Production: Must be set at build time (default: http://localhost:5000)
- `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](frontend/README.md)

### 🖥️ 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:
```bash
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:
```bash
BACKEND_URL=http://localhost:5000 python3 backend/test/add_api_fake_data.py --months 12
```

1. Web Application:
```bash
cd web_application
bun install
VITE_API_URL=http://localhost:5000 bun run dev --host
```

1. Mobile App:
```bash
cd frontend
bun install
bun run start
```

1. Showcase Website:
```bash
cd showcase_website
npm install
npm run dev
```

## 📚 Documentation
- [API Documentation](backend/README.md)
- [Mobile App Guide](frontend/README.md)
- [Database Structure](DATABASE_STRUCTURE.md)
- [Contributing Guidelines](CONTRIBUTING.md)

## 🛠 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)
```bash
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
```