Shared services are in separate compose files. Tools depends on them
at runtime but Docker compose doesn't need to manage their lifecycle.
Co-Authored-By: Kilo <kilo@kilo.ai>
The builder stage uses --mount=type=cache for /app/target, so binaries
are in the cache which isn't available to the runtime stage COPY.
Fix by copying from /app/gateway and /app/workers which were cp'd
to the builder's regular filesystem.
Co-Authored-By: Kilo <kilo@kilo.ai>
Replace cargo install cargo-chef with pre-built image
lukemathwalker/cargo-chef:latest-rust-1.85.0 and add build
cache mounts for faster rebuilds.
Co-Authored-By: Kilo <kilo@kilo.ai>
The bun.lock doesn't exist yet - use bun install without frozen-lockfile.
This will be optimized once a lockfile is generated.
Co-Authored-By: Kilo <kilo@kilo.ai>
Tools repo is now public so GITHUB_TOKEN can clone it.
Revert the token injection workaround since it's no longer needed.
Co-Authored-By: Kilo <kilo@kilo.ai>
Move tools code to its own repo (asepharyana/asepharyana-hub-tools)
and add as git submodule following the existing app pattern.
Fix Dockerfile paths to use apps/tools/ prefix since build context
is the repo root.
Co-Authored-By: Kilo <kilo@kilo.ai>
- Introduced a comprehensive Docker image architecture for the project, detailing multi-stage builds for Rust backend and Next.js frontend.
- Added Docker Compose configuration for the tools service, including environment variables and volume management.
- Documented CI/CD integration steps for Docker build and deployment workflows.
- Implemented a detailed processing pipeline for document scanning, covering stages from image preprocessing to PDF generation.
- Included edge case handling and performance budget for each stage of the pipeline.
- Enhanced security considerations and rollback strategies for the tools service.
Routing is handled by container labels (traefik.enable + router labels),
so file-level routes for lidm are no longer needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cloudflare Origin CA wildcard cert covers *.asepharyana.my.id,
so websecure entrypoint with tls works correctly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add routers and services for lidm.asepharyana.my.id (→ lidm-frontend:3000)
and lidm-api.asepharyana.my.id (→ lidm-backend:3001) behind Traefik.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Using only :sha-<short> tags ensures deterministic image references
and prevents stale :latest caches from serving wrong images.
Co-Authored-By: Asep Haryana Saputra <asepharyana@users.noreply.github.com>
- Remove dashboard container from observability.yml
- Remove infra/docker/dashboard.Dockerfile
- Remove dashboard route from Traefik apps.yaml
- Mount Docker socket on hub container for /api/dashboard
- Remove dashboard build from CI/CD (docker-build-push.yml)
- Update submodule pointer to hub with Next.js dashboard rewrite
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Created asepharyana/asepharyana-hub-hub repo
- Updated CLAUDE.md with both submodules
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>