Cardap.io
테이블에서 바로 주문하는 디지털 메뉴판
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Multi-tenant grocery management platform with autonomous SRE agent, Claude AI supervisor, Kubernetes, Prometheus observability
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗🌐 Live demo: kalemart.sreekanthp.com
📊 Public Grafana dashboards: grafana.sreekanthp.com (read-only viewer)
A production-grade, multi-tenant SaaS platform for grocery store chains — built to demonstrate full-stack engineering, Kubernetes operations, observability, and autonomous SRE practices.
┌─────────────────────────────────────────────────────────────────┐
│ Kubernetes (OrbStack) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Next.js │ │ Node.js │ │ Python │ │ SRE Agent │ │
│ │ Frontend │→ │ Backend │→ │ AI Svc │ │ (FastAPI + │ │
│ │ :3000 │ │ :4000 │ │ :5000 │ │ Claude API) │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────┘ │
│ │ │ │ ↑ │
│ └──────────────┴──────────────┘ Alertmanager │
│ │ │ │
│ ┌──────────────┐ ┌───────────────────┐ │
│ │ PostgreSQL │ │ Prometheus + │ │
│ │ (RLS + RBM) │ │ Grafana + Tempo │ │
│ └──────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
(tenant_id, created_at) with explicit query params for optimal planner statsSET LOCAL random_page_cost = 1.1 per transaction — corrects PostgreSQL's cost model for SSD storage/api/supervisor/analyze)claude → rule-based → demoThe centrepiece for SRE showcase. A Claude-powered agent that acts as an on-call SRE:
Prometheus alert fires
↓
Alertmanager webhook → SRE Agent (FastAPI)
↓
Claude investigates using tools:
• query_prometheus — fetch metrics
• get_pod_logs — stream k8s logs
• get_k8s_events — cluster events
• run_db_diagnostic — EXPLAIN ANALYZE (read-only guard)
• restart_deployment — needs human approval
• create_db_index — needs human approval
↓
Slack notification with Approve / Reject / Don't-ask-again links
↓
Fix applied → metrics re-validated → RCA posted to Slack
Approval flow: Uses asyncio.Event shared between the background investigation task and the HTTP /approve/{id} endpoint. Zero polling — the task suspends until the human clicks a link.
Don't-ask-again: Approved action types are persisted so repeated incidents self-heal without paging the engineer.
grafana.sreekanthp.comRecruiter access is intentionally read-only: production Grafana enables anonymous Viewer access, loads the Kalemart dashboard ConfigMap through Argo CD, and is exposed through Cloudflare Tunnel at https://grafana.sreekanthp.com.
| Layer | Technology |
|---|---|
| Frontend | Next.js 14, React, Tailwind CSS |
| Backend | Node.js, Express, OpenTelemetry |
| AI Service | Python, FastAPI, Anthropic SDK |
| SRE Agent | Python, FastAPI, Anthropic Claude claude-sonnet-4-6 |
| Database | PostgreSQL 15, Row-Level Security |
| Infra | Kubernetes, Helm, Docker |
| Observability | Prometheus, Alertmanager, Grafana, Tempo, OTel Collector |
| CI/CD | GitHub Actions — build & push multi-service images |
/api 99.5% availability SLO with burn rate alertingkubectl, helm, dockergit clone https://github.com/sreekanthca6/kalemart.git
cd kalemart
cp .env.example .env
# Fill in .env — at minimum: ANTHROPIC_API_KEY, PGPASSWORD, JWT_SECRET
docker build -t kalemart/backend:latest ./apps/backend
docker build -t kalemart/frontend:latest ./apps/frontend
docker build -t kalemart/ai-service:latest ./apps/ai-service
docker build -t kalemart/sre-agent:latest ./apps/sre-agent
helm install kalemart ./helm/kalemart \
--set secrets.anthropicApiKey="$ANTHROPIC_API_KEY" \
--set secrets.postgresPassword="$PGPASSWORD" \
--set secrets.jwtSecret="$JWT_SECRET" \
--set secrets.slackWebhookUrl="$SLACK_WEBHOOK_URL"
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# Slack notifications for Prometheus alerts.
# The webhook URL is mounted into Alertmanager from a Secret, never committed to Git.
kubectl create namespace observability --dry-run=client -o yaml | kubectl apply -f -
kubectl create secret generic alertmanager-slack-webhook \
-n observability \
--from-literal=url="$SLACK_WEBHOOK_URL" \
--dry-run=client -o yaml | kubectl apply -f -
helm install prometheus prometheus-community/prometheus \
-n observability --create-namespace \
-f observability/prometheus-values.yaml
kubectl apply -f observability/alert-rules.yaml
For local OrbStack testing, ./scripts/deploy-local.sh dev uses observability/helmfile.local.yaml so Grafana points to localhost instead of production:
# Required if you want to test Slack alert delivery locally.
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
kubectl create namespace observability --dry-run=client -o yaml | kubectl apply -f -
kubectl create secret generic alertmanager-slack-webhook \
-n observability \
--from-literal=url="$SLACK_WEBHOOK_URL" \
--dry-run=client -o yaml | kubectl apply -f -
./scripts/deploy-local.sh dev
./scripts/port-forward.sh
# Frontend: http://localhost:3000
# Grafana: http://localhost:3001
# Prometheus: http://localhost:9090
# Alertmanager: http://localhost:9093
Open http://localhost:3000/ops to see the recruiter-facing control room. From there, open Grafana dashboards for SRE overview, API latency, platform infrastructure, Prometheus alerts, AI service health, and inventory business metrics.
kalemart/
├── apps/
│ ├── backend/ # Node.js/Express API
│ ├── frontend/ # Next.js dashboard
│ ├── ai-service/ # Python FastAPI — Claude AI supervisor
│ └── sre-agent/ # Python FastAPI — autonomous SRE agent
├── helm/kalemart/ # Helm chart for all services
├── observability/
│ ├── prometheus-values.yaml
│ └── alert-rules.yaml # 10 Prometheus alert rules
├── scripts/ # DB seed & Shopify import
└── .github/workflows/ # CI — build & push images
GitHub Actions builds and pushes all 4 Docker images on every push to main. See .github/workflows/.
MIT