|
1 | | -# 🛒 E-Commerce Future Implementations Roadmap |
| 1 | +# 🛒 QRShop (.NET Portfolio Project) |
2 | 2 |
|
3 | | -This part of the document describes planned features and business rules for the e-commerce system (built with .NET 9 and Rust as feature flag provider). |
| 3 | +## 📘 Index |
| 4 | +1. [Overview](#overview) |
| 5 | +2. [Tech Stack](#tech-stack) |
| 6 | +3. [Architecture](#architecture) |
| 7 | +4. [CI/CD Workflow](#cicd-workflow) |
| 8 | +5. [Running the Demo](#running-the-demo) |
| 9 | +6. [Roadmap](#roadmap) |
| 10 | +7. [License](#license) |
| 11 | + |
| 12 | +--- |
| 13 | + |
| 14 | +## 🧩 Overview |
| 15 | + |
| 16 | +**QRShop** is an ongoing **.NET portfolio project** designed to explore clean, maintainable, and scalable application design. |
| 17 | +It serves as a sandbox for implementing production-grade concepts such as **Domain Events**, **Vertical Slice Architecture**, and **asynchronous messaging** with **RabbitMQ** (future implementation). |
| 18 | + |
| 19 | +To visualize and interact with this backend, a corresponding frontend has been implemented using Next.js: [nextjs-qrshop](https://github.com/dLopes-SE/nextjs-qrshop). |
| 20 | +Additionally, a **demo version** of the project is available, as described in the **Demo** section below. |
| 21 | + |
| 22 | +The project is still **in active development**, with multiple open issues reflecting ongoing improvements and planned features. |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +## ⚙️ Tech Stack |
| 27 | + |
| 28 | +- **.NET 8 / C#** |
| 29 | +- **Entity Framework Core** — ORM and migrations |
| 30 | +- **PostgreSQL** — primary database |
| 31 | +- **Docker & Docker Compose** — containerization and local orchestration |
| 32 | +- **xUnit** — testing framework |
| 33 | +- **GitHub Actions** — CI/CD pipeline |
| 34 | +- **(Planned)** RabbitMQ — message-based communication |
| 35 | +- **(Planned)** Redis — distributed caching |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## 🏗️ Architecture |
| 40 | + |
| 41 | +QRShop follows a **Vertical Slice Architecture** (feature-based design), focusing on organizing code by behavior rather than technical layers. |
| 42 | + |
| 43 | +### Folder Overview: |
| 44 | +- **`Features/`** – Core business use cases, each encapsulating commands, queries, and handlers |
| 45 | +- **`Domains/`** – Domain models and business logic |
| 46 | +- **`Infrastructure/`** – Database, external services, and persistence setup |
| 47 | +- **`Common/`** and **`Abstractions/`** – Shared utilities, base classes, and abstractions |
| 48 | +- **`Services/`** – Supporting application services and cross-cutting concerns |
| 49 | + |
| 50 | +### In Progress: |
| 51 | +- **Domain Events** – to decouple domain logic and react to business changes |
| 52 | +- **Output Pattern** – standardizing responses and error handling |
| 53 | + |
| 54 | +This approach enhances modularity and testability while keeping the system extensible. |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## 🚀 CI/CD Workflow |
| 59 | + |
| 60 | +A **GitHub Actions** workflow automatically builds, tests, and publishes a **public Docker image** for QRShop. |
| 61 | +This enables fast demo setup and continuous delivery of new versions. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## 💻 Running the Demo |
| 66 | + |
| 67 | +You can quickly spin up a demo instance of QRShop using the provided scripts — no manual setup required. |
| 68 | + |
| 69 | +**Windows:** |
| 70 | +```powershell |
| 71 | +powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dlopes-se/dotnet-qrshop/main/scripts/run-qrshop.ps1 | iex" |
| 72 | +``` |
| 73 | + |
| 74 | +**macOS / Linux:** |
| 75 | +``` |
| 76 | +bash <(curl -fsSL https://raw.githubusercontent.com/dlopes-se/dotnet-qrshop/main/scripts/run-qrshop.sh) |
| 77 | +``` |
| 78 | + |
| 79 | +These scripts automatically download and run the latest Docker image published by the CI/CD pipeline. |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## 🗺️ Roadmap |
| 84 | + |
| 85 | +- [ ] Integrate RabbitMQ for event-driven workflows |
| 86 | +- [ ] Add Redis caching layer |
| 87 | +- [ ] Implement Domain Events pattern |
| 88 | +- [ ] Finalize Output Pattern |
| 89 | +- [ ] Expand test coverage (unit + integration) |
| 90 | +- [ ] Extend CI/CD workflow (linting, static analysis) |
| 91 | + |
| 92 | +--- |
| 93 | + |
| 94 | +## 🛒 Future Implementations Ideas |
| 95 | + |
| 96 | +This part of the document describes some ideas for features and business rules for the e-commerce system (built with .NET 9 and (e.g.) Rust as feature flag provider). |
4 | 97 |
|
5 | 98 | --- |
6 | 99 |
|
@@ -33,3 +126,4 @@ This part of the document describes planned features and business rules for the |
33 | 126 | - Role-based or user-segment targeting. |
34 | 127 | - Percentage rollouts (canary releases). |
35 | 128 | - Audit log of feature flag changes. |
| 129 | + |
0 commit comments