Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Oceano Blue real estate photography ops platform
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Oceano Blue — Real Estate Photography Platform
An AI-powered real estate photo production platform, built on Next.js 14 +
Supabase + Vercel, with enhancement wired up to OpenAI GPT Image and Google
Gemini (Nano Banana).檢視完整 README ↗An AI-powered real estate photo production platform, built on Next.js 14 + Supabase + Vercel, with enhancement wired up to OpenAI GPT Image and Google Gemini (Nano Banana).
Internal team app (/dashboard)
Public-facing (no login required)
/ marketing landing page/book shoot-request form for real estate agents/gallery/<token> branded download gallery for clientsAI processing pipeline
openai-gpt-image — GPT Image 2.0 (gpt-image-2), the default enhance enginegemini-nano-banana-2 — Nano Banana 2 (gemini-3.1-flash-image)gemini-nano-banana-pro — Nano Banana Pro (gemini-3-pro-image)oceano-enhance — internal deterministic Sharp pipeline (HDR merge, lawn)ai_jobs rowsupabase/migrations/ in order:
0001_initial_schema.sql0002_rls_policies.sql0003_storage_buckets.sql0004_seed_helpers.sqlscripts/seed-demo.sql to get some example data.In Supabase Authentication → Users, click "Add user", supply your Oceano Blue
email + password. Then open the SQL editor and run scripts/seed-team-member.sql
after editing the email and role.
You can now sign in at /login.
Copy .env.example to .env.local and fill in:
NEXT_PUBLIC_SUPABASE_URL=https://<project-ref>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<anon key>
SUPABASE_SERVICE_ROLE_KEY=<service role key>
OPENAI_API_KEY=sk-... # for GPT Image
GEMINI_API_KEY=... # for Gemini / Banana Pro
NEXT_PUBLIC_APP_URL=http://localhost:3000
DELIVERY_LINK_SECRET=<random 32-byte string>
# IMPORTANT: there's a half-finished node_modules/ folder in this scaffold
# from an aborted sandbox install. Delete it first, then install cleanly.
rm -rf node_modules
npm install
npm run dev
Visit:
http://localhost:3000 — landing pagehttp://localhost:3000/book — agent booking formhttp://localhost:3000/login — team sign-in → dashboardnpm i -g vercel
vercel
Set the same env vars in Vercel → Project → Settings → Environment Variables.
Important: mark SUPABASE_SERVICE_ROLE_KEY, OPENAI_API_KEY, and
GEMINI_API_KEY as Production / Preview only — never Development.
/book → creates a clients row (or matches existing),
a listings row, and a draft orders row. Team is notified (TODO email)./dashboard/orders, accepts the order, assigns a
photographer and shoot time. Status: scheduled.uploaded.is_selected = false).delivered. Link is copied to
clipboard, paste into the agent email./gallery/<token>, browses, clicks "Download all" — a
zip is streamed straight from Supabase Storage.The skeleton is feature-complete enough to use, but the items below are common extensions you'll likely want — flagged so they're not surprises:
draft → booked and on link generation./api/ai/process request
(with up to 60s Vercel timeout). For big batches, swap to Inngest, Trigger.dev,
or a Supabase Edge Function fired by pg_cron.1024×683 MLS
and 2048×1365 full-size variants into the delivery bucket. The gallery
already supports an is_selected filter for which size to serve.schedule_blocks table), no UI yet.listings.lat/lng columns exist; plug in Mapbox/Google when ready.lib/supabase/database.types.ts
is currently hand-written. Run npm run db:types after wiring the Supabase CLI
to get the canonical version.oceanoblue-platform/
├── app/
│ ├── api/ # Route handlers (booking, upload, ai, delivery)
│ ├── book/ # Public booking form
│ ├── dashboard/ # Internal team UI (auth-gated)
│ │ ├── orders/ # Pipeline + detail
│ │ ├── schedule/ # Weekly calendar
│ │ ├── listings/
│ │ ├── clients/
│ │ ├── photos/ # All AI jobs overview
│ │ └── settings/
│ ├── gallery/[token]/ # Client download page
│ ├── login/
│ ├── page.tsx # Landing
│ └── layout.tsx
├── components/ # UI building blocks (Sidebar, PhotoManager, etc)
├── lib/
│ ├── ai/ # Provider abstraction + runner + prompts
│ │ ├── openai-gpt-image.ts
│ │ ├── gemini-banana-pro.ts
│ │ ├── bracket-detect.ts
│ │ └── runner.ts
│ ├── supabase/ # Browser + server clients + DB types
│ └── utils/ # Formatting, classnames, tokens
├── supabase/migrations/ # 4 migration files
├── scripts/ # Seed SQL
└── middleware.ts # Auth guard
Live Supabase migrations are applied via a manual GitHub Actions workflow
(.github/workflows/db-migrate.yml) — never on push/PR, dry-run by default,
with a typed project-ref confirmation. Required secrets and step-by-step
instructions (trigger, verify 0015–0025, confirm the thumbnails bucket and
new tables, and avoid the wrong project) are in
docs/DB_MIGRATIONS_RUNBOOK.md.
A small read-only Node client (worker-local/) connects local/NAS folders to
Production OS: it scans folders, indexes media into assets, and generates
thumbnails — originals never leave the machine. Setup, env vars, scanning, and
troubleshooting are in docs/LOCAL_WORKER.md.
Private — Oceano Blue internal use.