diff --git a/.beans/nuzlocke-tracker-3c9l--set-up-branching-structure.md b/.beans/nuzlocke-tracker-3c9l--set-up-branching-structure.md new file mode 100644 index 0000000..96e5127 --- /dev/null +++ b/.beans/nuzlocke-tracker-3c9l--set-up-branching-structure.md @@ -0,0 +1,15 @@ +--- +# nuzlocke-tracker-3c9l +title: Set up branching structure +status: todo +type: task +created_at: 2026-02-09T15:30:35Z +updated_at: 2026-02-09T15:30:35Z +parent: nuzlocke-tracker-ahza +--- + +Create the `develop` branch from `main` and establish the `main`/`develop`/`feature/*` branching workflow. + +- Create `develop` branch from current `main` +- Push `develop` to remote +- Set `develop` as the default working branch \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-3lfw--configure-nginx-proxy-manager-for-nuzlocke-tracker.md b/.beans/nuzlocke-tracker-3lfw--configure-nginx-proxy-manager-for-nuzlocke-tracker.md new file mode 100644 index 0000000..12f8e8c --- /dev/null +++ b/.beans/nuzlocke-tracker-3lfw--configure-nginx-proxy-manager-for-nuzlocke-tracker.md @@ -0,0 +1,18 @@ +--- +# nuzlocke-tracker-3lfw +title: Configure Nginx Proxy Manager for nuzlocke-tracker +status: todo +type: task +priority: normal +created_at: 2026-02-09T15:30:50Z +updated_at: 2026-02-09T15:31:15Z +parent: nuzlocke-tracker-ahza +blocking: + - nuzlocke-tracker-vpn5 +--- + +Add a proxy host entry in Nginx Proxy Manager on Unraid to route LAN traffic to the app. + +- Add a proxy host (e.g., `nuzlocke.local`) pointing to the frontend/API containers +- Configure appropriate ports and forwarding rules +- Test access from other devices on the LAN \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-48ds--database-backup-strategy.md b/.beans/nuzlocke-tracker-48ds--database-backup-strategy.md new file mode 100644 index 0000000..c84fd90 --- /dev/null +++ b/.beans/nuzlocke-tracker-48ds--database-backup-strategy.md @@ -0,0 +1,16 @@ +--- +# nuzlocke-tracker-48ds +title: Database backup strategy +status: todo +type: task +created_at: 2026-02-09T15:30:55Z +updated_at: 2026-02-09T15:30:55Z +parent: nuzlocke-tracker-ahza +--- + +Set up a simple scheduled backup for the production PostgreSQL database. + +- Create a backup script using `pg_dump` that runs inside or against the PostgreSQL container +- Set up a cron job on Unraid to run the backup on a schedule (e.g., daily) +- Store backups in a designated location on Unraid with rotation (keep last N backups) +- Document the restore procedure \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-765i--update-claudemd-with-branching-rules.md b/.beans/nuzlocke-tracker-765i--update-claudemd-with-branching-rules.md new file mode 100644 index 0000000..6247fbb --- /dev/null +++ b/.beans/nuzlocke-tracker-765i--update-claudemd-with-branching-rules.md @@ -0,0 +1,20 @@ +--- +# nuzlocke-tracker-765i +title: Update CLAUDE.md with branching rules +status: todo +type: task +priority: normal +created_at: 2026-02-09T15:30:38Z +updated_at: 2026-02-09T15:31:15Z +parent: nuzlocke-tracker-ahza +blocking: + - nuzlocke-tracker-3c9l +--- + +Once the branching structure is in place, add instructions to CLAUDE.md enforcing the branching strategy: + +- Never commit directly to `main` +- Day-to-day work happens on `develop` +- New work is done on `feature/*` branches off `develop` +- Merge flow: `feature/*` → `develop` → `main` +- `main` is always production-ready \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-aiw6--create-deploy-script.md b/.beans/nuzlocke-tracker-aiw6--create-deploy-script.md new file mode 100644 index 0000000..93b9df6 --- /dev/null +++ b/.beans/nuzlocke-tracker-aiw6--create-deploy-script.md @@ -0,0 +1,24 @@ +--- +# nuzlocke-tracker-aiw6 +title: Create deploy script +status: todo +type: task +priority: normal +created_at: 2026-02-09T15:30:48Z +updated_at: 2026-02-09T15:31:15Z +parent: nuzlocke-tracker-ahza +blocking: + - nuzlocke-tracker-izf6 + - nuzlocke-tracker-vpn5 + - nuzlocke-tracker-xmyh + - nuzlocke-tracker-jzqz +--- + +Create a `./deploy.sh` script for the dev machine that automates the full deployment flow. + +- Ensure the script runs from `main` branch (or warns if not) +- Build Docker images for API and frontend +- Tag images for the local registry (e.g., `unraid:5000/nuzlocke-api:latest`) +- Push images to the local registry +- Trigger the Portainer webhook to redeploy the stack +- Print status/confirmation of each step \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-hwyk--set-up-portainer-on-unraid.md b/.beans/nuzlocke-tracker-hwyk--set-up-portainer-on-unraid.md new file mode 100644 index 0000000..924ee4f --- /dev/null +++ b/.beans/nuzlocke-tracker-hwyk--set-up-portainer-on-unraid.md @@ -0,0 +1,16 @@ +--- +# nuzlocke-tracker-hwyk +title: Set up Portainer on Unraid +status: todo +type: task +created_at: 2026-02-09T15:30:44Z +updated_at: 2026-02-09T15:30:44Z +parent: nuzlocke-tracker-ahza +--- + +Install Portainer CE on the Unraid server for container/stack management. + +- Run Portainer CE as a Docker container on Unraid +- Configure it to manage the local Docker environment +- Import/create a stack from the production docker-compose file +- Verify the stack can be deployed and managed through the Portainer UI \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-izf6--set-up-local-docker-registry-on-unraid.md b/.beans/nuzlocke-tracker-izf6--set-up-local-docker-registry-on-unraid.md new file mode 100644 index 0000000..f33fc92 --- /dev/null +++ b/.beans/nuzlocke-tracker-izf6--set-up-local-docker-registry-on-unraid.md @@ -0,0 +1,16 @@ +--- +# nuzlocke-tracker-izf6 +title: Set up local Docker registry on Unraid +status: todo +type: task +created_at: 2026-02-09T15:30:40Z +updated_at: 2026-02-09T15:30:40Z +parent: nuzlocke-tracker-ahza +--- + +Run a `registry:2` container on the Unraid server for storing production Docker images locally. + +- Run `registry:2` as a Docker container on Unraid +- Configure a persistent storage volume for the registry data +- Optionally put it behind Nginx Proxy Manager with a hostname (e.g., `registry.local`) +- Verify pushing/pulling images from the dev machine works \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-jzqz--configure-portainer-webhook-for-automated-redeploy.md b/.beans/nuzlocke-tracker-jzqz--configure-portainer-webhook-for-automated-redeploy.md new file mode 100644 index 0000000..b4cc7bb --- /dev/null +++ b/.beans/nuzlocke-tracker-jzqz--configure-portainer-webhook-for-automated-redeploy.md @@ -0,0 +1,18 @@ +--- +# nuzlocke-tracker-jzqz +title: Configure Portainer webhook for automated redeployment +status: todo +type: task +priority: normal +created_at: 2026-02-09T15:30:45Z +updated_at: 2026-02-09T15:31:15Z +parent: nuzlocke-tracker-ahza +blocking: + - nuzlocke-tracker-hwyk +--- + +Set up a webhook in Portainer that triggers a stack redeployment when called. + +- Create a webhook trigger in Portainer for the nuzlocke-tracker stack +- The webhook should pull the latest images from the local registry and restart the stack +- Note the webhook URL for use in the deploy script \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-re0m--document-the-deployment-workflow.md b/.beans/nuzlocke-tracker-re0m--document-the-deployment-workflow.md new file mode 100644 index 0000000..ed1c2cd --- /dev/null +++ b/.beans/nuzlocke-tracker-re0m--document-the-deployment-workflow.md @@ -0,0 +1,23 @@ +--- +# nuzlocke-tracker-re0m +title: Document the deployment workflow +status: todo +type: task +priority: normal +created_at: 2026-02-09T15:30:57Z +updated_at: 2026-02-09T15:31:15Z +parent: nuzlocke-tracker-ahza +blocking: + - nuzlocke-tracker-aiw6 + - nuzlocke-tracker-3lfw + - nuzlocke-tracker-up0b + - nuzlocke-tracker-48ds +--- + +Write documentation covering the full deployment setup and workflows. + +- How to deploy (run `./deploy.sh`) +- How to redeploy after changes +- How to rollback to a previous version +- How to manage the production instance (Portainer UI, logs, etc.) +- How to set up the production environment from scratch (registry, Portainer, NPM, secrets) \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-up0b--environment-and-secrets-management.md b/.beans/nuzlocke-tracker-up0b--environment-and-secrets-management.md new file mode 100644 index 0000000..43c161d --- /dev/null +++ b/.beans/nuzlocke-tracker-up0b--environment-and-secrets-management.md @@ -0,0 +1,16 @@ +--- +# nuzlocke-tracker-up0b +title: Environment and secrets management +status: todo +type: task +created_at: 2026-02-09T15:30:52Z +updated_at: 2026-02-09T15:30:52Z +parent: nuzlocke-tracker-ahza +--- + +Set up production environment variable and secrets management. + +- Create a `.env.prod.example` template documenting all required variables +- Decide on secret handling approach (`.env` file on Unraid, Portainer environment variables, etc.) +- Ensure secrets are not committed to the repository (update `.gitignore` if needed) +- Document how to set up secrets on a fresh Unraid deployment \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-vpn5--create-production-docker-compose-file.md b/.beans/nuzlocke-tracker-vpn5--create-production-docker-compose-file.md new file mode 100644 index 0000000..28086e7 --- /dev/null +++ b/.beans/nuzlocke-tracker-vpn5--create-production-docker-compose-file.md @@ -0,0 +1,18 @@ +--- +# nuzlocke-tracker-vpn5 +title: Create production docker-compose file +status: todo +type: task +created_at: 2026-02-09T15:30:41Z +updated_at: 2026-02-09T15:30:41Z +parent: nuzlocke-tracker-ahza +--- + +Create `docker-compose.prod.yml` for the Unraid production deployment. + +- Reference pre-built images from the local Docker registry (not source volume mounts) +- Set production environment variables (DEBUG=false, proper DATABASE_URL, etc.) +- Proper restart policies (`unless-stopped` or `always`) +- No source code volume mounts — only data volumes (e.g., postgres_data) +- PostgreSQL with persistent named volume +- Appropriate port mappings for the production environment \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-xmyh--create-production-dockerfiles.md b/.beans/nuzlocke-tracker-xmyh--create-production-dockerfiles.md new file mode 100644 index 0000000..355c2e7 --- /dev/null +++ b/.beans/nuzlocke-tracker-xmyh--create-production-dockerfiles.md @@ -0,0 +1,16 @@ +--- +# nuzlocke-tracker-xmyh +title: Create production Dockerfiles +status: todo +type: task +created_at: 2026-02-09T15:30:42Z +updated_at: 2026-02-09T15:30:42Z +parent: nuzlocke-tracker-ahza +--- + +Create or adapt Dockerfiles for production builds (multi-stage where appropriate). + +- **Frontend:** Build the Vite app and serve statically (e.g., via a lightweight nginx container or bundled into the API) +- **API:** Run without debug mode, ensure Alembic migrations run on startup +- Consider multi-stage builds to keep image sizes small +- Ensure the images work when pulled from the local registry \ No newline at end of file