An e-commerce application applying micro-services architecture.
Name |
Framework |
Database |
Catalog Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Basket Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![Redis](https://camo.githubusercontent.com/cd7c747a20108fb05e6394c8740e99c6a472222f35d5a41ade053b03eceb871f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656469732d2532334444303033312e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d7265646973266c6f676f436f6c6f723d7768697465) |
Payment Service |
![Django](https://camo.githubusercontent.com/13b219a55add1b06da0738bf43724acbd63e642faf01035506f20554f068fe0e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646a616e676f2d2532333039324532302e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d646a616e676f266c6f676f436f6c6f723d7768697465) |
![Postgres](https://camo.githubusercontent.com/544022edf8369d944e68802fc043b0268484709e334d23db2882590aeae296cb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f7374677265732d2532333331363139322e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d706f737467726573716c266c6f676f436f6c6f723d7768697465) |
Notification Service |
![.Net](https://camo.githubusercontent.com/f4c52b575a890c7e67c6541271fc5733506088d19c77ffde6bab3e18e7948536/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d3543324439313f7374796c653d666f722d7468652d6261646765266c6f676f3d2e6e6574266c6f676f436f6c6f723d7768697465) |
![MongoDB](https://camo.githubusercontent.com/ec9b2bbaccf6915a29050ce24c10cd9b481b0c41b0bf5194add3e69f49a9be3c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6e676f44422d2532333465613934622e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465) |
Vendor Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Discount Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Coupon Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Ordering Service |
![.Net](https://camo.githubusercontent.com/f4c52b575a890c7e67c6541271fc5733506088d19c77ffde6bab3e18e7948536/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d3543324439313f7374796c653d666f722d7468652d6261646765266c6f676f3d2e6e6574266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Review Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Storage Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Currency Service |
![NestJS](https://camo.githubusercontent.com/561d34da2351639a44526c8c50af0a647650b3a6b96f387e55e93555d44aeaad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6573746a732d2532334530323334452e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6573746a73266c6f676f436f6c6f723d7768697465) |
![MicrosoftSQLServer](https://camo.githubusercontent.com/8542eeba4fcb8eb585af0d38fcde6d271f30897e02338d69b1071d5c46069c63/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6963726f736f667425323053514c25323053657665722d4343323932373f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6963726f736f667425323073716c253230736572766572266c6f676f436f6c6f723d7768697465) |
Name |
Technology |
Customer web client |
![Ant-Design](https://camo.githubusercontent.com/da76fac7e908e0b025b99413c1270537b9af35c6dfec4aa8c7cb3307c13a5581/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2d416e7444657369676e2d2532333031373046453f7374796c653d666f722d7468652d6261646765266c6f676f3d616e742d64657369676e266c6f676f436f6c6f723d7768697465) |
Vendor web client |
![MUI](https://camo.githubusercontent.com/cbc28d3c7a695ebaa6128e9f8f6e8411e3c854373701da21134f4410c888ae2a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d55492d2532333030383143422e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6174657269616c2d7569266c6f676f436f6c6f723d7768697465) |
Adminstrator web client |
![TailwindCSS](https://camo.githubusercontent.com/b2eac0f505dfd05c25acf8c285b5eb346916090126c8836c6cbf9aeb754eac32/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7461696c77696e646373732d2532333338423241432e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465) |
Name |
Technology |
Containers managing |
![Docker](https://camo.githubusercontent.com/ab945c282029462b8f24ba4a97ee20f2b70e13a2d3720ab2babc73bbc492049f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f636b65722d3243413545303f7374796c653d666f722d7468652d6261646765266c6f676f3d646f636b6572266c6f676f436f6c6f723d7768697465) |
API Gateway |
Kong Gateway |
Async Communication (M2M) |
![RabbitMQ](https://camo.githubusercontent.com/8dfe4d4f9dd11115d462ec469d376c8dd64143093e1f8880d96430a50f9375c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7261626269746d712d2532334646363630302e7376673f267374796c653d666f722d7468652d6261646765266c6f676f3d7261626269746d71266c6f676f436f6c6f723d7768697465) |
Sync Communication (M2M) |
gRPC |
Identity Provider |
Auth0 |
Payment |
![Stripe](https://camo.githubusercontent.com/adfb33179d32cc98381c06c3ded287c1c3772c3941a33cb9e6332406306c8454/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374726970652d3632364344393f7374796c653d666f722d7468652d6261646765266c6f676f3d537472697065266c6f676f436f6c6f723d7768697465) |
CI/CD Pipeline |
![GitLab](https://camo.githubusercontent.com/0bb8ea52a0190d91bf72bab054dd33cbadd8392395d4ae862805a71918809217/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6769746c61622d2532333138313731372e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6769746c6162266c6f676f436f6c6f723d7768697465) |
Storage and Shared Database |
![AWS](https://camo.githubusercontent.com/873c09f11f469258183d6e64e34c12195f5f7f3d311b4c7a1461339a7255ee00/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4157532d2532334646393930302e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d616d617a6f6e2d617773266c6f676f436f6c6f723d7768697465) |
![architecture](./assets/eshop-architecture.png)
- Docker Desktop
- AWS S3 credentials
- Stripe publishable and secret keys
- Currency exchange rate API key
- Auth0 client-id, domain and scope
- Switch to Linux containers on Windows only
![Switch daemon](./assets/switchdaemon.png)
- Unix kernel environment (Windows users can use WSL2)
- Shell terminal
- Open your terminal (Linux Shell for the sake of simplicity)
- Change directory to this repository:
cd eshop
- Export environment variables:
export AWS_REGION=your-aws-credentials
export AWS_ACCESS_KEY_ID=your-aws-credentials
export AWS_SECRET_ACCESS_KEY=your-aws-credentials
export AWS_BUCKET=your-aws-credentials
export STRIPE_PUBLISHABLE_KEY=your-stripe-credentials
export STRIPE_SECRET_KEY=your-stripe-credentials
export EXCHANGE_RATE_API_KEY=your-exchange-api-key
export AUTH0_CLIENT_ID=your-auth0-credentials
export AUTH0_DOMAIN=your-auth0-credentials
export AUTH0_SCOPE=your-auth0-credentials
- This step is just required for the first run, build projects:
docker compose build catalog-service basket-service review-service
docker compose build storage-service vendor-service currency-service
docker compose build discount-service coupon-service
- This step is just required for the first run, initialize databases:
chmod +x ./bootstrap.sh && ./bootstrap.sh
- Start application:
chmod +x ./start.sh && ./start.sh
- Navigate to:
- Customer web client
- Vendor web client
- Administration web client