This document defines how the WatchTower team plans, tracks, builds, reviews, and closes work in GitHub for Sprint 1 and future sprints. It keeps team execution consistent, transparent, and easy to follow for a class project environment.
main using branch naming conventions.Use short, descriptive branch names:
feature/short-descriptiondocs/short-descriptionfix/short-descriptionchore/short-descriptionExamples:
feature/error-loggerfeature/dashboard-layoutdocs/mvp-definitionchore/github-actions-setupUse this format:
<type>: <short summary>
Common types:
featfixdocschoretestrefactorciExamples:
feat: add error logger prototypefix: resolve dashboard layout issuedocs: add sprint 1 planning noteschore: create issue templatetest: add logger unit testsEvery major change goes through a pull request.
Each PR must include:
PR checklist expectations:
Use this body format for all backlog issues:
Minimum rule: every issue must include Owner, Support, and Reviewer in the issue body.
Use labels from all required groups for each issue.
sprint-1: work targeted for Sprint 1sprint-2: work targeted for Sprint 2sprint-3: work targeted for Sprint 3post-mvp: work deferred until after MVP scopepriority-high: critical to sprint success or blocking other taskspriority-medium: important but not immediate blockerpriority-low: useful improvement or later follow-uptype-docstype-processtype-frontendtype-backendtype-instrumentationtype-testingtype-designtype-devopstype-researchstatus-ready: defined and ready to startstatus-in-progress: actively being worked onstatus-blocked: cannot proceed due to dependency/blockerstatus-review: ready for review/sign-offstatus-done: completed and acceptedsprint-1 + priority-high + type-process + status-readysprint-1 + priority-medium + type-research + status-readysprint-1 + priority-high + type-frontend + status-readysprint-2 + priority-medium + type-testing + status-readypost-mvp + priority-low + type-devops + status-readyAdd placeholder issues for future work so the roadmap is visible early. Placeholders should include:
Each placeholder must still include labels, owner/support/reviewer, and acceptance criteria even if implementation is in a later sprint.
The backlog must be reviewed at least once during a team sync. During the review:
Team members provide regular standup updates (live or async) using:
Standup updates should reference active issue numbers when possible.
Use docs/ as the primary project documentation directory:
docs/workflow.md - team workflow, issue/label conventions, process standardsdocs/git-workflow.md - legacy quick git workflow referencedocs/sprint-1-planning.md - sprint plan and milestonesdocs/requirements.md - functional and non-functional requirementsdocs/mvp.md - MVP definition and boundariesdocs/adr/ - architecture decision recordsdocs/research/ - research notes and findingsdocs/retrospectives/ - sprint retrospective recordsGenAI tools are allowed for brainstorming, drafting, and code/documentation assistance with the following rules:
A task is done when:
status-doneSprint 1 is done when:
docs/workflow.mdEvery push to main and every pull request targeting main runs the
GitHub Actions workflow defined in
.github/workflows/ci.yml. The
pipeline is structured as small, independent jobs so failures point
directly at the responsible area of the codebase.
vnu.jar) against all
.html files under src/.npx) against all .css
files under src/ using a temporary, opinionated rule set.npx) against all .js files
under src/ and tests/ using a temporary config that supports both
browser and Node globals.npm run test:unit (Jest, tests in tests/unit/).npm run test:e2e (Playwright, tests in
tests/e2e/). The workflow starts the server with npm start, waits
for http://localhost:3000, runs the tests, and stops the server.npm run docs:js produces docs/api/ so we
always know the docs build cleanly.npm audit --audit-level=high.vnu.jar, npx stylelint, npx eslint) with temporary configs
inside the runner, so we don’t add permanent lint config files to the
repository unless the team agrees they are needed.FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true) so it stays ahead of the
GitHub Actions Node.js 20 deprecation and remains future-ready.npm install
npm run test:unit # Jest unit tests
npm run docs:js # generate docs/api/
npm start # start the WatchTower server on :3000
npm run test:e2e # Playwright smoke tests (in a separate terminal)