-
app.js
: Este archivo es el punto de entrada principal de tu aplicación Express. Aquí se crea la instancia de la aplicación y se configuran las rutas y middleware. -
config/
: En este directorio, se almacenan archivos de configuración relacionados con tu aplicación. En el ejemplo, el archivodb.js
se encuentra aquí y se encarga de establecer la conexión con la base de datos MySQL. -
controllers/
: En este directorio, se definen los controladores de tu aplicación. Los controladores son responsables de manejar las solicitudes entrantes, procesar la lógica de negocio y enviar las respuestas adecuadas. En el ejemplo, se tienen los controladoresauthController.js
,productController.js
ycartController.js
para las funcionalidades de autenticación, productos y carritos, respectivamente. -
models/
: En este directorio, se definen los modelos de datos que representan las entidades de tu aplicación. Cada modelo define la estructura de una tabla en la base de datos y proporciona métodos para interactuar con los datos. En el ejemplo, se tienen los modelosuser.js
,product.js
ycart.js
para representar las entidades de usuario, producto y carrito. -
routes/
: En este directorio, se definen las rutas y los endpoints de tu aplicación. Cada archivo de ruta se encarga de manejar las solicitudes HTTP y direccionarlas al controlador correspondiente. En el ejemplo, se tienen los archivosauthRoutes.js
,productRoutes.js
ycartRoutes.js
para las rutas relacionadas con la autenticación, productos y carritos, respectivamente. -
middleware/
: En este directorio, se encuentran los middlewares personalizados. Los middlewares son funciones que se ejecutan antes de que una solicitud llegue a los controladores. Pueden realizar tareas como la autenticación, la validación de datos o el manejo de errores. En el ejemplo, se tiene el archivoauthMiddleware.js
que contiene el middleware de autenticación. -
utils/
: En este directorio, se almacenan utilidades comunes utilizadas en tu aplicación. Pueden ser funciones auxiliares, manejadores de errores, validadores u otros archivos de utilidad. En el ejemplo, se tienen los archivoserrorHandler.js
yvalidation.js
que contienen funciones para manejar errores y realizar validaciones, respectivamente. -
Users Table:
- user_id (Primary Key)
- username (Unique)
- password (Hashed)
- full_name (Optional)
- address (Optional)
- email (Unique)
- phone_number (Optional)
- role (Admin or Customer)
- registration_date (Optional)
-
Products Table:
- product_id (Primary Key)
- product_name (Unique)
- description (Optional)
- price (Optional)
- quantity_available (Not Optional)
- category_id (Foreign Key)
-
productsImages Table:
- image_id (Primary Key)
- product_id (Foreign Key)
- is_main (Boolean)
- image_url
-
Orders Table:
- order_id (Primary Key)
- user_id (Foreign Key)
- order_date
- order_status enum(Pending, Processing, Shipped, Delivered, Cancelled)
- total_price
- shipping_address
-
Categories Table:
- category_id (Primary Key)
- category_name
- description
-
ShoppingCart Table:
- cart_id (Primary Key)
- user_id (Foreign Key)
- product_id (Foreign Key)
- quantity
- total_price
Technologies used:
- Node.js
- Express
- MySQL
- Sequelize
- JWT
- CORS
- JOI
- Morgan
- Multer
- Cloudinary
- Nodemom
- swagger-ui-express