Softwareontwikkeling binnen een internationale context
Tijdens mijn stage bij Cegeka in Milaan ontwikkelde ik een volledige enterprise applicatie-suite: een ASP.NET Core webapplicatie gecombineerd met een .NET MAUI mobiele app. Het project — een boekencatalogus met bestel- en beheerfunctionaliteit — diende als showcase voor professionele softwareontwikkeling volgens enterprise-standaarden.
Het resultaat is een complete, productieklare applicatie met gescheiden backend en frontend, beveiligde API's, rolgebaseerde toegang en een cross-platform mobiele app die draait op Android, iOS, Windows en macOS.
De webapplicatie (ASP.NET Core)
De webapplicatie is gebouwd met ASP.NET Core MVC en Blazor-componenten en fungeert als het beheerpaneel en de centrale API.
Homepage met statistieken
De homepage toont een overzichtelijk dashboard met statistieken over de boekencatalogus, een featured books slider en directe navigatie naar het volledige aanbod. Het responsive design past zich automatisch aan op desktop, tablet en mobiel.
Boekenbeheer
De boekenpagina biedt een overzicht van alle boeken met filtering en sortering per genre. Als admin kun je boeken toevoegen, bewerken en verwijderen. Elke boekdetailpagina toont uitgebreide informatie inclusief auteurs, genres, uitgever, reviews en prijzen met belasting.
Formulieren met dubbele validatie
Alle formulieren worden zowel aan de frontend (jQuery Validation) als de backend (Entity Framework) gevalideerd. Bij het aanmaken of bewerken van een boek krijgt de gebruiker real-time feedback.
Orderbeheer (Admin)
Een volledig orderdashboard voor admins met statistieken: totale omzet, aantal orders, totaal aantal items en gemiddelde orderwaarde. Met zoekfunctie op naam, e-mail of order-ID en datumfiltering. Elke order kan in detail bekeken, afgedrukt als PDF of verwijderd worden.
Blazor zoekpagina
Een dynamische zoekpagina gebouwd met Blazor toont live resultaten terwijl je typt, met filters op genre en auteur en sorteermogelijkheden.
De mobiele app (.NET MAUI)
De mobiele applicatie is gebouwd met .NET MAUI en biedt een rijke gebruikerservaring voor het browsen en bestellen van boeken. De app communiceert volledig via de ASP.NET Core REST API.
Meertalige ondersteuning
De app detecteert automatisch de taal van het apparaat en ondersteunt Engels, Nederlands, Italiaans en Spaans. Alle labels, knoppen en berichten passen zich automatisch aan.
Homepage en navigatie
Bij het openen toont de app statistieken over de catalogus. Na het inloggen verschijnen extra tabs: Books, Bookstores, Cart, Contact en Logout.
Boeken browsen en bestellen
Gebruikers kunnen door de catalogus bladeren, zoeken via de Shell search bar, boekdetails bekijken met reviews en prijzen, en items toevoegen aan een winkelwagen met een hoeveelheidselectie.
Winkelwagen en checkout
De winkelwagen toont alle geselecteerde items met prijzen. Items kunnen individueel verwijderd worden. Bij checkout wordt de bestelling automatisch doorgestuurd naar het orderdashboard van de webapplicatie.
Locatiegebaseerde boekwinkelzoeker
Via GPS kunnen gebruikers nabijgelegen boekwinkels vinden op een interactieve kaart. Door op een winkel te tikken verschijnt een popup met informatie en een carousel van foto's.
Architectuur en design patterns
De applicatie is bewust gebouwd volgens enterprise-standaarden met een duidelijke scheiding van verantwoordelijkheden.
SOLID Principles
- Single Responsibility (SRP) — elke klasse heeft één verantwoordelijkheid: controllers, repositories, services en models zijn strikt gescheiden
- Open/Closed (OCP) — het systeem is uitbreidbaar zonder bestaande code te wijzigen
- Liskov Substitution (LSP) — subtypes zijn inwisselbaar met hun basetypes
- Interface Segregation (ISP) — specifieke interfaces per client, geen ongebruikte methodes
- Dependency Inversion (DIP) — alle afhankelijkheden lopen via abstracties dankzij Dependency Injection
Design Patterns
- Generic Repository Pattern — een herbruikbare data-laag die werkt over alle entiteiten, voorkomt codeduplicatie
- MVVM (Model-View-ViewModel) — de MAUI-app scheidt de UI volledig van de businesslogica
- Clean Architecture — gescheiden lagen: Presentatie, Applicatie, Domein en Infrastructuur
- Dependency Injection — via de ingebouwde ASP.NET Core DI-container
- Reflection — voor dynamische property access in de RepositoryFactory en logging
Security en authenticatie
- ASP.NET Core Identity — volledig authenticatiesysteem met registratie (voornaam + achternaam) en login
- Role-based authorization — admins beheren alles; gebruikers browsen en bestellen
- Beveiligde API — alle endpoints vereisen authenticatie, behalve publieke statistieken
- Dubbele validatie — frontend (jQuery) + backend (Entity Framework) op alle formulieren
RESTful API
De API biedt volledige CRUD-endpoints voor boeken, auteurs, genres, uitgevers, reviews, bestellingen, boekwinkels, foto's en gebruikers. Daarnaast geavanceerde zoekendpoints (BookSearch, BookstoreSearch) en logging endpoints voor auditing.
Logging, testing en CI/CD
- Dubbele logging — alle operaties worden gelogd in de database (Entity Framework) én in bestanden
- Unit testing — met in-memory database voor geïsoleerde tests
- CI/CD pipeline — geautomatiseerde build en deployment
- .NET Aspire — het project is geherstructureerd naar een Aspire-opzet met afzonderlijke projecten voor backend en frontend
Meer dan een technisch project
Dit project was meer dan code schrijven. Werken bij Cegeka in Milaan betekende functioneren in een internationale, professionele omgeving waar zelfstandigheid, heldere communicatie en gestructureerd werken even belangrijk waren als de technische realisatie. De volledige broncode en documentatie is beschikbaar op GitHub.