ARC - это современная платформа для автоматизации и управления процессами в ресторанном и кафе-бизнесе. Мы помогаем заведениям повысить эффективность, качество обслуживания и прибыльность через инновационные технологические решения.
Проект построен на принципах Clean Architecture с четким разделением на слои:
- Presentation Layer (handlers) - HTTP обработчики (Gin)
- Application Layer (usecases) - Бизнес-логика
- Domain Layer (models) - Доменные модели
- Infrastructure Layer (repositories) - Доступ к данным (GORM)
arc/
├── backend/ # Backend приложение (Go)
│ ├── cmd/api/ # Точка входа приложения
│ ├── internal/
│ │ ├── handlers/ # HTTP handlers
│ │ ├── usecases/ # Бизнес-логика
│ │ ├── repositories/ # Доступ к данным
│ │ ├── models/ # Доменные модели
│ │ ├── middleware/ # HTTP middleware (auth, logging, metrics)
│ │ ├── config/ # Конфигурация
│ │ └── scripts/ # Seed скрипты для БД
│ ├── pkg/ # Переиспользуемые пакеты
│ ├── migrations/ # Миграции БД
│ ├── tests/ # E2E тесты
│ └── docs/ # Документация
├── config/ # Конфигурационные файлы
│ ├── prometheus/
│ ├── grafana/
│ └── loki/
├── docker-compose.yml # Docker Compose конфигурация
├── Dockerfile # Docker образ для backend
└── Makefile # Команды для разработки
| Компонент | Технологии |
|---|---|
| Backend | Go 1.21+, Gin, GORM, JWT |
| База данных | PostgreSQL 16 |
| ORM | GORM |
| Аутентификация | JWT (JSON Web Tokens) |
| Мониторинг | Prometheus, Grafana, Loki |
| Контейнеризация | Docker & Docker Compose |
| Тестирование | Go testing package |
- Go 1.21 или выше
- Docker и Docker Compose
- Make (опционально)
- Клонируйте репозиторий
git clone <repository-url>
cd arc- Настройте переменные окружения (опционально)
# Создайте .env файл или установите переменные окружения
export DB_HOST=localhost
export DB_PORT=15432
export DB_USER=arc_user
export DB_PASSWORD=arc_password
export DB_NAME=arc_db
export JWT_SECRET=your-secret-key-change-in-production- Запустите с Docker Compose
make docker-up
# или
docker-compose up -d- Засеять начальные данные в базу данных
cd backend
# Засеять роли и подписки (автоматически создаст таблицы)
go run internal/scripts/seed_roles_and_subscriptions.go
# ✅ Убедитесь, что в конце вы видите: "✅ Owner role verified"
# Засеять вопросы onboarding (автоматически создаст таблицы)
go run internal/scripts/seed_onboarding_questions.go
# ✅ Убедитесь, что в конце вы видите: "✅ Questions verified successfully"Примечания:
- Скрипты автоматически создают таблицы, если их нет (используют GORM AutoMigrate)
- Скрипты идемпотентны - их можно запускать многократно
- По умолчанию скрипты подключаются к БД на порту 15432 (внешний порт из docker-compose)
- Запустите приложение
# Если используете Docker:
docker-compose up -d --build app
# или
make docker-restart
# Если запускаете локально:
make run
# или
cd backend && go run ./cmd/apiПриложение будет доступно на http://localhost:8080
- Onboarding процесс с настраиваемыми вопросами
- Автоматическое создание заведения при регистрации
- Настройка типов заведений (ресторан, кафе, фаст-фуд, бар и т.д.)
- Управление столами с визуальным расположением
- Категории товаров и тех-карт
- Ингредиенты с категориями
- Тех-карты (рецепты) с расчетом себестоимости
- Товары с ценообразованием и наценками
- Модификаторы для товаров
- Учет остатков ингредиентов и товаров
- Поставки от поставщиков
- Списания товаров
- История движений по складу
- Уведомления о низких остатках
- Транзакции и кассовые смены
- Profit & Loss отчеты
- Cash Flow анализ
- Финансовая аналитика
- Статистика продаж
- Анализ популярных позиций
- ABC анализ товаров
- KPI дашборды
POST /api/v1/auth/register- Регистрация пользователяPOST /api/v1/auth/login- Вход в системуPOST /api/v1/auth/refresh- Обновление токенаPOST /api/v1/auth/logout- Выход из системы
GET /api/v1/auth/onboarding/questions- Получить вопросы опросникаPOST /api/v1/auth/onboarding/submit- Отправить ответы и создать заведениеGET /api/v1/auth/onboarding/response- Получить ответы пользователя
GET /api/v1/establishments- Список заведенийGET /api/v1/establishments/:id- Детали заведенияPUT /api/v1/establishments/:id- Обновление заведенияDELETE /api/v1/establishments/:id- Удаление заведения
GET /api/v1/menu/products- Список товаровGET /api/v1/menu/tech-cards- Список тех-картGET /api/v1/menu/ingredients- Список ингредиентовGET /api/v1/menu/categories- Список категорий
GET /api/v1/warehouse/stock- Остатки на складеPOST /api/v1/warehouse/supplies- Создание поставкиPOST /api/v1/warehouse/write-offs- Списание товаровGET /api/v1/warehouse/movements- История движений
GET /api/v1/finance/transactions- Список транзакцийGET /api/v1/finance/shifts- Кассовые сменыGET /api/v1/finance/pnl- Profit & Loss отчетGET /api/v1/finance/cash-flow- Cash Flow отчет
GET /api/v1/statistics/sales- Статистика продажGET /api/v1/statistics/products- Статистика по товарамGET /api/v1/statistics/abc-analysis- ABC анализ
Подробная документация API доступна после запуска Swagger на /swagger/index.html
После запуска доступны следующие сервисы:
- Grafana: http://localhost:3000 (admin/admin)
- Prometheus: http://localhost:9090
- Loki: http://localhost:3100
- Swagger UI: http://localhost:8080/swagger/index.html
Для запуска end-to-end тестов необходимо сначала засеять базу данных:
# 1. Засеять данные
cd backend
go run internal/scripts/seed_roles_and_subscriptions.go
go run internal/scripts/seed_onboarding_questions.go
# 2. Убедиться, что сервер запущен
docker-compose ps
# 3. Запустить тесты
cd tests
go test -v -short=false -run TestEstablishmentCreationE2E ./e2e_test.goПодробная документация по тестам: backend/tests/README.md
make test# Сборка приложения
make build
# Запуск локально
make run
# Запуск тестов
make test
# Линтинг
make lint
# Docker команды
make docker-up # Запустить все сервисы
make docker-down # Остановить все сервисы
make docker-restart # Пересобрать и перезапустить app
make docker-logs # Просмотр логов
# Миграции (опционально, если используете миграции)
make migrate-up # Применить миграции
make migrate-down # Откатить миграции# Seed скрипты (рекомендуется - автоматически создают таблицы)
cd backend
go run internal/scripts/seed_roles_and_subscriptions.go
go run internal/scripts/seed_onboarding_questions.go
# Или использовать миграции (если не используете seed скрипты)
make migrate-upПримечание: Seed скрипты автоматически создают все необходимые таблицы через GORM AutoMigrate, поэтому миграции не обязательны при использовании скриптов.
Основные настройки задаются через переменные окружения:
DB_HOST- хост БД (по умолчанию: localhost)DB_PORT- порт БД (по умолчанию: 15432 для локальных скриптов)DB_USER- пользователь БД (по умолчанию: arc_user)DB_PASSWORD- пароль БД (по умолчанию: arc_password)DB_NAME- имя БД (по умолчанию: arc_db)JWT_SECRET- секретный ключ для JWTAPP_ENV- окружение (development, production)LOG_LEVEL- уровень логирования
- ✅ Clean Architecture - поддерживаемый и масштабируемый код
- ✅ Автоматическая миграция - seed скрипты создают таблицы автоматически
- ✅ Идемпотентные скрипты - безопасный повторный запуск
- ✅ E2E тесты - полное покрытие функционала
- ✅ Мониторинг - встроенная интеграция с Prometheus, Grafana, Loki
- ✅ Swagger документация - автоматическая генерация API документации
- ✅ JWT аутентификация - безопасная система доступа
- ✅ Ролевая модель - гибкая система прав доступа
- 📖 Style Guide - руководство по стилю кода
- 📖 API Documentation - документация API
- 🏗️ Architecture - описание архитектуры
- 🧪 E2E Tests - документация по тестам
- 📋 Onboarding API - API onboarding процесса
- 🔄 Registration Flow - процесс регистрации
Мы приветствуем вклад в развитие проекта! Пожалуйста:
- Создайте fork проекта
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Commit ваши изменения (
git commit -m 'Add some AmazingFeature') - Push в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
Этот проект распространяется под лицензией MIT. См. файл LICENSE для получения дополнительной информации.
Сделано с ❤️ командой ARC
Автоматизация ресторанного бизнеса начинается здесь