# Update Server - Development Workflow

## Recommendation

Start development locally on your Mac.

Only move to Proxmox after the first complete flow works:

- admin login;
- create project;
- upload release;
- create API key;
- download release through API.

This is the fastest and least painful path.

## Why not start directly on Proxmox

- slower iteration cycle;
- harder debugging;
- extra network and proxy setup too early;
- file upload and local logs are less convenient while the app is changing a lot.

## Recommended workflow

### Stage 1 - Local development on Mac

- keep the whole project in one directory;
- run Go locally;
- store local dev data in a project folder like `./data-dev`;
- use SQLite locally;
- build the admin pages and API here first.

### Stage 2 - Local container verification

- add `Dockerfile`;
- add `docker-compose.yml` if needed;
- verify the app runs with mounted `/data`;
- verify uploads and DB survive container restart.

### Stage 3 - Deploy to Proxmox

- create VM or LXC;
- run app container;
- mount persistent storage for `/data`;
- place Caddy or Nginx in front for HTTPS;
- expose only the reverse proxy to the internet;
- optionally protect admin UI by IP allow-list or VPN.

## Local development checklist

- install Go
- initialize module
- add SQLite migrations
- create `.env` or env loader for dev values
- run server locally
- test upload/download with browser and `curl`
- only then freeze container setup

## Deployment checklist

- persistent volume for SQLite and artifacts
- HTTPS configured
- strong `SESSION_SECRET`
- bootstrap admin credentials
- backup strategy for `/data`
- logs enabled
- rate limiting enabled

## Final recommendation

Develop on Mac first.

Use Proxmox as the deployment target, not as the primary coding environment.
