Обновление приложения

This commit is contained in:
2026-04-28 22:37:19 +03:00
parent 7d00cf062e
commit 52594b5dc6
99 changed files with 5736 additions and 1052 deletions

148
README.md Normal file
View File

@@ -0,0 +1,148 @@
# 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`