~bigbes/lethe

ref: c9442a6b8a6caf8bf82ba241ce2c464eb2efa586 lethe/Dockerfile -rw-r--r-- 1022 bytes
0cf348a3 — Eugene Blikh a month ago
docker: stabilize web-builder paths and bump builder Go to 1.26

Two related Dockerfile correctness fixes uncovered while validating the
review pass:

1. The web-builder stage used WORKDIR /web with vite's relative
   outDir ../internal/server/web/dist resolving to /internal/server/web/dist
   at the container root — working only by relative-path coincidence.
   Mirror the host repo layout inside /src so the path is /src/internal/server/web/dist
   in both stages, making the COPY --from explicit and stable against any
   future WORKDIR or outDir change.

2. golang:1.25-alpine no longer compiles the codebase: the auxilia/culpa
   dep uses errors.AsType which is in 1.26+. Bump the builder image to
   golang:1.26-alpine and the go.mod directive from 1.25.0 to 1.26.0
   so they agree on the actual minimum.

Verified: docker build (full multi-stage) green; produced binary runs.
76a281a0 — Eugene Blikh a month ago
server: embed web SPA at /, wire build pipeline

- Add internal/server/web/embed.go with //go:embed all:dist and a
  SPA fallback shim: file-not-found → serve index.html at 200.
- Commit dist/.gitkeep and dist/index.html (placeholder) so go build
  works on a fresh clone; real build output stays gitignored.
- Mount web.Handler() as GET /* catch-all in server.go after /api/v1
  so API routes and probe endpoints shadow the wildcard.
- Add three server tests: ServesSPAAtRoot, SPAFallbackForNonAPIPath,
  APIPathsBypassSPA; update NotFoundReturnsProblemJSON for SPA era.
- Extend Justfile with web-{install,dev,build,test,lint,clean} targets;
  build now depends on web-build.
- Add node:20-alpine web-builder stage to Dockerfile; COPY dist into
  the Go builder stage before compiling.
4ca03bea — Eugene Blikh a month ago
feat: bootstrap lethe server skeleton + wire contract