SKIL2 Chez Natalie

SKIL2 Chez Natalie

PHP Laravel Tailwind SQL UML

Webapp voor Chez Natalie

In het tweede semester hebben we ons onderzoek gewisseld met een andere groep. Dit betekende dat we een website moesten maken voor een klant die we nog niet kenden. Het doel was om het onderzoek van de andere groep te gebruiken om de doelstellingen te begrijpen en dit te gebruiken om een website voor de klant te maken.

SKIL2

Bij Thomas More hebben we een vak dat Skills Integration Lab heet. Dit vak is gericht op het combineren van alle vaardigheden die in de lessen geleerd zijn en deze toe te passen op realistische projecten.

In het tweede jaar van SKIL werken we nog niet voor echte klanten. In plaats daarvan werken we voor fictieve bedrijven die door onze docenten zijn bedacht. Dit wordt gedaan om ons de kans te geven onze vaardigheden te oefenen zonder de druk van het werken voor een echte klant.

Valideren en onderzoek

Omdat dit een nieuwe klant voor ons was, zijn we begonnen met het valideren van het onderzoek van de andere groep. Dit hebben we gedaan door een interview met de klant af te nemen om hun behoeften en verwachtingen te begrijpen en deze te vergelijken met het onderzoek van de andere groep.

Vervolgens zijn we begonnen met het analyseren van het ERD en dit te vergelijken met de behoeften en verwachtingen van de klant.

Het ERD herschrijven

Na het analyseren van het ERD merkten we dat dit niet correct was. We zijn begonnen met het herschrijven van het ERD zodat het overeenkomt met de behoeften en verwachtingen van de klant.

Tech stack

Voor dit project zijn we (verplicht) om Laravel te gebruiken met de TALL-stack. Dit bevat het volgende:

  • TailwindCSS
  • Alpine.js
  • Laravel
  • Livewire

We gebruiken FluxUI als ons UI-framework voor dit project. Het is nauw geïntegreerd met Livewire en Alpine.js.

Databank opzetten

Na het herschrijven van het ERD en het bevestigen hiervan door de klant, zijn we begonnen met het opzetten van de database. Ik heb de taak op me genomen om de database op te zetten en de modellen aan te maken. Ik heb Eloquent ORM (onderdeel van Laravel) gebruikt om de databasetabellen aan te maken.

Wat is er nodig?

Elke tabel heeft een migratie nodig om de database te vertellen hoe de gegevens van de tabel gestructureerd zijn. Vervolgens is er een model nodig om te communiceren met de databasetabel. We kunnen hier aangepaste lookups en functies definiëren om het werken met de gegevens gemakkelijker te maken. Ten slotte hebben we seeders en optioneel factories nodig om de database te vullen met gegevens en testdata te gebruiken in unittests.

Scrum

Voor dit project werken we met de Scrum-methodologie. We hebben het project opgesplitst in meerdere sprints, elk met hun eigen doelen.

We volgen de Scrum-methodologie niet volledig omdat we niet elke dag een daily standup kunnen doen. Dit komt doordat we niet voltijds aan dit project werken.

Jira

We gebruiken Jira om ons project te beheren. We hebben een backlog gemaakt van alle taken die we moeten voltooien en aan het begin van elke sprint evalueren we onze backlog en kiezen we welke taken we deze sprint willen voltooien. Elke taak krijgt een story point-waarde om de moeilijkheidsgraad van de taak in te schatten. Hiervoor gebruiken we Fibonacci-getallen (1, 2, 3, 5, 8, 13, 21, …).

Sprint 1

Normaal was het gepland om de database en componenten voor het project op te zetten in deze sprint. Maar we liepen hier al op vooruit. We spraken af om te beginnen aan de “must-have” functionaliteiten voor onze klant.

Beheerdersdashboard

Deze sprint heb ik gewerkt aan het maken van een uitbreidbaar dashboard voor de admin. Dit dashboard dient om een snel overzicht te krijgen van de boekingen en de kamers.

Vanwege de beperkte tijd die we hadden en omdat we voorliepen op de planning, konden we niet alle taken in deze sprint afronden. We kregen echter wel een audit op onze database-setup aan het einde van deze sprint. De score die we ontvingen was perfect. Zoals beschreven door de docent: “Groep 601 heeft een zeer professionele en uitgebreide database-architectuur geleverd. Het project beslaat een complex bereik inclusief kamerboekingen, fietsverhuur, yogalessen en een e-mailsjabloonsysteem. De codekwaliteit is uitstekend, met een sterke naleving van de Laravel 12-standaarden en duidelijke architecturale keuzes.”

Sprint 2

Voor sprint 2 hebben we de taken afgerond die niet af waren in sprint 1. We hebben ook een aantal nieuwe taken opgepakt. We hadden alle “must-have” functies al voltooid, dus we zijn begonnen aan de “should-have” functies.

Beheersysteem voor yogalessen

Deze sprint heb ik gewerkt aan het opzetten van de inloglogica voor yogadocenten en hen een manier gegeven om hun lessen te beheren. Het lesbeheersysteem is een uitgebreid systeem waarmee yogadocenten lessen kunnen aanmaken, bijwerken en verwijderen. Het bevat functies zoals het automatisch controleren of de kamer beschikbaar is en het afhandelen hiervan voor geannuleerde lessen.

Reviewpagina voor klanten

Ik heb ook gewerkt aan de pagina voor klanten om een review te schrijven. Hier kunnen ze een review schrijven door een beoordeling, een titel en een bericht op te geven. Zodra ze een review hebben gemaakt, kunnen ze die review bewerken of verwijderen. Een klant kan slechts één review plaatsen.

Dashboard uitbreiden

Ik heb ook gewerkt aan het uitbreiden van het beheerdersdashboard met de nieuwe kalender.

Sprint 3

Tijdens sprint 3 heb ik voornamelijk gewerkt aan de kernfunctionaliteiten van de backend en QoL-functies (Quality of Life) voor de klant.

Dashboard voor yogadocenten

De yogadocent heeft nu een dashboard met alle nodige informatie om snel een overzicht te krijgen van hun komende lessen en de planning voor vandaag.

Beheer van e-mailsjablonen

Ik heb een geavanceerd beheersysteem voor e-mailsjablonen geïmplementeerd voor de beheerder. Hiermee kan de beheerder e-mailsjablonen maken en beheren die worden gebruikt om e-mails naar klanten te sturen. Deze sjablonen worden voor verschillende doeleinden gebruikt, zoals het verzenden van boekingsbevestigingen, herinneringen en andere meldingen.

De beheerder kan kiezen uit verschillende variabelen om in het e-mailsjabloon te plaatsen. Deze variabelen worden vervolgens vervangen door de werkelijke waarden wanneer de e-mail wordt verzonden.

De variabelen zijn afhankelijk van het type e-mailsjabloon. Een sjabloon voor een boekingsbevestiging heeft bijvoorbeeld andere variabelen dan een sjabloon voor het annuleren van een yogales.

Deze types zijn afhankelijk van voor welk evenement de e-mail moet worden verzonden.

Zoals je kunt zien, kunnen we bij het selecteren van de yoga-annulering om de e-mail te triggeren, het kamernummer niet invullen. Dit voorkomt dat de beheerder e-mailsjablonen maakt met variabelen die niet kunnen worden ingevuld. De beheerder kan ook kiezen wanneer de e-mail moet worden verzonden, bijvoorbeeld direct wanneer het evenement plaatsvindt of een paar dagen vertraagd.

Op deze manier houden we het hele e-mailsysteem flexibel voor wijzigingen.

Mail Backend

We kunnen e-mailsjablonen maken, maar nu moeten ze ook worden verzonden. Ik heb een systeem geïmplementeerd dat de e-mails op het juiste moment verzendt.

Dit gebeurt via een wachtrijsysteem (queue system).

Om je de technische details te besparen, zal ik het systeem kort introduceren.

Het systeem is afhankelijk van 3 cruciale onderdelen:

  • Het ophalen van de juiste modellen voor onze variabelen
  • Het verzenden van de e-mail op het juiste moment (direct of vertraagd)
  • Het onthouden van e-mails, zelfs wanneer de server opnieuw opstart

Deze systemen zorgen er samen voor dat de juiste e-mail op het juiste moment naar de juiste persoon wordt verzonden.

Foutpagina’s

Ik heb ook gewerkt aan het aanbieden van gestylede foutpagina’s. Ik heb ook een aangepaste 404-pagina geïmplementeerd. Andere fouten delen hetzelfde sjabloon, maar met verschillende foutmeldingen.

Image not found: /src/lib/assets/projects/skil2-chez-natalie/error-404.png

Sprint 4

Kom later terug voor sprint 4!

ennl