- Node.js (probado en última LTS:
14.17.5
) - Docker (Esto es por si quieres agilizar el proceso de despliegue)
- Docker Compose (Permite ejecutar facilmente una orquestación de contenedores)
- Serverless Framework (Si no lo deseas correr con Docker, necesitarás este paquete)
- MySQL o PostgreSQL (Puedes usar tú gestor favorito. Prisma se encargará del resto :))
- Redis (opcional. Redis funciona para el caché de peticiones, pero puedes desactivarlo colocando la variable de entorno
REDIS_ACTIVE=0
en tu archivo.env
)
- Clona el repositorio utilizando
git clone [email protected]:chrisft25/ecommerce-api-demo.git
- Crea el archivo
.env
en la raíz del proyecto, tomando como ejemplo el archivo.env-example
Aquí iran las configuraciones necesarias del proyecto. Para la variable de DATABASE_URL puedes leer la siguiente documentación: https://www.prisma.io/docs/concepts/database-connectors
- Ejecuta el comando
docker-compose up
para correr los contenedores y listo :)
- Ejecuta
npm install
para instalar las dependencias. - Ejecuta
npm install -g serverless
para instalar el paquete de Serverless Framework. - Ejecuta
npm run db:deploy
para crear las tablas de la Base de Datos. - Ejecuta
npm run db:generate
para crear el cliente de Prisma que vamos a utilizar. - Ejecuta
npm run dev
para correr localmente tu proyecto en el puerto 3000.
- Configuración inicial del proyecto.
- Implementación de base de datos.
- Sistema de migraciones de base de datos.
- Configuración de contenedores Docker para desarrollo.
- Lógica de Middlewares en funciones serverless.
- Estrategia de despliegue a development y production.
- Crear workflows de Github Actions para CI/CD.
- Log management (Cloudwatch).
- Implementación de estrategia de caché con Redis.
- Autenticación por JWT.
- CRUD de usuarios.
- CRUD de categorías.
- CRUD de direcciones de usuario.
- CRUD de productos.
- Especificar cobertura con ISO 3166 de nombres de países en productos.
- Especificar contenido por geolocalización.
- Especificar precios por geolocalización.
- Crear reviews en productos.
- Identificación de geolocalización por IP.
- Filtros de productos por geolocalización por IP.
- Filtros de productos por precio.
- Ordenar productos por promedio de reviews y geolocalización.
- Mocks en tests.
- Test unitarios.