Русский · English
Совместная full-stack платформа для управления мероприятиями
Next.js web app · Express API · Prisma/PostgreSQL · Admin panel · Teams · Volunteers · Analytics · Docker
EventHub — совместный проект / contributed fork. Связь с исходным fork намеренно сохранена, чтобы реальная история разработки оставалась видимой, включая commit- и pull-request history, показывающую мою работу над проектом.
EventHub — full-stack платформа для управления публичными мероприятиями. Она включает публичный сайт событий, регистрацию пользователей, личный кабинет, командные механики, заявки волонтёров, административные сценарии, управление медиа, аналитику, email-операции и инструменты развёртывания, ориентированные на production.
Репозиторий организован как TypeScript monorepo с Next.js frontend, Express API, слоем Prisma/PostgreSQL, общими пакетами, Docker Compose runtime и документацией по deployment и operational workflows.
Большая часть моей работы в этом fork была направлена на то, чтобы приблизить EventHub к реальному продукту для управления мероприятиями, а не к статическому demo. История проекта показывает работу над UI, backend API, схемой базы данных, admin workflows, production safety, тестированием и надёжностью развёртывания.
Основные направления моей работы:
- улучшение публичного пользовательского опыта, cabinet/dashboard flows и admin-facing UI;
- реализация и исправление media-bank flows, включая публичное отображение медиа, проблемы загрузки/runtime и server/client boundaries;
- работа над поддержкой: global support mini-chat, support ticket flows и user/admin support UX;
- усиление admin tools для управления событиями, пользователями, командами, волонтёрами, email-аудиториями, direct email flows и аналитикой;
- расширение Express/Prisma backend modules, validation, auth/RBAC поведения и production-safe обработки данных;
- повышение надёжности Docker, database, migrations, seed, cleanup, CI/test, typecheck и deployment-related процессов.
Я сохраняю этот репозиторий именно как fork, а не перезаливаю его отдельно, чтобы контекст совместной разработки и реальная история изменений оставались прозрачными.
- Full-stack product development с Next.js frontend, Express API, shared packages и PostgreSQL-backed data model.
- Backend domain modeling для events, users, roles, teams, volunteers, support, media, analytics, email, audit logs и admin workflows.
- Production-minded engineering: environment contracts, Docker Compose, migrations, health/readiness checks, границы seed data, safe cleanup и deployment runbooks.
- Admin and operations tooling: role-based admin panel, управление командами/участниками, moderation волонтёров, email operations, media bank и analytics surfaces.
- Reliability work: type checking, linting, tests, CI/runtime fixes, исправления server/client boundaries и более безопасная обработка ошибок.
flowchart LR
Web[Next.js Web App] --> API[Express API]
API --> DB[(PostgreSQL / Prisma)]
API --> Email[Email Provider / Resend]
API --> Media[Media Storage]
API --> Shared[Shared Packages]
Web --> UI[Shared UI Package]
Web --> Shared
Admin[Admin Panel] --> Web
Cabinet[User Cabinet] --> Web
Public[Public Event Site] --> Web
| Область | Путь | Назначение |
|---|---|---|
| Web app | apps/web |
Next.js frontend для публичных страниц, auth flows, пользовательского кабинета, admin panel, event pages, support, media и analytics surfaces. |
| API service | services/api |
Express + TypeScript backend для auth, events, teams, volunteers, admin workflows, media, analytics, email, support и доступа к Prisma. |
| Shared UI | packages/ui |
Общие стили и UI primitives, используемые web-приложением. |
| Shared domain | packages/shared |
Общие types, contracts и utilities для frontend и backend. |
| Infrastructure | infra, Docker files, compose files |
Runtime configuration, deployment support, Nginx/infra configs, Docker и production scripts. |
| Documentation | docs |
Project notes, runbooks, deployment- и architecture-related документация. |
- Публичная landing page и каталог событий с search, filters, pagination и event detail pages.
- Регистрация по email, login, refresh/logout flows, управление профилем и protected routes.
- User cabinet с participations, team membership, event cabinet flows и profile-related функциями.
- Team mechanics: создание команд, режимы вступления, captain role, approval/rejection flows, member management и change history.
- Volunteer applications с отслеживанием статуса пользователя и admin moderation.
- Admin panel для events, participants, teams, volunteers, event admins, platform users, roles, reports и analytics.
- Media bank с uploads, moderation, public event galleries, captions, import jobs и event media history.
- Support and communication: support chat/tickets, admin support handling, email templates, broadcasts, recipients и delivery tracking.
- Observability and reliability: structured logging, request IDs, health/readiness endpoints, safer errors, CI/runtime checks и deployment validation.
| Слой | Технологии |
|---|---|
| Frontend | Next.js, React, TypeScript, next-intl, Tailwind CSS, Zod |
| Backend | Express, TypeScript, Prisma Client, JWT, cookie-parser, CORS, Zod |
| Database | PostgreSQL 17, Prisma schema, migrations, seed scripts |
| Email / integrations | Resend, Svix, provider-aware email flows |
| Media | Local upload storage, media asset models, public media routes |
| Testing / quality | Vitest, Testing Library, Supertest, ESLint, TypeScript checks |
| Infrastructure | Docker, Docker Compose, production compose config, health checks, deployment scripts |
| Monorepo tooling | pnpm workspaces, Turbo, shared packages |
apps/
web/ # Next.js frontend application
services/
api/ # Express backend API and Prisma schema
packages/
ui/ # Shared UI styles/components
shared/ # Shared types and utilities
infra/ # Infrastructure configuration
docs/ # Documentation and runbooks
scripts/ # Deployment and maintenance scripts
- Node.js
>=24.0.0 - pnpm
>=10.33.0 - PostgreSQL 17 локально или через Docker
pnpm installcp .env.example services/api/.envУкажите обязательные локальные значения в services/api/.env, особенно:
DATABASE_URLJWT_ACCESS_SECRETJWT_REFRESH_SECRETCORS_ORIGIN- переменные email provider при использовании реальной доставки почты
pnpm db:generate
pnpm db:push
pnpm db:seedpnpm devЛокальные URL по умолчанию:
| Сервис | URL |
|---|---|
| Web | http://localhost:3000 |
| API | http://localhost:4000 |
| Health | http://localhost:4000/health |
| Ready | http://localhost:4000/ready |
Development compose запускает контейнеры PostgreSQL, API и Web:
docker compose up -dПолезные команды:
pnpm docker:up
pnpm docker:logs
pnpm docker:downDocker defaults:
| Сервис | Порт |
|---|---|
| Web | 3000 |
| API | 4000 |
| PostgreSQL | 5432 |
| Команда | Назначение |
|---|---|
pnpm dev |
Запустить API и Web вместе. |
pnpm dev:api |
Запустить только API service. |
pnpm dev:web |
Запустить только web app. |
pnpm build |
Собрать shared packages, API и Web. |
pnpm typecheck |
Запустить TypeScript checks по всему workspace. |
pnpm lint |
Запустить lint checks по workspace. |
pnpm test |
Запустить package и app tests. |
pnpm db:generate |
Сгенерировать Prisma client. |
pnpm db:push |
Применить Prisma schema для local development. |
pnpm db:deploy |
Применить migrations для deploy/runtime. |
pnpm db:seed |
Заполнить локальную development database. |
API включает routes для:
- authentication и profile management;
- events, event detail pages, registrations, teams и volunteer applications;
- admin event CRUD, users, event admins, participants, teams, volunteers и analytics;
- support threads/messages и admin support workflows;
- media assets, event media gallery, captions, moderation, imports и public media display;
- email templates, broadcasts, recipients, consent, delivery status и webhook processing;
- health/readiness checks для проверки runtime.
EventHub — развивающаяся основа event-platform. Многие продуктовые области реализованы как рабочие full-stack flows, при этом часть модулей продолжает развиваться как platform primitives и production-readiness улучшения.
Для рекрутеров и инженерных ревьюеров EventHub демонстрирует практический опыт в:
- full-stack TypeScript development;
- организации monorepo и границах shared packages;
- backend API design с Express, Prisma и PostgreSQL;
- authentication, roles, permissions, admin workflows и production safety;
- Dockerized local infrastructure и deployment-oriented configuration;
- реальных продуктовых сценариях: events, teams, volunteers, support, media, analytics и email operations.