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.