Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏎️ Beachside Racetrack Info-Screens

Beachside Racetrack Info-Screens — це масштабована система реального часу для керування гонками та інформування глядачів. Проект розроблений як MVP (Minimum Viable Product) для автоматизації процесів на гоночній трасі, мінімізуючи потребу в ручній праці персоналу.

Система підтримує високий контраст для роботи під прямим сонячним промінням на узбережжі океану та має адаптивний дизайн для будь-яких пристроїв (планшети, телефони, Smart TV).

🚀 Як запустити проект

1. Системні вимоги

  • Node.js: версія 20.x або новіша.
  • npm: версія 9.x або новіша.

2. Встановлення

Склонуйте репозиторій та встановіть залежності:

npm install

3. Налаштування змінних середовища

Створіть файл .env у кореневій папці проекту та додайте ключі доступу (Access Keys):

PORT=3000
NODE_ENV=production

__ якщо буде будь-яке інше значення  замість production - то проект переходит в режим розробки з автоматичним логіном всього персоналу

# Ключі доступу для персоналу
RECEPTIONIST_KEY=admin123
OBSERVER_KEY=watch123
SAFETY_KEY=safe123

__ якщо хоча б одне поле не буде присутнє або буде не визначене проект не запуститься в production режимі, на режим розробки це не впливає

Примітка: Сервер не запуститься, якщо ці змінні не будуть визначені.

4. Запуск сервера

  • Режим розробки (Dev Mode): Таймер гонки триває 1 хвилину. Увімкнено авто-логін для розробника.
    npm run dev
  • Production режим: Таймер гонки триває 10 хвилин. Потрібно вводити ключі доступу вручну.
    npm start

📖 Посібник користувача

🛠 Інтерфейси персоналу (Потрібен ключ доступу)

1. Front Desk (Рецепція) — /front-desk

  • Мета: Реєстрація гонщиків та підготовка сесій.
  • Функціонал:
    • Додавання нових гоночних сесій з унікальними короткими ID (4 символи).
    • Додавання/редагування/видалення гонщиків.
    • Автоматичне призначення номерів машин.
    • Видалення сесій.

2. Race Control (Контроль безпеки) — /race-control

  • Мета: Головний пульт керування гонкою.
  • Функціонал:
    • Вибір наступної сесії: safety обирає, яка група йде на брифінг (відображається на екрані Next Race).
    • Старт гонки: запуск таймера та перемикання режиму в SAFE.
    • Керування прапорами: миттєва зміна прапорів на трасі (Safe, Hazard, Danger, Finish).
    • Двофазний фініш: після закінчення часу або натискання FINISH кнопки блокуються. Коли машини повертаються, натискається Finalize для очищення треку.
    • Sidebar: можливість змінювати чергу наступних гонок прямо під час активного заїзду.

3. Lap Line Tracker (Обсервер) — /lap-line-tracker

  • Мета: Фіксація перетину лінії фінішу кожною машиною.
  • Функціонал:
    • Великі кнопки для кожного автомобіля.
    • Автоматичне блокування кнопок при прапорах DANGER або FINISH.
    • Відображення поточного прапора та таймера для координації.

📺 Публічні екрани (Для глядачів та водіїв)

1. Leaderboard (Табло лідерів) — /leader-board

  • Відображає топ-8 гонщиків у реальному часі.
  • Сортування за найшвидшим колом (Best Lap).
  • Показує час останнього кола та загальну кількість кіл.
  • Результати зберігаються на екрані до моменту старту наступної гонки.

2. Race Flags (Екрани прапорів) — /race-flags

  • Повноекранні цифрові прапори, що стоять навколо траси.
  • Змінюють колір миттєво: Зелений (Safe), Жовтий (Hazard), Червоний (Danger), Шаховий (Finish).

3. Race Countdown (Зворотний відлік) — /race-countdown

  • Великий таймер для гонщиків та глядачів.
  • Змінює колір на червоний/пульсуючий коли гонка завершена.

4. Next Race (Наступна гонка) — /next-race

  • Показує список гонщиків та номери їхніх машин для наступної сесії.
  • Після фінішу гонки виводить повідомлення "Proceed to Paddock" для поточної групи.

✨ Особливості та реалізовані бонуси

  1. Real-Time Sync: Використання Socket.io Rooms для розділення трафіку ( екрани прапорів отримують лише дані про прапор).
  2. Persistence (Збереження даних): Всі сесії та результати кіл записуються в асинхронний storage.json. Дані не втрачаються при перезавантаженні сервера.
  3. Security delay: При введенні неправильного ключа сервер робить примусову затримку 500мс для захисту від перебору паролів.
  4. Smart Update: Інтерфейси не перемальовують всю сторінку без потреби, що дозволяє таймерам працювати плавно без "мерехтіння".
  5. Sidebar Management: система висувного меню для Safety Official, що дозволяє керувати чергою без зупинки поточної гонки.

🛠 Технологічний стек

  • Backend: Node.js, Express.
  • Real-time: Socket.IO.
  • Frontend: EJS (Server Side Rendering), Client-side JS.
  • Styling: SCSS (BEM methodology), Adaptive Design.
  • Data: JSON File System (Async I/O).

DEVELOPED WITH LOVE AND CATS 💕💕😽 .

About

web-platform for managing race sessions

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages