Ontwikkeling van een enterprise .NET webapplicatie bij Cegeka
Thomas more

Ontwikkeling van een enterprise .NET webapplicatie bij Cegeka

ASP.NET Core + .NET MAUI | Cegeka Milaan

Een complete enterprise applicatie-suite ontwikkeld tijdens mijn stage bij Cegeka in Milaan: een ASP.NET Core webapplicatie met Blazor en een cross-platform .NET MAUI mobiele app. Gebouwd volgens SOLID principles, Clean Architecture en met volledige CI/CD pipeline.

Over dit project

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.

BookCatalog Homepage Statistieken dashboard

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.

Boekenbeheer met admin controls Boekdetails Reviews

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.

Nieuw boek formulier Frontend validatie

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.

Orderbeheer dashboard Order details PDF export

Blazor zoekpagina

Een dynamische zoekpagina gebouwd met Blazor toont live resultaten terwijl je typt, met filters op genre en auteur en sorteermogelijkheden.

Blazor zoekpagina met filters

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.

MAUI homepage MAUI navigatie na login

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.

Boeken overzicht Boekdetail Toegevoegd aan winkelwagen

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.

Winkelwagen Bestelling geplaatst

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.

Boekwinkels op kaart Boekwinkel detail

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.

Ontwikkeling van een enterprise .NET webapplicatie bij Cegeka

Tech Stack

ASP.NET Core C# .NET MAUI Blazor Entity Framework SQL Server SOLID CI/CD REST API

Categorie

Thomas more