-
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.jsse 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.jsycartController.jspara 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.jsycart.jspara 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.jsycartRoutes.jspara 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.jsque 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.jsyvalidation.jsque 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