diff --git a/.gitea/ISSUE_TEMPLATE/bug.yaml b/.gitea/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 0000000..1ffc936 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,56 @@ +name: "Bug" +about: "Something is broken or incorrect" +title: "[Bug]: " +labels: + - "type/bug" + - "status/backlog" +body: + - type: textarea + id: summary + attributes: + label: "Bug summary" + description: "What’s wrong?" + validations: + required: true + + - type: textarea + id: repro + attributes: + label: "Steps to reproduce" + placeholder: | + 1. + 2. + 3. + validations: + required: true + + - type: textarea + id: expected + attributes: + label: "Expected behavior" + validations: + required: true + + - type: textarea + id: actual + attributes: + label: "Actual behavior" + validations: + required: true + + - type: textarea + id: impact + attributes: + label: "Impact / severity" + placeholder: "Who is affected? How badly? Workaround?" + validations: + required: false + + - type: textarea + id: logs + attributes: + label: "Logs / screenshots" + description: "Paste logs or link images. Redact secrets." + render: shell + validations: + required: false diff --git a/.gitea/ISSUE_TEMPLATE/chore.yaml b/.gitea/ISSUE_TEMPLATE/chore.yaml new file mode 100644 index 0000000..62a798a --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/chore.yaml @@ -0,0 +1,41 @@ +name: "Chore" +about: "Refactor, maintenance, dependency updates, cleanup" +title: "[Chore]: " +labels: + - "type/chore" + - "status/backlog" +body: + - type: textarea + id: goal + attributes: + label: "Goal" + description: "What needs to be done and why?" + validations: + required: true + + - type: textarea + id: scope + attributes: + label: "Scope" + placeholder: | + - Includes: + - Excludes: + validations: + required: false + + - type: textarea + id: acceptance + attributes: + label: "Acceptance criteria" + placeholder: | + - [ ] ... + - [ ] ... + validations: + required: true + + - type: textarea + id: test_plan + attributes: + label: "Test plan" + validations: + required: true diff --git a/.gitea/ISSUE_TEMPLATE/config.yaml b/.gitea/ISSUE_TEMPLATE/config.yaml new file mode 100644 index 0000000..d5e31a4 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/config.yaml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: "Docs / Architecture" + url: "https://" + about: "System design notes, decisions, and reference docs" diff --git a/.gitea/ISSUE_TEMPLATE/feature.yml b/.gitea/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 0000000..2342fd6 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,70 @@ +name: "Feature" +about: "New capability or enhancement" +title: "[Feature]: " +labels: + - "type/feature" + - "status/backlog" +body: + - type: markdown + attributes: + value: | + Use this for a new feature or enhancement. Keep scope tight and include clear acceptance criteria. + + - type: textarea + id: problem + attributes: + label: "Problem / user need" + description: "What problem are we solving, and for whom?" + placeholder: "As a user, I want..., so that..." + validations: + required: true + + - type: textarea + id: solution + attributes: + label: "Proposed solution" + description: "Describe the expected behavior at a high level." + placeholder: "When the user does X, the system should..." + validations: + required: true + + - type: textarea + id: non_goals + attributes: + label: "Non-goals / out of scope" + description: "What are we explicitly not doing in this feature?" + placeholder: "- Not doing...\n- Not doing..." + validations: + required: false + + - type: textarea + id: acceptance + attributes: + label: "Acceptance criteria" + description: "Concrete checks for ‘done’. Prefer bullets and testable statements." + placeholder: | + - [ ] ... + - [ ] ... + - [ ] ... + validations: + required: true + + - type: textarea + id: notes + attributes: + label: "Implementation notes (optional)" + description: "Links, APIs, file paths, edge cases." + validations: + required: false + + - type: textarea + id: test_plan + attributes: + label: "Test plan" + description: "How will we verify? Include commands or steps." + placeholder: | + - Unit: + - Integration: + - Manual: + validations: + required: true diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..8dcb109 --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,29 @@ +## Summary +- What does this PR change? + +## Linked issues +- Fixes # +- Relates to # + +## Type +- [ ] Feature +- [ ] Bug fix +- [ ] Chore / refactor +- [ ] Docs + +## Test plan +- [ ] Unit tests +- [ ] Integration tests +- [ ] Manual verification + +**Commands / steps:** +1. +2. + +## Screenshots / UI notes (if applicable) + +## Checklist +- [ ] Acceptance criteria met (from linked issue) +- [ ] No secrets committed +- [ ] Logging is appropriate (no PII) +- [ ] Docs updated (if needed) diff --git a/.gitea/SPRINTS.md b/.gitea/SPRINTS.md new file mode 100644 index 0000000..1f15f5a --- /dev/null +++ b/.gitea/SPRINTS.md @@ -0,0 +1,36 @@ +# SPRINTS.md — MotoVaultPro Sprint Calendar (2026) + +**Cadence:** 2 weeks (14 days) +**Sprint weeks:** Monday → Sunday +**Naming convention:** `Sprint YYYY-MM-DD` (the Monday start date) + +> Note: Sprint 26 ends on **2027-01-03** (it crosses into the next year). + +| # | Sprint | Start (Mon) | End (Sun) | +|---:|---|---|---| +| 1 | Sprint 2026-01-05 | 2026-01-05 | 2026-01-18 | +| 2 | Sprint 2026-01-19 | 2026-01-19 | 2026-02-01 | +| 3 | Sprint 2026-02-02 | 2026-02-02 | 2026-02-15 | +| 4 | Sprint 2026-02-16 | 2026-02-16 | 2026-03-01 | +| 5 | Sprint 2026-03-02 | 2026-03-02 | 2026-03-15 | +| 6 | Sprint 2026-03-16 | 2026-03-16 | 2026-03-29 | +| 7 | Sprint 2026-03-30 | 2026-03-30 | 2026-04-12 | +| 8 | Sprint 2026-04-13 | 2026-04-13 | 2026-04-26 | +| 9 | Sprint 2026-04-27 | 2026-04-27 | 2026-05-10 | +| 10 | Sprint 2026-05-11 | 2026-05-11 | 2026-05-24 | +| 11 | Sprint 2026-05-25 | 2026-05-25 | 2026-06-07 | +| 12 | Sprint 2026-06-08 | 2026-06-08 | 2026-06-21 | +| 13 | Sprint 2026-06-22 | 2026-06-22 | 2026-07-05 | +| 14 | Sprint 2026-07-06 | 2026-07-06 | 2026-07-19 | +| 15 | Sprint 2026-07-20 | 2026-07-20 | 2026-08-02 | +| 16 | Sprint 2026-08-03 | 2026-08-03 | 2026-08-16 | +| 17 | Sprint 2026-08-17 | 2026-08-17 | 2026-08-30 | +| 18 | Sprint 2026-08-31 | 2026-08-31 | 2026-09-13 | +| 19 | Sprint 2026-09-14 | 2026-09-14 | 2026-09-27 | +| 20 | Sprint 2026-09-28 | 2026-09-28 | 2026-10-11 | +| 21 | Sprint 2026-10-12 | 2026-10-12 | 2026-10-25 | +| 22 | Sprint 2026-10-26 | 2026-10-26 | 2026-11-08 | +| 23 | Sprint 2026-11-09 | 2026-11-09 | 2026-11-22 | +| 24 | Sprint 2026-11-23 | 2026-11-23 | 2026-12-06 | +| 25 | Sprint 2026-12-07 | 2026-12-07 | 2026-12-20 | +| 26 | Sprint 2026-12-21 | 2026-12-21 | 2027-01-03 | diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..7dc8e0c --- /dev/null +++ b/.mcp.json @@ -0,0 +1,19 @@ +{ + "mcpServers": { + "gitea-mcp": { + "type": "stdio", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "--env", + "GITEA_ACCESS_TOKEN=88f2ac07f148676a79ce413c7f5ca4912468c500", + "--env", + "GITEA_HOST=https://git.motovaultpro.com", + "docker.gitea.com/gitea-mcp-server" + ], + "env": {} + } + } +} \ No newline at end of file diff --git a/docs/PROMPTS.md b/docs/PROMPTS.md index d4238b4..4fd21ff 100644 --- a/docs/PROMPTS.md +++ b/docs/PROMPTS.md @@ -30,8 +30,10 @@ You are a senior software engineer specializsing in NodeJS, Typescript, front en *** CHANGES TO IMPLEMENT *** - Research this code base and ask iterative questions to compile a complete plan. - We will pair troubleshoot this. Tell me what logs and things to run and I will -- There is a backup system built into the admin settings. -- Uploading a backup to restore throws a 400 API error. +- There is current a Dark / Light theme option for this application +- There is logic somewhere in the code that detects the operating systems' theme and uses that. Remove this. +- Default to the + *** ROLE *** @@ -56,30 +58,6 @@ You are a senior software engineer specializsing in NodeJS, Typescript, front en - We will pair plan this. Ask me for options for various levels of redundancy and automation -*** STAGING CONTAINER IMAGES *** -egullickson@mvp-build:~$ sudo docker image ls - i Info → U In Use -IMAGE ID DISK USAGE CONTENT SIZE EXTRA -git.motovaultpro.com/egullickson/backend:3321d82 67b2480ddac5 485MB 76.3MB U -git.motovaultpro.com/egullickson/frontend:3321d82 e3e1ee18df42 96.1MB 28.7MB U -git.motovaultpro.com/egullickson/mirrors/postgres:18-alpine 6723ec6d445f 402MB 112MB U -git.motovaultpro.com/egullickson/mirrors/redis:8.4-alpine 8360960f5fb5 130MB 33.4MB U -git.motovaultpro.com/egullickson/mirrors/traefik:v3.6 13e903c820df 239MB 52MB U -egullickson@mvp-build:~$ - -*** PRODUCTION CONTAINER IMAGES *** - -egullickson@mvp-prod:~$ sudo docker image ls - i Info → U In Use -IMAGE ID DISK USAGE CONTENT SIZE EXTRA -git.motovaultpro.com/egullickson/backend:latest 67b2480ddac5 485MB 76.3MB U -git.motovaultpro.com/egullickson/frontend:latest e3e1ee18df42 96.1MB 28.7MB U -git.motovaultpro.com/egullickson/mirrors/postgres:18-alpine 6723ec6d445f 402MB 112MB U -git.motovaultpro.com/egullickson/mirrors/redis:8.4-alpine 8360960f5fb5 130MB 33.4MB U -git.motovaultpro.com/egullickson/mirrors/traefik:v3.6 13e903c820df 239MB 52MB U -egullickson@mvp-prod:~$ - - *** ROLE *** - You are a senior DBA with expert knowledge in Postgres SQL.