{"id":21424415,"url":"https://github.com/achique-luisdan/api-cakes-shop","last_synced_at":"2025-07-14T08:31:49.812Z","repository":{"id":65542191,"uuid":"593830356","full_name":"achique-luisdan/api-cakes-shop","owner":"achique-luisdan","description":"API Rest de Tienda online de Tortas","archived":false,"fork":false,"pushed_at":"2023-02-05T04:32:37.000Z","size":280,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T05:35:55.957Z","etag":null,"topics":["backend","express","jest","nodejs","sql","supertest","typeorm","typescript","unit-tests"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/achique-luisdan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2023-01-26T23:34:05.000Z","updated_at":"2024-03-20T03:38:50.000Z","dependencies_parsed_at":"2023-02-15T15:46:22.288Z","dependency_job_id":null,"html_url":"https://github.com/achique-luisdan/api-cakes-shop","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/achique-luisdan/api-cakes-shop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achique-luisdan%2Fapi-cakes-shop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achique-luisdan%2Fapi-cakes-shop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achique-luisdan%2Fapi-cakes-shop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achique-luisdan%2Fapi-cakes-shop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/achique-luisdan","download_url":"https://codeload.github.com/achique-luisdan/api-cakes-shop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achique-luisdan%2Fapi-cakes-shop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265262624,"owners_count":23736433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","express","jest","nodejs","sql","supertest","typeorm","typescript","unit-tests"],"created_at":"2024-11-22T21:21:56.165Z","updated_at":"2025-07-14T08:31:48.929Z","avatar_url":"https://github.com/achique-luisdan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Cakes Shop\n\nTienda online de Tortas\n\n## Características (Features) ❤️\n\n:two_hearts: Landing page con hero vistoso *(frontend)*\n\n:two_hearts: Catálogo de productos\n\n:two_hearts: Promociones con descuento\n\n:two_hearts: Creación de pedidos\n\n## Instalación (Install) 🔧\n\nPara instalar las herramientas necesarias:\n\n### Paso 1. Instalar Node.js\n\nAcceder al sitio oficial de [Node.js](https://nodejs.org/), descargar e instalar.\n\n* [Node JS v16 o superior](https://nodejs.org/) - Entorno de Ejecución de Servidor para JavaScript\n\n### Paso 2. Instalar dependencias del proyecto\n\nAccede a la carpeta del proyecto y ejecuta el siguiente comando:\n\n```\nnpm install\n```\n\nSerán instaladas las siguientes dependencias: \n\n:hammer_and_wrench: [Express.js v4.18.2](https://expressjs.com/)\n\n:hammer_and_wrench: [TypeScript v4.9.4](https://www.typescriptlang.org/)   \n\n:hammer_and_wrench: [TypeORM v0.3.11](https://typeorm.io/) \n\n:hammer_and_wrench: [SQLite3 v5.1.4](https://www.npmjs.com/package/sqlite3)     \n\n:hammer_and_wrench: [CORS v2.8.5](https://www.npmjs.com/package/cors)\n\n### Paso 3. Compilar proyecto\n\n```\nnpm run build\n```\n\n### Paso 4. Levantar servidor de desarrollo\n\n```\nnpm run start\n```\n\n### Paso 5. Explorar endpoints API\n\n#### Consultar promociones \n\u003e GET [/api/promotions](http://localhost:3000/api/promotions)\n\n#### Consultar productos\n\n\u003e GET [/api/products](http://localhost:3000/api/products)\n\n#### Crear pedido\n\n\u003e POST [/api/orders](http://localhost:3000/api/orders)\n\n\u003e *Request:*\n```json\n{\n    \"items\": [\n        {\n            \"productId\": 1,\n            \"quantity\": 12\n        }\n    ]\n}\n```\n\n#### Crear promociones: \n\n\u003e POST [/api/promotions](http://localhost:3000/api/promotions)\n\n\u003e *Request:*\n```json\n[\n    {\n        \"id\": 1,\n        \"name\": \"Jueves de feria\",\n        \"discount\": 50,\n        \"isActive\": true\n    },\n    {\n        \"id\": 2,\n        \"name\": \"Martes en familia\",\n        \"discount\": 20,\n        \"isActive\": true\n    }\n]\n```\n\n#### Crear productos\n\n\u003e POST [/api/products](http://localhost:3000/api/products)\n\n\u003e *Request:*\n```json\n[\n    { \n        \"name\": \"Tarta mousse de chocolate y baileys\", \n        \"price\": 12,\n        \"image\": \"https://images.pexels.com/photos/4110003/pexels-photo-4110003.jpeg?auto=compress\u0026cs=tinysrgb\u0026w=1260\u0026h=750\u0026dpr=1\"\n    },\n    { \n        \"name\": \"Tarta de fresas con crema de vainilla\", \n        \"price\": 6,\n        \"image\": \"https://images.pexels.com/photos/12846488/pexels-photo-12846488.jpeg?auto=compress\u0026cs=tinysrgb\u0026w=1260\u0026h=750\u0026dpr=1\" \n    },\n    { \n        \"name\": \"Cheesecake de Nutella\", \n        \"price\": 19,\n        \"image\": \"https://images.pexels.com/photos/15031855/pexels-photo-15031855.jpeg?auto=compress\u0026cs=tinysrgb\u0026w=600\"\n    }\n]\n```\n\n## Pruebas unitarias (Unit tests) 💋\n\n```\nnpm run test\n```\n\n✅ Crea nuevos productos\n\n✅ Crea nuevas promociones\n\n✅ Asocia promociones a productos\n\n✅ Si producto tiene varias promociones, indica la promoción con mayor descuento\n\n✅ Si promociones asociadas a un producto tienen mismo descuento, selecciona la primera\n\n✅ Si promoción desactivada esta asociada a un producto, no mostrar promoción\n\n✅ Calcula precio de producto con descuento por cada promoción\n\n✅ Crea nuevo pedido\n\n## Base de datos (Database) :floppy_disk:\n\n### Modelo Lógico Relacional\n\n![Modelo Lógico Relacional](./docs/MODELO_LOGICO_RELACIONAL_v0.3.png \"Modelo Lógico Relacional\")\n\n## Mejora Continua 🚀\n\n:two_hearts: Emitir comprobante de pedido\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fachique-luisdan%2Fapi-cakes-shop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fachique-luisdan%2Fapi-cakes-shop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fachique-luisdan%2Fapi-cakes-shop/lists"}