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,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Fieldwork — from a business name to a proposal you can send
Fieldwork is a small tool for a digital agency (here, Metascalers) built on the Proposales API. An operator enters a business name and place. Fieldwork researches the business from public sources, suggests services from the agency's catalogue with the evidence behind each one, and creates an unsent draft proposal in Proposales. A person reviews and sends it there.
Live: https://proposales-case.vercel.app (access code supplied with the submission)查看完整 README ↗Fieldwork is a small tool for a digital agency (here, Metascalers) built on the Proposales API. An operator enters a business name and place. Fieldwork researches the business from public sources, suggests services from the agency's catalogue with the evidence behind each one, and creates an unsent draft proposal in Proposales. A person reviews and sends it there.
Live: https://proposales-case.vercel.app (access code supplied with the submission)
name + place ──► Tavily search ──► identify (AI quotes, code verifies) ──► operator confirms business + website
│
Proposales draft ◄── code builds + verifies ◄── operator adjusts ◄── AI selects ◄── AI report (cited sources)
│ (prices, totals) scope services
└──► operator reviews and sends in Proposales; status read back into Fieldwork
The split of responsibilities is the core idea:
proposal-2 … proposal-5); existing proposals keep their exact payload.More in docs/ARCHITECTURE.md, the decision history in docs/IMPLEMENTATION-LOG.md, and known limits and next steps in docs/SYSTEM-DESIGN.md.
Next.js 16 (App Router) and TypeScript on Vercel; Vercel AI SDK with DeepSeek; Tavily for search; Supabase Postgres through the transaction pooler; the Proposales REST API.
Use Node 24 (.nvmrc). Copy .env.example to .env.local if it does not exist, and fill in the server-only values:
| Variable | Purpose |
|---|---|
PROPOSALES_API_KEY, PROPOSALES_COMPANY_ID | Proposales access and the company to work in |
PROPOSALES_TEMPLATE_UUID | Optional: the template whose cover new proposals use |
PROPOSAL_COMPOSITION | Optional: proposal-4 or proposal-3 to opt out of the current layout |
DEEPSEEK_API_KEY, DEEPSEEK_MODEL | Model access through the AI SDK |
TAVILY_API_KEY | Live research (not needed for the examples) |
DATABASE_URL, DATABASE_CA_PATH or DATABASE_CA_PEM | Supabase Postgres, with TLS verification |
APP_ORIGIN, REVIEWER_ACCESS_CODE, SESSION_SECRET | Exact browser origin for writes, the demo code, and the session signing key |
DAILY_LIMIT_* | Optional daily caps per paid stage |
nvm use
npm ci
npm run db:migrate # applies each migration once, recorded in a ledger
npm run dev # http://127.0.0.1:3000; set APP_ORIGIN to match
New proposals use five category entries in the Proposales content library; docs/PROPOSAL-CATEGORIES.md describes the one-time import.
npm test # offline unit and contract tests
npm run typecheck
npm run test:db # integration tests in an isolated, randomly named schema, removed afterwards
Provider calls are faked in the offline tests. AI quality is evaluated separately in evals/.
| Path | What it holds |
|---|---|
src/app | Page and API routes |
src/components | The workbench UI |
src/domain | Catalogue, pricing, reports, identity checks, proposal grouping (no I/O) |
src/server | Services, persistence, admission, workflow and access |
src/server/providers | Proposales, Tavily and DeepSeek clients and the proposal composition |
src/prompts | Versioned prompt sections |
db/migrations | Additive SQL migrations |
evals | AI evaluation cases and results |
docs | Architecture, decisions and operator notes |