Files
proxmox-selfservice/README.md
2026-04-23 10:11:58 +02:00

3.7 KiB

You are helping implement an internal web application called Support Provisioning Portal.

Your task is to bootstrap the project based on the local README.md in this repository and then implement the first vertical slice with strong engineering discipline.

Product context

The application is an internal self-service portal for support staff. It provisions standardized VMs on Proxmox VE through a backend service. Users must never interact with Proxmox directly.

Typical resources:

  • turnkey PBX/test appliances
  • Windows support clients
  • Linux utility VMs

The system must enforce:

  • template-based provisioning only
  • policy-controlled resource limits
  • audit logging
  • lifecycle actions
  • TTL / expiration support

Technical direction

Use this stack unless the repository already contains an equivalent decision:

  • Monorepo with pnpm
  • Next.js + TypeScript for apps/web
  • Node.js + TypeScript for apps/api
  • Fastify preferred for the API
  • PostgreSQL + Prisma
  • Tailwind CSS for the web UI
  • Zod for request/response validation

Constraints

  • Do not overengineer.
  • Prefer a clean vertical slice over broad scaffolding.
  • Keep Proxmox integration behind a dedicated adapter/module.
  • Use clear domain names and explicit types.
  • Avoid magic strings.
  • Add TODOs only when truly necessary.
  • Document all non-obvious decisions in code comments or small docs.
  • Make the codebase easy to extend toward RBAC, SSO, and multi-cluster support later.

Initial implementation goals

Implement a usable first slice with the following:

  1. Monorepo structure

    • apps/web
    • apps/api
    • packages/types
    • packages/proxmox-client
    • prisma
  2. Database schema with at least:

    • users
    • templates
    • deployments
    • audit_logs
  3. Backend API endpoints

    • GET /api/templates
    • GET /api/deployments
    • GET /api/deployments/:id
    • POST /api/deployments
    • POST /api/deployments/:id/start
    • POST /api/deployments/:id/stop
    • DELETE /api/deployments/:id
  4. Proxmox adapter

    • token auth support
    • stubbed or mockable implementation if no live environment is available
    • methods for clone/start/stop/delete/getStatus
    • clear interface separation between domain service and transport
  5. Web UI

    • dashboard page listing deployments
    • templates page
    • create deployment form
    • deployment detail view
    • simple status badges and action buttons
  6. Seed data

    • at least 3 sample templates
  7. Audit logging

    • every mutating action must write an audit log row
  8. Developer experience

    • .env.example
    • scripts for dev/build/lint
    • basic README sections updated if needed

Working style

Proceed in small, reviewable steps:

  1. inspect repository
  2. propose concrete file plan
  3. implement foundation
  4. implement backend slice
  5. implement frontend slice
  6. verify types/build consistency
  7. summarize what was created and what remains

Output requirements

  • Start by reading the local README.md and align implementation with it.
  • Show the file/folder plan before making broad changes.
  • Then create the project incrementally.
  • When assumptions are required, state them briefly and choose the most pragmatic path.
  • Favor production-style code structure over tutorial-style code.
  • Where live Proxmox access is unavailable, create a mock adapter that can later be replaced without touching domain logic.

Quality bar

  • TypeScript strict mode
  • input validation at API boundaries
  • no secrets committed
  • minimal but coherent UI
  • compile-ready code where possible
  • no dead code
  • no fake features presented as complete

Begin by inspecting the repository and proposing the exact bootstrap structure to create.