FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Sistema de gestión para la Botica Amor y Salud (Comas, Lima). Frontend y backend van juntos en un solo proyecto Next.js, pensado para una sola instancia de Vercel, y usa Postgres (Neon desde el Marketplace de Vercel). Implementa el alcance MVP del Documento de Elicitación v4.
| Módulo | Qué incluye |
|---|---|
| Panel principal | Sección de alertas en forma de blíster, ventas del día y del mes, comisión del vendedor, estado de caja y tarjetas de métricas |
| Vender (POS) | Búsqueda por código, nombre o principio activo, FEFO automático, receta, descuentos con clave de supervisor, pagos mixtos, sugerencias complementarias (F7), comisión al instante |
| Caja | Apertura por denominación, ingresos y egresos con concepto, resumen de ventas del turno, cierre de caja con medios digitales autocompletados, validación del administrador y reporte de cierre imprimible |
| Productos | Stock vigente, vencimiento más próximo e interruptor de campaña (solo administrador) |
| Compras | Dos pasos: el inventariador recibe sin ver costos y el administrador costea; recién ahí la compra entra al kardex con costo promedio |
| Salidas y entradas | Motivos de catálogo, evidencia, aprobación por rol y regla de que quien registra no aprueba |
| Kardex | Por producto y lote, con saldo en unidades (y en S/ para el administrador). Exporta a Excel |
| Campañas | Producto del kardex, % de comisión manual y fechas estimadas; se activa por fecha o desde el stock |
| Comisiones | Devengo por venta, reversión por anulación, consolidación diaria y cierre y pago mensual |
| Reportes | Reportes precargados, personalización (periodo, agrupación y métricas), «Mis reportes» y métricas con fórmula |
Visibilidad de costos: solo el rol ADMIN ve costos, márgenes y valor del inventario. El servidor elimina esos campos en todas las respuestas para los demás roles (src/lib/permisos.ts); no es solo un tema de pantalla.
npm install
npm run db:setup # crea la base embebida (.pglite) y siembra datos de prueba
npm run dev # http://localhost:3000
Usuarios de prueba (clave botica2026):
| Usuario | Rol |
|---|---|
admin | Propietaria / administradora |
qf | Químico farmacéutico |
caja1, caja2, caja3 | Cajeros |
caja4 | Vendedora |
almacen | Inventariador |
contador | Contador |
caja1 ya tiene la caja abierta con ventas del día (si se siembra después de las 9:00).
DATABASE_URL; usa la cadena pooled, que es la que viene por defecto.AUTH_SECRET: una clave aleatoria de 32 caracteres o más.CRON_SECRET: otra clave aleatoria; Vercel Cron la envía sola.SUNAT_MODO=simulado: acepta los comprobantes sin conectarse a SUNAT mientras se define el OSE.NEXT_PUBLIC_MODO_PRUEBA=1 durante las pruebas; ponlo en 0 en producción.vercel-build aplica las migraciones antes de compilar.DATABASE_URL="postgres://…neon…" npm run db:seed # volumen de demostración
DATABASE_URL="postgres://…neon…" npm run carga:datos # volumen para pruebas de carga
vercel.json programa dos tareas diarias, que funcionan en el plan Hobby:
Además, el panel recalcula las alertas si tienen más de 15 minutos.
npm test # 17 pruebas de reglas de negocio (FEFO, stock concurrente, comisiones, cierre de caja, costos, RN-09…)
Las pruebas de carga con k6 están en loadtest/; los resultados de la última corrida están en loadtest/RESULTADOS.md. Para correrlas contra un Postgres real local:
npm run db:local # Postgres embebido en :5433 (otra terminal)
export DATABASE_URL=postgres://botica:botica@localhost:5433/botica
npm run db:migrate && npm run carga:datos && npm run build && npm start
k6 run -e DURACION=30m loadtest/01-hora-pico.js # o contra tu URL de Vercel con -e BASE_URL=…
src/lib/services: reglas de negocio (caja, ventas, inventario, compras, salidas, campañas, comisiones, alertas, reportes).src/app/api: API REST. Toda ruta valida la sesión y el rol, y enmascara los costos.src/app/(app): pantallas.src/db/schema.ts: modelo de datos (Drizzle ORM); las migraciones están en drizzle/.scripts/seed.ts: datos de prueba reproducibles (semilla fija).src/lib/services/sunat.ts).