# LLM Skill Marketplace Go + Postgres marketplace where authenticated users can upload LLM skill files, sell them, and buyers can unlock and copy/download purchased skills. ## Stack - Backend: Go (`go run .`) - Frontend: vanilla HTML/CSS/JS - Database: Postgres - Auth: Authentik forward auth (identity headers) - Config: environment variables with `.env` support ## Run 1. Copy `.env.example` to `.env` and set values. 2. Start Postgres and create the target database. 3. Install dependencies: ```bash go mod tidy ``` 4. Start server: ```bash go run . ``` 5. Open `http://localhost:8080`. ## Local dev mode (no auth setup) Set `DEV_MODE=true` in `.env`. In this mode, protected routes always authenticate as: - `sub`: `demo-user-001` - `email`: `demo@example.com` - `name`: `Demo User` ## Forward auth flow (production) When `DEV_MODE=false`, deploy this app behind Authentik forward auth. The proxy/auth layer must validate authentication and pass identity headers to the app. The app reads: - `X-Authentik-Uid` (required; fallback `X-Forwarded-User`) - `X-Authentik-Email` - `X-Authentik-Name` (fallback `X-Forwarded-Preferred-Username`) ## Key routes - `GET /dashboard`: upload form - `GET /skills`: browse listings and buy - `GET /my-skills`: purchased skills and copy/download access - `POST /api/upload`: upload and list a skill - `POST /api/purchase`: buy a skill - `GET /api/my-skills`: owned purchased list - `GET /uploads/:id`: download unlocked skill file