Mercatodo es un ecommerce de un proyecto personal en el cual estoy implementando las herramientras de Laravel para la administracón de:
- Gestión de productos, categorias y sus tags.
- Administración de usuarios con sus roles y permisos..
- Carrito de compras con impuestos respectivos.
- Gestión de ordenes para los clientes.
- Generación de reportes en gráficos y exportación en Excel.
- REST-ful API para administración de productos y categorias y su atentificación con Tokens.
- Importación y exportación de productos por Excel.
En el cual se usa una de las mejores pasarelas de pago Evertec para procesarlos.
- PHP 7.4+
required
- MYSQL 5.7+
required
- Clone el repositorio
git clone https://github.com/JhonathanAlfonso/mercatodo.git
. - Use el gestor de paquetes composer.
- Use npm para instalar las dependecias del proyecto.
- Si quiere acceder al todo el historial del desarrollo use el comando.
$ git fetch --all
- Ejecute los siguiente comandos:
$ cd mercatodo
$ composer install
$ npm install
- Recomendamos el uso de Laravel Valet, se listas las opciones para correr en cada OS:
Laravel Valet - Windows Subsystem Linux
Laravel Valet - Ubuntu
Laravel Valet - iOS
Copié el archivo .env.example en .env y agregue cada variables de entornos.
$ .env.example .env
-
Variables de entorno:
DB_USERNAME
Usuario base de datos.
DB_PASSWORD
Password base de datos.
MAIL_USERNAME
Usuario Mailtrap para pruebas.
MAIL_PASSWORD
Password Mailtrap para pruebas.
MAIL_FROM_ADDRESS
Correo del sistema.
ALGOLIA_APP_ID
Id de motor de Algolia.
ALGOLIA_SECRET
Key de Algolia.
PLACE_TO_PAY_LOGIN
Login de PlaceToPay.
PLACE_TO_PAY_SECRETKEY
Secret Key de PlaceToPay. -
Dentro de Algolia configurar los atributos de busqueda con este nivel de importancia: name, branch, description.
-
Corra el siguiente script.
$ php artisan key:generate
$ php artisan migrate --seed
$ php artisan storage:link
- Para activar los trabajos encolados, correr:
$ php artisan queue:work
- La API REST-ful implementa la especificación json-api.
- Gestione los productos a través de la API REST-ful. Capacidades: gestión de productos (creación, actualización, eliminación), listado de categorias.
- La autentificación esta definida a través de Bearer token, para su generación:
let data = {
email: '[email protected]',
password: '123123'
}
axios.post('http://localhost/auth', data, {
}).then(res => {
console.log(res.data)
}).catch(err => {
console.log(err.message)
})
- Para el consumo de los servicios usar en todas las consultas el
token_api
obtenido. - La ruta base para las consultas es http://localhost/admin/api/v1
let data = {
param1: 'param1',
param2: 'param2'
}
axios.get('http://localhost/admin/api/v1/products', data, {
headers: {
Authorization: 'Bearer ' + token_api
}
}).then(res => {
console.log(res.data)
}).catch(err => {
console.log(err.message)
})
- Ejemplo de respuesta json con especificación
json-api
.
{
"data": {
"type": "products",
"id": "1",
"attributes": {
"name": "Narciso",
"ean": "17272977",
"branch": "Hilpert",
"price": "12000",
"description": "Distinctio nostrum minus velit iusto reprehenderit. Ratione vero tempora hic consequatur et. Ut sed doloremque repudiandae et cum. Adipisci consectetur repellat sed sint.",
"category_id": 2,
"created-at": "2020-12-08T21:44:31-05:00",
"updated-at": "2020-12-10T21:33:29-05:00"
},
"relationships": {
"categories": {
"links": {
"self": "http://mercatodo.test/api/v1/products/1/relationships/categories",
"related": "http://mercatodo.test/api/v1/products/1/categories"
}
}
},
"links": {
"self": "http://mercatodo.test/api/v1/products/1"
}
}
}
Puedes hacer tus contribuciones mediantes pull request. Para cambios importantes primero crear un ISSUE.
Asegurate de actualizar los test apropiadamente.
Mercatodo es un proyecto bajo la licencia MIT license.