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。 以下为已保存的摘录。
Programări — aplicație fullstack de programări/task-uri pentru clienți Rapidă și simplă: o programare se creează în sub 10 secunde (buton mare „+", formular rapid sau comandă vocală). Stack • Next.js 16 (App Router, Server Actions, Proxy) + TypeScript • TailwindCSS v4 (temă proprie, dark/light) • MongoDB + Prisma 6 (select peste tot, indexuri, snapshot-uri denormalizate) • Nodemailer (reminder email) · Telegram Bot API (control din chat) • PWA cu notificări push (web-push) · AI voice-to-task (Whisper + extragere structurată)查看完整 README ↗
Rapidă și simplă: o programare se creează în sub 10 secunde (buton mare „+", formular rapid sau comandă vocală).
select peste tot, indexuri, snapshot-uri denormalizate)npm install # instalează + prisma generate (postinstall)
cp .env.example .env # completează valorile
npm run db:push # creează colecțiile + indexurile în MongoDB
npm run dev # http://localhost:3000
MongoDB trebuie rulat ca replica set (local:
mongod --replSet rs0apoirs.initiate(), sau MongoDB Atlas). Prisma cere asta pentru scrieri.
La prima accesare a /login, dacă baza e goală, aplicația cere crearea contului de administrator (bootstrap) — fără pași manuali în DB.
.env.example)| Cheie | Rol |
|---|---|
DATABASE_URL | conexiune MongoDB (replica set) |
SESSION_SECRET, SESSION_TTL_DAYS | sesiune (implicit 180 zile) |
TELEGRAM_BOT_TOKEN, TELEGRAM_WEBHOOK_SECRET | bot Telegram |
CRON_SECRET | protejează jobul de remindere |
SMTP_*, EMAIL_FROM | trimitere email |
CRM_TOKEN | cheia (crm_token) a integrării PBX Moldcell — webhook /api/pbx, pagina PBX |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, SMS_FROM sau SMS_HTTP_URL, SMS_HTTP_TOKEN | trimitere SMS (pagina Notificări plătitori) |
OPENAI_API_KEY, AI_*_MODEL | voice-to-task |
NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY | push PWA |
prisma/schema.prisma # 12 modele + enums + indexuri
proxy.ts # protejare rute (fostul middleware)
lib/
env.ts prisma.ts # config + client singleton
session.ts password.ts dal.ts # auth: token hash, bcrypt, getCurrentUser cache
date.ts # dateKey + conversii timezone (fără dependențe)
validation.ts # scheme Zod
email.ts telegram.ts push.ts
queries/ # citiri optimizate (select, paginare, cache)
services/ # appointments, reminders, voice, telegram-bot
app/
(auth)/login # login / bootstrap cont
(app)/ # shell autentificat (dashboard, appointments, calendar,
# kanban, clients, settings, telegram)
actions/ # Server Actions (auth, clients, appointments, settings, telegram)
api/ # telegram/webhook, cron/reminders, voice, push, clients/search
components/ # UI client (QuickAdd, Voice, Kanban, etc.)
manifest.ts # PWA manifest
public/sw.js public/icons/ # service worker + iconuri
Buton „+" (FAB sau din dashboard) → dialog rapid: client (autocomplete sau nume nou), categorie (chip cu durată automată), Azi/Mâine, oră, remindere, status. Verifică slotul ocupat, creează clientul dacă nu există și generează reminderele.
/telegram)TELEGRAM_BOT_TOKEN în .env.NEXT_PUBLIC_APP_URL/api/telegram/webhook)./start leagă automat contul.Butoane în bot: 📅 Azi / 📆 Mâine / 🗓 Săptămâna / ➕ / 🔍 / 🎤. Per programare:
✅ Confirmă · ✔️ Finalizat · ❌ Anulează · 🚫 No-show. Mesaj vocal → programare cu confirmare.
Webhook-ul răspunde 200 instant și procesează în fundal (after()).
/api/cron/reminders)Programează un cron (Vercel Cron sau orice scheduler) la 5–15 min:
GET /api/cron/reminders Header: Authorization: Bearer <CRON_SECRET>
Trimite reminderele scadente (24h și 3h înainte, configurabil în Setări).
Retry până la 3 încercări, apoi FAILED.
Același apel trimite și reamintirile sarcinilor / tichetelor (interval fix sau programate: o singură dată, zilnic, săptămânal, lunar, la interval personalizat, la o oră anume).
Precizia orei = frecvența cron-ului (la 5 min, reamintirea pleacă în cel mult 5 min după ora aleasă). Pe Vercel Hobby cron-ul poate rula doar zilnic —
folosește Vercel Pro sau un scheduler extern (ex. cron-job.org) la 5 min. Pe un server propriu (fără Vercel) procesul verifică singur la fiecare minut
(dezactivare: DISABLE_TASK_REMINDER_TIMER=1).
Microfon în aplicație sau mesaj vocal în Telegram → transcriere (Whisper) →
extragere {client, dată, oră, categorie...} → preview + confirmare înainte de salvare.
Instalabilă (manifest + service worker). Notificări push: Setări → Activează notificările
(necesită chei VAPID: npx web-push generate-vapid-keys).
select explicit în toate query-urile, fără include greudateKey (YYYY-MM-DD) pentru listări zilnice instant, independent de fusclientNameSnapshot, categoryNameSnapshot/Color) → Telegram listează fără joinuserId+dateKey, userId+startAt, userId+status, status+sendAt, ...getCurrentUser() memoizat, lastUsedAt actualizat throttle-uit (max o dată/zi)