Factuur beheer
Back to projects

Factuur beheer

Een api met frontend voor het beheren van facturen Inlog gegevens zijn: EMAIL: admin@example.com PASSWORD: admin123

School Project
September 14, 2025
January 4, 2026

Technologies Used

Projectoverzicht

Deze applicatie is een full-stack facturatiesysteem waarmee gebruikers facturen kunnen aanmaken en beheren. Het project is ontwikkeld met een sterke focus op security, testbaarheid, onderhoudbaarheid en professionele software-ontwikkelstandaarden.

Functionaliteit

Facturatie

Gebruikers kunnen facturen aanmaken op basis van klanten, producten of diensten, aantallen en prijzen. De backend valideert alle invoer en berekent automatisch het totaalbedrag op basis van de productregels (aantal × eenheidsprijs). Facturen kunnen worden opgeslagen als offerte (QUOTE) of definitieve factuur (INVOICE) en bevatten een betaalstatus om bij te houden of een factuur is voldaan.

Klantenbeheer

Klanten kunnen worden aangemaakt, aangepast en gearchiveerd. Door klanten centraal te beheren wordt duplicatie van gegevens voorkomen en kunnen facturen sneller en consistenter worden opgesteld. Elke klant bevat contactgegevens, adresinformatie en optioneel een BTW-nummer dat wordt gevalideerd op basis van het land.

Producten en diensten

Veelgebruikte producten en diensten worden opgeslagen met vaste prijzen en omschrijvingen. Dit zorgt voor consistente facturen en vereenvoudigt het facturatieproces. Bij het toevoegen aan een factuur kunnen aantallen en prijzen per factuur worden aangepast, terwijl de basisproductinformatie behouden blijft.

Bedrijfsprofielen

Het systeem ondersteunt meerdere bedrijfsprofielen, waardoor facturen kunnen worden gegenereerd voor verschillende bedrijven of vestigingen. Elk profiel bevat bedrijfsgegevens, contactinformatie en een BTW-nummer en kan worden gekoppeld aan specifieke facturen.

Authenticatie en autorisatie

De applicatie maakt gebruik van JWT-gebaseerde authenticatie. Alleen ingelogde gebruikers hebben toegang tot facturen en klantgegevens. Autorisatie wordt centraal afgedwongen in de backend met role-based access control (OWNER en ADMIN). Wachtwoorden worden veilig opgeslagen met BCrypt hashing.

Onderzoek Security

Ik heb onderzoek gedaan aan de hand van het DOT-framework. het onderzoek was gericht op de veiligheid van mijn applicatie, voordat ik authentication en authorizatie toegepast heb. dus het was gericht op of er aanvallen gedaan konden worden etc en op de kwaliteit van de code. Om dit onderzoek vast te leggen heb ik MKDocs gebruikt. dit genereert een site op basis van markdown bestanden. Hier kun je het onderzoek vinden.

Security en betrouwbaarheid

Security is vanaf het begin meegenomen in het ontwerp. Er is rate limiting geïmplementeerd om brute-force aanvallen op de login-endpoint te beperken en security headers worden toegepast ter bescherming tegen XSS en clickjacking. Alle maatregelen zijn gebaseerd op de OWASP Top 10 (2025).

Daarnaast worden automatische security scans uitgevoerd met OWASP ZAP in de CI/CD-pipeline en wordt de code geanalyseerd met SonarCloud voor code quality en security vulnerabilities. Inputvalidatie wordt toegepast op alle endpoints om injection-aanvallen te voorkomen.

Testing en kwaliteit

De backend is getest met unit tests en integration tests en heeft meer dan 80% code coverage voor de logic, gemeten met JaCoCo. Voor database-afhankelijke tests wordt Testcontainers gebruikt, zodat tests draaien tegen een PostgreSQL-omgeving die overeenkomt met productie.

Voor de frontend zijn end-to-end tests opgezet met Playwright om complete gebruikersflows te valideren, zoals het aanmaken van facturen en het beheren van klanten. Daarnaast worden UI-componenten getest met unit tests.

CI/CD en deployment

De applicatie beschikt over volledig geautomatiseerde CI/CD-pipelines via GitLab. Bij elke commit worden builds, tests en security scans uitgevoerd. De frontend wordt automatisch gedeployed naar Vercel en de backend naar Render, beide via Docker containers. Documentatie wordt automatisch gebouwd en gedeployed naar GitLab Pages.

De pipelines ondersteunen zowel Docker-in-Docker (voor GitLab shared runners) als Docker socket sharing (voor lokale runners), wat flexibele deployment mogelijk maakt. (hier gaat alleen de pipeline fout door de authenticatie die later toegevoegd is)

Database en versiebeheer

Database-schema’s worden beheerd met Liquibase. Hierdoor zijn database-wijzigingen versieerbaar, reproduceerbaar en eenvoudig toe te passen in verschillende omgevingen. Elke migratie is gedocumenteerd en kan indien nodig worden teruggedraaid.

De applicatie gebruikt PostgreSQL als productiedatabase en H2 voor snelle unit tests. Integration tests draaien tegen PostgreSQL via Testcontainers voor maximale overeenstemming met productie.

API-documentatie

De backend exposeert een REST API die is gedocumenteerd met OpenAPI/Swagger. De documentatie wordt automatisch gegenereerd vanuit de code en maakt het eenvoudig om de API te gebruiken en te testen. Swagger UI biedt een interactieve interface waarin endpoints getest kunnen worden met JWT-authenticatie.

Architectuur en ontwerpkeuzes

De applicatie is opgezet volgens het clean architecture-principe, met een duidelijke scheiding tussen presentatie, business logic en data-lagen. Deze structuur maakt de code beter testbaar, onderhoudbaar en schaalbaar.

De backend volgt een gelaagde architectuur met controllers voor HTTP-afhandeling, services voor business logic, repositories voor data-access en mappers voor entity-DTO-conversies. De frontend gebruikt het composables-pattern voor herbruikbare logica en middleware voor route-bescherming.

Technologie stack

Backend

  • Spring Boot 3.5.6 (Java 21)
  • PostgreSQL
  • Spring Security met JWT-authenticatie
  • Liquibase voor database-migraties
  • Docker voor containerisatie

Frontend

  • Nuxt 4 met Vue 3 en TypeScript
  • Tailwind CSS
  • shadcn-vue component library
  • Playwright voor end-to-end testing

DevOps & tools

  • GitLab CI/CD
  • SonarCloud
  • OWASP ZAP
  • JaCoCo
  • Testcontainers

Project Gallery

Swagger logo

Swagger logo

overzicht van dashboard

overzicht van dashboard

overzicht factuur pagina

overzicht factuur pagina

#Solo #Swagger #CI/CD #Sonarqube #C4 model #security