Project Overview
This project, developed by a team of two, is a fully functional
web platform for e-commerce. During development, the primary focus
was on building a reliable, scalable, and easily maintainable
system using modern architectural approaches and DevOps practices.
The platform features a .NET Core backend implementing Clean
Architecture, DDD, and CQRS, and a React frontend with TypeScript
utilizing React Query for efficient API interaction. The entire
deployment process is automated using Docker, Kubernetes, and a
GitHub Actions CI/CD pipeline.
Key Technologies
- Backend: .NET Core (C#), ASP.NET Core
-
Architecture: Clean Architecture, Domain-Driven
Design (DDD), CQRS
- Databases: PostgreSQL, EF Core, Dapper
-
Frontend: React, TypeScript, React Query,
Material UI (MUI), React Router
-
Containerization & Orchestration: Docker,
Kubernetes
- CI/CD: GitHub Actions
- Infrastructure: Debian 12 VM
- Logging: Serilog
Backend Architecture and Implementation
The backend is based on Clean Architecture,
ensuring strict layer isolation (Domain, Application,
Infrastructure, API). This approach guarantees high testability,
loose coupling of components, and simplifies future development
and maintenance.
The system's core is built using
Domain-Driven Design (DDD) principles. A key
feature is the Rich Domain Model, where business
rules and logic are encapsulated directly within domain entities.
Object state management occurs through well-defined methods,
creating an expressive and error-resistant domain model.
To optimize performance and logically separate data flows, the
CQRS (Command Query Responsibility Segregation)
pattern was implemented: State-modifying operations (Commands) are
handled using EF Core, allowing for effective transaction and data
change management. EF Core Migrations are used for database schema
evolution. Data read operations (Queries) are implemented using
Dapper, which ensures high performance by minimizing overhead when
querying PostgreSQL. Special attention during query development
was paid to preventing the N+1 problem and using indexes to speed
up selections.
The API is designed according to RESTful principles and fully
utilizes asynchronous operations (async/await) for non-blocking
request handling. The logging system is built on Serilog,
providing structured log collection for application monitoring and
analysis.
React User Interface
The frontend application is developed with React using TypeScript.
This combination provides strong typing, enhances code
reliability, and improves development productivity.
The central element for managing server state is the
React Query library. It is responsible for
efficient caching and background data updates, implementing
Optimistic UI Updates for key user interactions
(e.g., adding to cart) to provide immediate UI response, and
organizing Infinite Scrolling for dynamic loading of product
lists.
Navigation within the application is handled by React Router. The
visual component library used is Material UI (MUI), enabling the
creation of a modern, consistent, and
responsive user interface that works correctly
across all device types. React Context API is used for managing
local UI state.
Deployment Automation and Infrastructure
The project fully covers the DevOps cycle, ensuring automated and
reliable deployment: The application (backend and frontend) is
packaged into Docker containers, with
docker-compose used for local development setup.
The system is deployed in a Kubernetes cluster
running on a Debian 12 virtual machine, ensuring effective
resource management, scaling, and fault tolerance.
A CI/CD pipeline is configured in GitHub Actions.
Every push to the main branch triggers automatic building, Docker
image creation and publishing, and deployment of the new
application version to Kubernetes.
Conclusion
This E-commerce platform is the result of
collaborative engineering work, integrating
modern backend architecture practices (.NET Core, Clean Arch, DDD,
CQRS), frontend development (React, TypeScript, React Query), and
full automation of DevOps processes (Docker, K8s, CI/CD). The
project demonstrates a
deep understanding and practical application of
complex technological solutions for creating performant and easily
maintainable web applications.