Proyecto de cliente
Synk Food: tienda en línea B2C y B2B
Una sola tienda para clientes de menudeo y mayoristas, con pagos conciliados por Stripe, tareas en segundo plano y un catálogo traducido automáticamente.

Cifras
- idiomas, con traducción automática del catálogo
- 2
- tipos de cuenta: menudeo y mayorista aprobado por el equipo
- 2
Reto
Synk Food vende productos gourmet coreanos a clientes de menudeo y a mayoristas. Necesitaba una sola tienda para los dos, sin que cualquiera pudiera darse de alta como mayorista, con pagos que no dejaran pedidos a medias, un catálogo y un blog en español e inglés, y tareas pesadas, como facturas y correos, que no frenaran la navegación.
Solución
- Arquitectura por capas de servicio en Django, con managers propios que separan la lógica de negocio de las vistas y evitan consultas repetidas.
- Cuentas mayoristas aprobadas por el equipo: nadie puede asignarse ese tipo de cuenta; se solicita con un formulario y se concede tras revisarla.
- Pagos con Stripe confirmados por webhooks.
- Celery en segundo plano para generar facturas en PDF con WeasyPrint y enviar correos.
- Recomendaciones de «comprados juntos» calculadas en Redis.
- Catálogo en dos idiomas con traducción automática por DeepL y caché por huella SHA-256, para no traducir dos veces el mismo texto.
- Acceso con Google y segundo factor (TOTP).
- Integración continua con GitHub Actions: lint con Ruff, pruebas y análisis de seguridad con CodeQL.
Resultado
Synk Food tiene una tienda que atiende a menudeo y mayoreo desde una sola base de código, mantiene las tareas pesadas fuera de la petición del usuario y se verifica automáticamente en cada cambio.
Con qué está hecho
- Django
- Python
- PostgreSQL
- Redis
- Celery
- Stripe
- Docker

