Проектная структура:
Monorepository с микросервисной архитектурой:
- frontend (React + Vite)
- auth-service (Node.js + Express)
- tasks-service (Node.js + Express)
- gateway (Nginx)
- db (PostgreSQL)
- Frontend: React, Vite, Axios
- Backend Auth Service: Node.js, Express, JWT, Cloudinary
- Backend Tasks Service: Node.js, Express, JWT, Cloudinary
- API Gateway: Nginx
- Database: PostgreSQL
- Docker + Docker Compose для контейнеризации
-
Клонировать репозиторий
git clone https://github.com/your-username/crm-system.git cd crm-system
-
Создать файл
env.js
для frontendВ папке
frontend/public/
создать файлenv.js
:window.env = { API_URL: "http://localhost" };
Это позволяет фронтенду динамически знать адрес API при запуске.
-
Запустить проект
Выполнить:
docker-compose up --build
Контейнеры:
- Frontend:
http://localhost
- Backend Auth-Service через Gateway
- База данных PostgreSQL:
localhost:5432
- Frontend:
Сервис | Описание |
---|---|
gateway | Проксирование запросов через Nginx |
frontend | React-приложение |
auth-service | Node.js сервер с авторизацией |
tasks-service | Node.js сервер для работы с задачами |
db | База данных PostgreSQL |
- Браузер отправляет запросы на
gateway (Nginx)
черезlocalhost:80
. - Nginx направляет:
/auth/*
→auth-service
/tasks/*
||/state/*
||/priority/*
→tasks-service
- Frontend использует
window.env.API_URL
для отправки запросов. - Auth-service обрабатывает авторизацию, токены, работу с базой.
- Runtime env через
env.js
, а не через стандартные Docker ENV. - CORS включен в
auth-service
, чтобы фронт и бекенд могли общаться. - Nginx настройка для работы React Router:
try_files $uri $uri/ /index.html;
- При проблемах с 502 — проверять доступность контейнера и порты.
Метод | URL | Описание |
---|---|---|
POST | /auth/login |
Авторизация пользователя |
POST | /auth/refresh |
Обновление токенов |
- Добавить новые микросервисы
- Подключить HTTPS на Nginx
- Написать e2e тесты и покрытие API
Сделано с душой ❤️