Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기esaumorales/epe-web
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Frontend de EPE construido con React, TypeScript, Vite y Tailwind CSS. • Node.js 22+ • npm 10+ • Docker 24+ (solo para ejecutar con contenedor) En Windows PowerShell puedes usar Copy-Item .env.example .env. 3. Define VITE_API_BASE_URL en .env si el frontend consume el backend. Vite mostrará la URL local, normalmente http://localhost:5173. La imagen usa dos etapas: Node compila la aplicación y Nginx sirve los archivos estáticos. La configuración de Nginx incluye fallback para las rutas de React Router. Construye la imagen pasando la URL del backend: Abre http://localhost:8080.README 전문 보기 ↗
Agro Exportaciones F.V. reúne en este frontend la planificación de campañas, la información de proveedores y el seguimiento de clientes. La campaña funciona como punto de encuentro: fechas, fruta, variedades, requerimientos comerciales, cosecha, certificaciones y participantes se presentan en una vista de detalle.
La experiencia combina tablas y tarjetas, filtros, formularios en modales y una identidad visual inspirada en el campo. El objetivo es facilitar la lectura de la operación y mantener una navegación coherente entre áreas.
Estado del proyecto · Frontend en desarrollo
La integración con el backend está en curso: campañas, relaciones de campaña y listados de proveedores/clientes consumen algunas APIs; el CRUD de transporte también quedó conectado. Otras vistas siguen parciales o usan datos de demostración. El acceso aún simula una sesión en IndexedDB y no valida credenciales contra el backend. Consulta el mapa de integración frontend/backend para ver el estado por vista y lo pendiente.
| Área | Qué encontrarás | Estado actual |
|---|---|---|
| 🌾 Gestión de campañas | Campañas, fruta/derivadas, relaciones con proveedores/clientes y certificados. | Integración parcial; pagos a transportistas sin API backend |
| 🤝 Gestión de proveedores | Directorio, filtros, detalle y entrevista. | Listado conectado; CRUD, certificados, exámenes y frutas pendientes |
| 🏢 Gestión comercial | Directorio y gestión de clientes/contratos. | Listado API parcial; edición y vistas comerciales pendientes |
| 🚚 Gestión de transporte | Empresas, vehículos, choferes y pagos. | CRUD de empresas/vehículos/choferes conectado; trazabilidad pendiente; pagos sin API backend |
| 🛡️ Gestión de calidad | Certificaciones de campañas y proveedores. | Certificados de campaña parcialmente conectados; certificados/exámenes de proveedor pendientes |
Los recursos visuales de campaña se adaptan a mango, palta, arándano, fresa, banana y maracuyá. Si la fruta no se identifica, se utiliza una imagen agrícola de respaldo.
Las rutas de trabajo requieren la sesión local de demostración.
| Ruta | Vista |
|---|---|
/login | Acceso, confirmación y recuperación de cuenta en la interfaz |
/modules | Selector de áreas |
/campaigns | Gestión de campañas |
/campaigns/:id | Detalle de una campaña |
/campaigns/:id/providers | Proveedores de una campaña |
/campaigns/:id/carrier-payments | Pagos a transportistas |
/proveedores | Directorio de proveedores |
/planificacion-comercial | Directorio de clientes |
Necesitas Node.js 22.12 o superior y pnpm compatible con el lockfile v9 del repositorio. El proyecto utiliza pnpm-lock.yaml como referencia de dependencias.
Desde la raíz del proyecto:
pnpm install --frozen-lockfile
pnpm dev
Abre la dirección que indique Vite en la terminal, normalmente http://localhost:5173.
Recorrido de demostración: entra en /login, pulsa Ingresar y luego Confirmar. El flujo actual permite explorar los módulos sin credenciales reales; los campos de usuario y código aún no se verifican con un servicio.
Copia .env.example como .env para apuntar el cliente HTTP al backend local:
VITE_API_BASE_URL=http://localhost:3000/
La variable alimenta al cliente Axios compartido. Si abres la web desde otro dispositivo, reemplaza localhost por la IP de red del equipo que ejecuta la API, por ejemplo http://192.168.1.25:3000/. Reinicia Vite después de cambiar .env para que cargue el nuevo valor. Las variables VITE_* se incluyen en el frontend: no deben contener secretos.
| Comando | Función |
|---|---|
pnpm dev | Inicia Vite con recarga durante el desarrollo |
pnpm dev:network | Inicia Vite accesible por LAN e imprime la URL de red |
npm run dev:network | La misma tarea usando npm para iniciar el servidor Vite |
pnpm build | Comprueba TypeScript y genera el bundle en dist/ |
pnpm preview | Sirve el resultado de una compilación local |
pnpm lint | Ejecuta ESLint sobre el proyecto |
Docker Compose levanta solo el backend y PostgreSQL. La web se ejecuta con Vite en modo desarrollo para que los cambios se vean al instante. Necesitas Docker Desktop con Compose y Node.js 22.12+ con pnpm. Desde epe-web/, instala dependencias una sola vez:
pnpm install --frozen-lockfile
Luego, en una terminal inicia backend y base de datos; en otra, inicia la web:
docker compose up -d --build
pnpm dev:network
Vite mostrará las direcciones disponibles. En la misma computadora abre:
localhost:5432 (usuario postgres, base backend_epe)--host 0.0.0.0 hace que Vite imprima además la URL de red (por ejemplo http://192.168.1.25:5173) para abrir la web desde otro dispositivo. Usa exactamente el origen de la URL que abras en el navegador al configurar CORS. VITE_API_BASE_URL es la dirección de la API a la que el navegador hará solicitudes; CORS_ORIGIN es el origen de la web que el backend permite. Para uso en la misma computadora los valores predeterminados son http://localhost:3000/ y http://localhost:5173. El Compose reutiliza el Dockerfile existente de ../epe-backend; no inicies por separado los otros Compose del proyecto. Para detener Vite pulsa Ctrl+C; para detener API y base: docker compose down. Para borrar también los datos locales: docker compose down -v.
Para cargar los registros de ejemplo del backend, con los servicios levantados ejecuta:
docker compose exec api node scripts/seed-examples.mjs
El comando se puede repetir: el script evita duplicar registros que ya existen. Al borrar el volumen con docker compose down -v, se elimina la base y tendrás que ejecutar el seed otra vez. Estos datos están en la API; las pantallas web aún usan datos de demostración/locales y no están conectadas a los dominios de negocio del backend.
Para cambiar el origen permitido por CORS (por ejemplo, si usas la URL de red en vez de localhost), agrega CORS_ORIGIN=http://192.168.1.25:5173 en epe-web/.env usando el origen exacto que Vite imprimió y recrea solo la API:
docker compose up -d --force-recreate api
No necesitas reconstruir la imagen del backend para este cambio: CORS_ORIGIN se lee al iniciar el contenedor. El backend actualmente permite un solo origen por vez. Para trabajar desde la misma computadora normalmente basta el valor predeterminado http://localhost:5173.
Los puertos predeterminados son 3000 (API) y 5432 (base). Si alguno ya está ocupado, crea epe-web/.env y sobrescribe API_PORT o DB_PORT_HOST. También puedes establecer DB_PASSWORD y DB_DATABASE ahí. La contraseña predeterminada solo es para desarrollo local; cámbiala si expones servicios fuera de tu máquina. Si cambias el puerto de la API, configura VITE_API_BASE_URL para la web y vuelve a iniciar Vite.
La imagen usa dos etapas: Node compila la aplicación y Nginx sirve los archivos estáticos. La configuración de Nginx incluye fallback para las rutas de React Router.
Construye la imagen pasando la URL del backend:
docker build --build-arg VITE_API_BASE_URL=https://api.ejemplo.com -t epe-web .
Ejecuta el contenedor:
docker run --rm -p 8080:80 epe-web
Abre http://localhost:8080.
VITE_API_BASE_URLqueda incorporada en el bundle durantedocker build; cambiar variables al ejecutar el contenedor no modifica una imagen ya construida. Para otro backend, vuelve a construir la imagen.
BrowserRouter. El hosting debe servir index.html para las rutas de la SPA.public/sw.js, que utiliza una estrategia de caché primero. Si una actualización no aparece en local, elimina la caché del sitio y desregistra el service worker desde las herramientas del navegador.La organización sigue Screaming Architecture: las carpetas principales describen las áreas del negocio. Cada módulo mantiene sus páginas, componentes y datos; lo transversal vive en shared/.
src/
├── modules/
│ ├── auth/ Acceso y confirmación
│ ├── campaigns/ Campañas y su operación
│ ├── commercial-planning/ Clientes y planificación comercial
│ ├── providers/ Proveedores y evaluación
│ └── users/ Centro de módulos
├── shared/
│ ├── api/ Cliente HTTP único
│ ├── components/
│ │ └── ui/ Catálogo shadcn/ui
│ ├── hooks/ Comportamientos reutilizables
│ ├── layout/ Navegación y estructura de páginas
│ ├── offline/ Persistencia de sesión local
│ ├── styles/ Degradados de marca
│ └── utils/ Utilidades, incluida exportación CSV
├── assets/ Logos, fotografías e imágenes
├── lib/ Utilidades base
└── index.css Tokens e identidad visual
public/image/ Banner, badges y otros recursos públicos
| Capa | Tecnología | Papel en el proyecto |
|---|---|---|
| Interfaz | React 19 · TypeScript 6 | Componentes tipados y estado de las vistas |
| Desarrollo | Vite 8 · SWC | Servidor de desarrollo y compilación |
| Diseño | Tailwind CSS 4 · shadcn/ui · Base UI | Estilos, primitivas y componentes reutilizables |
| Navegación | React Router 7 | Rutas del sistema y acceso a las vistas |
| Integración | Axios | Cliente HTTP centralizado para la futura API |
| Recursos visuales | Lucide · Plus Jakarta Sans | Iconografía y tipografía del sistema |
modules/<domain>/components se mantiene plano, junto a sus páginas.@/; los relativos se reservan para el catálogo vendorizado de UI.AppModal, tablas, filtros y estados compartidos permiten mantener el mismo lenguaje visual entre módulos.shared/components/ui/ se actualizan mediante shadcn; la lógica de negocio pertenece a los módulos.Consulta AGENTS.md para las decisiones de arquitectura y las reglas de trabajo del repositorio.
El sistema utiliza el verde de marca, su degradado principal, superficies claras y acentos agrícolas. Los títulos, controles, tarjetas y microinteracciones comparten esa identidad.
| Recurso | Fuente del proyecto |
|---|---|
| Colores, superficies y tipografía | Tokens en src/index.css |
| Degradados y superficies activas | brandGradients.ts |
| Logo de Agro Exportaciones F.V. | Logo original |
| Imágenes por fruta | Configuración visual de campañas |
| Cabecera del repositorio | PNG · SVG editable |
Los gráficos de esta presentación están guardados en el repositorio. El banner presenta el logo real en blanco, centrado sobre un degradado verde de la identidad del sistema.