FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Un solo index.html + Firestore via REST, hospedado en GitHub Pages.
URL: https://comedor-yama.grupoproesa.mx/ · Firebase project: menu-proesa-yama. Mismo esquema de seguridad que Menu LANS.
ssoCallback valida
el token firmado que manda el Gestor y regresa a la app con un custom token
(#ct=...) que trae el claim numEmp (mayusculas, sin ceros a la izquierda, igual que el id de
orders/{id}). El numero queda fijo en pantalla y las reglas solo dejan leer, pedir, modificar o
cancelar orders/{numEmp} propio. Solo el admin lista todos los pedidos.config/secrets (adminPin, superPin), que nadie puede leer desde el navegador.admin_sessions/{uid} con el PIN; las reglas lo comparan contra
config/secrets y, si no coincide, la escritura falla. La sesion expira a las 12 h.adminPin: menu, pedidos, cortesias, historial y buzon. superPin: todo lo anterior + catalogo.comentarios/{id}. Los comentarios del formato anterior (config/comentarios)
se pasan a la coleccion la primera vez que entra un admin.menu-proesa-yama > Authentication > Sign-in method > Anonymous > Habilitar.apiKey a FIREBASE_API_KEY en index.html.config > documento secrets con dos campos string:
adminPin y superPin. Usar PIN nuevos de 6 digitos (los anteriores quedaron expuestos).index.html nuevo (merge a main). Funciona tambien con las reglas viejas.firestore.rules > Publicar.https://comedor-yama.grupoproesa.mx/* (y https://artikke.github.io/* mientras dure el cambio);
APIs: Identity Toolkit, Token Service, Cloud Firestore.Los colaboradores entran desde la seccion Comedor del Gestor de Personal (opcion 2 acordada con TI).
El Gestor redirige a la Function ssoCallback con ?t=<JWT HS256> firmado con HANDOFF_SECRET
(iss = gestor-personal, aud = comedor-yama, trae numEmp, nombre, correo). La Function lo valida y
regresa a la app con un custom token (#ct=...) con el claim numEmp.
Archivos: functions/index.js (Node 22, 2nd gen), firebase.json, .firebaserc.
Deploy (Cloud Shell o tu maquina, con firebase CLI):
firebase use menu-proesa-yama
(cd functions && npm install)
firebase functions:secrets:set HANDOFF_SECRET # pega el secreto que te de TI; NUNCA en el repo
firebase deploy --only functions:ssoCallback
URL: https://us-central1-menu-proesa-yama.cloudfunctions.net/ssoCallback. El mismo HANDOFF_SECRET lo tiene TI en el
.env del Gestor; si lo rotan, se vuelve a correr secrets:set (y contestar Y para re-desplegar).
El GESTOR_TOKEN del flujo anterior (portal) ya no se usa: se puede borrar con
firebase functions:secrets:destroy GESTOR_TOKEN.
Permiso para firmar custom tokens (una sola vez, ya hecho): la cuenta de servicio de la Function
(<NUMERO_DE_PROYECTO>[email protected]) necesita el rol Service Account Token Creator:
gcloud projects add-iam-policy-binding menu-proesa-yama \
--member="serviceAccount:<NUMERO_DE_PROYECTO>[email protected]" \
--role="roles/iam.serviceAccountTokenCreator"
Orden para publicar: (1) Function con HANDOFF_SECRET; (2) merge a main del index.html nuevo (funciona
tambien con las reglas actuales); (3) prueba con un colaborador real entrando desde el Gestor; (4) publicar
firestore.rules (consola o firebase deploy --only firestore:rules). No publicar las reglas
antes del index.html: el anterior lista todos los pedidos y con las reglas nuevas eso ya no se permite.
Desde el paso 4 solo se puede pedir entrando desde el Gestor.
API key: la Web API key ya esta restringida por dominio (paso 6 de abajo); signInWithCustomToken usa
Identity Toolkit, que ya esta en la lista de APIs permitidas. No hay que cambiar nada.
Errores que muestra la app (?error= del callback): sin_token (se abrio la Function sin token),
sin_numero (el token no trae numero de empleado), sso (token invalido, expirado, de otro comedor o error al firmar).
Pruebas de reglas (emulador de Firestore, necesita Java 11+):
cd tests && npm install && npm test
https://comedor-yama.grupoproesa.mx/ (GitHub Pages, repo Grupo-PROESA/Menu-club-YAM, CNAME a
grupo-proesa.github.io, Enforce HTTPS). El poster qr_poster.html genera el QR con esa URL.
Equipo compartido: el link "No soy yo" junto al numero cierra la sesion en ese navegador.