Files
finance_app/README.md

149 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Finance App — Система финансового учёта
Приложение для управления личными финансами по принципу **1С:Деньги**.
Работает через **веб-браузер** и **Android** (React Native + Expo).
---
## Технологический стек
| Компонент | Технология |
|---|---|
| База данных | PostgreSQL 16 |
| Backend API | FastAPI + SQLAlchemy 2.0 + Alembic |
| Веб-фронтенд | React 18 + Vite + Recharts |
| Android | React Native + Expo |
| Аутентификация | JWT (access + refresh) + bcrypt |
| Реверс-прокси | Nginx (HTTPS + rate-limiting) |
| Развёртывание | Docker + docker-compose |
---
## Структура проекта
```
finance_app/
├── backend/ FastAPI-сервер
│ ├── app/
│ │ ├── models/ SQLAlchemy-модели (13 таблиц)
│ │ ├── schemas/ Pydantic-схемы
│ │ ├── auth/ JWT, RBAC
│ │ └── api/v1/ REST-роуты
│ ├── alembic/ Миграции БД
│ ├── seed.py Начальные данные
│ └── Dockerfile
├── frontend/ React-приложение
│ └── src/
│ ├── pages/ Dashboard, Accounts, Operations, Budgets,
│ │ ExchangeRates, Locations, Calendar, Admin
│ └── api/ HTTP-клиент (axios)
├── android/ React Native (Expo)
│ └── src/
│ ├── screens/ 5 экранов
│ └── navigation/ Bottom tabs
├── nginx/ nginx.conf с HTTPS
├── docs/
│ └── ER_diagram.md Mermaid ER-диаграмма
└── docker-compose.yml
```
---
## Быстрый старт (Docker)
### 1. Скопировать конфиг
```bash
cp backend/.env.example backend/.env
# Заполнить POSTGRES_PASSWORD, SECRET_KEY, ALLOWED_ORIGINS
```
### 2. Сгенерировать SSL-сертификат (dev)
```bash
mkdir -p nginx/certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout nginx/certs/server.key \
-out nginx/certs/server.crt \
-subj "/CN=localhost"
```
### 3. Запустить
```bash
docker-compose up --build
```
Сервисы:
- **Веб-приложение**: https://localhost
- **API**: https://localhost/api/v1
- **Swagger Docs** (только DEBUG=true): http://localhost:8000/docs
---
## Разработка без Docker
### Backend
```bash
cd backend
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # настроить DATABASE_URL
alembic upgrade head
python seed.py
uvicorn app.main:app --reload
```
### Frontend
```bash
cd frontend
npm install
npm run dev # http://localhost:5173
```
### Android
```bash
cd android
npm install
npx expo start # открыть Expo Go на телефоне или запустить эмулятор
```
> В `android/src/api/client.ts` поменяйте `BASE_URL` на адрес вашего сервера.
---
## Учётные данные по умолчанию
| Роль | Логин | Пароль (из `ADMIN_PASSWORD` или по умолчанию) |
|---|---|---|
| admin | `admin` | `Admin1234!` |
⚠️ Смените пароль после первого входа!
---
## Функциональность
- **Валюты** — справочник (RUB, USD, EUR, GBP, CNY, BTC)
- **Курсы валют** — ввод вручную по датам, конвертация при операциях
- **Счета** — наличные, банк, кредитка, вклад, инвест., крипто. Хранение баланса
- **Категории** — двухуровневая иерархия (системные + пользовательские)
- **Бюджеты** — лимиты по категориям (месяц/неделя/год), прогресс-бар, перерасход
- **Местоположения** — магазины, банки, банкоматы с иерархией
- **Операции** — доходы, расходы, переводы между счетами (автобаланс)
- **Связи операций** — transfer, split, correction
- **Календарь событий** — разовые и повторяющиеся события с напоминанием
- **Дашборд** — KPI, Area-chart (30 дней), Pie по категориям, статус бюджетов
- **Управление пользователями** (admin) — роли, блокировка, управление валютами
---
## ER-диаграмма
Смотрите [docs/ER_diagram.md](docs/ER_diagram.md) — диаграмма в формате Mermaid.
---
## API-документация
При `DEBUG=true` доступны:
- Swagger UI: `/docs`
- ReDoc: `/redoc`