Об этом проекте
## Project Introduction
`bsz` (Busuanzi) — это самостоятельно размещаемая система подсчёта посетителей, совместимая с интерфейсом статистики Busuanzi (不蒜子). Бэкенд написан на Rust, после компиляции выдаёт один бинарный файл без внешних зависимостей, что значительно снижает эксплуатационные расходы. Фронтенд реализован с использованием bun workspaces и включает независимую landing‑страницу и опциональную админ‑панель, которые можно развёртывать отдельно по требованию.
## Main Features
- **Один бинарник, нулевые зависимости**: бэкенд требует только один исполняемый файл, который можно разместить на VPS, в Docker или как системную службу.
- **Совместимость с API Busuanzi**: существующие сайты, использующие скрипт Busuanzi, могут перейти на новый сервис, просто изменив URL статистического интерфейса.
- **Полное разделение фронтенда и бэкенда**: бэкенд предоставляет JSON API, landing — чистая статическая страница, админ‑панель — SPA; их можно развёртывать независимо или совместно.
- **Опциональная админ‑панель**: при установке переменной окружения `ADMIN_TOKEN` активируются эндпоинты `/api/admin/*`; без неё маршруты админ‑панели отсутствуют, что повышает безопасность.
- **Лёгкий фронтенд**: landing использует только статические ресурсы и может размещаться на GitHub Pages, Cloudflare Pages и аналогичных сервисах; админ‑панель собирается через Vite + React (или аналогичный стек) в SPA.
- **Простота локальной отладки**: доступны скрипты `cargo run` и `bun run dev:*` для быстрого запуска, подходящие для разработки и демонстрации.
## Architecture Explanation
```
.
├── backend/ # Rust бэкенд, предоставляющий эндпоинты /api/* для статистики и опциональные /api/admin/* для управления
└── frontend/ # bun workspaces
└── packages/
├── shared/ # UI‑компоненты, темы, пресеты Tailwind
├── landing/ # landing‑страница (apex), чистая статика
└── admin/ # SPA админ‑панели (dash), опциональное развёртывание
```
- **backend**: построен на `actix-web` (или аналогичном фреймворке); по умолчанию монтируются только маршруты статистики. Если переменная окружения `ADMIN_TOKEN` не пуста, дополнительно монтируются маршруты админ‑панели.
- **landing**: содержит только статический HTML, CSS и JS; отображает счётчик посетителей, ссылки на документацию и вход в админ‑панель.
- **admin**: после входа позволяет просматривать реальное время посещаемости, историческую статистику, чёрный список IP и т.д.; все запросы проходят через админ‑API бэкенда с проверкой авторизации.
## Quick Start (5 minutes)
```bash
# 1. Запуск бэкенда (Terminal 1)
cd backend && ADMIN_TOKEN=test-token cargo run
# 2. Запуск landing (Terminal 2)
cd frontend && bun install
bun run dev:landing # открыть http://localhost:12702
# 3. Запуск админ‑панели (Terminal 3)
bun run dev:admin # открыть http://localhost:12705
```
## Deployment Guide
### Backend Deployment
- **Бинарный файл**: `cargo build --release` создаёт `target/release/bsz`; скопируйте его на сервер, настройте переменные окружения `ADMIN_TOKEN` (опционально) и `PORT`.
- **systemd**: пример unit‑файла обеспечивает автозапуск при старте системы и управление логами.
- **nginx reverse proxy**: направьте путь `/api/` на бэкенд, статические ресурсы можно отдавать через CDN.
### Landing Deployment
```bash
bun run build:landing # артефакты находятся в frontend/packages/landing/dist/
# загрузите содержимое dist/ в GitHub Pages, Cloudflare Pages или любой статический хостинг
```
### Admin Deployment
```bash
VITE_API_BASE_URL=https://api.example.com \
bun run build:admin # артефакты находятся в frontend/packages/admin/dist/
# аналогично разместите на статическом хостинге; при открытии укажите URL бэкенда и ADMIN_TOKEN для привязки
```
## Configuration
- `ADMIN_TOKEN`: если не пуста, бэкенд монтирует эндпоинты `/api/admin/*`; фронтенд админ‑панели использует тот же токен для аутентификации.
- `VITE_API_BASE_URL`: переменная, внедряемая во время сборки фронтенда админ‑панели, указывающая базовый URL API бэкенда.
- Другие переменные окружения (например, `PORT`, `RATE_LIMIT`) можно посмотреть со значениями по умолчанию в `backend/.env`.
## License
Проект распространяется под лицензией MIT, разрешающей свободное использование, модификацию и распространение.
---
Для более подробной документации см. файлы `backend/README.md`, `frontend/packages/landing/README.md` и `frontend/packages/admin/README.md` в репозитории.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.