PinLog
An AI place journal that finds places again by experience and feeling, even when you forget the name

Screens
Overview
- Period
- Jul – Aug 2026 (5 weeks)
- Team
- 6 people · SSAFY team project
- Role
- Infra lead
The problem
Saved places are hard to find again once you forget the name, and why you saved them is lost. On the infra side, several services had to be deployed and run on a single given server without cloud API access.
The approach
- 01Natural-language search over your own contextPlaces are saved with the reason and experience behind them, and found again by a sentence instead of a name.
- 02Discovery through anonymous collectionsPublic collections that hide identity and original notes let you discover others' taste, then add your own context to what you find.
- 03GitOps on a single serverEvery service ships through a shared Helm chart, and Argo CD applies the state declared in Git to k3s.
My work
Led the design and build of the k3s deployment and operations platform: deploy automation, resource isolation, observability, AI-assisted alerts, and backup and recovery.
- 01Only verified images shipDeploy PRs are opened only after CI success and the registry digest are verified, the commit is rechecked before merge, and rollbacks are recorded as Git reverts.GitHub Actions · private GHCR · pinned full commit SHA + image digest · Helm · Argo CD ApplicationSet
- 02Splitting one server's resourcesSeparate dev and prod areas, resource ceilings and capped observability storage keep services from starving each other.Namespaces · resource budgets · NetworkPolicy · Pod Security Admission
- 03AI-assisted alertsAlerts are summarized in Korean from a limited set of related metrics and logs. If the AI fails or evidence is thin, a rule-based alert goes out instead, and nothing in the cluster is changed automatically.Alertmanager → Sentinel Receiver (redaction · allow-listed JSON) → AI API → output validation → Mattermost
- 04Observability and external probesMetrics, logs and dashboards, plus a separate external HTTPS/TLS probe so a full server outage is still reported.Prometheus · Loki · Alloy · Grafana · GitHub-hosted external probe
- 05Secrets and accessSecrets are encrypted in Git, and deploy automation tokens are scoped per repository with least privilege.Sealed Secrets · least-privilege tokens · Cloudflare Tunnel · Traefik
Fixed in production
- 01Container runtime eating CPUKubelet polling through Docker and cri-dockerd kept the CPU busy; switching to K3s embedded containerd removed that layer, using a procedure with DB backup, preserved config and a rollback path.
- 02A broken backup could become the latest restore pointDumps are now checked as archives, and only verified files are atomically promoted to latest.dump.
Stack
- Infra
- k3s · Helm · Argo CD · GitHub Actions · Cloudflare · Traefik
- Observability
- Prometheus · Loki · Alloy · Grafana · Alertmanager
- Backend
- Spring Boot · PostgreSQL + pgvector · Redis
- AI
- FastAPI · pgvector
- Frontend
- React 19 · TypeScript · Vite · TanStack Router/Query