Commit Graph
77 Commits
Author SHA1 Message Date
asepharyanaandKilo 584a7155e6 fix(infra): use pre-built cargo-chef image in Dockerfile
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>
2026-07-24 13:32:31 +07:00
asepharyanaandKilo a41b2d7312 fix(infra): remove bun.lock from Dockerfile, fix frontend build
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>
2026-07-24 13:20:30 +07:00
asepharyanaandKilo d8b1457a11 fix(infra): convert apps/tools to submodule, fix Dockerfile paths
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>
2026-07-24 13:11:54 +07:00
asepharyanaandKilo 67288c8723 feat(infra): add tools service with document scanner, image & PDF tools
Implement self-hosted document scanner and media processing tools as
an alternative to CamScanner/ilovepdf without third-party uploads.

Backend: Rust Axum gateway + worker pool with NATS JetStream queue
Frontend: Next.js 16 + shadcn/ui + Tailwind v4 + Framer Motion
Pipeline: Canny edge detection -> DLT homography warp -> Sauvola
binarization -> Hough deskew -> Tesseract OCR -> searchable PDF

Phase 1 (MVP) delivers:
- Document scanner with perspective correction and OCR
- Image compress/resize/convert tools
- PDF merge/split/compress tools
- Real-time WebSocket progress updates
- Rate limiting, auto-cleanup, Prometheus metrics
- Full CI/CD pipeline with Docker multi-stage build

Co-Authored-By: Kilo <kilo@kilo.ai>
2026-07-24 13:08:09 +07:00
GitHub Action 447b22d9da chore: update manifests and submodules [skip ci] 2026-07-24 02:11:27 +00:00
asepharyanaandClaude Opus 4.8 7181710aa7 chore: remove lidm routes from file config — now via Docker labels
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>
2026-07-23 19:19:30 +07:00
asepharyanaandClaude Opus 4.8 478a0f849f fix: use websecure + tls for lidm routes, same pattern as other services
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>
2026-07-23 19:07:22 +07:00
asepharyanaandClaude Opus 4.8 7fc863d611 feat: add lidm frontend and backend routes to traefik config
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>
2026-07-23 19:02:13 +07:00
GitHub Action df7aaedfba chore: update manifests and submodules [skip ci] 2026-07-23 11:17:49 +00:00
asepharyana 545397eb1f fix(infra): fix Prometheus Docker SD relabel + group_add 2026-07-23 07:50:20 +07:00
asepharyanaandClaude Opus 4.8 40e1a80f9f feat(infra): auto-discovery Prometheus + Traefik metrics
- Prometheus: add docker_sd_configs for auto-discovery via labels
- Prometheus: mount Docker socket for Docker SD
- Traefik: enable --metrics.prometheus with entrypoint/service labels
- Traefik: add prometheus.io/scrape=true label
- Observability: mount Docker socket for Prometheus container
- Bump hub submodule (Traefik metrics queries + sparkline charts)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 07:45:59 +07:00
asepharyana 688ac095f6 fix(infra): add group_add for docker socket access in hub 2026-07-23 07:35:58 +07:00
GitHub Action a4852f636a chore: update manifests and submodules [skip ci] 2026-07-23 00:33:56 +00:00
asepharyana 69cae1e73e fix(infra): chown .next dir in hub Dockerfile for runtime permissions 2026-07-23 07:32:59 +07:00
GitHub Action bd9cc1f4c7 chore: update manifests and submodules [skip ci] 2026-07-23 00:25:10 +00:00
asepharyanaandClaude Opus 4.8 aaaf5de70c feat(infra): remove Go dashboard, dashboard is now part of hub Next.js app
- 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>
2026-07-23 07:23:12 +07:00
asepharyana cea96fcfc2 fix(ci): update dashboard detection to apps/hub/dashboard/ 2026-07-23 07:19:55 +07:00
asepharyanaandClaude Opus 4.8 5ff8f9224f feat(infra): migrate dashboard into hub submodule
- Move infra/dashboard/ → apps/hub/dashboard/ (hub submodule repo)
- Update dashboard.Dockerfile to COPY from apps/hub/dashboard/
- Update go module path

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 07:19:55 +07:00
asepharyana caf3f1d79b fix(infra): remove hub subdomain from Traefik rule 2026-07-23 07:19:55 +07:00
asepharyana 4e4ed101c5 fix(infra): hub at root domain asepharyana.my.id 2026-07-23 07:19:55 +07:00
asepharyanaandClaude Opus 4.8 9db886e68b feat(infra): add hub service — Docker, Traefik, CI/CD
- Add infra/docker/hub.Dockerfile (Next.js multi-stage build)
- Add infra/compose/hub.yml with app-shared-net
- Add Traefik route for hub.asepharyana.{my,web}.id → hub:3000
- Update docker-build-push.yml: path detection, matrix build, dispatch, manifest
- Update deploy-docker.yml: include hub.yml in ALL_COMPOSE_FILES
- Update update-submodule.yml: allow hub service
- Update docs/ARCHITECTURE.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 07:19:55 +07:00
GitHub Action f085375363 chore: update manifests and submodules [skip ci] 2026-07-22 23:03:10 +00:00
asepharyana 5999ac159a feat(infra): responsive UI with mobile-first design and blur header
- Mobile-first responsive: single column → 2 columns → auto-fill grid
- Sticky header with backdrop-filter blur
- Cards with hover glow and fade-in animation
- SVG charts scale with container (max-width constraint per breakpoint)
- Touch-friendly link targets on mobile
- Custom dark scrollbar
- 5 breakpoints: 480, 640, 768, 1024, 1280px
2026-07-23 06:02:10 +07:00
GitHub Action 28ba9dd78c chore: update manifests and submodules [skip ci] 2026-07-22 22:59:17 +00:00
asepharyana 4cc2ba1630 fix(infra): remove all fixed grid-column overrides, layout fully auto-flow
All cards now auto-arrange in the CSS grid — no hardcoded positions,
no fixed widths. Layout adapts naturally to content and screen size.
2026-07-23 05:58:17 +07:00
GitHub Action bf39884ea6 chore: update manifests and submodules [skip ci] 2026-07-22 22:39:21 +00:00
asepharyana 373cb4fc1a feat(infra): fully dynamic dashboard layout with auto-adaptive grid
- Replace fixed grid-column spans with auto-fill grid
- Charts auto-hide when no data available (no gaps)
- System Resources row spans full width only when data exists
- Responsive breakpoints for mobile, tablet, desktop
- SVG charts scale with container width
2026-07-23 05:38:27 +07:00
GitHub Action f96041a164 chore: update manifests and submodules [skip ci] 2026-07-22 22:32:10 +00:00
asepharyana 9a48a49f21 feat(infra): auto-discovered node metrics (CPU, RAM, Disk) and fully dynamic dashboard
- Add node-exporter container for host metrics (CPU, RAM, Disk)
- SVG gauge charts rendered server-side from Prometheus data
- Auto-detect compose project name from Docker labels
- Auto-detect web services via traefik.* labels for quick links
- Remove all hardcoded service name filters
- Dynamic system name based on compose project
2026-07-23 05:31:05 +07:00
GitHub Action 4f15cafc02 chore: update manifests and submodules [skip ci] 2026-07-22 22:21:46 +00:00
GitHub Action c909c4a9a1 chore: update manifests and submodules [skip ci] 2026-07-22 22:17:46 +00:00
asepharyana ffe07ddef0 fix(infra): filter hub services by compose project label, fix TraceList field name collision 2026-07-22 18:46:16 +07:00
asepharyana 0bc61d8b1c fix(infra): downgrade go.mod to 1.24 for CI build compatibility 2026-07-22 18:37:13 +07:00
asepharyana afae724f6b refactor(infra): server-side SVG dashboard with Go
- Replace nginx+Chart.js client-side dashboard with Go server
- Server-side rendered SVG charts (donut, line charts)
- Direct Docker socket integration via Go stdlib
- Embedded HTML template via //go:embed
- Minimal scratch image (~9MB total)
- Remove nginx.conf and client-side Chart.js
2026-07-22 18:35:29 +07:00
asepharyana 9f54f90621 fix(infra): use anonymous Prometheus volume to avoid deploy script name collision 2026-07-22 18:28:16 +07:00
asepharyana ee4fd677ea feat(infra): add Prometheus and Chart.js dashboard with real-time charts
- Add Prometheus server scraping OTel collector
- Add Chart.js donut chart for service health distribution
- Add line charts for RPS, latency, error rate, trace volume
- Add Prometheus API proxy to nginx whitelist
- Restructure dashboard layout with 12-column responsive grid
2026-07-22 18:26:41 +07:00
asepharyana 1ee99ffc2c fix(infra): restrict Docker API proxy to whitelist only 2026-07-22 18:20:11 +07:00
asepharyana 46314e6d38 fix(infra): correct Traefik OTLP tracing flags 2026-07-22 18:16:18 +07:00
GitHub Action 362e9f4115 chore: update manifests and submodules [skip ci] 2026-07-22 11:13:25 +00:00
asepharyana da268f1671 feat: enhance observability with dynamic links, Docker API integration, and health checks 2026-07-22 18:12:44 +07:00
asepharyana 4ef4f615c1 feat: add dashboard service to Docker build and push workflow 2026-07-22 18:12:44 +07:00
GitHub Action 5d5a0f48b5 chore: update manifests and submodules [skip ci] 2026-07-22 09:44:30 +00:00
asepharyana dcb93035f3 feat(observability): add OpenTelemetry Collector, Jaeger, and custom dashboard for monitoring
fix(infra): update NATS configuration for OpenTelemetry tracing and JetStream support
refactor(dapr): modify Dapr sidecar configuration to use new resources path and config file
chore(docs): update deployment documentation to include observability services
docs(commit-convention): establish commit message guidelines for Asepharyana Hub
docs(deploy-workflow): outline CI/CD pipeline and manual deployment steps for Asepharyana Hub
feat(event-driven): implement event-driven architecture patterns with Dapr and NATS
docs(hub-rules): define repository structure, submodule strategy, and infrastructure patterns
2026-07-22 16:43:37 +07:00
GitHub Action fd3c7f8c29 chore: update manifests and submodules [skip ci] 2026-07-22 08:08:45 +00:00
GitHub Action a3c5d747ca chore: update manifests and submodules [skip ci] 2026-07-22 08:01:56 +00:00
GitHub Action ce7f630894 chore: update manifests and submodules [skip ci] 2026-07-22 07:56:42 +00:00
GitHub Action 8f22d052f8 chore: update manifests and submodules [skip ci] 2026-07-22 07:30:23 +00:00
GitHub Action 005fe466ed chore: update manifests and submodules [skip ci] 2026-07-22 07:29:39 +00:00
GitHub Action ad67ed9711 chore: update manifests and submodules [skip ci] 2026-07-22 07:19:02 +00:00
GitHub Action aa83986b23 chore: update manifests and submodules [skip ci] 2026-07-22 07:10:32 +00:00