This project is a scalable e-commerce platform built using a microservices architecture, designed to handle product listings, orders, customer accounts, payments, and more. It leverages robust backend frameworks, modern frontend technologies, and a secure user authentication system.
The application provides a comprehensive platform for users to browse products, add them to their cart, and place orders. It includes distinct microservices for managing customers, orders, products, payments, notifications, and analytics.
The application is structured with the following technologies:
- Backend: Spring Boot for core microservices
- Frontend: Angular
- Microservices Management: Spring Cloud
- User Authentication: Keycloak
- Analytics & Reporting: Django for enhanced data visualization
-
Customer Domain
- Manages customer information and associated addresses.
- Tables:
- Customer:
id
,firstname
,lastname
,email
- Address:
id
,street
,houseNumber
,zipCode
- Customer:
-
Order Domain
- Manages customer orders and the ordered products.
- Tables:
- Order:
id
,orderDate
,reference
- OrderLine:
id
,quantity
- Order:
-
Product Domain
- Manages products and their categories.
- Tables:
- Product:
id
,name
,description
,availableQuantity
,price
- Category:
id
,name
,description
- Product:
-
Payment Domain
- Handles payments related to orders.
- Tables:
- Payment:
id
,reference
,amount
,status
- Payment:
-
Notification Domain
- Sends notifications related to orders and other events.
- Tables:
- Notification:
id
,sender
,recipient
,content
,date
- Notification:
-
Analytics & Reporting Domain
- Tracks sales, customer behavior, and business performance. Admins can view dashboards and reports using Django.
- Why Django:
- Built-in admin interface and powerful data visualization libraries (e.g., Pandas, Matplotlib).
- Compatibility with SQL and NoSQL databases for data extraction.
- Django ORM for easier database interactions.
-
User Domain
- Manages user authentication and roles with Keycloak.
- Tables:
- User:
id
,username
,password
,email
,roles
- Role:
id
,roleName
- Permission:
id
,permissionName
- User:
- Customer - Address: A customer has an associated address.
- Order - Customer: Each order is linked to a customer.
- OrderLine - Product: Each order line is associated with a product.
- Order - Payment: Each order can be linked to a payment.
- Notification - Order: Notifications are sent about orders.
- User - Role/Permission: Each user is associated with roles that determine their permissions.
- User - Customer: A user can also be a customer.
- Manage customers and their addresses.
- Manage products and categories.
- Handle orders and track order items.
- Process payments and track their status.
- Send notifications related to orders.
- User authentication and management with Keycloak.
The application’s analytics are powered by Django, enabling advanced data processing and visualization with tools like Pandas and Matplotlib. This module provides administrators with insights into sales performance and customer behavior through comprehensive dashboards.