Lemme

Lemme

Lemme adalah aplikasi kuis berbantuan AI. Pengguna mengunggah tangkapan layar kuis, OCR mengekstrak teks pertanyaan, dan beberapa penyedia LLM menghasilkan kandidat jawaban beserta penalarannya...

auto-imported

Lemme adalah aplikasi kuis berbantuan AI. Pengguna mengunggah tangkapan layar kuis; OCR mengekstrak teks pertanyaan, lalu beberapa penyedia LLM menghasilkan kandidat jawaban beserta penalarannya.

Stack

LapisanTeknologi
BackendGo 1.24, Fiber v2, MySQL, Redis, WebSocket, Google OAuth
FrontendSolid.js, Vite, PandaCSS / Park UI, TypeScript
Reverse proxy / TLSCaddy
Target deploymentHomelab Debian di lemme.arisjirat.com

Arsitektur

Diagram arsitektur Lemme: Caddy di depan UI Nginx dan API Go Fiber

Browser
  -> Caddy (80/443, TLS termination)
      -> UI container (Nginx, static Solid build)
      -> API container (Go Fiber)
           -> MySQL (quiz/user/session data)
           -> Redis (session + OCR cache + locks)
           -> OCR + LLM providers (OpenAI/Anthropic/Gemini)

Caddy berada di depan seluruh stack dan menangani terminasi TLS. Di belakangnya:

  • UI — build Solid statis yang disajikan oleh Nginx.
  • API — layanan Go Fiber yang berkomunikasi dengan MySQL, Redis, serta penyedia OCR/LLM eksternal.

Pengembangan Lokal

Alur pengembangan lokal Lemme dengan Docker Compose

Seluruh stack dijalankan dengan Docker Compose.

1. Konfigurasi environment

Salin template env root dan backend, lalu isi secret yang diperlukan:

cp .env.example .env
cp lemme_service/.env.production.example lemme_service/.env

2. Jalankan service

make dev

3. Jalankan migrasi (jika diperlukan)

make migrate

4. Verifikasi

EndpointURL
UIhttp://localhost:3000
API healthhttp://localhost:9090/healthz

Deployment Production

1. Siapkan host

Pada server Debian, jalankan script setup:

./scripts/setup-server.sh

2. Clone dan konfigurasi

Clone repository ke /opt/lemme, lalu buat file env berikut:

  • /opt/lemme/.env
  • /opt/lemme/lemme_service/.env

3. Deploy

./deploy.sh

4. DNS dan jaringan

Arahkan A record lemme.arisjirat.com ke IP publik host, lalu teruskan port 80 dan 443.

5. TLS

Caddy menyediakan dan memperbarui sertifikat secara otomatis — tidak ada langkah manual.

Environment Variables

Template tersedia di:

  • .env.example — env compose root
  • lemme_service/.env.production.example — env production backend

Variabel inti

GrupVariabel
DatabaseMYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD
RedisREDIS_PASSWORD
BackendDB_DSN, REDIS_ADDR, SESSION_COOKIE_SECRET, JWT_SECRET
OAuthGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REDIRECT_URL
Build args frontendVITE_API_URL, VITE_WS_URL, VITE_FRONTEND_URL, VITE_FEEDBACK_GFORMS_URL

Perintah Umum

make dev       # build + up
make up        # up without rebuild
make down      # stop all services
make build     # build all images
make migrate   # run DB migrations
make logs      # tail logs
make backup    # run backup script