Обновление приложения
This commit is contained in:
148
README.md
Normal file
148
README.md
Normal 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`
|
||||
Reference in New Issue
Block a user