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
Frasma automatizza attività tra documenti, email, Excel ed ERP per PMI manifatturiere e agroalimentari, senza sostituire il gestionale esistente.
Translation pending
BusinessTypeScript · HTMLGitHub @francemazziOnlineOwner 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
my website
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying pages/index.tsx. The page auto-updates as you edit the file.
The pages/api directory is mapped to /api/*. Files in this directory are treated as API routes instead of React pages.
The landing form and the chat widget both submit a process brief to POST /api/request-process-assessment. Francesco uses that brief to prepare a quote.
Fields: name, work email, optional company and role, process (required), optional current tools and volume.
When MONGODB_URI is set, the same endpoint upserts users, inserts leads, and logs project_brief_submitted.
Create a .env.local file in the project root with:
# Destination email (defaults to [email protected])
[email protected]
# Sender identity (defaults to SMTP_USER if using SMTP)
[email protected]
# Sender display name (defaults to "Frasma")
MEETING_FROM_NAME=Frasma
# --- Option A (recommended): Gmail SMTP via App Password ---
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_SECURE=true
[email protected]
SMTP_PASS=your_gmail_app_password
# --- Option B: Resend ---
# RESEND_API_KEY=your_resend_api_key
# Notion: inbound leads go to ricerca_clienti (Frasma view)
# NOTION_TOKEN=ntn_your_integration_token
# NOTION_LEADS_DATABASE_ID=32e90196-c414-80b3-9a53-c00ffe4019c9
# OpenAI Ads Measurement Pixel (ChatGPT Ads conversions). Public, inlined at build
# time: set it in Vercel before the deploy that should carry the pixel.
# NEXT_PUBLIC_OAI_PIXEL_ID=your_pixel_id
Notes:
The website chat is a process-diagnostic assistant. It uses the bilingual, versioned knowledge base in lib/knowledge/ to:
POST /api/request-process-assessment only after explicit user review.If the assistant times out, the widget shows the same process brief form, prefilled from the conversation history (no extra LLM call).
Each browser session stores a conversationId in localStorage. Messages are persisted server-side in MongoDB Atlas through the official Node.js driver. On reopen, the widget restores the conversation via GET /api/conversations/:id. If MongoDB is not configured, the chat keeps working in stateless mode.
Do not add prices, guaranteed savings, customer secrets, credentials, or personal data about third parties to the knowledge base or diagnostic examples.
Required OpenAI environment variable (chat agent + voice dictation on the process assessment form):
OPENAI_API_KEY=your_openai_api_key
# Optional; defaults to gpt-4o-mini
OPENAI_CHAT_MODEL=gpt-4o-mini
# Optional; defaults to whisper-1 (process assessment voice dictation)
OPENAI_WHISPER_MODEL=whisper-1
Persistence is optional but recommended in production. When configured, the API stores:
lang, timezone, pagePath, conversion flags);project_brief_submitted).Setup:
0.0.0.0/0 (required for Vercel serverless).MONGODB_URI=mongodb+srv://user:[email protected]/frasma_chat?retryWrites=true&w=majority
# Optional. Days from the last contact; defaults to 730 and is capped at 730
# (24 months), the retention promised by the privacy policy.
CHAT_RETENTION_DAYS=730
Indexes and a TTL policy on expiresAt are created automatically on first use for conversations, messages, events, leads and users. Every contact (registration, message, process brief) extends the deadline of the conversation and of everything the visitor owns, so data expires CHAT_RETENTION_DAYS after the last contact.
Databases created before this policy have documents without expiresAt, which a TTL index never deletes. Backfill them once (idempotent, --dry-run prints counts only):
node scripts/backfill-retention.mjs --dry-run
npm run backfill:retention
Without MONGODB_URI, POST /api/chat and the form APIs continue to work; persistence calls are skipped silently.
Verify the connection:
npm run check:mongodb
curl http://localhost:3000/api/status
Expected when configured correctly:
{
"persistence": { "configured": true, "connected": true }
}
A successful chat response also includes conversationId.
0.0.0.0/0 for Vercel serverless....mongodb.net/frasma_chat?....env.local and Vercel, then redeploy.@, #, %, etc.).Public discovery surfaces for agents and humans:
| Resource | URL |
|---|---|
| Agents hub | https://www.frasma.org/for-agents |
| Services hub | https://www.frasma.org/servizi |
| Case studies | https://www.frasma.org/casi |
| llms.txt | https://www.frasma.org/llms.txt |
| llms-it.txt | https://www.frasma.org/llms-it.txt |
| Home markdown | GET / with Accept: text/markdown |
| OpenAPI | https://www.frasma.org/openapi.json |
| API catalog | https://www.frasma.org/.well-known/api-catalog |
| Agent skills | https://www.frasma.org/.well-known/agent-skills/index.json |
| MCP (Streamable HTTP) | https://www.frasma.org/api/mcp |
get_frasma_profilesearch_frasma_knowledgeget_diagnostic_frameworkprepare_diagnostic_summary — validates a diagnosis and returns handoff URLs; never sends emailprepare_project_brief — validates the process brief used for a quote; never sends emailExample Cursor / Claude Desktop remote config:
{
"mcpServers": {
"frasma": {
"url": "https://www.frasma.org/api/mcp"
}
}
}
For stdio-only clients:
{
"mcpServers": {
"frasma": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.frasma.org/api/mcp"]
}
}
}
/for-agents, /servizi, /llms.txt, /llms-it.txt, and /api/mcp respond in production.curl -H 'Accept: text/markdown' -H 'Accept-Language: it' https://www.frasma.org/servizi/ddt-erp (Italian DDT/Mago copy), plus an MCP initialize + tools/list against /api/mcp./for-agents (mention the services hub).SKILL.md changes (shasum -a 256).Quality checks:
npm run lint
npm test
npm run build
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.