ecommerce-store-api
A production-grade NestJS modular monolith E-commerce API π. Built as a reference implementation showcasing Strategic DDD, Hexagonal Architecture, Stripe SAGA orchestration, Redis Stack (JSON/Search), and zero cross-context leakage.
File Explorer
Download Latest Version (.zip)- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- README.md
- PROJECT-CONTEXT.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- README.md
- 00-canonical-policy.mdc
- 10-verification-gates.mdc
- 20-skills-discovery.mdc
- settings.json
- action.yml
- action.yml
- action.yml
- bug_report.md
- feature_request.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- README.md
- ci.yml
- nightly-restore-drill.yml
- CODEOWNERS
- copilot-instructions.md
- dependabot.yml
- PULL_REQUEST_TEMPLATE.md
- commit-msg
- commit-msg.js
- pre-commit
- pre-push
- launch.json
- settings.json
- api-overview.json
- business-metrics.json
- checkout-saga.json
- infrastructure.json
- dashboards.yml
- datasources.yml
- entrypoint.sh
- loki-config.yml
- prometheus.prod.yml
- prometheus.yml
- promtail-config.yml
- tempo-config.yml
- ANTHROPIC-CLAUDE.md
- CURSOR-WINDSURF.md
- GITHUB-COPILOT.md
- GOOGLE-GEMINI.md
- OPENAI-CODEX-GPT.md
- OSS-CLI-AGENTS.md
- README.md
- AGENTS.md.template
- CANONICAL-AGENT-POLICY-TEMPLATE.md
- CLAUDE.md.template
- COPILOT-INSTRUCTIONS.md.template
- GEMINI.md.template
- README.md
- REVIEW-PR-TEMPLATE.md
- SKILL-PACK-TEMPLATE.md
- TASK-BRIEF-TEMPLATE.md
- ANTI-PATTERNS.md
- ARCHITECTURE-INVARIANTS.md
- CONVENTIONS.md
- FOUNDATIONS.md
- GOVERNANCE-AND-QUALITY-GATES.md
- README.md
- SKILLS-SYSTEM.md
- WORKFLOW-PLAYBOOK.md
- ADR-0004-inventory-integrity-and-concurrency.md
- ADR-0005-typed-atomic-occ-update-contract.md
- ADR-0006-redis-fail-open-cache-aside.md
- README.md
- INVENTORY.md
- REPOSITORY-PATTERN.md
- RESULT-PATTERN.md
- API-VERSIONING.md
- ARCHITECTURAL-DECISION-RULES.md
- ARCHITECTURE-PRINCIPLES.md
- ARCHITECTURE.md
- CQRS.md
- DDD-HEXAGONAL.md
- ENGINEERING-PRINCIPLES.md
- RATE-LIMITING.md
- README.md
- anatomy-plan-node.svg
- CONCURRENCY-FOUNDATIONS.md
- DISTRIBUTED-LOCKING.md
- MVCC-AND-ISOLATION.md
- OPTIMISTIC-LOCKING.md
- PESSIMISTIC-LOCKING.md
- CONSISTENCY-FOUNDATIONS.md
- EVENTUAL-CONSISTENCY.md
- IDEMPOTENCY.md
- SAGAS-AND-COMPENSATION.md
- CONNECTION-AND-REPLICATION.md
- INDEX-DESIGN.md
- INDEX-INTERNALS.md
- PERFORMANCE-FOUNDATIONS.md
- QUERY-ANALYSIS.md
- STORAGE-AND-MAINTENANCE.md
- DATA-NORMALIZATION.md
- EAV-PATTERN.md
- DATABASE-DESIGN.md
- DATABASE-STANDARDS.md
- INDEXES.md
- README.md
- TRANSACTIONS.md
- README.md
- WHEN-TO-ADD-DATABASE-INDEXES.md
- WHEN-TO-DENORMALIZE-DATA.md
- WHEN-TO-USE-OPTIMISTIC-VS-PESSIMISTIC-LOCKING.md
- LOCAL-SETUP.md
- SEEDING.md
- CONTAINERIZATION.md
- DEPLOYMENT-STRATEGIES.md
- PIPELINE-OPTIMIZATION.md
- CICD-FOUNDATIONS.md
- PROJECT-PIPELINE.md
- PROCESS-LIFECYCLE.md
- REDIS.md
- RELEASE-BACKUP-RECOVERY.md
- TROUBLESHOOTING.md
- INTEGRATION-PATTERNS.md
- LOGS.md
- METRICS.md
- TRACES.md
- ARCHITECTURE.md
- MONITORING-STACK-GUIDE.md
- OBSERVABILITY-FOUNDATION.md
- ADMIN-BOOTSTRAP.md
- JWT-RSA-JWKS.md
- OWASP-COMPLIANCE.md
- SECRET-ROTATION.md
- SECRETS-MANAGEMENT.md
- DOMAIN-ENTITY-TESTING.md
- INTEGRATION-TESTING-GUIDE.md
- TESTING-TASK-TEMPLATE.md
- FEATURES.md
- README.md
- ROADMAP.md
- cli.js
- pg.js
- http.js
- probes.js
- runner.js
- log-helpers.ts
- db-backup.js
- db-restore-drill.js
- db-restore.js
- docker-migrate.js
- generate-envs.js
- seed-admin.ts
- seed.ts
- smoke-test.js
- sync-agent-skills.js
- app-config.reader.ts
- config.module.ts
- configuration.ts
- env-config.service.ts
- resolve-env-file-path.ts
- validate-env.ts
- global-exception.filter.spec.ts
- global-exception.filter.ts
- optional-auth.decorator.ts
- public.decorator.ts
- auth.guard.spec.ts
- auth.guard.ts
- extract-bearer-token.ts
- database.module.ts
- number.transformer.ts
- idempotent.decorator.ts
- event-emitter2.domain-event-publisher.ts
- api-version.ts
- parse-trust-proxy.spec.ts
- parse-trust-proxy.ts
- idempotency.module.ts
- idempotency.service.spec.ts
- idempotency.service.ts
- index.ts
- idempotency.interceptor.spec.ts
- idempotency.interceptor.ts
- base-job.handler.ts
- job-child-values.ts
- job-config.service.ts
- job-correlation.ts
- job-names.ts
- job-retry-policies.ts
- jobs.module.ts
- retry-config.ts
- retry-strategy.ts
- jwks.port.ts
- jwks.service.spec.ts
- jwks.service.ts
- jwt-verifier.service.spec.ts
- jwt-verifier.service.ts
- jwt-verifier.mock.ts
- index.ts
- jwt.module.ts
- correlation.module.ts
- correlation.service.spec.ts
- correlation.service.ts
- correlation-id.middleware.spec.ts
- correlation-id.middleware.ts
- http-logging.middleware.ts
- winston-logger.service.ts
- create-from-entity.type.ts
- update-from-entity.type.ts
- infra-metrics.collector.ts
- metrics-auth.guard.ts
- business-metrics.listener.ts
- metrics.controller.ts
- metrics.middleware.ts
- metrics.module.ts
- metrics.service.ts
- bullmq-connection.module.ts
- bullmq-connection.token.ts
- flow-producer.service.ts
- queue-events.service.ts
- queue.module.ts
- cache-json.spec.ts
- cache-json.ts
- cache.service.spec.ts
- cache.service.ts
- redis.constants.ts
- redis.schemas.ts
- redis-index-initializer.service.spec.ts
- redis-index-initializer.service.ts
- search-utils.spec.ts
- search-utils.ts
- redis-index.factory.ts
- redis-node-client.mock.ts
- redis-service.mock.ts
- index.ts
- cache-key-space.spec.ts
- cache-key-space.ts
- redis-cache-recovery.service.spec.ts
- redis-cache-recovery.service.ts
- redis-connection.options.ts
- redis-error.utils.ts
- redis.module.ts
- redis.service.spec.ts
- redis.service.ts
- shutdown.module.ts
- shutdown.service.spec.ts
- shutdown.service.ts
- resilient-throttler.storage.spec.ts
- resilient-throttler.storage.ts
- throttler.module.ts
- user-throttler.guard.ts
- index.ts
- tracing.ts
- redis-io.adapter.ts
- ws-auth.guard.ts
- ws-auth.service.ts
- websocket.connection.gateway.ts
- websocket.module.ts
- infrastructure.module.ts
- result.interceptor.ts
- sanitize.interceptor.spec.ts
- sanitize.interceptor.ts
- 1787339318490-InitialBaseline.ts
- auth-tokens.result.ts
- login.command.ts
- register.command.ts
- authorization.gateway.ts
- identity.gateway.ts
- jwt-signer.port.ts
- seed-demo-auth-users.usecase.spec.ts
- seed-demo-auth-users.usecase.ts
- seed-super-admin.usecase.spec.ts
- seed-super-admin.usecase.ts
- jwt-signer.service.spec.ts
- jwt-signer.service.ts
- login-user.usecase.spec.ts
- login-user.usecase.ts
- logout.usecase.spec.ts
- logout.usecase.ts
- logout-all.usecase.spec.ts
- logout-all.usecase.ts
- refresh-token.usecase.spec.ts
- refresh-token.usecase.ts
- register-user.usecase.spec.ts
- register-user.usecase.ts
- revoke-all-for-user.usecase.ts
- credential.ts
- session-token.spec.ts
- session-token.ts
- credential.interface.ts
- credential.repository.ts
- session-token.repository.ts
- index.ts
- refresh-token.decorator.ts
- login.dto.ts
- refresh-token.dto.ts
- register.dto.ts
- refresh-token-cookie.interceptor.spec.ts
- refresh-token-cookie.interceptor.ts
- user-deactivated.listener.ts
- module-authorization.gateway.ts
- module-identity.gateway.ts
- credential.schema.ts
- session-token.schema.ts
- session-token.mapper.ts
- postgres-credential.repository.integration.spec.ts
- postgres-credential.repository.ts
- postgres-session-token.repository.integration.spec.ts
- postgres-session-token.repository.ts
- bcrypt.service.ts
- authentication-dto.factory.ts
- authorization-gateway-dto.factory.ts
- indentity-gateway-dto.factory.ts
- authorization-gateway.mock.ts
- credential-repository.mock.ts
- identity-access-gateway.mock.ts
- password-hasher.mock.ts
- session-token-repository.mock.ts
- index.ts
- authentication.controller-http-contract.spec.ts
- authentication.controller.spec.ts
- authentication.controller.ts
- authentication.module.ts
- authentication.tokens.ts
- permission-system-data.initializer.spec.ts
- permission-system-data.initializer.ts
- role-system-data.initializer.spec.ts
- role-system-data.initializer.ts
- resolve-role-permissions.service.spec.ts
- resolve-role-permissions.service.ts
- find-all-permissions.usecase.spec.ts
- find-all-permissions.usecase.ts
- create-role.usecase.spec.ts
- create-role.usecase.ts
- delete-role.usecase.spec.ts
- delete-role.usecase.ts
- find-all-roles.usecase.spec.ts
- find-all-roles.usecase.ts
- find-role-by-id.usecase.spec.ts
- find-role-by-id.usecase.ts
- update-role.usecase.spec.ts
- update-role.usecase.ts
- assign-default-role.usecase.spec.ts
- assign-default-role.usecase.ts
- assign-role.usecase.spec.ts
- assign-role.usecase.ts
- find-role-by-user-id.usecase.spec.ts
- find-role-by-user-id.usecase.ts
- permission.spec.ts
- permission.ts
- role.spec.ts
- role.ts
- user-role-assignment.ts
- role.interface.ts
- user-role-assignment.interface.ts
- permission-definitions.ts
- system-roles.ts
- permission.repository.ts
- role.repository.ts
- user-role-assignment.repository.ts
- role-permissions.spec.ts
- role-permissions.ts
- require-permissions.decorator.ts
- create-role.dto.ts
- update-role.dto.ts
- permissions.guard.spec.ts
- permissions.guard.ts
- permission.schema.ts
- role-permission.schema.ts
- role.schema.ts
- user-role-assignment.schema.ts
- permission.mapper.ts
- role.mapper.ts
- user-role-assignment.mapper.ts
- postgres-permission.repository.integration.spec.ts
- postgres-permission.repository.ts
- postgres-role.repository.integration.spec.ts
- postgres-role.repository.ts
- postgres-user-role-assignment.repository.integration.spec.ts
- postgres-user-role-assignment.repository.ts
- authorization.dto.factory.ts
- permission-repository.mock.ts
- role-repository.mock.ts
- user-role-assignment.repository.mock.ts
- index.ts
- authorization.module.ts
- permissions.controller.spec.ts
- permissions.controller.ts
- roles.controller.spec.ts
- roles.controller.ts
- add-cart-item.command.ts
- clear-cart.command.ts
- remove-cart-item.command.ts
- update-cart-item.command.ts
- cart-query.service.ts
- inventory.gateway.ts
- product.gateway.ts
- cart-presentation.result.ts
- demo-cart-items.ts
- seed-demo-cart.usecase.spec.ts
- seed-demo-cart.usecase.ts
- cart-ownership.validator.spec.ts
- cart-ownership.validator.ts
- add-cart-item.usecase.spec.ts
- add-cart-item.usecase.ts
- clear-cart.usecase.spec.ts
- clear-cart.usecase.ts
- create-cart.usecase.spec.ts
- create-cart.usecase.ts
- get-cart.usecase.spec.ts
- get-cart.usecase.ts
- remove-cart-item.usecase.spec.ts
- remove-cart-item.usecase.ts
- update-cart-item.usecase.spec.ts
- update-cart-item.usecase.ts
- cart-item.spec.ts
- cart-item.ts
- cart.spec.ts
- cart.ts
- cart-item.interface.ts
- cart.interface.ts
- cart.repository.ts
- add-cart-item.dto.ts
- cart-item-response.dto.ts
- cart-response.dto.ts
- create-cart.dto.ts
- update-cart-item.dto.ts
- module-inventory.gateway.ts
- module-product.gateway.ts
- raw-cart-query-row.interface.ts
- cart-query.mapper.spec.ts
- cart-query.mapper.ts
- cart-item.schema.ts
- cart.schema.ts
- cart-item.mapper.ts
- cart.mapper.ts
- postgres-cart-query.adapter.integration.spec.ts
- postgres-cart-query.adapter.ts
- cached.cart-repository.spec.ts
- cached.cart-repository.ts
- postgres.cart-repository.integration.spec.ts
- postgres.cart-repository.spec.ts
- postgres.cart-repository.ts
- cart.builder.ts
- cart-dto.factory.ts
- cart-entity.factory.ts
- cart-gateway-dto.factory.ts
- cart.factory.ts
- cart-query-service.mock.ts
- cart-repository.mock.ts
- inventory-gateway.mock.ts
- product-gateway.mock.ts
- index.ts
- carts.controller.spec.ts
- carts.controller.ts
- carts.module.ts
- carts.token.ts
- process.health-indicator.ts
- redis.health-indicator.ts
- websocket.health-indicator.ts
- health-response.factory.ts
- health.mock.ts
- index.ts
- health.controller.spec.ts
- health.controller.ts
- health.module.ts
- add-address.command.ts
- create-user.command.ts
- update-address.command.ts
- update-user.command.ts
- user-query.service.ts
- user-detail.result.ts
- user-list-item.result.ts
- list-users.query.ts
- add-address.usecase.spec.ts
- add-address.usecase.ts
- delete-address.usecase.spec.ts
- delete-address.usecase.ts
- set-default-address.usecase.spec.ts
- set-default-address.usecase.ts
- update-address.usecase.spec.ts
- update-address.usecase.ts
- activate-user.usecase.spec.ts
- activate-user.usecase.ts
- check-user-by-email.usecase.spec.ts
- check-user-by-email.usecase.ts
- create-user.usecase.spec.ts
- create-user.usecase.ts
- deactivate-user.usecase.spec.ts
- deactivate-user.usecase.ts
- delete-user.usecase.spec.ts
- delete-user.usecase.ts
- get-user.usecase.spec.ts
- get-user.usecase.ts
- get-user-by-email.usecase.spec.ts
- get-user-by-email.usecase.ts
- list-users.usecase.spec.ts
- list-users.usecase.ts
- update-user.usecase.spec.ts
- update-user.usecase.ts
- address.spec.ts
- address.ts
- user.spec.ts
- user.ts
- address.interface.ts
- user.interface.ts
- address.repository.ts
- user.repository.ts
- caller-context.decorator.ts
- current-user.decorator.spec.ts
- current-user.decorator.ts
- index.ts
- add-address.dto.ts
- address-response.dto.ts
- list-users-query.dto.ts
- update-address.dto.ts
- update-user.dto.ts
- user-response.dto.ts
- raw-user-list-query-row.interface.ts
- user-query.mapper.spec.ts
- user-query.mapper.ts
- address.schema.ts
- user.schema.ts
- address.mapper.ts
- user.mapper.ts
- postgres-user-query.adapter.integration.spec.ts
- postgres-user-query.adapter.ts
- cached-user.repository.integration.spec.ts
- cached-user.repository.spec.ts
- cached-user.repository.ts
- postgres-user.repository.integration.spec.ts
- postgres-user.repository.spec.ts
- postgres-user.repository.ts
- user.builder.ts
- address.entity.factory.ts
- user-dto.factory.ts
- user.factory.ts
- user-query-service.mock.ts
- user-repository.mock.ts
- index.ts
- addresses.controller.spec.ts
- addresses.controller.ts
- identity.module.ts
- identity.tokens.ts
- users.controller.spec.ts
- users.controller.ts
- adjust-stock.command.ts
- reserve-stock.command.ts
- inventory-query.service.ts
- inventory-list-item.result.ts
- list-inventory.query.ts
- seed-demo-inventory.usecase.spec.ts
- seed-demo-inventory.usecase.ts
- adjust-stock.usecase.spec.ts
- adjust-stock.usecase.ts
- bulk-check-stock.usecase.spec.ts
- bulk-check-stock.usecase.ts
- check-stock.usecase.spec.ts
- check-stock.usecase.ts
- confirm-reservation.usecase.spec.ts
- confirm-reservation.usecase.ts
- get-inventory.usecase.spec.ts
- get-inventory.usecase.ts
- get-order-reservations.usecase.ts
- list-inventory.usecase.spec.ts
- list-inventory.usecase.ts
- list-low-stock.usecase.spec.ts
- list-low-stock.usecase.ts
- reconcile-inventory.usecase.spec.ts
- reconcile-inventory.usecase.ts
- reconciliation-report.interface.ts
- release-stock.usecase.spec.ts
- release-stock.usecase.ts
- reserve-stock.usecase.spec.ts
- reserve-stock.usecase.ts
- inventory.spec.ts
- inventory.ts
- reservation-item.ts
- reservation.spec.ts
- reservation.ts
- check-stock-result.interface.ts
- inventory.interface.ts
- reservation-item.interface.ts
- reservation.interface.ts
- inventory.repository.ts
- reservation.repository.ts
- inventory.scheduler.ts
- reservation-status.ts
- stock-adjustment-reason.ts
- stock-adjustment-type.ts
- adjust-stock.dto.ts
- check-stock-response.dto.ts
- inventory-response.dto.ts
- list-inventory-query.dto.ts
- low-stock-query.dto.ts
- reserve-stock-item.dto.ts
- reserve-stock.dto.ts
- stock-reservation-response.dto.ts
- inventory-reconciliation.job.spec.ts
- inventory-reconciliation.job.ts
- raw-inventory-list-query-row.interface.ts
- inventory-query.mapper.spec.ts
- inventory-query.mapper.ts
- inventory.schema.ts
- reservation-item.schema.ts
- reservation.schema.ts
- inventory.mapper.ts
- reservation-item.mapper.ts
- reservation.mapper.ts
- postgres-inventory-query.adapter.integration.spec.ts
- postgres-inventory-query.adapter.ts
- cached-inventory-repository.integration.spec.ts
- cached-inventory-repository.spec.ts
- cached-inventory-repository.ts
- postgres-inventory-repository.integration.spec.ts
- postgres-inventory-repository.spec.ts
- postgres-inventory-repository.ts
- postgres.reservation-repository.integration.spec.ts
- postgres.reservation-repository.spec.ts
- postgres.reservation-repository.ts
- bullmq-inventory.scheduler.spec.ts
- bullmq-inventory.scheduler.ts
- inventory.test.builder.ts
- inventory-dto.factory.ts
- inventory-dto.test.factory.ts
- inventory-entity.test.factory.ts
- inventory.test.factory.ts
- reservation.test.factory.ts
- inventory-query-service.mock.ts
- inventory-repository.mock.ts
- reservation-repository.mock.factory.ts
- index.ts
- inventory.controller.spec.ts
- inventory.controller.ts
- inventory.module.ts
- inventory.processor.ts
- inventory.token.ts
- notification-query.service.ts
- notification-list-item.result.ts
- list-notifications.query.ts
- cleanup-expired-notifications.service.ts
- deliver-notification.service.ts
- save-notification-history.service.ts
- update-notification-status.service.ts
- get-user-notifications.usecase.ts
- mark-notification-as-read.usecase.ts
- notification.ts
- notification-status.enum.ts
- notification.gateway.interface.ts
- notification.interface.ts
- notification.repository.ts
- notification.scheduler.ts
- notification-payload.type.ts
- get-user-notifications.dto.ts
- cleanup-expired-notifications.process.ts
- deliver-notification.process.ts
- save-notification-history.process.ts
- update-notification-status.process.ts
- raw-notification-list-query-row.interface.ts
- websocket.notification.gateway.ts
- notification-query.mapper.spec.ts
- notification-query.mapper.ts
- notification.schema.ts
- notification.mapper.ts
- postgres-notification-query.adapter.integration.spec.ts
- postgres-notification-query.adapter.ts
- postgres.notification.repository.integration.spec.ts
- postgres.notification.repository.ts
- bullmq.notification-scheduler.ts
- notification-dto.factory.ts
- notification-query-service.mock.ts
- index.ts
- notifications.controller.ts
- notifications.module.ts
- notifications.processor.ts
- cancel-order.command.ts
- checkout.command.ts
- cart.gateway.ts
- inventory-reservation.gateway.ts
- order-query.service.ts
- payment.gateway.ts
- user.gateway.ts
- checkout.result.ts
- order-detail.result.ts
- order-item-detail.result.ts
- order-list-item.result.ts
- list-orders.query.ts
- demo-orders.ts
- seed-demo-orders.usecase.spec.ts
- seed-demo-orders.usecase.ts
- shipping-address-resolver.spec.ts
- shipping-address-resolver.ts
- cancel-order.usecase.spec.ts
- cancel-order.usecase.ts
- checkout.usecase.spec.ts
- checkout.usecase.ts
- clear-checkout-cart.usecase.ts
- confirm-checkout-reservation.usecase.ts
- confirm-order.usecase.spec.ts
- confirm-order.usecase.ts
- create-checkout-payment.usecase.ts
- create-order-from-cart.usecase.spec.ts
- create-order-from-cart.usecase.ts
- deliver-order.usecase.spec.ts
- deliver-order.usecase.ts
- expire-pending-orders.usecase.spec.ts
- expire-pending-orders.usecase.ts
- finalize-checkout.usecase.ts
- get-order.usecase.spec.ts
- get-order.usecase.ts
- handle-payment-completed.usecase.ts
- handle-payment-failed.usecase.ts
- list-orders.usecase.spec.ts
- list-orders.usecase.ts
- process-order.usecase.spec.ts
- process-order.usecase.ts
- refund-checkout-payment.usecase.ts
- release-checkout-stock.usecase.ts
- release-order-stock.usecase.ts
- reserve-stock-for-checkout.usecase.ts
- ship-order.usecase.spec.ts
- ship-order.usecase.ts
- validate-checkout.usecase.spec.ts
- validate-checkout.usecase.ts
- order-items.spec.ts
- order-items.ts
- order.spec.ts
- order.ts
- order.factory.ts
- order-item.interface.ts
- order.interface.ts
- shipping-address.interface.ts
- order-workflow.spec.ts
- order-workflow.ts
- order-repository.ts
- order.scheduler.ts
- index.ts
- order-pricing.spec.ts
- order-pricing.ts
- order-status.enum.ts
- order-status.spec.ts
- order-status.ts
- shipping-address.spec.ts
- shipping-address.ts
- checkout-response.dto.ts
- checkout.dto.ts
- create-order-item.dto.ts
- create-order.dto.ts
- deliver-order.dto.ts
- list-orders-query.dto.ts
- order-item-response.dto.ts
- order-response.dto.ts
- payment-info.dto.ts
- shipping-address.dto.ts
- update-order.dto.ts
- reserve-stock.job.spec.ts
- reserve-stock.job.ts
- cancel-order.job.ts
- clear-cart.job.ts
- confirm-reservation.job.ts
- create-order.job.ts
- expire-pending-orders.job.spec.ts
- expire-pending-orders.job.ts
- finalize-checkout.job.ts
- payment-completed.job.ts
- payment-failed.job.ts
- post-payment-job.data.ts
- process-payment.job.ts
- refund-payment.job.ts
- release-order-stock.job.ts
- release-stock.job.ts
- validate-cart.job.ts
- checkout-compensation-job-data.ts
- checkout-failure.listener.spec.ts
- checkout-failure.listener.ts
- module-cart.gateway.ts
- module-inventory-reservation.gateway.ts
- module-payment.gateway.ts
- module-user.gateway.ts
- raw-order-list-query-row.interface.ts
- order-query.mapper.spec.ts
- order-query.mapper.ts
- order-item.schema.ts
- order.schema.ts
- shipping-address.schema.ts
- order-item.mapper.ts
- order.mapper.ts
- shipping-address.mapper.ts
- postgres-order-query.adapter.integration.spec.ts
- postgres-order-query.adapter.ts
- cached.order-repository.integration.spec.ts
- cached.order-repository.spec.ts
- cached.order-repository.ts
- postgres.order-repository.integration.spec.ts
- postgres.order-repository.spec.ts
- postgres.order-repository.ts
- bullmq-checkout.scheduler.ts
- order.builder.ts
- order-dto.factory.ts
- order-entity.factory.ts
- order.factory.ts
- schedule-checkout-props.factory.ts
- cart-gateway.mock.ts
- inventory-reservation-gateway.mock.ts
- order-query-service.mock.ts
- order-repository.mock.ts
- order-scheduler.mock.ts
- orders-payment-gateway.mock.ts
- shipping-address-resolver.mock.ts
- user-gateway.mock.ts
- index.ts
- order.token.ts
- orders.controller.spec.ts
- orders.controller.ts
- orders.module.ts
- orders.processor.ts
- payment-events.processor.ts
- create-payment-intent.command.ts
- create-payment.command.ts
- process-refund.command.ts
- payment-gateway-resolver.ts
- payment-query.service.ts
- stripe-signature-verifier.ts
- payment-detail.result.ts
- payment-list-item.result.ts
- list-payments.query.ts
- handle-payment-webhook.service.ts
- capture-payment.usecase.spec.ts
- capture-payment.usecase.ts
- create-payment.usecase.spec.ts
- create-payment.usecase.ts
- create-payment-intent.usecase.ts
- get-payment.usecase.spec.ts
- get-payment.usecase.ts
- get-payment-by-order-id.usecase.spec.ts
- get-payment-by-order-id.usecase.ts
- handle-stripe-webhook.usecase.ts
- list-payments.usecase.spec.ts
- list-payments.usecase.ts
- process-refund.usecase.spec.ts
- process-refund.usecase.ts
- verify-payment.usecase.spec.ts
- verify-payment.usecase.ts
- payment.spec.ts
- payment.ts
- refund.spec.ts
- refund.ts
- payment-gateway.interface.ts
- payment-result.ts
- payment.interface.ts
- refund.interface.ts
- payment.repository.ts
- payment-events.scheduler.ts
- payment-event-type.ts
- payment-status.spec.ts
- payment-status.ts
- refund-status.ts
- index.ts
- create-payment.dto.ts
- list-payments-query.dto.ts
- payment-method-details.dto.ts
- payment-response.dto.ts
- process-refund.dto.ts
- record-cod-payment.dto.ts
- payment-dto.mapper.ts
- raw-payment-list-query-row.interface.ts
- payment-gateway.factory.ts
- stripe.gateway.ts
- payment-query.mapper.spec.ts
- payment-query.mapper.ts
- payment.schema.ts
- refund.schema.ts
- payment.mapper.ts
- refund.mapper.ts
- postgres-payment-query.adapter.integration.spec.ts
- postgres-payment-query.adapter.ts
- cached.payment-repository.integration.spec.ts
- cached.payment-repository.spec.ts
- cached.payment-repository.ts
- postgres.payment-repository.integration.spec.ts
- postgres.payment-repository.spec.ts
- postgres.payment-repository.ts
- bullmq-payment-events.scheduler.ts
- stripe-signature.service.ts
- payment.test.builder.ts
- payment-dto.factory.ts
- payment-entity.test.factory.ts
- payment.test.factory.ts
- refund-entity.test.factory.ts
- refund.test.factory.ts
- payment-gateway.mock.ts
- payment-query-service.mock.ts
- payment-repository.mock.ts
- index.ts
- payment.token.ts
- payments.controller.spec.ts
- payments.controller.ts
- payments.module.ts
- create-product.command.ts
- update-product.command.ts
- product-query.service.ts
- product-detail.result.ts
- product-list-item.result.ts
- list-products.query.ts
- demo-products.ts
- seed-demo-catalog.usecase.spec.ts
- seed-demo-catalog.usecase.ts
- create-product.usecase.spec.ts
- create-product.usecase.ts
- delete-product.usecase.spec.ts
- delete-product.usecase.ts
- get-product.usecase.spec.ts
- get-product.usecase.ts
- list-products.usecase.spec.ts
- list-products.usecase.ts
- update-product.usecase.spec.ts
- update-product.usecase.ts
- product.spec.ts
- product.ts
- product.interface.ts
- product-repository.ts
- create-product.dto.ts
- product-response.dto.ts
- update-product.dto.ts
- raw-product-list-query-row.interface.ts
- product-query.mapper.spec.ts
- product-query.mapper.ts
- product.schema.ts
- product.mapper.spec.ts
- product.mapper.ts
- postgres-product-query.adapter.integration.spec.ts
- postgres-product-query.adapter.ts
- cached.product-repository.integration.spec.ts
- cached.product-repository.spec.ts
- cached.product-repository.ts
- postgres.product-repository.integration.spec.ts
- postgres.product-repository.spec.ts
- postgres.product-repository.ts
- product.builder.ts
- create-product-input.factory.ts
- product-dto.factory.ts
- product-entity.factory.ts
- product.factory.ts
- update-product-input.factory.ts
- product-query-service.mock.ts
- product-repository.mock.ts
- index.ts
- product.tokens.ts
- products.controller.spec.ts
- products.controller.ts
- products.module.ts
- app.error.ts
- domain.error.ts
- error.factory.ts
- infrastructure-error.ts
- query.error.ts
- repository.error.ts
- service-error.ts
- usecase.error.ts
- base.usecase.ts
- cache.port.ts
- caller-context.interface.ts
- current-user.interface.ts
- domain-event-publisher.ts
- jwt-payload.interface.ts
- jwt-verifier.port.ts
- paginated-query-result.interface.ts
- password-hasher.interface.ts
- role-permissions.interface.ts
- owned-resource-access.policy.spec.ts
- owned-resource-access.policy.ts
- idempotency.store.ts
- address-type.ts
- money.ts
- payment-method.ts
- quantity.ts
- system-roles.ts
- result.ts
- request.helpers.spec.ts
- request.helpers.ts
- error.utils.spec.ts
- error.utils.ts
- is-record.ts
- auth-payload.factory.ts
- idempotency.factory.ts
- nestjs-context.fixture.ts
- auth-test.helper.ts
- clock-test.helper.ts
- database-test.helper.ts
- e2e-catalog.helper.ts
- e2e-checkout.helper.ts
- e2e-inventory.helper.ts
- e2e-order.helper.ts
- e2e-stripe-webhook.helper.ts
- e2e-test-app.helper.ts
- http-error-assertion.helper.ts
- http-status.helper.ts
- logger-test.helper.ts
- poll.helper.ts
- result-assertion.helper.ts
- test-data.helper.ts
- bullmq-job.mock.ts
- cache.mock.ts
- correlation-service.mock.ts
- env-config.service.mock.ts
- idempotency-store.mock.ts
- jwks.service.mock.ts
- jwt-signer.service.mock.ts
- logger.mock.ts
- order-scheduler.mock.ts
- redis-pipeline.mock.ts
- reflector.mock.ts
- typeorm.mocks.ts
- index.ts
- express.ts
- app.module.ts
- main.ts
- error-handling.spec.ts
- hexagonal-architecture.spec.ts
- jest-arch.json
- authentication-lifecycle.e2e-spec.ts
- checkout-idempotency.e2e-spec.ts
- checkout-saga.e2e-spec.ts
- checkout-validation.e2e-spec.ts
- admin-order-lifecycle.e2e-spec.ts
- stripe-webhook-ignored.e2e-spec.ts
- security-idor.e2e-spec.ts
- jest-e2e.json
- index-verification.integration.spec.ts
- integration-test.constants.ts
- integration-test.helper.ts
- inventory-seed.helper.ts
- seed-reference-data.ts
- testcontainers.global-setup.ts
- testcontainers.global-teardown.ts
- testcontainers.setup.ts
- jest-redis-chaos.json
- redis-chaos.constants.ts
- redis-chaos.global-setup.ts
- redis-chaos.global-teardown.ts
- redis-reconnect.chaos.integration.spec.ts
- jest-integration.json
- .actrc
- .dockerignore
- .env.example
- .gitattributes
- .gitignore
- .prettierrc
- .secrets.example
- .windsurfrules
- AGENT.md
- AGENTS.md
- CLAUDE.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- data-source.ts
- docker-compose.prod.yml
- docker-compose.yaml
- docker-entrypoint.sh
- Dockerfile
- eslint.config.mjs
- GEMINI.md
- LICENSE
- nest-cli.json
- package-lock.json
- package.json
- README.md
- SECURITY.md
- tsconfig.arch.json
- tsconfig.build.json
- tsconfig.json
# Installation Guide
git clone https://github.com/raouf-b-dev/ecommerce-store-api
Downloads the entire project code from GitHub to your computer.
cd ecommerce-store-api
Moves into the project folder you just downloaded.
2. Docker
Easy Recommended- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker compose -f docker-compose.prod.yml up -d --build
Runs the command against the services defined in the compose file.
3. Node.js
Easynpm install
Downloads and installs the libraries listed in package.json.
npm run env:init
Type this command into your terminal and run it.
npm run d:up:dev
Type this command into your terminal and run it.
npm run migration:run:dev
Type this command into your terminal and run it.
npm run start:dev
Starts the development/run server.
Pulled directly from this repo's README.
