Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Умный дисплей ЖК

Информационная система для экранов в жилых комплексах. Управляющая компания создаёт шаблоны, регистрирует дисплеи и назначает им контент. Клиент дисплея получает актуальное состояние через backend API.

Архитектура

clients/control-panel   веб-панель УК (React, React Router, Mantine)
clients/display_client клиент дисплея (React Native)
backend/app             REST API (FastAPI)
backend/app/db          SQLAlchemy-модели и подключение к MySQL
backend/app/integrations интеграция с Ujin API через HTTP
docker-compose.yaml     запуск сервисов
nginx.conf              единая точка входа для frontend и backend

Основные сервисы:

  • Backend: FastAPI, SQLAlchemy, PyMySQL, JWT, HTTPX.
  • MySQL: пользователи, дисплеи, шаблоны и элементы шаблонов.
  • Control Panel: управление комплексами, экранами и шаблонами.
  • Display Client: отображение назначенного шаблона.
  • Ujin API: данные жилых комплексов и зданий.

Запуск через Docker

Требуется Docker с поддержкой Compose.

  1. Создайте настройки backend:

    cp backend/.env.example backend/.env
  2. Укажите в backend/.env URL и токен Ujin, JWT secret и подключение к MySQL. Для Docker используйте хост mysql:

    DATABASE_URL=mysql+pymysql://user:password@mysql:3306/db
    
  3. Соберите и запустите проект:

    docker compose up -d --build

После запуска:

  • приложение: http://localhost:8000
  • REST API доступен через префикс http://localhost:8000/api/

Текущая nginx-конфигурация публикует только API-маршруты. Swagger и health check доступны при локальном запуске backend.

Остановка:

docker compose down

Локальная разработка

Backend требует Python 3.14 и uv:

cd backend
cp .env.example .env
uv sync
uv run uvicorn app.main:app --reload

Локальный backend будет доступен по адресам:

  • Swagger API: http://localhost:8000/docs
  • health check: http://localhost:8000/health

Панель управления требует Node.js 24:

cd clients/control-panel
npm install
npm run dev

React Native клиент:

cd clients/display_client
npm install
npm start

Затем отдельно запустите npm run android.

Основные API

  • POST /api/v1/register, POST /api/v1/login — пользователи.
  • /api/v1/template/* — создание, чтение, обновление и удаление шаблонов.
  • POST /api/v1/displays/register — регистрация дисплея.
  • GET /api/v1/displays/{display_id}/state — состояние дисплея.
  • /api/v1/complex/* — комплексы, здания, экраны и назначение шаблонов.

Подробный интерактивный контракт доступен в Swagger по адресу /docs.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages