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 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Calculadora y manual de estudio de costos, desechos y mermas en gastronomía (es/en). Prod: https://milimon.inzumer.workers.dev · Staging: https://milimon-staging.inzumer.workers.dev
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Manual de estudio y calculadoras de costos, desechos y mermas en gastronomía. Bilingüe (/es, /en), mobile-first, con modo claro y oscuro. Basado en el manual Administración y Gestión gastronómica. Plan completo en docs/PLAN.md. • Astro (salida estática) + islas de React 19 • TypeScript estricto • Tailwind CSS v4 + @inzumer/tokens • Componentes de @inzumer/ui-library • Vitest + Testing Library (cobertura mínima 90%) • ESLint 10, Prettier, cspell Detalle de versiones y excepciones: docs/adr/0002-tooling-versions.md.檢視完整 README ↗
Manual de estudio y calculadoras de costos, desechos y mermas en gastronomía. Bilingüe
(/es, /en), mobile-first, con modo claro y oscuro.
Basado en el manual Administración y Gestión gastronómica. Plan completo en docs/PLAN.md.
@inzumer/tokens@inzumer/ui-libraryDetalle de versiones y excepciones: docs/adr/0002-tooling-versions.md.
.nvmrc; con nvm: nvm install + nvm use)npm install -g pnpm@12 o corepack enable)pnpm install
pnpm dev # http://127.0.0.1:4321 → redirige a /es; /keystatic para cargar recetas
| Script | Descripción |
|---|---|
pnpm dev | Servidor de desarrollo |
pnpm build | Build estático en dist/ |
pnpm preview | Sirve el build |
pnpm typecheck | astro check |
pnpm lint | ESLint |
pnpm test | Tests |
pnpm test:coverage | Tests con umbral de cobertura del 90% |
pnpm format | Prettier |
pnpm spellcheck | Corrector ortográfico (inglés + español) |
pnpm validate | typecheck + lint + test:coverage + build |
pnpm audit:a11y | axe-core en todas las páginas, tema claro y oscuro (requiere pnpm build y Chrome) |
pnpm og:image | Regenera las imágenes para compartir por sección public/og/og-<sección>-<idioma>.png |
El sitio es estático y se publica en Cloudflare Workers (Workers Builds). wrangler.jsonc define
un Worker por ambiente (ADR 0006):
| Worker | Rama | Deploy command | URL | API |
|---|---|---|---|---|
milimon | main | npx wrangler deploy --env production | https://milimon.inzumer.workers.dev | milimon-backend-nest.onrender.com |
milimon-staging | dev | npx wrangler deploy --env staging | https://milimon-staging.inzumer.workers.dev | milimon-backend-nest-staging.onrender.com |
Cada Worker tiene su build command (pnpm build) y sus propias variables de build (Settings → Build →
Variables): SITE_URL, BASE_PATH (/), PUBLIC_API_URL, PUBLIC_API_KEY (el WEB_API_KEY de su
API), PUBLIC_API_APP_ID (web), PUBLIC_GOOGLE_CLIENT_ID y NODE_VERSION.
CMS en staging. Con PUBLIC_KEYSTATIC_STORAGE=github el build suma el adaptador de Cloudflare:
Keystatic queda online en /keystatic (modo GitHub, sobre la rama cms/draft: al guardar, el workflow cms-to-dev arma cms/<entrada> con un solo commit, valida el build y lo mergea con squash en dev), staging muestra también los
borradores y el resto del sitio sigue estático. El editor (/keystatic-editor) pone Keystatic al
lado de la vista previa en vivo: lee la entrada de cms/draft en GitHub con el token de la sesión
del CMS y se recarga segundos después de cada guardado (en local lee los archivos). Producción no lleva esa variable. El Worker de
staging necesita además:
| Dónde | Variable | Qué es |
|---|---|---|
| Build → Variables | PUBLIC_KEYSTATIC_STORAGE | github |
| Build → Variables | PUBLIC_KEYSTATIC_GITHUB_APP_SLUG | Slug de la GitHub App de Keystatic |
| Settings → Variables and Secrets | KEYSTATIC_GITHUB_CLIENT_ID | Client ID de la GitHub App |
| Settings → Variables and Secrets | KEYSTATIC_GITHUB_CLIENT_SECRET | Client secret de la GitHub App |
| Settings → Variables and Secrets | KEYSTATIC_SECRET | Clave aleatoria para firmar sesiones |
La API de cuentas se despliega aparte, en Render (ver su repo).
Variables de entorno (ver .env.example):
| Variable | Para qué |
|---|---|
SITE_URL / BASE_PATH | Origen y ruta base del sitio (https://milimon.inzumer.workers.dev + /): canónicas, hreflang, sitemap y Open Graph |
PUBLIC_GTM_ID | Contenedor de Google Tag Manager (GTM-…). Vacío = sin analítica ni banner de cookies |
PUBLIC_API_URL | URL de la API de cuentas (milimon-backend-nest). Vacío = cuentas no disponibles |
PUBLIC_API_KEY / PUBLIC_API_APP_ID | Identificación del cliente ante la API (públicas por diseño) |
PUBLIC_GOOGLE_CLIENT_ID / PUBLIC_FACEBOOK_APP_ID | Botones de login; cada uno aparece solo si está configurado |
Para activar el login con Google y Facebook, seguí docs/ACCOUNTS.md.
src/
pages/ rutas (.astro): /[lang]/…
layouts/ layouts .astro
components/ toda la UI (atoms / molecules / organisms), calculadoras incluidas
hooks/ estado de React (una por calculadora, borradores, moneda, tema)
utils/ funciones puras: fórmulas + registry, cálculo, formato, tracking…
constants/ valores ajustables
stores/ estado persistido con zustand (configuración, borradores, historial)
services/ integraciones externas (API de cuentas, Google Tag Manager, SDKs de login)
i18n/ traducciones en carpetas kebab-case: <carpeta>/{es,en}.json
styles/ assets/ test/
docs/
PLAN.md plan maestro
adr/ decisiones de arquitectura
Ver CLAUDE.md: Conventional Commits, aliases de imports, traducciones en kebab-case, rutas en inglés, placeholders descriptivos y tokens de color para claro y oscuro.