q792602257
|
35b812e594
|
chore(web): eslint flat-config + prettier setup
|
2026-04-29 07:41:51 +08:00 |
|
q792602257
|
aef7b0b661
|
feat(web): vite + vue 3 + ts + tailwind + naive ui scaffolding
|
2026-04-29 07:32:32 +08:00 |
|
q792602257
|
b72de98f15
|
test(app): integration test for login -> dispatch -> list flow
|
2026-04-28 23:18:27 +08:00 |
|
q792602257
|
cb865beabf
|
fix(server): explicit discard of fmt.Fprintln return values for errcheck
|
2026-04-28 23:12:43 +08:00 |
|
q792602257
|
acf8596f23
|
feat(server): wire config + signal-aware app entrypoint
|
2026-04-28 23:11:29 +08:00 |
|
q792602257
|
d0f34e4e5e
|
feat(app): composition root with migrate, pool, modules, router, bootstrap
|
2026-04-28 23:08:38 +08:00 |
|
q792602257
|
62cf9ffa0c
|
feat(user): wire audit recorder into login/logout
|
2026-04-28 23:02:09 +08:00 |
|
q792602257
|
f42b88e57d
|
feat(audit): recorder with pg implementation and ip parsing
|
2026-04-28 22:53:22 +08:00 |
|
q792602257
|
0b323b91ee
|
feat(notify): http handler for inbox list / unread count / mark read
|
2026-04-28 22:37:19 +08:00 |
|
q792602257
|
13032c1192
|
feat(notify): dispatcher with sync persist and async channel fanout
|
2026-04-28 22:33:14 +08:00 |
|
q792602257
|
83c63c5f93
|
feat(notify): dummy notifier writing structured log lines
|
2026-04-28 22:28:47 +08:00 |
|
q792602257
|
d9a8c04195
|
feat(notify): postgres repository for notifications inbox
|
2026-04-28 22:25:23 +08:00 |
|
q792602257
|
f25078dc8c
|
feat(notify): sqlc queries for notifications crud
|
2026-04-28 22:18:41 +08:00 |
|
q792602257
|
32e313d5f7
|
feat(notify): channel/severity types and Notifier interface
|
2026-04-28 18:07:19 +08:00 |
|
q792602257
|
e0a7018226
|
feat(user): http handler for login/me/logout with middleware integration
|
2026-04-28 18:02:09 +08:00 |
|
q792602257
|
c6c4edcd14
|
feat(user): service with login/logout/resolve/bootstrap (with unit tests)
|
2026-04-28 17:51:50 +08:00 |
|
q792602257
|
2141ddafe1
|
feat(user): postgres repository wrapping sqlc queries
|
2026-04-28 17:45:49 +08:00 |
|
q792602257
|
42d44800b6
|
feat(user): sqlc queries for users and sessions
|
2026-04-28 17:40:30 +08:00 |
|
q792602257
|
62ff9ed1fe
|
feat(user): session token generator with sha256 storage hash
|
2026-04-28 15:50:47 +08:00 |
|
q792602257
|
da316725fc
|
feat(user): argon2id password hashing helpers
|
2026-04-28 15:46:23 +08:00 |
|
q792602257
|
46fda4f594
|
feat(user): domain types and Service interface
|
2026-04-28 15:39:38 +08:00 |
|
q792602257
|
782247a239
|
feat(http/mw): bearer token auth middleware with optional mode
|
2026-04-28 15:34:38 +08:00 |
|
q792602257
|
f88c352e55
|
feat(http/mw): structured request logger middleware
|
2026-04-28 15:26:05 +08:00 |
|
q792602257
|
e01db86fb6
|
feat(http/mw): recover middleware with structured panic log
|
2026-04-28 15:10:55 +08:00 |
|
q792602257
|
5bd56de013
|
feat(http/mw): request id middleware with context propagation
|
2026-04-28 15:04:00 +08:00 |
|
q792602257
|
98c9ce139f
|
feat(http): chi router skeleton + Google-style error response
|
2026-04-28 14:59:02 +08:00 |
|
q792602257
|
b26a7e9a6f
|
feat(crypto): AES-256-GCM encryptor for secret fields
|
2026-04-28 14:53:28 +08:00 |
|
q792602257
|
b95bd13377
|
feat(errs): AppError type with HTTP status mapping
|
2026-04-28 14:49:43 +08:00 |
|
q792602257
|
222335e604
|
fix(db): add MaxConnLifetimeJitter to prevent synchronized conn expiration storms
|
2026-04-28 14:45:02 +08:00 |
|
q792602257
|
903d872e3f
|
feat(db): add pgxpool with health check and integration test
|
2026-04-28 14:32:37 +08:00 |
|
q792602257
|
d491a7047a
|
feat(sqlc): scaffold sqlc config and placeholder queries
|
2026-04-28 14:23:53 +08:00 |
|
q792602257
|
5c5687b9dc
|
feat(db): add 0001_init migration (users/sessions/notifications/audit)
|
2026-04-28 14:13:18 +08:00 |
|
q792602257
|
d7127351a7
|
feat(db): add golang-migrate runner
|
2026-04-28 14:07:19 +08:00 |
|
q792602257
|
34b8cd09e6
|
fix(logger): expose AddSource option; FromEnv enables caller in non-dev (spec §8.2)
|
2026-04-28 14:02:10 +08:00 |
|
q792602257
|
b4933a6fd1
|
feat(logger): slog-based logger with JSON and text handlers
|
2026-04-28 13:53:02 +08:00 |
|
q792602257
|
baf296abfb
|
fix(config): redact MasterKey type; drop os.Clearenv; add hex validation test
|
2026-04-28 13:44:06 +08:00 |
|
q792602257
|
26d6c72c33
|
feat(config): viper-based config loader with env + file + master key validation
|
2026-04-28 13:30:14 +08:00 |
|
q792602257
|
c5071d93eb
|
chore: add dev postgres via docker compose (verification deferred -- docker not installed)
|
2026-04-28 13:21:38 +08:00 |
|
q792602257
|
14765eac25
|
fix(scaffold): golangci-lint v2 format; posix shell note; drop redundant .gitkeep
|
2026-04-28 12:47:08 +08:00 |
|
q792602257
|
1d38ce90bb
|
chore: initialize repo skeleton with Makefile and lint config
|
2026-04-28 12:33:46 +08:00 |
|