Skip to content

iFoundSilentHouse/timer-monorepo

Repository files navigation

🕒 Timer Monorepo

Timer Monorepo — это легковесное Fullstack-приложение для персонального учета времени труда с поддержкой многопользовательского режима через URL-идентификацию. Проект построен на современном стеке 2026 года с акцентом на скорость работы и простоту деплоя. 🚀 Основные возможности

Многопользовательский режим без регистрации: Просто добавьте любой ID в конец URL (например, /777), и система создаст отдельный профиль.

Персональный таймер: Отслеживание времени в реальном времени с сохранением в базу данных.

Автоматическая агрегация: Данные сохраняются с привязкой к дате, что позволяет видеть общую статистику за все время.

Docker-ready: Полная конфигурация для мгновенного развертывания в изолированной среде.

🛠 Технологический стек Frontend (/packages/frontend)

React 19 + TypeScript

Vite: Сверхбыстрая сборка и Hot Module Replacement (HMR).

SPA Routing: Автоматический захват User ID из адресной строки.

Backend (/packages/backend)

Node.js 22 + Express 5.x

Better-SQLite3: Высокопроизводительная синхронная работа с SQLite в режиме WAL (Write-Ahead Logging).

TSX: Запуск TypeScript напрямую в dev-среде без предварительной компиляции.

💻 Локальная разработка (Dev)

Для запуска проекта вам понадобится pnpm.

Установка зависимостей:
Bash

pnpm install

Запуск в режиме разработки:
Bash

pnpm dev

    Фронтенд: http://localhost:5173

    Бэкенд (API): http://localhost:3001

Примечание: В режиме разработки запросы к API проксируются через Vite. 🐳 Развертывание в Docker (Production)

Проект оптимизирован для работы в одном контейнере, где Express обслуживает и API, и статические файлы фронтенда.

Сборка и запуск:
Bash

docker compose up --build -d

Доступ к приложению:
Откройте http://localhost в браузере.

Структура папок в Docker:

/app/packages/backend/database.sqlite — файл базы данных.

/app/packages/frontend/dist — собранный фронтенд.

Важно: База данных монтируется в локальную папку ./data на вашем хосте. Ваши данные не пропадут при обновлении или остановке контейнера.

🔌 API Эндпоинты Метод Путь Описание GET /api/timer/:userId/total Получить общее количество секунд пользователя за всё время. PATCH /api/timer/:userId Добавить указанное количество секунд в текущую дату.

Пример запроса (PATCH): JSON

{ "add": 3600 }

📂 Структура проекта Plaintext

timer-monorepo/ ├── packages/ │ ├── frontend/ # React + Vite приложение │ └── backend/ # Express API + SQLite логика ├── data/ # (Создается автоматически) Хранилище БД ├── docker-compose.yaml # Конфигурация оркестрации └── Dockerfile # Multi-stage сборка проекта

📝 Лицензия

MIT. Сделано для личного использования и продуктивной работы.

About

Timer Monorepo is a lightweight, full-stack application for personal time tracking with multi-user support via URL authentication. The project is built on a modern 2026 stack with an emphasis on speed and ease of deployment

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors