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.
Translation pending
OCR-driven inventory tracking for the roastery.
BusinessTypeScript · JavaScriptGitHub @frankchen07OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A small Next.js app for tracking coffee-shop inventory and weekly production, backed entirely
by a Google Sheet (no database) via a service account.Read the full README ↗A small Next.js app for tracking coffee-shop inventory and weekly production, backed entirely by a Google Sheet (no database) via a service account.
Copy .env.example to .env.local (not committed) and fill in:
GOOGLE_SHEETS_SPREADSHEET_ID — the sheet this app reads/writes.GOOGLE_SERVICE_ACCOUNT_EMAIL / GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY — a Google service
account with edit access to that sheet.APP_PASSPHRASE — single shared passphrase gating the whole app (see /login).BLOB_READ_WRITE_TOKEN — Vercel Blob, used to store uploaded scan photos.OPENROUTER_API_KEY — used to OCR a photographed count sheet on upload.MCP_ACCESS_TOKEN — bearer token gating /api/mcp (see below).Then:
npm run dev
npm test # unit tests for unit parsing and production math
Seven tabs, each a flat table with a header row (no numeric IDs — everything is keyed by name):
inventory (fixed columns + one date column per physical count)./ — inventory dashboard: what's low stock, what needs review (a count that couldn't be
parsed), link to the raw sheet./scans/upload — photograph a filled-in inventory count sheet; OCR drafts the numbers,
you review and confirm before anything is written back to inventory./production — this week's plan: what's needed for the Wed–Sat popup/deliveries, current
reserve levels, and what to brew/roast/make Mon/Tue to cover it. Standing orders always map onto
this calendar week's Wed–Sat; one-off orders are picked up from today through 8 days out, so an
order early next week shows up in time to brew for it.Editing recipes/products/standing orders/reserve stock directly in the sheet is expected
day-to-day — the app never needs a code change for a new product or a renamed recipe, only
self-consistent data across the tabs.
/api/mcp is a Model Context Protocol server (built with
mcp-handler) that lets a Claude.ai conversation —
including voice dictation — write inventory counts straight to the inventory sheet, without
going through Anthropic's separate Autosheet feature or its credit limits.
It exposes one tool, record_inventory_count(date?, counts: {item, count}[]), which matches each
item against the live catalog (case-insensitive) and calls the same writeCountColumn used by
the photo-scan-confirm flow — so counted items land in a dated column and everything else carries
forward, same semantics either way. Unrecognized item names are reported back instead of guessed.
The route enforces its own auth (a bearer token checked against MCP_ACCESS_TOKEN) rather than
the app's cookie-based passphrase gate, since an MCP client can't hold a browser cookie —
src/proxy.ts's middleware matcher excludes api/mcp for this reason, same as it already does
for api/login.
Connecting it in Claude.ai (Settings → Connectors → Add custom connector):
/api/mcp endpoint.Authorization
header for its own OAuth flow and won't let you set it manually.)Authorization, value Bearer <MCP_ACCESS_TOKEN>.Request-header auth is currently in beta and gated per Claude.ai organization — if the Request headers section doesn't show up in the dialog, it isn't enabled for your account yet.