A system to manage game's borrowing (like a library with that borrow books, but for games)
First start the PostgreSQL DB, if you dont have one you can use from from docker with docker-compose -f docker/docker-compose.yml up jogoteca_db
Now you can open the project on VS Code and press F5 (the repository already contains configuration to run)
OR
run both the project and Postgres DB with docker from the project root directory: docker-compose -f docker/docker-compose.yml up
OR you can run from command line with: dotnet
Some of this project documentation will be keeped on Google Drive for faster updates, you can access it throw this link: Documentation
For this project, a architecture with layers was chosen for better responsabilities separation. Naming the Layers from most external to more internal we have:
- Views Layer: are the pages that a client can interact with.
- Controllers Layer: Make the comunication between all pages (front-end) and the server-size (back-end)
- Services Layer: Responsable for keeping all business rules at one layer, increasing organization and reusability.
- Repository Layer: Responsable for all data quering and changings from DB, making easier to change the DB access technology and keeping the project organized.
- Model Layer: This layer has all systems modeling in terms of data, this been entities, view models, DTOs, and exceptions.
Note: From the Services layer on, we can move all code for a separeted project, generating a dll that can be reused. Since we have all business rules implemented, change from WEB to WEB API or create a second WEB API project would be trivial.
- DotNet Core 3.1 (Framework Web)
- Entity Famework 3.1 (ORM)
- Identity (Managing users and authentication)
- Dependency Injection
- Entity Framework Migrations
- Global exception handling with exception architecture
- DotNet Filters
- C# Extensions
- HTML / CSS / Javascript
- Razor Views
- Bootstrap
- Ajax (on the feature that mark a game as received)
- CdnJS (to all libraries bellow):
- FontAwesome
- SweetAlert2 (on the feature that mark a game as received)
- Axios (on the feature that mark a game as received)
- gitignore.io (to generate gitignore)
- Database PostgreSQL
- Docker & Docker Compose
- Nuget
- Unit Test
- Continuous integration, using GitHub Actions (short time to make CD, but i can)
First a docker to keep PostgreSQL up while developing was crated, you can find it at /docker/docker-compose.yml (only the db works for now, the app dont work throw docker yeet)
For project creation: dotnet new mvc -n 'Jogoteca.Web'
For generatin sln: dotnet new sln -n Jogoteca.Web
For external dependencies: dotnet add package
For internal dependencies: dotnet add reference
For migrations: dotnet ef migrations add && dotnet ef migrations update
For Controllers and Views: dotnet aspnet-codegenerator controller -m Model && editing manualy
Frist a conceptual entity relational diagram was made:
Then a logic entity realtional diagram:
And finally the classes.