Un sistema completo de gestión de productos de café desarrollado con tecnologías modernas de desarrollo web. Este proyecto incluye una API REST robusta, una interfaz de administración intuitiva y un frontend responsive para la presentación de productos.
- 💾 Gestión CRUD completa - Crear, leer, actualizar y eliminar productos
- 🖼️ Sistema de imágenes - Subida y gestión de múltiples imágenes por producto
- 👨💼 Panel de administración - Dashboard moderno con autenticación JWT
- 🔒 Seguridad robusta - Autenticación, autorización y validación de datos
- 📱 Diseño responsive - Optimizado para dispositivos móviles y desktop
- 🚀 Deploy con Docker - Configuración completa con docker-compose
- 🌱 Niveles de tueste - Light, Medium-Light, Medium, Medium-Dark, Dark
- 🌍 Origen geográfico - Trazabilidad del país de origen
- 💰 Sistema de precios - Gestión flexible de precios por kilogramo
- 🏷️ Organización por marcas - Clasificación de productos por marca
- ✅ Control de estado - Activación/desactivación de productos
- FastAPI - Framework web moderno y rápido para Python
- SQLAlchemy - ORM para manejo de base de datos
- PostgreSQL - Base de datos relacional robusta
- JWT (PyJWT) - Autenticación y autorización
- Pydantic - Validación de datos y schemas
- Docker - Contenerización para fácil despliegue
- Next.js 15 - Framework de React con SSR
- React 19 - Biblioteca de interfaz de usuario
- TypeScript - Tipado estático para JavaScript
- Tailwind CSS - Framework de CSS utilitario
- View Transitions - Transiciones suaves entre páginas
- PostgreSQL 16 - Base de datos principal
- Esquemas relacionales - Productos, imágenes y administradores
# 1. Clonar el repositorio
git clone https://github.com/PC0staS/CafeShop.git
cd CafeShop
# 2. Verificar prerrequisitos
./setup-check.sh
# 3. Configurar backend
cd backend/code
cp .env.example .env
# Editar .env con tus configuraciones
# 4. Levantar servicios con Docker
docker-compose up --build
# 5. En otra terminal, configurar frontend
cd ../../frontend
npm install --legacy-peer-deps
npm run dev🎉 ¡Listo! Visita http://localhost:3000 para ver la aplicación.
CafeShop/
├── backend/
│ └── code/
│ ├── main.py # Aplicación principal FastAPI
│ ├── models.py # Modelos de SQLAlchemy
│ ├── schemas.py # Schemas de Pydantic
│ ├── crud.py # Operaciones CRUD
│ ├── auth.py # Sistema de autenticación
│ ├── database.py # Configuración de base de datos
│ ├── requirements.txt # Dependencias de Python
│ ├── dockerfile # Imagen Docker del backend
│ ├── docker-compose.yml # Orquestación de servicios
│ └── wait-for-it.sh # Script de espera para DB
├── frontend/
│ ├── app/
│ │ ├── admin/ # Panel de administración
│ │ ├── api/ # API routes de Next.js
│ │ ├── componentes/ # Componentes React
│ │ ├── lib/ # Utilidades y tipos
│ │ ├── products/ # Páginas de productos
│ │ ├── layout.tsx # Layout principal
│ │ └── page.tsx # Página de inicio
│ ├── package.json # Dependencias de Node.js
│ ├── tsconfig.json # Configuración TypeScript
│ └── next.config.ts # Configuración Next.js
└── README.md # Este archivo
- Docker y Docker Compose
- Node.js 18+ (para desarrollo local del frontend)
- Python 3.13+ (para desarrollo local del backend)
Nota: El frontend utiliza React 19 con Next.js 15, lo que puede requerir
--legacy-peer-depspara la instalación de dependencias.
Puedes ejecutar el script de verificación para comprobar tu entorno:
./setup-check.sh-
Clonar el repositorio
git clone https://github.com/PC0staS/CafeShop.git cd CafeShop -
Configurar variables de entorno
cd backend/code cp .env.example .env # Crear y configurar el archivo .env
Configurar las siguientes variables en
.env:DB_URL=postgresql://root:tu_password@db:5432/cafeshop_db POSTGRES_PASSWORD=tu_password_segura ADMIN_CREATION_SECRET=tu_secreto_para_crear_admins JWT_SECRET=tu_jwt_secreto
-
Levantar los servicios
docker-compose up --build
-
Configurar el frontend
cd ../../frontend npm install --legacy-peer-deps npm run dev
-
Configurar el entorno Python
cd backend/code python -m venv venv source venv/bin/activate # En Windows: venv\Scripts\activate pip install -r requirements.txt
-
Configurar PostgreSQL local
- Instalar PostgreSQL
- Crear base de datos:
cafeshop_db - Configurar variables de entorno
-
Ejecutar el backend
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
-
Instalar dependencias
cd frontend npm install --legacy-peer-deps -
Ejecutar en modo desarrollo
npm run dev
- Frontend Principal: http://localhost:3000
- Panel de Administración: http://localhost:3000/admin
- API Backend: http://localhost:8000
- Documentación API: http://localhost:8000/docs
- Health Check: http://localhost:8000/health
GET /products- Listar productos (con paginación)GET /products/{id}- Obtener producto específicoGET /products/{id}/images- Obtener imágenes de producto
POST /admin/auth/register- Registrar administradorPOST /admin/auth/login- Iniciar sesiónPOST /admin/auth/refresh- Renovar token
POST /admin/products- Crear productoPUT /admin/products/{id}- Actualizar productoDELETE /admin/products/{id}- Eliminar productoPOST /admin/products/full- Crear producto con imágenes
{
"id": 1,
"name": "Café Colombiano Premium",
"description": "Café de origen colombiano con notas frutales",
"price_per_kg": 2500,
"currency": "EUR",
"brand": "Coffee Masters",
"origin": "Colombia",
"roast_level": "Medium",
"is_active": true,
"images": [...]
}# Ejecutar con recarga automática
uvicorn main:app --reload
# Ejecutar tests (si están configurados)
pytest
# Verificar tipos con mypy
mypy .# Desarrollo con Turbopack
npm run dev
# Build de producción
npm run build
# Linting
npm run lint
# Iniciar servidor de producción
npm start# Construir y levantar servicios
docker-compose up --build
# Ver logs
docker-compose logs -f
# Parar servicios
docker-compose down
# Limpiar volúmenes
docker-compose down -v# Si tienes problemas con dependencias de React 19
npm install --legacy-peer-deps --force# Verificar que PostgreSQL esté ejecutándose
docker-compose ps
# Revisar logs de la base de datos
docker-compose logs db# Para encontrar y terminar procesos en puertos específicos
lsof -ti:3000 | xargs kill -9 # Frontend
lsof -ti:8000 | xargs kill -9 # Backend# En Linux, agregar usuario al grupo docker
sudo usermod -aG docker $USER
# Luego reiniciar sesión- Dashboard intuitivo con vista de cards de productos
- Modales de edición para actualización rápida
- Gestión de imágenes con preview
- Autenticación segura con JWT
- Logout automático por seguridad
- Landing page atractiva con información del negocio
- Catálogo de productos con filtros y búsqueda
- Diseño responsive para móviles y desktop
- Transiciones suaves entre páginas
- Optimización de imágenes con Next.js
- Autenticación JWT con tokens de acceso y refresh
- Validación de datos con Pydantic schemas
- Sanitización de inputs en frontend y backend
- CORS configurado para producción
- Variables de entorno para datos sensibles
- Hashing de contraseñas con bcrypt
DB_URL=postgresql://usuario:password@host:puerto/database
POSTGRES_PASSWORD=password_segura
ADMIN_CREATION_SECRET=secreto_muy_seguro
JWT_SECRET=jwt_secreto_muy_largo
ALLOWED_ORIGINS=https://tu-dominio.com- Usar PostgreSQL administrado (AWS RDS, Google Cloud SQL, etc.)
- Configurar HTTPS con certificados SSL
- Implementar rate limiting en la API
- Configurar logs centralizados
- Implementar monitoreo de aplicación
- Usar CDN para assets estáticos
Las contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-caracteristica) - Commit tus cambios (
git commit -m 'Añadir nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Pablo Costas
- GitHub: @PC0staS
- Email: pablocostasnieto@gmail.com
Este proyecto está en desarrollo activo. Consulta el archivo frontend/todo.md para ver las características planificadas.
- Sistema de carrito de compras
- Integración de pagos
- Sistema de usuarios finales
- Notificaciones en tiempo real
- Análisis y reportes de ventas
⭐ Si te gusta este proyecto, ¡no olvides darle una estrella en GitHub!