Finote is a smart and automated financial management mobile application designed to assist students, workers, and households in managing their expenses effectively. It utilizes a fuzzy logic-based decision support system (DSS) to analyze spending behavior and recommend budget strategies.
- 🔐 User Registration & Login (JWT Auth)
- 💰 Income and Expense Tracking
- 🧠 Smart Budget Recommendations using Fuzzy Logic
- 📊 Budget Limit Monitoring (Manual & Smart Limits)
- 📈 Financial Statistics & Reports
- 🏷️ Priority-based Categorization (Essential / Optional / Luxury)
- 🌐 Local-first API (FastAPI Backend)
- 📡 Real-time Integration with React Native Frontend (Expo Go)
- React Native
- Expo Go
- Context API for State Management
| Feature | Method | Endpoint |
|---|---|---|
| Register | POST | /auth/register |
| Login | POST | /auth/login |
| Get Transactions | GET | /transactions/user/{user_id} |
| Add Transaction | POST | /transactions/ |
| Get Budgets | GET | /budgets/user/{user_id} |
| Add Budget | POST | /budgets/ |
| Smart Budgeting | POST | /fuzzy/status |
| Financial Reports | GET | /reports/statistics/{user_id} |
Full documentation available at:
http://<your-ip>:8000/docs
- JWT Auth (Bearer Token)
- Token sent via HTTP Header:
Authorization: Bearer <token>
finote/
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── models.py
│ │ ├── schemas.py
│ │ ├── routers/
│ │ └── fuzzy_logic.py
│ └── .env
├── frontend/
│ ├── App.js
│ ├── config.js
│ ├── screens/
│ ├── services/
│ └── contexts/
└── README.md
cd backend
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadMake sure to create
.envfile and fill in:
DATABASE_URL=postgresql+asyncpg://<user>:<pass>@<host>/<db>
SECRET_KEY=your-secret-keycd frontend
yarn install
npx expo startUpdate API URL in
frontend/config.js:
export const API_BASE_URL = "http://<your-laptop-ip>:8000";Finote uses a fuzzy system to evaluate a user's income, expense, and priority level (essential, secondary, luxury) to determine spending behavior:
- "Sangat Hemat" → "Hemat" → "Normal" → "Boros" → "Sangat Boros"
Each fuzzy evaluation will return:
{
"score": 75.2,
"status": "Frugal"
}The result is automatically linked to the relevant budget category (limit_fuzzy).
| Role | Password | |
|---|---|---|
| Student | mahasiswa@finote.id | secret123 |
| Worker | pekerja@finote.id | secret456 |
| Household | rumah@finote.id | secret789 |
Developed by @ifanhakm
GPL-3.0 License © 2025 – Finote