James Griffin c57f4b67ff
Some checks failed
CI / Go tests & lint (push) Successful in 1m14s
CI / Frontend tests & type-check (push) Failing after 1m27s
CI / Go tests & lint (pull_request) Successful in 8s
CI / Frontend tests & type-check (pull_request) Failing after 10s
Implement Issue #1: User Accounts & Profiles
- 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>
2026-04-07 10:53:39 -03:00
2026-03-05 14:32:44 +00:00

walkies

A web-based application for an animal shelter to manage volunteer scheduling, time off, check-in/check-out, and notifications.

Requirements

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).

Description
A web-based application for an animal shelter to manage volunteer scheduling, time off, check-in/check-out, and notifications.
Readme MIT 590 KiB
Languages
Go 59%
TypeScript 39%
CSS 1.5%
HTML 0.3%
Dockerfile 0.2%