Messageboard
Nu skal vi i gang med at kode frontend og backend til et simpelt messageboard. Vi skal bruge Javalin, Thymeleaf og en database.
- Først udarbejder vi et use-case diagram
- Dernæst beskrives hver use-case som en user story
- På baggrund af det laver vi en simpel domænemodel og et ER-diagram (ERD) over databasen
- Så går vi i gang med at kode. Først oprettes et Java / Maven projekt i IntelliJ (instruktioner)
- Dernæst oprettes en database i Postgres, og der lægges lidt fake data ind i tabellerne
- Når alt dette er på plads begynder vi at implementere de enkelte user stories en ad gangen
Det bruger vi så resten af ugen på. Her er en cirka plan over hvad vi skal nå at gennemgå:
- Use-case diagram
- User stories
- Domænemodel
- ER-diagram
- Projekt setup
- Database setup
- Indsæt fake data i databasen
- Implementer den første user story
Der hører en del teknikker til at udvikle Javalin webapplikationer. Vi skal blandt andet gennem følgende:
- Opsætning af Javalin projekt
- Opsætning af Thymeleaf
- Opsætning af Postgres database og ConnectionPool
- Opsætning af datamappere
- Opsætning af routes
- Opsætning af controllers
- Opsætning af thymeleaf templates. Herunder layout, fragments, billeder, links, forms, knapper og diverse udtryk.
- Variable Expressions:
${}
- Link (URL) Expressions:
@{}
- For-each loop:
th:each
- Conditional statements:
th:if
,th:unless
,th:switch
,th:case
- Variable Expressions:
- Behandling af http requests (GET, POST, PUT, DELETE)
- Behandling af form data
- Brug af sessions
I dag skal vi arbejde videre på messageboardet. Vi skal implementere de user stories vi har lavet. Vi tænker ikke så meget over designet i dag – det gemmer vi lidt. Vi vil gerne have noget funktionalitet op at køre.
Her er vores use-case diagram:
For at kunne implementere disse use-cases skal vi have skaffet os adgang til en database.
Vi skal bruge en tabel til at gemme brugere, en tabel til at gemme posts (beskeder), og en tabel til kommentarer. Senere kan vi evt. udvide med upvotes/downvotes.
#### Opgave 1: Lav en domænemodel over de konceptuelle klasser og deres attributter
#### Opgave 2: Lav et ER-diagram over databasen
#### Opgave 3: Opret databasen i Postgres
Der er hjælp at hente her: DB setup
- #### Opgave 4: Indsæt fake data i tabellerne
Det gør det lettere at komme hurtigt i gang med at vise data i applikationen. Dvs. at man ikke behøver at oprette brugere, posts og kommentarer manuelt, men blot hælder nogle rækker data ind i tabellerne.
- #### Opgave 5: Implementer: Opret en bruger og log ind
Så er der vist rigeligt at tage fat på. Vi tager en ting ad gangen og hjælper hinanden.
Vi begynder med at gøre status på hvor langt vi er nået og kører videre derfra.
#### Opgave 6: Opret post (titel + tekst + evt. billede)
#### Opgave 7: Se liste af posts på forsiden
#### Opgave 8: Se detaljer for en post (inkl. kommentarer)
#### Opgave 9: Tilføj kommentar til en post
#### Opgave 10: Implementer søgefunktionalitet (find posts ud fra søgeord)
#### Opgave 11: Add styling
#### Forbered præsentation af hvor langt du nået til mandag
Her er nogle eksempler på dummy-data, som kan bruges til at teste messageboardet:
- Brugere: “Alice”, “Bob”, “Charlie”
- Posts: “Velkommen til messageboardet!”, “Del jeres bedste Java tips”, “Hjælp! Javalin routes virker ikke”
- Kommentarer: “Prøv at genstarte din database”, “Husk at tilføje
@{}
i dine Thymeleaf links”