How thamesblanq/healthconnect works
HealthConnect is a Go HTTP API for user registration, login, and retrieving the authenticated user's profile. The main runtime workflow routes requests to handlers, which invoke application use cases; registration validates and hashes credentials before persisting a user, while login looks up the account, checks its password and activity, and generates a token. The sampled code establishes these use-case and repository calls. Auth handler and middleware internals are not sampled, so their downstream wiring is omitted where it cannot be confirmed.
Main entry points: main.go API server · register_user.go Register user · login_user.go Login user · http.go User handler
Components 18
HTTP API
- API server
cmd/api/main.go - User handler
internal/user/handlers/http.go - Auth handler
internal/auth/handlers/http.go - Auth middleware
internal/auth/handlers/middleware.go
User lifecycle
- Register user
internal/user/application/register_user.go - User model
internal/user/domain/user.go - User repository port
internal/user/ports/user_repository.go - Postgres user repository
internal/user/adapters/postgres/user_repository.go
Authentication
- Login user
internal/auth/application/login_user.go - Auth user provider
internal/auth/adapters/user_provider.go - JWT generator
internal/auth/adapters/jwt/jwt_generator.go - JWT verifier
internal/auth/adapters/jwt/jwt_verifier.go - Claims context
internal/auth/handlers/context.go
Persistence and security
- Argon2 hasher
internal/security/adapters/argon2/password_hasher.go - Configuration
internal/config/config.go - Postgres pool
internal/database/postgres.go - PostgreSQL
Other components
- API client
Connections 25
- API client → API server: sends requests
- API server → Configuration: loads settings
- API server → Postgres pool: opens pool
- Postgres pool → PostgreSQL: connects
- API server → User handler: routes registration
- API server → Auth handler: routes login
- API server → Auth middleware: protects profile
- API server → Register user: wires use case
- API server → Login user: wires use case
- API server → Postgres user repository: wires repository
- API server → Argon2 hasher: wires hasher
- API server → Auth user provider: wires provider
- API server → JWT generator: wires generator
- API server → JWT verifier: wires verifier
- User handler → Register user: executes
- User handler → Claims context: reads claims
- Register user → User repository port: checks and saves
- Register user → Argon2 hasher: hashes password
- Register user → User model: creates user
- Postgres user repository → PostgreSQL: reads and writes
- Login user → Auth user provider: looks up user
- Login user → Argon2 hasher: compares password
- Login user → JWT generator: generates token
- Auth user provider → User repository port: requests lookup
- Postgres user repository → User repository port: implements