c57f4b67ffd3c326455af78648cfc02c32f7b4be
- Admin-only account creation (no self-registration); invite-token flow
replaces the public /auth/register endpoint
- New volunteer fields: phone, is_trainee, operational_roles,
notification_preference, admin_notes, last_login, completed_shifts
- Role-scoped profile editing: volunteers update name/phone only;
admins update all fields including notes and trainee flag
- /auth/activate endpoint for invite-token-based account activation
- /api/v1/volunteers/{id}/invite for admin to resend invite links
- last_login recorded on each successful authentication
Tests:
- Go: handler tests (auth rules, create, activate, update scoping) via
Storer/AuthServicer interfaces and fake store; auth unit tests for
HashPassword, IssueToken, and Parse
- Frontend: RTL tests for Activate, Profile, and Volunteers pages
- Fixed CRA 5 + React Router v7 Jest compatibility (moduleNameMapper +
TextEncoder polyfill)
- Replaced stale CRA App.test.tsx placeholder with real tests
CI:
- .gitea/workflows/ci.yml runs go vet, go test, tsc, and npm test on
every push and pull request
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
walkies
A web-based application for an animal shelter to manage volunteer scheduling, time off, check-in/check-out, and notifications.
Requirements
- Go 1.21+
- Node.js 18+
- Task (
brew install go-taskor see install docs) - Docker (optional, for containerised deployment)
Development
Run task to list all available tasks.
Quick start (two terminals)
Terminal 1 — backend:
task web:build # build frontend once so the Go server has static files
task go:run # starts API server on :8080
Terminal 2 — frontend dev server:
task web:dev # hot-reload dev server on :3000, proxies /api/v1 → :8080
Then open http://localhost:3000.
With live backend reload
Install air for hot-reloading the Go server:
go install github.com/air-verse/air@latest
task web:build
task dev:backend
Common tasks
| Task | Description |
|---|---|
task build |
Build frontend and Go binary |
task go:test |
Run Go tests |
task web:test |
Run frontend tests |
task go:lint |
Run go vet |
task tidy |
Tidy Go modules |
task clean |
Remove build artifacts |
Docker
task docker:up # build image and start container
task docker:logs # tail logs
task docker:down # stop
Configuration
The server is configured via environment variables:
| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
HTTP listen port |
DATABASE_DSN |
walkies.db |
SQLite file path |
JWT_SECRET |
change-me-in-production |
HMAC signing key — change this |
STATIC_DIR |
./web/build |
Path to compiled React app |
Copy .env.example to .env to set these locally (the server reads environment variables directly; use a process manager or Docker to inject them).
Languages
Go
59%
TypeScript
39%
CSS
1.5%
HTML
0.3%
Dockerfile
0.2%