Add project scaffolding and development infrastructure: - Add environment configuration files (.env.development, .env.example) with database, JWT, security, AI integration, logging, and CORS settings - Add .gitignore to exclude build artifacts, logs, IDE files, and environment variables - Add .prettierrc with single quotes and trailing commas configuration - Add multi-stage Dockerfile with development, build, and production stages - Ad
6.3 KiB
6.3 KiB
Finance Backend API
API для управления личными финансами с поддержкой русской локализации.
Возможности
- Аутентификация: JWT токены в HTTP-only cookies, refresh token rotation
- Транзакции: CRUD операции, фильтрация, импорт, аналитика
- Категории: Стандартные русские категории, пользовательские категории
- Бюджеты: Правило 50/30/20, отслеживание расходов по категориям
- Финансовые цели: Создание целей, отслеживание прогресса, автонакопления
- Рекомендации: AI-powered персонализированные советы
- Аналитика: Тренды, разбивка по категориям, финансовое здоровье
Технологии
- Framework: NestJS 10.x
- Database: PostgreSQL + TypeORM
- Auth: Passport.js + JWT
- Validation: class-validator
- Documentation: Swagger/OpenAPI
- Containerization: Docker
Быстрый старт
Требования
- Node.js 18+
- Docker & Docker Compose
- PostgreSQL 15+ (или через Docker)
Установка
# Клонирование репозитория
git clone <repository-url>
cd finance-backend
# Установка зависимостей
npm install
# Копирование переменных окружения
cp .env.example .env.development
Запуск с Docker
# Запуск PostgreSQL
docker compose up -d postgres
# Запуск в режиме разработки
npm run start:dev
Запуск без Docker
- Установите PostgreSQL локально
- Создайте базу данных
finance_app - Обновите
.env.developmentс вашими настройками - Запустите приложение:
npm run start:dev
API Endpoints
После запуска доступны:
- API: http://localhost:3000/api/v1
- Swagger Docs: http://localhost:3000/api/docs
- Health Check: http://localhost:3000/health
Основные эндпоинты
| Модуль | Путь | Описание |
|---|---|---|
| Auth | /api/v1/auth/* |
Регистрация, вход, токены |
| Transactions | /api/v1/transactions/* |
CRUD транзакций |
| Categories | /api/v1/categories/* |
Управление категориями |
| Budgets | /api/v1/budgets/* |
Бюджеты 50/30/20 |
| Goals | /api/v1/goals/* |
Финансовые цели |
| Recommendations | /api/v1/recommendations/* |
AI рекомендации |
| Analytics | /api/v1/analytics/* |
Аналитика и отчеты |
Структура проекта
src/
├── common/ # Общие утилиты, декораторы, фильтры
│ ├── constants/ # Константы и сообщения об ошибках
│ ├── decorators/ # Кастомные декораторы
│ ├── filters/ # Exception filters
│ ├── guards/ # Auth guards
│ ├── interceptors/ # Response interceptors
│ └── utils/ # Утилиты (дата, валюта, безопасность)
├── config/ # Конфигурация приложения
├── database/ # TypeORM конфигурация и миграции
└── modules/ # Функциональные модули
├── auth/ # Аутентификация
├── categories/ # Категории
├── transactions/ # Транзакции
├── budgets/ # Бюджеты
├── goals/ # Цели
├── recommendations/ # Рекомендации
├── analytics/ # Аналитика
└── ai/ # AI сервис (placeholder)
Скрипты
# Разработка
npm run start:dev # Запуск с hot-reload
# Сборка
npm run build # Сборка проекта
npm run start:prod # Запуск production
# Тестирование
npm run test # Unit тесты
npm run test:e2e # E2E тесты
npm run test:cov # Coverage отчет
# База данных
npm run migration:generate # Генерация миграции
npm run migration:run # Применение миграций
npm run seed # Заполнение начальными данными
# Линтинг
npm run lint # Проверка кода
npm run format # Форматирование
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
PORT |
Порт сервера | 3000 |
NODE_ENV |
Окружение | development |
DB_HOST |
Хост PostgreSQL | localhost |
DB_PORT |
Порт PostgreSQL | 5432 |
DB_USERNAME |
Пользователь БД | finance_user |
DB_PASSWORD |
Пароль БД | - |
DB_NAME |
Имя базы данных | finance_app |
JWT_ACCESS_SECRET |
Секрет access токена | - |
JWT_REFRESH_SECRET |
Секрет refresh токена | - |
JWT_ACCESS_EXPIRES |
Время жизни access | 15m |
JWT_REFRESH_EXPIRES |
Время жизни refresh | 7d |
Безопасность
- JWT токены хранятся в HTTP-only cookies
- Refresh token rotation при каждом обновлении
- Rate limiting на все эндпоинты
- Bcrypt для хеширования паролей (12 раундов)
- Блокировка аккаунта после 10 неудачных попыток входа
- Аудит логи для критических операций
Локализация
Все сообщения об ошибках и стандартные категории на русском языке. Поддержка рублей (RUB) и московского часового пояса (UTC+3).
License
MIT