Una aplicación web moderna para gestionar facturas y albaranes con PostgreSQL y API Routes integradas en Vite.
- ✅ Gestión de facturas y albaranes
- ✅ Dashboard con estadísticas en tiempo real
- ✅ Gráficos interactivos con Recharts
- ✅ Base de datos PostgreSQL con Docker
- ✅ API REST integrada en Vite (sin servidor separado)
- ✅ Interfaz moderna con TailwindCSS y shadcn/ui
- ✅ Animaciones suaves con Framer Motion
- ✅ Adminer incluido para gestión visual de la BD
- Node.js (versión 16 o superior)
- Docker y Docker Compose
- npm o yarn
git clone https://github.com/ADCairex/docu-flow.git
cd docu-flow
npm installdocker-compose up -dEsto iniciará:
- PostgreSQL en el puerto 5433 (para evitar conflictos con instalaciones locales)
- Adminer en el puerto 8080 (gestor visual de BD)
Verificar que está corriendo:
docker-compose psOpción A: Usando Adminer (Recomendado)
- Abre http://localhost:8080
- Conéctate con:
- Sistema:
PostgreSQL - Servidor:
postgres - Usuario:
postgres - Contraseña:
postgres - Base de datos:
docu_flow
- Sistema:
- Ve a "SQL command"
- Copia y pega el contenido de
database/schema.sql - Ejecuta
Opción B: Desde la terminal
docker exec -i docu-flow-postgres psql -U postgres -d docu_flow < database/schema.sqlEl archivo .env ya está configurado para Docker. Si necesitas cambiar algo:
cp .env.example .env
# Edita .env si es necesarionpm run devLa aplicación estará disponible en:
- Frontend: http://localhost:5173
- Adminer (Gestor BD): http://localhost:8080
- API: http://localhost:5173/api/*
La API REST está integrada en el mismo servidor de Vite, no necesitas servidor separado.
npm run buildLos archivos compilados estarán en dist/
Para producción, necesitarás configurar un servidor Node.js separado o usar el archivo vite.config.js como base.
docu-flow/
├── database/
│ ├── schema.sql # Script SQL para crear tablas
│ └── README.md # Guía para gestionar la BD
├── src/
│ ├── server/
│ │ └── api.js # API Routes (como Next.js)
│ ├── api/
│ │ └── apiClient.js # Cliente HTTP para el frontend
│ ├── components/
│ │ └── ui/ # Componentes shadcn/ui
│ ├── Components/
│ │ ├── DeliveryNoteForm.js # Formulario de albaranes
│ │ ├── InvoiceForm.js # Formulario de facturas
│ │ └── StatCard.js # Tarjetas de estadísticas
│ ├── Pages/
│ │ ├── Dashboard.js # Dashboard con gráficos
│ │ ├── Invoices.js # Gestión de facturas
│ │ └── DeliveryNotes.js # Gestión de albaranes
│ ├── utils/
│ │ └── index.js # Funciones auxiliares
│ ├── App.jsx # App principal con routing
│ ├── Layout.js # Layout con sidebar
│ ├── index.jsx # Punto de entrada
│ └── index.css # Estilos globales
├── docker-compose.yml # PostgreSQL + Adminer
├── .env # Variables de entorno
├── package.json
├── vite.config.js # Config con API Routes
└── tailwind.config.js
id- Identificador únicocustomer_name- Nombre del clientedate- Fecha de la facturaamount- Importe (DECIMAL)status- Estado (pending/processed)description- Descripcióncreated_date- Fecha de creación
id- Identificador únicocustomer_name- Nombre del clientedate- Fecha del albaránreference- Referencia únicastatus- Estado (pending/processed)notes- Notas adicionalescreated_date- Fecha de creación
Todas las rutas están bajo /api/*:
GET /api/invoices?orderBy=-created_date- ListarGET /api/invoices/:id- Obtener unaPOST /api/invoices- CrearPUT /api/invoices/:id- ActualizarDELETE /api/invoices/:id- Eliminar
GET /api/delivery-notes?orderBy=-created_date- ListarGET /api/delivery-notes/:id- Obtener unoPOST /api/delivery-notes- CrearPUT /api/delivery-notes/:id- ActualizarDELETE /api/delivery-notes/:id- Eliminar
- Frontend: React 18 + Vite
- Styling: TailwindCSS + shadcn/ui
- State: React Query (TanStack Query)
- Routing: React Router v6
- Animations: Framer Motion
- Charts: Recharts
- Backend: Express integrado en Vite
- Database: PostgreSQL 15
- Container: Docker + Docker Compose
Si el puerto está en uso, el docker-compose.yml ya usa el puerto 5433. Verifica .env:
DB_PORT=5433Verifica que Docker está corriendo:
docker-compose ps
docker-compose logs postgresEjecuta el script de creación:
docker exec -i docu-flow-postgres psql -U postgres -d docu_flow < database/schema.sqlReinicia el servidor de desarrollo y borra la caché:
rm -rf node_modules/.vite
npm run devrm -rf node_modules package-lock.json
npm installEste proyecto es de código abierto y está disponible bajo la licencia MIT.
Las contribuciones son bienvenidas. Por favor, abre un issue o pull request.