add readme

This commit is contained in:
Alvin
2025-10-20 15:09:14 +02:00
parent 3549480696
commit baf28548ed
12 changed files with 272 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# Challenge 01: Bricks
Dit project was de eerste challenge van het eerste jaar. Het project heet "bricks".
Verdere informatie over dit project is niet beschikbaar in de bestanden.

View File

@@ -0,0 +1,17 @@
# Challenge 03: Carsite - Car Meet Showcase
Dit project betreft een dynamische website, genaamd "CarMeet", specifiek ontworpen om autoliefhebbers te verbinden en evenementen te promoten. De website is volledig in het Nederlands en biedt een uitgebreide gebruikerservaring via diverse secties:
## Belangrijkste Functionaliteiten en Pagina's
* **Homepagina ("Rev It Up"):** Een uitnodigende landingspagina met een video-achtergrond. Deze introduceert de "ultieme carmeet-ervaring" en moedigt bezoekers aan deel te nemen aan de gemeenschap van "de wildste autoliefhebbers van Nederland".
* **Galerij:** Presenteert een visuele compilatie van "de beste ritten die onze recente meet sierden", met diverse auto's.
* **Evenementen:** Biedt actuele informatie over aankomende evenementen en stimuleert actieve deelname.
* **Contact:** Bevat een contactformulier en essentiële contactgegevens (telefoonnummer, e-mail, adres, openingstijden) voor directe communicatie.
* **Over Ons ("Onze Wilde Rit"):** Beschrijft de gemeenschap als een "familie van snelheidsduivels, autoliefhebbers en adrenalinejunkies", waarbij de nadruk ligt op kameraadschap en de gedeelde passie voor auto's.
* **Veelgestelde Vragen (FAQ):** Beantwoordt veelvoorkomende vragen over carmeets, locaties, aanmeldprocedures, toegangsprijzen en de mogelijkheid voor kinderen om deel te nemen.
* **Car Meet Hoogtepunten:** Toont een overzicht van recente evenementen, inclusief data en korte beschrijvingen van memorabele momenten zoals "Dag van epische ritten" en "Beste Ritten van de Dag".
* **Abonnement:** Een speciale sectie waar bezoekers zich kunnen inschrijven voor updates en nieuws over "autogekte".
* **Social Media Integratie:** Directe links naar platforms zoals Twitter, Instagram en TikTok om de autocultuur te volgen en actief deel te nemen.
De website is gebouwd met moderne webtechnologieën, waaronder Bootstrap voor een responsief ontwerp, en bevat interactieve elementen zoals een scrollende galerij en accordions voor de FAQ. Het overkoepelende doel is het creëren van een levendige online hub voor de carmeet-gemeenschap.

View File

@@ -0,0 +1,34 @@
# Challenge 04: SkillSphere - Platform voor Vaardigheidsuitwisseling
Dit project, genaamd "SkillBuddy", is een modern sociaal netwerkplatform. Het is ontworpen om de uitwisseling van vaardigheden tussen studenten Software Development (crebo 25604) te faciliteren. Door de integratie van gamificatie-elementen biedt het platform een boeiende en interactieve leerervaring, geheel in lijn met de standaarden van het kwalificatiekader van SBB Nederland.
## Kernfunctionaliteiten
* **Vaardigheidsuitwisseling:** Verbindt studenten om gezamenlijk softwareontwikkelingsvaardigheden te delen en te verfijnen.
* **Gamificatie:** Stimuleert actieve deelname en prestaties door middel van badges, punten en beloningen.
* **Gebruiksvriendelijke Front-End:** Biedt een schone en intuïtieve gebruikersinterface voor naadloze navigatie.
* **Robuuste Back-End:** Zorgt voor een veilige en schaalbare architectuur aan de serverzijde.
* **Gestructureerde Database:** Maakt gebruik van een goed ontworpen databaseschema voor efficiënt gegevensbeheer.
## Technische Stack (Keuzevrijheid)
Het project biedt flexibiliteit in de keuze van de te gebruiken technologieën, wat teams in staat stelt om te werken met bekende of nieuwe frameworks:
* **Front-End:** React.js, Angular of Vue.js
* **Back-End:** Node.js met Express, Django of Flask
* **Database:** MySQL, PostgreSQL of MongoDB
* **Versiebeheer:** Git
## Projectstructuur
De aanbevolen projectstructuur is modulair opgebouwd, met aparte mappen voor de front-end, back-end en database. Deze mappen bevatten verdere onderverdelingen voor specifieke componenten, modellen, routes, controllers, migraties en seeders, wat bijdraagt aan een overzichtelijke codebase.
## Gamificatie Details
De gamificatie-elementen zijn ontworpen om betrokkenheid te maximaliseren:
* **Prestaties:** Gebruikers kunnen badges ontgrendelen voor het bereiken van specifieke mijlpalen.
* **Leaderboards:** Bieden de mogelijkheid om vaardigheden en bijdragen te vergelijken met medestudenten.
* **Uitdagingen:** Wekelijkse en maandelijkse uitdagingen stimuleren continue betrokkenheid en ontwikkeling.
De `index.html` fungeert als een aantrekkelijke landingspagina voor "SkillBuddy", met duidelijke opties om in te loggen en te registreren, waardoor de toegang tot dit interactieve leerplatform eenvoudig wordt gemaakt.

View File

@@ -0,0 +1,5 @@
# Challenge 05: Netwerk Bouwen
Deze challenge richtte zich op het bouwen van een netwerk. De `documentatie` map bevat diverse JPG-afbeeldingen die waarschijnlijk netwerkdiagrammen, configuraties of fysieke netwerkopstellingen voorstellen. Dit duidt erop dat de opdracht gericht was op het ontwerpen, implementeren of documenteren van een netwerkinfrastructuur.
Hoewel er geen aanvullende tekstuele documentatie beschikbaar is, suggereren de afbeeldingen een praktische benadering van netwerkbeheer of -ontwerp. Mogelijke onderwerpen zijn netwerktopologieën, IP-adressering of de configuratie van netwerkapparatuur.

View File

@@ -0,0 +1,25 @@
# Challenge 07: Schoolkantine Bestelsysteem
Dit project omvat de ontwikkeling van een bestelsysteem voor een schoolkantine, gericht op het efficiënt beheren van producten en bestellingen via een MySQL-database.
## Database Structuur en Inhoud
De kern van het systeem wordt gevormd door de `schoolkantine.sql` database, die twee hoofstabellen bevat:
* **`items` Tabel:** Deze tabel beheert het volledige assortiment van de kantine. Elk item heeft een unieke `id`, een `title` (naam), een `imageSrc` (pad naar de afbeelding), een `price`, een `description` en een `category`. De beschikbare categorieën omvatten een breed scala aan producten, zoals:
* Broodjes
* Koude en Warme Dranken
* Snacks (o.a. frikandellen, bitterballen, friet)
* Desserts (o.a. ijsjes, appelflappen)
* Maaltijddeals
* Soepen en Salades
* Sausjes
* Zuivelproducten (yoghurt, optimel)
* Snoep (diverse Haribo-producten)
* Overige benodigdheden (bestek, bekers)
* **`orders` Tabel:** Deze tabel registreert alle geplaatste bestellingen. Per bestelling worden het `order_number`, de bestelde `items` (opgeslagen als JSON-string), de `total_price` en het `order_time`stip vastgelegd.
## Doel
Het systeem is ontworpen om een efficiënt en gebruiksvriendelijk bestelproces in de schoolkantine te faciliteren. Dit resulteert in een gestroomlijnde workflow, wat zowel studenten als kantinepersoneel ten goede komt.

View File

@@ -0,0 +1,27 @@
# Challenge 08: Pokédex Database Constructie
Dit project richt zich op de geautomatiseerde constructie van een Pokédex-database. Het maakt gebruik van een Node.js-script (`fetch_and_insert.js`) om uitgebreide Pokémon-gegevens op te halen van de officiële PokéAPI en deze te structureren in een lokale MySQL-database.
## Functionaliteit van `fetch_and_insert.js`
Het script automatiseert het proces van data-acquisitie en -opslag, waarbij de volgende stappen worden uitgevoerd:
1. **Gegevensextractie van PokéAPI:** Voor elke Pokémon (van ID 1 tot 1010) worden gedetailleerde gegevens opgehaald. Deze omvatten:
* **Algemene informatie:** `id`, `name`, `height`, `weight`, `base_experience`.
* **Visuele data:** `image_url` (officiële artwork).
* **Soortspecifieke data:** `species_url`, `genus`, `flavor_text`, `growth_rate`, `base_happiness`, `capture_rate`, `gender_rate`.
* **Gevechtsstatistieken:** `hp`, `attack`, `defense`, `sp_attack`, `sp_defense`, `speed`.
* **Eigenschappen:** `types`, `abilities`, `egg_groups`.
2. **Database-integratie:** De opgehaalde gegevens worden opgeslagen in een gestructureerde `pokedex`-database, die de volgende tabellen omvat:
* `pokemon`: Bevat de basisgegevens van elke Pokémon.
* `types`: Definieert de verschillende elementaire typen (bijv. 'fire', 'water', 'grass').
* `abilities`: Lijst van unieke vaardigheden van Pokémon.
* `stats`: Gedetailleerde gevechtsstatistieken per Pokémon.
* `species`: Informatie over de soort, inclusief genus en smaaktekst.
* `egg_groups`: Definieert de eiergroepen voor voortplanting.
* `pokemon_types`, `pokemon_abilities`, `pokemon_egg_groups`: Koppeltabellen voor het beheren van vele-op-vele relaties tussen Pokémon en hun eigenschappen.
## Doel
Dit project demonstreert een robuuste methode voor het programmatisch vullen van een relationele database met externe API-gegevens. Dit is een essentiële vaardigheid voor het bouwen van data-gedreven applicaties, zoals een Pokédex.

View File

@@ -0,0 +1,19 @@
# Challenge 09: Spik & Span Evenementenwebsite
Dit project betreft een website voor "Spik & Span", specifiek gericht op een evenement met een sterke carnavalsassociatie. De website onderscheidt zich door een dynamische video-achtergrond en een heldere navigatiestructuur.
## Belangrijkste Functionaliteiten en Pagina's
* **Homepagina:** De startpagina verwelkomt bezoekers met een video-achtergrond. De video (`yt1z.net - Spik Span - Kampioene van de nach de11devande11de 2023 (720p) (1).mp4`) is een carnavalslied, wat de thematiek van het evenement duidelijk onderstreept.
* **Tickets Bestellen:** Een speciale pagina waar bezoekers tickets kunnen aanschaffen voor het evenement. De ticketopties omvatten:
* Volwassenen: Vrijdag 15 augustus
* Volwassenen: Zaterdag 16 augustus
* Kinderen: Vrijdag 15 augustus
* Kinderen: Zaterdag 16 augustus
* **Contact:** Een pagina voor contactinformatie en eventueel een contactformulier.
* **Over Ons:** Biedt achtergrondinformatie over de organisatie "Spik & Span".
* **Medewerkers:** Een beveiligde inlogpagina (`employee-login.php`) voor medewerkers, wat duidt op intern beheer van het evenement of de organisatie.
## Doel
De website fungeert als een centraal platform voor informatievoorziening en ticketverkoop voor het "Spik & Span"-evenement. De focus ligt op gebruiksgemak en een thematische presentatie die naadloos aansluit bij de carnavalsfeer.

View File

@@ -0,0 +1,10 @@
# Challenge 10: School Street View
Dit project richtte zich op het creëren van een virtuele tour door de school, vergelijkbaar met Google Maps Street View. Het hoofddoel was het realiseren van een interactieve weergave van de schoolomgeving aan de hand van een reeks foto's.
## Functionaliteit
* **Virtuele Tour:** Gebruikers kunnen door de school navigeren door naadloos over te schakelen van de ene foto naar de andere.
* **Interactieve Elementen:** Het project omvatte het slim koppelen van de foto's, wat resulteerde in een vloeiende "loop"-ervaring voor de gebruiker.
De map `Foto's` bevat de afbeeldingen die specifiek voor deze virtuele tour zijn gebruikt. De bestandsnamen (bijv. `PIC_2013_01_01_01_01_27`) suggereren een chronologische of sequentiële ordening, essentieel voor de navigatie binnen de tour.

View File

@@ -0,0 +1,24 @@
# Challenge 11: CRM-module voor Autotuning Website
Dit project richt zich op de uitbreiding van een bestaande website voor een autotuningbedrijf. Het doel is het integreren van een op maat gemaakte Customer Relationship Management (CRM)-module om de klantcommunicatie te verbeteren en alle klantcontacten efficiënt vast te leggen.
## Projectdoelstellingen en Klantvereisten
De opdrachtgever heeft de volgende specifieke wensen geformuleerd voor de nieuwe CRM-functionaliteit:
* **Inlogfunctionaliteit:** Medewerkers moeten veilig kunnen inloggen op de website om toegang te krijgen tot de CRM-module.
* **Klantbeheer:** De mogelijkheid om klanten te zoeken, selecteren en hun profielen te beheren.
* **Gespreksgeschiedenis:** Een gedetailleerd overzicht van alle eerdere contactmomenten met een specifieke klant moet inzichtelijk zijn.
* **Contactmomenten:** Medewerkers moeten nieuwe gespreksnotities kunnen toevoegen en bestaande contactmomenten kunnen wijzigen.
* **Maatwerk:** De module dient volledig zelf gecodeerd te zijn, zonder gebruik te maken van bestaande CMS-systemen zoals WordPress.
## Doelgroep en Esthetiek
De website en de nieuwe CRM-module zijn specifiek gericht op:
* **Doelgroep:** Mannen tussen 18 en 29 jaar met een uitgesproken passie voor auto's en autotuning.
* **Gewenste Uitstraling:** De website moet een "stoere en snelle" esthetiek uitstralen, passend bij de interesses van de doelgroep.
## Achtergrond
De behoefteanalyse en vragenlijst (`ingevulde_behoefte_analyse.md`, `Vragenlijst_antwoorden.md`) benadrukken de noodzaak van een betere vastlegging van klantinteracties. Dit is cruciaal voor het optimaliseren van de service en het stroomlijnen van bedrijfsprocessen. Dit project draagt bij aan effectievere communicatie en een verbeterd klantrelatiebeheer voor het autotuningbedrijf.

View File

@@ -0,0 +1,18 @@
# Challenge 13: Messy Coder Verbeterd - Code Refactoring en Kwaliteitsverbetering
Dit project, getiteld "Messy-coder-Verbeterd", had als hoofddoel het refactoren en significant verbeteren van een bestaande codebase. Deze codebase, oorspronkelijk voor een portfolio website van "Lorenzo von Matterhorn", werd gekenmerkt als "rommelig".
## Projectdoelstellingen
De kern van deze challenge was het transformeren van een minder optimale codebasis naar een schone, efficiënte en onderhoudbare applicatie. Dit omvatte de volgende typische aspecten van codeverbetering:
* **Code Opschoning:** Het verwijderen van overbodige code, commentaar en duplicaties om de codebase te stroomlijnen.
* **Structuurverbetering:** Het reorganiseren van bestanden, mappen en componenten voor een logischere en intuïtievere architectuur.
* **Leesbaarheid:** Het toepassen van consistente naamgevingsconventies en codeerstijlen om de leesbaarheid en begrijpelijkheid te verhogen.
* **Prestatieoptimalisatie:** Het identificeren en oplossen van knelpunten die de snelheid of efficiëntie van de website beïnvloeden.
* **Onderhoudbaarheid:** Het vereenvoudigen van complexe logica en het implementeren van best practices om toekomstig onderhoud en uitbreiding te vergemakkelijken.
* **Foutafhandeling:** Het verbeteren van de robuustheid van de applicatie door betere foutdetectie en -afhandeling.
## Achtergrond
De portfolio website diende als een praktische casestudy. Het project bood de gelegenheid om vaardigheden in code-analyse, refactoringtechnieken en kwaliteitsborging te ontwikkelen, en benadrukte het belang van schone code en een goed gestructureerde applicatie voor duurzaam software-ontwikkeling.

View File

@@ -0,0 +1,68 @@
# Challenge 14: Magazijn App Plannen - Gedetailleerd Ontwerp
Dit project omvat de gedetailleerde planning en het conceptuele ontwerp van een magazijn-app. Deze app is specifiek bedoeld voor het beheer van uitleenbare materialen aan studenten en docenten binnen een onderwijsinstelling. Het hoofddoel is het organiseren en stroomlijnen van het uitleenproces, om zo verlies te minimaliseren en het voorraadbeheer te optimaliseren.
## Belangrijkste Functionaliteiten van de App
De app is ontworpen met de volgende kernfunctionaliteiten:
* **Gebruikersbeheer:** Ondersteuning voor verschillende gebruikersrollen (beheerder, medewerker, gebruiker) met bijbehorende rechten.
* **Itembeheer:** Mogelijkheid om materialen toe te voegen, aan te passen en te verwijderen uit de inventaris.
* **Uitleensysteem:** Een intuïtief systeem voor het registreren van het uitlenen en terugbrengen van materialen.
* **Status-tracking:** Realtime inzicht in de status van elk item (uitgeleend, geretourneerd, te laat).
* **Notificaties:** Geautomatiseerde berichten aan gebruikers, bijvoorbeeld ter herinnering aan een naderende retourdatum.
* **Boetesysteem:** Een mechanisme voor het beheren van boetes voor te laat ingeleverde materialen.
## Database Opbouw (Entity-Relationship Diagram - ERD)
De database is conceptueel ontworpen met de volgende entiteiten en hun onderlinge relaties:
### Entiteiten en Attributen
1. **Gebruiker**
* `gebruiker_id` (Primaire Sleutel)
* `gebruikersnaam`
* `wachtwoord`
* `e-mail`
* `rol` (beheerder, medewerker, gebruiker)
* `registratiedatum`
2. **Item**
* `item_id` (Primaire Sleutel)
* `naam`
* `beschrijving`
* `categorie`
* `beschikbaarheid` (boolean)
* `locatie`
3. **Uitleen**
* `uitleen_id` (Primaire Sleutel)
* `gebruiker_id` (Vreemde Sleutel)
* `item_id` (Vreemde Sleutel)
* `uitleendatum`
* `retourdatum`
* `status` (uitgeleend, geretourneerd, te laat)
4. **Notificatie**
* `notificatie_id` (Primaire Sleutel)
* `gebruiker_id` (Vreemde Sleutel)
* `bericht`
* `datum`
* `gelezen` (boolean)
5. **Boete**
* `boete_id` (Primaire Sleutel)
* `uitleen_id` (Vreemde Sleutel)
* `bedrag`
* `betaald` (boolean)
### Relaties
* Een **Gebruiker** kan meerdere **Uitleen**-records hebben (leent meerdere spullen).
* Een **Item** kan in meerdere **Uitleen**-records voorkomen (wordt door meerdere mensen geleend).
* Elke **Uitleen** is gekoppeld aan één **Gebruiker** en één **Item**.
* Een **Gebruiker** kan meerdere **Notificaties** ontvangen.
* Een **Notificatie** is gekoppeld aan één **Gebruiker**.
* Een **Uitleen** kan één **Boete** hebben (indien het item te laat is ingeleverd).
Dit gedetailleerde plan dient als blauwdruk voor de implementatie van de magazijn-app in toekomstige fases.

View File

@@ -0,0 +1,20 @@
# Challenge 15: Magazijn App Maken - Implementatie van het Uitleensysteem
Dit project markeert de implementatiefase van de magazijn-app, waarvan het gedetailleerde plan is opgesteld in Challenge 14. Het hoofddoel is het ontwikkelen van een volledig functionele applicatie voor het efficiënt beheren en uitlenen van materialen binnen een schoolmagazijn.
## Implementatie op Basis van Challenge 14
De ontwikkeling van deze app volgt nauwgezet de specificaties en het ontwerp dat is vastgelegd in `Challenge_14_Magazijn_App_plannen`. Dit omvat de realisatie van de volgende kernfunctionaliteiten:
* **Gebruikersbeheer:** Implementatie van verschillende gebruikersrollen (beheerder, medewerker, gebruiker) met bijbehorende toegangsrechten.
* **Itembeheer:** Functionaliteit voor het toevoegen, aanpassen en verwijderen van materialen uit de inventaris.
* **Uitleensysteem:** Ontwikkeling van de logica voor het registreren van uitleen- en retourprocessen.
* **Status-tracking:** Weergave van de actuele status van elk item (uitgeleend, geretourneerd, te laat).
* **Notificaties:** Integratie van een systeem voor geautomatiseerde herinneringen en meldingen aan gebruikers.
* **Boetesysteem:** Implementatie van de functionaliteit voor het beheren en toekennen van boetes voor te laat ingeleverde materialen.
## Database Integratie
De applicatie zal worden gekoppeld aan een database die is ontworpen volgens het Entity-Relationship Diagram (ERD) uit Challenge 14. Deze database omvat tabellen voor gebruikers, items, uitleningen, notificaties en boetes, wat zorgt voor een robuuste en gestructureerde opslag van alle relevante gegevens.
Dit project brengt het conceptuele ontwerp van de magazijn-app tot leven door het te vertalen naar een werkende applicatie die de processen in het schoolmagazijn aanzienlijk zal verbeteren.