{"id":15575858,"url":"https://github.com/joeldev1021/ecommerce-api","last_synced_at":"2025-03-29T07:24:04.431Z","repository":{"id":65229846,"uuid":"427068547","full_name":"Joeldev1021/ecommerce-api","owner":"Joeldev1021","description":"e-commerce api","archived":false,"fork":false,"pushed_at":"2023-06-05T01:02:56.000Z","size":749,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-03T20:51:50.623Z","etag":null,"topics":["cqrs","ddd","ddd-architecture","dependency-injection","domain-driven-design","ecommerce","eventbus","express","hexagonal-architecture","inversify","jest","nodejs","rabbitmq","rest-api","ts"],"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/Joeldev1021.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-11T16:26:46.000Z","updated_at":"2023-12-11T12:37:20.000Z","dependencies_parsed_at":"2024-10-02T18:40:57.624Z","dependency_job_id":null,"html_url":"https://github.com/Joeldev1021/ecommerce-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joeldev1021%2Fecommerce-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joeldev1021%2Fecommerce-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joeldev1021%2Fecommerce-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joeldev1021%2Fecommerce-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Joeldev1021","download_url":"https://codeload.github.com/Joeldev1021/ecommerce-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246152309,"owners_count":20731759,"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":["cqrs","ddd","ddd-architecture","dependency-injection","domain-driven-design","ecommerce","eventbus","express","hexagonal-architecture","inversify","jest","nodejs","rabbitmq","rest-api","ts"],"created_at":"2024-10-02T18:40:52.957Z","updated_at":"2025-03-29T07:24:04.401Z","avatar_url":"https://github.com/Joeldev1021.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-commerce API!\n##  Description \n\nThis project is an e-commerce API that is based on Domain-Driven Design (DDD) and also implements a CQRS pattern.\n\nIn DDD, the different parts of the system are separated into different \"domains\", each with its own logic and business rules. Each domain is further divided into \"subdomains\" that focus on a specific task. To handle domain events, we will use RabbitMQ, which allows us to exchange messages asynchronously and scalably. Currently, this project has 3 domains.\n\n-  **User**\n-  **Category**\n-  **Product**\n  \n\u003e **Note:** Please note that I am not an expert in these technologies, methods, and patterns. If you have any advice or feedback, it will be welcome.\n\n![ E-commerce API](https://res.cloudinary.com/practicaldev/image/fetch/s--NIfW82Gj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r8iufg4qjc63uu8jzf6y.jpg)\n\n## Technologies\n\n\u003e Nodejs, Express, Typescript, Typeorm, Inversify, amqplib, Eslint, Prettier, Docker\n\n##  Structure project  ☘️\n\n```tree\n\n├── src\n│   ├── apps \n│   │   ├── mooc\n│   │   └── backend\n│   │       ├── command\n│   │       ├── controller\n│   │       ├── dependency-injection\n│   │       ├── routes\n│   │       ├── bootstrap.ts\n│   │       └── server.ts\n│   └── contexts\n│       ├── category\n│       │   ├── infrastructure\n│       │   ├── application\n│       │   └── domain\n│       ├── product\n│       │   ├── infrastructure\n│       │   ├── application\n│       │   └── domain\n│       ├── shared\n│       │   ├── infrastructure\n│       │   ├── application\n│       │   └── domain\n│       └── user\n│           ├── infrastructure\n│           ├── application\n│           └── domain\n└── test\n```\n\n##  Environment 🔑\n```\nPORT=4000\nDB_NAME=ecommerce\nMYSQL_USER=root\nMYSQL_PASSWORD=example\nMYSQL_PORT=3306\n```\n```\nRABBIT_USERNAME='example'\nRABBIT_PASSWORD='example'\nRABBIT_VHOST='/'\nRABBIT_SECURE=false\nRABBIT_HOSTNAME='localhost'\nRABBIT_PORT=5672\nEXCHANGE_NAME='domain_events'\nMAX_RETRIES=3\nMODULE_NAME='mooc'\n````\n\n##   Getting Started 🚀\n\n1. Fork this project:\n\n-   [Click here](https://github.com/Joeldev1021/ecommerce-api).\n\n2.  Clone the repository:\n```\ngit clone https://github.com/Joeldev1021/ecommerce-api\n```\n3. Install dependencies:\n```\nnpm install\nnpm run docker:up\nnpm run rabbit:config:command\nnpm run dev \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoeldev1021%2Fecommerce-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoeldev1021%2Fecommerce-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoeldev1021%2Fecommerce-api/lists"}