🕸️
[BA] Web Programming
  • Introductie
  • Cursus
    • TypeScript
      • Waarom TypeScript?
      • Nieuw project
      • Wat is een tsconfig.json?
      • Input lezen
      • Type Systeem
        • Basic types
        • Arrays
        • Functions
        • Class
        • Interface
        • Datum
      • Conditionele blok
      • Loops
      • Array methods
      • Exceptions
      • Modules
      • Asynchroon Programmeren
        • Promises
        • Async/Await
        • Fetch
        • JSON
    • Frontend
      • DOM Manipulatie
      • VITE
      • Deployment met Surge
    • Backend
      • Express.js
        • Basis
        • Nodemon
        • Statische Bestanden
        • Request
        • Response
        • Router
      • MySQL
    • Fullstack
      • Van Form tot Database
      • CORS
  • Labos
    • 1. TS: Basis
      • Hello Name
      • BMI Calculator
      • Interest Calculator
      • Uren en Minuten
      • Wisselgeld
      • Name from Email
      • Text Box
    • 2. TS: Arrays & functions
      • Som van getallen
      • Math Fun
      • Array Sum
      • Puntenboek
      • Rot13
      • Pokemon Team
      • Todo List String
      • Tick Tac Toe
      • BMI Calculator Multi
    • 3. TS: Interfaces & classes
      • Recepten
      • Transportmiddelen
      • Movies
      • Filter Numbers
    • 4. TS: Async & fetch
      • Promise All
      • Slow Sum
      • Cocktails Promise All
      • Joke API
      • School API
      • Cocktails API
      • Unix Timestamp API
    • 5. TS: Modules & NPM
      • Math Module
      • Cowsay Module
      • Cat GPT
      • Rainbow Chalk
    • 6. Frontend: VITE & DOM
      • Verander achtergrond
      • Verander tekst
      • Verander divs
      • Verander kleuren
      • Verander kleuren random
    • 7. Frontend: APIs & DOM
      • Cocktail API met Vite
      • Weather API
      • Uitvinders
      • Rick and Morty
    • 8. Backend: Express & Requests
      • Hello Express
      • DadJoke Express
      • Reiskosten server
    • 9. Backend: MySQL & Routing
      • Reiskosten server
      • Taken server
      • Taken server met prioriteit
    • 10. Fullstack: Forms & Express & MySQL
      • Reiskosten app
      • Taken app
      • Pokémon app
    • 11. Fullstack extra & datums
      • Pokémon array
      • Full-Stack: Pokémon app (bis)
      • Full-Stack: Pizza Builder
Powered by GitBook

AP

On this page
  • Doel van de oefening
  • Functionaliteiten
  • 1. Front-end (Vite + TypeScript)
  • 2. Back-end (Express + MySQL)
  • Stappenplan
  • 1. Voorbereiding
  • 2. Front-end implementatie
  • 3. Back-end implementatie
  • Bonusuitdagingen
  1. Labos
  2. 11. Fullstack extra & datums

Full-Stack: Pokémon app (bis)

PreviousPokémon arrayNextFull-Stack: Pizza Builder

Last updated 22 days ago

Doel van de oefening

Je gaat een webapplicatie bouwen in twee delen:

  1. Pokedex-overzicht

    • Haalt gegevens op van en toont een lijst van Pokémon.

    • Gebruikt je eigen Express-backend om te tonen welke Pokémon je gevangen hebt.

      • Pokémon die nog niet gevangen zijn krijgen een knop waarmee je de Pokémon kunt "vangen" (dus toevoegen aan je database met gevangen Pokémon).

      • Pokémon die al wel gevangen zijn krijgen een knop waarmee je de Pokémon kunt "vrijlaten" (dus verwijderen uit je database met gevangen Pokémon).

  2. Jouw Pokémon Party – Synchroniseert met je eigen Express-backend (en MySQL-database)

    • Haalt op welke Pokémon momenteel in je party zitten (max 6)

      • Pokémon die al gevangen zijn, maar nog niet in je party zitten krijgen een knop waarmee je de Pokémon kunt toevoegen aan je party.

      • Pokémon die al gevangen zijn, en al wel in je party zitten, krijgen een knop waarmee je de Pokémon kunt verwijderen uit je party.

Functionaliteiten

1. Front-end (Vite + TypeScript)

  • Haal de eerste 151 Pokémon op via https://pokeapi.co/api/v2/pokemon?limit=151

  • Voor elke Pokémon in de lijst:

    • Toon naam en afbeelding (sprites uit https://pokeapi.co/api/v2/pokemon/{id})

    • Duid aan of deze Pokémon al gevangen is

    • Voeg een knop toe: “Vang” of “Laat los” (afhankelijk van vangstatus)

  • Toon je party met max. 6 Pokémon bovenaan de pagina:

    • De party bevat enkel gevangen Pokémon

    • Voeg knop toe om Pokémon aan/uit je party te zetten

2. Back-end (Express + MySQL)

Je maakt endpoints aan om de vangstatus en party bij te houden:

Endpoints

  • GET /pokedex: Geef een lijst van gevangen Pokémon (ids)

  • POST /pokedex: Vang een Pokémon (body: { id: number })

  • DELETE /pokedex: Laat een Pokémon los en verwijdert deze ook uit de party als die erin zit (body: { id: number })

  • GET /party: Geef de party terug (lijst van max 6 Pokémon ids)

  • POST /party: Voeg een Pokémon toe aan de party (body: { id: number })

  • DELETE /party: Verwijder een Pokémon uit de party (body: { id: number })

Stappenplan

1. Voorbereiding

  • Zet je Frontend-project op met Vite

  • Zet je backend project op met Express

  • Configureer een lokale MySQL-database

Database SQL init
CREATE TABLE caught_pokemon (
  id INT PRIMARY KEY
);

CREATE TABLE party (
  id INT PRIMARY KEY,
  FOREIGN KEY (id) REFERENCES caught_pokemon(id)
);

Let op: Dit zorgt ervoor dat je enkel een Pokémon aan je party kunt toevoegen als deze ook in de caught_pokemon-tabel staat.

2. Front-end implementatie

  • Maak een module pokedex.ts om de data voor je pokédex op te vragen

  • Maak een module pokemonparty.ts om de data voor je Pokémon party op te vragen

  • Bouw componenten voor:

    • Pokedex lijst

    • Party overzicht

3. Back-end implementatie

  • Schrijf de nodige Express-routes

  • Verbind je server met MySQL en implementeer de CRUD-logica

  • Zorg ervoor dat alle routes JSON teruggeven


Bonusuitdagingen

  • Voeg een zoekfunctie toe aan de Pokédex

  • Voeg loading-states toe

  • Toon een toast-notificatie bij het vangen of verwijderen van een Pokémon

https://pokeapi.co