Commit Graph

5 Commits

Author SHA1 Message Date
Matt bcc1e17934 Fix login page build error - force dynamic rendering
Build and Push Docker Image / lint-and-typecheck (push) Successful in 1m42s Details
Build and Push Docker Image / build (push) Successful in 4m34s Details
The login page checks database for setup status, which fails during
static page generation at build time. Force dynamic rendering to
defer the check to runtime.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:21:12 +01:00
Matt a68e1084ad Add initial setup screen for first admin account
Build and Push Docker Image / lint-and-typecheck (push) Successful in 1m48s Details
Build and Push Docker Image / build (push) Failing after 3m54s Details
- Add /setup page that appears when no staff exist
- Create first OWNER account with name, email, password
- Login page redirects to /setup if setup required
- Setup page redirects to /login after completion
- API guards prevent setup after first account exists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:10:24 +01:00
Matt 92092760a7 Complete Hub Admin Dashboard with analytics, settings, and enterprise features
Build and Push Docker Image / lint-and-typecheck (push) Failing after 2m10s Details
Build and Push Docker Image / build (push) Has been skipped Details
Major additions:
- Analytics dashboard with charts (line, bar, donut)
- Enterprise client monitoring with container management
- Staff management with 2FA support
- Profile management and settings pages
- Netcup server integration
- DNS verification panel
- Portainer integration
- Container logs and health monitoring
- Automation controls for orders

New API endpoints:
- /api/v1/admin/analytics
- /api/v1/admin/enterprise-clients
- /api/v1/admin/netcup
- /api/v1/admin/settings
- /api/v1/admin/staff
- /api/v1/profile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 12:33:11 +01:00
Matt d21dc88812 fix: Wrap useSearchParams in Suspense boundary
Build and Push Docker Image / lint-and-typecheck (push) Successful in 1m1s Details
Build and Push Docker Image / build (push) Failing after 2m31s Details
Next.js 15 requires useSearchParams() to be wrapped in a
Suspense boundary for static page generation.

- Split LoginForm into separate component
- Add Suspense wrapper with loading skeleton
- Fixes build error on /login page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 12:52:41 +01:00
Matt a79b79efd2 feat: Complete rewrite as Next.js admin dashboard
Build and Push Docker Image / test (push) Failing after 34s Details
Build and Push Docker Image / build (push) Has been skipped Details
Major transformation from FastAPI telemetry service to Next.js admin dashboard:

- Next.js 15 App Router with TypeScript
- Prisma ORM with PostgreSQL (same schema, new client)
- TanStack Query for data fetching
- Tailwind CSS + shadcn/ui components
- Admin dashboard with:
  - Dashboard stats overview
  - Customer management (list, detail, edit)
  - Order management (list, create, detail, logs)
  - Server monitoring (grid view)
  - Subscription management

Pages implemented:
- /admin (dashboard)
- /admin/customers (list + [id] detail)
- /admin/orders (list + [id] detail with SSE logs)
- /admin/servers (grid view)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 12:35:01 +01:00