DepanceAPP is a powerful, open-source, self-hosted Personal Finance Management (PFM) application. Built with privacy and performance in mind, it allows you to take full control of your financial data without relying on third-party cloud services.
Comprehensive Dashboard: Get a real-time overview of your net worth, recent activity, and budget status.
Analytics & Trends: Interactive charts and monthly recaps to visualize your income vs. expense progress.
Mobile-Optimized UI: Responsive layout with smooth bottom navigation and side drawers for easy access on the go.
Account Management: Track unlimited accounts (Bank, Cash, Savings) with multi-currency support.
Transaction Tracking: Easily log income and expenses with smart categorization and custom tags.
Budgeting: Set monthly limits for specific categories and track your spending progress visually.
Recurring Transactions: Automate your fixed expenses (rent, subscriptions) and income (salary).
Privacy First: Your data lives on your server. No external tracking, no data selling.
Enterprise-Grade Security:
- Secure Authentication (JWT + Refresh Tokens)
- Account Lockout protection against brute-force attacks
- Detailed Login History & Audit Logs
You can run DepanceAPP in minutes using Docker.
- Docker and Docker Compose installed on your machine.
- A MySQL or MariaDB database (can be hosted on the same server or separately).
-
Create a
docker-compose.ymlfile:version: '3.8' services: app: image: ghcr.io/mehdimp4/depanceapp:latest container_name: depance-app ports: - "3000:3000" environment: # Database Configuration (REQUIRED) - DB_HOST=db - DB_PORT=3306 - DB_USER=depance - DB_PASSWORD=secure_password - DB_NAME=depance_db # Application URL (REQUIRED for CORS) - APP_URL=https://your-domain.com # Security (REQUIRED) - JWT_SECRET=change_this_to_a_long_random_string depends_on: - db restart: always db: image: mariadb:10.6 container_name: depance-db environment: - MYSQL_ROOT_PASSWORD=root_secure_password - MYSQL_DATABASE=depance_db - MYSQL_USER=depance - MYSQL_PASSWORD=secure_password volumes: - db_data:/var/lib/mysql restart: always volumes: db_data:
-
Run the application:
docker-compose up -d
-
Access the app: Open your browser and navigate to
http://localhost:3000(or your domain).
You can configure the application using environment variables.
| Variable | Description | Default | Required |
|---|---|---|---|
APP_URL |
Public URL of your application (e.g., https://finance.me). Used for CORS. |
http://localhost:3000 |
Yes |
DB_HOST |
Database hostname | localhost |
Yes |
DB_PORT |
Database port | 3306 |
No |
DB_USER |
Database user | root |
Yes |
DB_PASSWORD |
Database password | root |
Yes |
DB_NAME |
Database name | depance_db |
No |
JWT_SECRET |
Secret key for signing tokens. Must be long and secure. | - | Yes |
LOG_LEVEL |
Logging level (info, debug, error) |
info |
No |
We welcome contributions! Here is how to run the project locally for development.
- Node.js v18+
- npm or pnpm
- A local MySQL connection
-
Clone the repository
git clone https://github.com/mehdimp4/DepanceAPP.git cd DepanceAPP -
Install Dependencies
# Install server dependencies cd server npm install # Install client dependencies cd ../client npm install
-
Configure Environment Copy
.env.exampleto.envin bothserverandclientdirectories and adjust the settings. -
Run Development Servers
# Terminal 1: Start Backend cd server npm run dev # Terminal 2: Start Frontend cd client npm run dev
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Made with by Mehdi
