Skip to content

Una aplicación web de Código Abierto/Open Source para gestionar el inventario de elementos de emergencia. Diseñada para ser simple, intuitiva y funcional.

License

Notifications You must be signed in to change notification settings

Ariel-GonzAguer/comidaEmergencia

ComidaEmergencia

Aplicación Web de Código Abierto / Open Source para gestionar alimentos, medicamentos, notas, recetas y recursos en emergencias. React + Vite + Zustand + Firebase + Tailwind + Vitest

Vercel Firebase Tailwind CSS Zustand Vite Vitest Zod React Open Source

👥 Colaboradores

Agradecemos a todas las personas que han colaborado en el proyecto 🙌


Important

La rama Astro será eliminada definitivamente el 13/09/2025. Si desea continuar con la versión Astro, puede clonar el repo y mantenerla por su cuenta.


🎯 Objetivos del proyecto

  • Facilitar la gestión y organización de recursos esenciales en situaciones de emergencia (alimentos, medicamentos, notas, recetas y otros ítems).
  • Permitir el acceso y la colaboración de cualquier persona, comunidad o institución, promoviendo el software libre y abierto.
  • Ofrecer una interfaz intuitiva, accesible y multiplataforma (web, móvil, escritorio).
  • Integrar tecnologías modernas para sincronización en tiempo real, autenticación segura y generación automática de recetas con IA.
  • Fomentar la participación y mejora continua por parte de la comunidad.

🟢 Proyecto Código Abierto / Open Source (AGPL-3)

Este proyecto es Código Abierto bajo licencia AGPL-3. Puede usarlo, modificarlo y compartirlo respetando los términos de la licencia. Aceptamos issues y pull requests.

✨ Características

  • Gestión de alimentos, medicamentos, lugares, notas y recetas.
  • Sincronización con Firestore y persistencia local (Zustand persist).
  • Autenticación con Firebase Auth (email/contraseña).
  • Notificaciones (Sonner) y UI responsiva.
  • PWA con Vite (instalable en escritorio/móvil).

🧰 Stack

  • Frontend: React 19 + Vite 7 + Tailwind 4
  • Estado: Zustand 5 (con Immer)
  • Backend/DB: Firebase 12 (Auth + Firestore)
  • API IA: Función serverless en api/openAI_RecipeService.js (OpenAI)
  • Calidad: ESLint 9, Vitest 3 (jsdom)
  • Deploy: Vercel (vercel.json)

🚀 Empezar en 3 pasos

  1. Clonar e instalar
git clone https://github.com/Ariel-GonzAguer/comidaEmergencia.git
cd comidaEmergencia
npm install
  1. Configurar variables de entorno

Crear un archivo .env en la raíz con tus credenciales de Firebase (todas deben empezar con VITE_):

VITE_FIREBASE_API_KEY=tu_api_key
VITE_FIREBASE_AUTH_DOMAIN=tu_auth_domain
VITE_FIREBASE_PROJECT_ID=tu_project_id
VITE_FIREBASE_STORAGE_BUCKET=tu_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=tu_messaging_sender_id
VITE_FIREBASE_APP_ID=tu_app_id

# Firestore: documento y colección usados por el servicio
VITE_FIREBASE_DOC=tu_documento
VITE_FIREBASE_COLECCION=tu_coleccion

Para la IA (servicio de recetas) añade la clave solo en el entorno del servidor (local con Vercel o en Vercel Cloud):

OPENAI_API_KEY=tu_clave_openai
  1. Ejecutar en desarrollo
npm run dev

Opcional/Recomendado (para probar la API serverless localmente):

vercel dev

🧪 Tests y calidad

  • Ejecutar pruebas (Vitest):
npm run test
  • Lint (ESLint):
npm run lint

🧭 Uso básico

  1. Inicie sesión (Firebase Auth). Si no tiene usuario, configúrelo en su proyecto de Firebase.
  2. Navegue por las secciones: Comida, Medicamentos, Lugares, Notas y Recetas.
  3. Generador de Receta IA: ingrese ingredientes y envíe; se hace POST a /api/openAI_RecipeService y se muestra la receta.
  4. Guarde y edite datos; se sincronizan con Firestore.

🏗️ Estructura (resumen)

comidaEmergencia/
├── api/                      # Funciones serverless (OpenAI)
├── src/
│   ├── componentes/          # UI y navegación
│   ├── paginas/              # Vistas
│   ├── stores/               # Zustand (auth, estado)
│   ├── servicios/            # Firebase/Firestore, Zod
│   ├── firebase/             # Configuración Firebase
│   └── tests/                # Vitest setup
├── documentacion/            # Guías (OpenAI, Firebase, Vercel, etc.)
├── vercel.json
├── vite.config.js
└── eslint.config.js

☁️ Despliegue en Vercel

  1. Importa el repo en Vercel y deploy automático, o usa CLI:
npm i -g vercel
vercel
  1. En Vercel, defina variables de entorno (Firebase y OPENAI_API_KEY).
  2. Para desarrollo local con API: vercel dev.

Detalles en documentacion/vercel.md.

🤝 Cómo contribuir

Primero: Revise CONTRIBUTING.md para lineamientos y STYLE_GUIDE.md para estilo de código.

  1. Fork ➜ rama (feat/mi-mejora o fix/mi-bug).
  2. Cambios con commits claros según la convención del proyecto.
  3. PR llenando la plantilla.
  4. Respete el Código de Conducta.

📝 Changelog y Versionado

Este proyecto mantiene un historial de cambios detallado siguiendo el estándar Keep a Changelog:

Licencia

  • Licencia principal: AGPL-3 (LICENCE.txt).

Hecho libre para todo el mundo 🌍 — si le sirve, deje una ⭐

About

Una aplicación web de Código Abierto/Open Source para gestionar el inventario de elementos de emergencia. Diseñada para ser simple, intuitiva y funcional.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages