New Burning Fire — Dance Crew Management Platform
NBFire is a mobile-first PWA web platform for managing a dance crew. It replaces the fragmented communication across WhatsApp, spreadsheets, and shared calendars, centralizing everything in one place: member management, event calendar, shared payments, proposals with voting, and chat integrated with Telegram.
The frontend is an Angular 21 SPA with Tailwind CSS, the backend a .NET 9 API with Clean Architecture, real-time chat via SignalR with bidirectional Telegram bridge, Google OAuth authentication, all deployed on a Hetzner VPS with Nginx + PM2.
graph TB
subgraph Client["Client — Mobile-First PWA"]
FE["Angular 21 + Tailwind\nSignals + Standalone"]
end
subgraph Server["Hetzner VPS"]
NGINX["Nginx\nReverse Proxy + SSL"]
subgraph Backend[".NET 9 — Clean Architecture"]
API["REST API\nControllers"]
HUB["SignalR Hub\nReal-time Chat"]
SVC["Domain Services\nBusiness Logic"]
EF["EF Core 9\nData Access"]
end
DB[("PostgreSQL 16")]
end
subgraph External["External Services"]
GOOGLE["Google OAuth 2.0"]
TELEGRAM["Telegram Bot API"]
GEMINI["Gemini API\nTranslations"]
end
FE -->|"HTTPS"| NGINX
NGINX -->|"/api/*"| API
NGINX -->|"/hub/*"| HUB
NGINX -->|"/*"| STATIC["Static Files"]
API --> SVC
HUB --> SVC
SVC --> EF
EF --> DB
SVC --> TELEGRAM
SVC --> GEMINI
API --> GOOGLE
How long would a super senior .NET/Angular developer take to build this from scratch, writing all code by hand?
| # | Phase | Days | Notes |
|---|---|---|---|
| 0 | Environment Setup | 1.5 | Node, .NET SDK, Docker, PostgreSQL, Angular + Tailwind, .NET Clean Arch, EF Core, Git |
| 1 | Authentication | 3 | Google OAuth 2.0, JWT, roles (SystemRole + CrewRole), login page, interceptor, guard, TDD tests |
| 2 | Layout & UI Core | 3 | Responsive layout (sidebar, header, content), dark/light mode, i18n EN/IT, PWA, mobile fixes |
| 3 | Backend CRUD + Tests | 5 | 15 DB entities, 5 services (User, Event, Payment, Proposal, Dashboard), controllers, security, TDD |
| 4 | Frontend Features | 5 | Dashboard, weekly calendar, payments, proposals (3 categories), members, profile, FE-BE integration |
| 5 | Chat System | 7.5 | SignalR Hub, Telegram Bot API (3 channels), chat UI, media, emoji, voice, Gemini translation, permissions, tests. Most complex part |
| 6 | Polls + Notifications | 3 | Extensible message pattern (Poll/Quiz/Survey), multiple choice voting, in-app SignalR notifications, chat badges |
| 7 | Deploy & DevOps | 2.5 | Hetzner VPS, Nginx + SSL, PM2, deploy script, backup/restore, auto-versioning |
| 8 | Fix & Polish | 2 | Safari/iOS fixes, mobile UX, post-deploy bug fixing, real user testing |
| TOTAL | 32.5 | ~6.5 weeks — ~1.5 months |
| Activity | % | Notes |
|---|---|---|
| Writing code | ~45% | The actual code |
| Debug & troubleshooting | ~20% | Things that don't work as expected |
| Research (ChatGPT, docs) | ~12% | External APIs, config, best practices |
| Testing (TDD + manual) | ~12% | 213 tests + real device testing |
| Architectural decisions | ~6% | Rethinking, small refactors |
| Config & infrastructure | ~5% | Docker, CORS, SSL, proxy |
The chat system (Phase 5) alone accounts for ~23% of the project. Telegram Bot API is the riskiest variable: documentation isn't always clear, API limits, webhook debugging. The first production deploy always reveals issues invisible in local development.
The project was built by a junior designer directing an AI coding assistant as the AI developer. The AI wrote the code, the human decided what to build, tested on iPhone, and approved. Data extracted from Git history: 344 commits, from December 21, 2025 to February 1, 2026.
| Date | Hours | Commits | What Was Built |
|---|---|---|---|
| Day 1 | ~10h | 16 | Project setup, design deploy, dark mode, i18n, Nginx, Memory Bank |
| Day 2 | ~1h | 2 | Responsive mobile calendar |
| Day 3 | ~1h | 1 | Responsive optimization for all components |
| Day 4 | ~1h | 4 | POCs merge (12 proof of concepts) |
| Day 5 | ~2h | 4 | Telegram + SignalR POC complete |
| Day 6 | ~6h | 2 | Telegram media support, POC finished |
| Subtotal | ~21h | 29 | Setup + Design + POCs |
| Day 7 | ~10h | 29 | Requirements + entire BE+FE in 1 hour! |
| Day 8 | ~12h | 35 | Reactions, media, deploy, roles, security sprint, chat, PWA |
| Day 9 | ~10h | 40 | Mobile fixes, iOS safe-area, profile, PWA icon |
| Day 10 | ~10h | 34 | Chat SignalR-first, layout fix, PWA reload, version endpoint |
| Subtotal | ~63h | 167 | Core build sprint: from zero to deployed app |
| Day 11 | ~2h | 7 | Safari Google login fix |
| Day 12 | ~5h | 51 | Proposals 3 categories (TikTok, Choreo, Events) |
| Day 13 | ~12h | 36 | Payments, versioning, dashboard, notifications, bugfixes |
| Subtotal | ~82h | 261 | Secondary features + fixes |
| Day 14 | ~8h | 55 | 3 Telegram channels, permissions, chat badges, translations |
| Day 15 | ~6h | 24 | Polls (TDDAB 1-7 backend + frontend + UX) |
| Day 16 | ~1h | 4 | Backup/restore, final deploy, feature close |
| TOTAL | ~97h | 344 | 16 active days — ~12 equivalent working days |
| Metric | Senior human (estimate) | Actual with AI | Speedup |
|---|---|---|---|
| Total hours | ~260h | ~97h | 2.7x |
| Working days | 32.5 | 12 | 2.7x |
| Weeks | 6.5 | 2.5 | 2.6x |
| Tests written | 213 | 213 | = |
| Code | ~21,000 lines | ~21,000 lines | = |
| Phase | Human estimate | Actual with AI | Speedup |
|---|---|---|---|
| Setup + Scaffolding | 1.5 d | ~0.3 d | 5x |
| Auth + Roles | 3 d | ~0.5 d | 6x |
| Layout + UI + PWA | 3 d | ~1 d | 3x |
| Backend CRUD + Tests | 5 d | ~1 d | 5x |
| Frontend Features | 5 d | ~2 d | 2.5x |
| Chat + Telegram | 7.5 d | ~4 d | 1.9x |
| Polls + Notifications | 3 d | ~1 d | 3x |
| Deploy + DevOps | 2.5 d | ~1.5 d | 1.7x |
| Fix + Polish | 2 d | ~1 d | 2x |
| TOTAL | 32.5 d | ~12 d | 2.7x |