FileStructure
📁 Project Structure
This project uses the vertical slicing approach, where each feature or domain area is organized into its own folder. This structure improves modularity, scalability, and team collaboration by encapsulating related functionality together.
The result of the ls command at the root of the repository looks like this:
ApplicationPermissions/ Finance/ obj/ Restaurant/
ApplicationSettings/ Fonts/ pdf.pdf RestaurantSpendings/
appsettings.json hello.pdf Printers/ SeedData/
Auth/ logo.jpeg Products/ ServerSideEvents/
bin/ Makefile Program.cs Shared/
Checkout/ Management/ ProjectSardine.Api.csproj SystemOperations/
Data/ Mediator/ Properties/ uploadimages/
docker-compose.yml meow.pdf PurchaseInvoices/ UsersLog/
docs/ Middlewares/ receipt.pdf
Files/ Migrations/ Reports/
🗂️ Key Directories and Their Purpose
| Directory/File | Description |
|---|---|
| ApplicationPermissions/ | Logic related to the permissions of the application |
| ApplicationSettings/ | Configuration settings for the application |
| Auth/ | Authentication logic (e.g., JWT, login, registration) |
| Checkout/ | Feature-specific code for handling the monitor page |
| Data/ | Database context, |
| Finance/ | Domain logic related to finance. |
| Files/ | File upload/download logic |
| Management/ | Corespoands to the frontend management |
| Mediator/ | Mediator pattern implementations |
| Middlewares/ | Custom middleware components |
| Migrations/ | Database migration scripts (EF Core or other ORM) |
| Printers/ | Feature code related to handling printing |
| Products/ | Product domain: management, listing, etc. |
| PurchaseInvoices/ | Handling of invoices and related purchase logic |
| Reports/ | Report generation and related logic |
| Restaurant/ | Corespoands to the frontend page |
| SeedData/ | Seed data files for development/testing |
| ServerSideEvents/ | Real-time events (e.g., SSE, WebSockets) |
| Shared/ | Shared models, helpers, constants used across features |
| SystemOperations/ | System-level tasks(database backup,restore) |
| UsersLog/ | Logging user activities |
| uploadimages/ | the folder where images uploaded reside |
⚙️ Core Configuration and Metadata
| File | Description |
|---|---|
appsettings.json | Main application configuration (used by ASP.NET Core) |
docker-compose.yml | Docker service orchestration file |
Makefile | Simplifies common tasks (e.g., build, run, test) |
Program.cs | Main entry point of the application (ASP.NET Core startup) |
ProjectSardine.Api.csproj | .NET project file describing dependencies and build configuration |