Nu är det dags för att bygga en större applikation med hjälp av de tekniker vi har lärt oss i kursen Webbserverprogrammering. Syftet är att du ska lära dig att använda dina kunskaper för att bygga en webbapplikation med både front-end och back-end. Att ha kunskaper inom back-end-utveckling ger dig stora fördelar i livet om du tex ska bygga applikationer som sparar data och har användare med konton. Skulle du fortsätta med front-end (bara webbdesign) är det också väldigt meriterande att ha viss förståelse för vad som händer back-end. Både när du utvecklar själv men även när du kommunicerar med andra utvecklare.
Du kommer även under arbetets gång få miniföreläsningar om hur du kan göra utvecklingen/koden snyggare, bättre och lättare att hantera. Tex att separera olika funktionalitet eller tips för att testa koden.
- Valfri applikation, tex webbshop, forum, föreningssida med användare, företagssida med olika användare
- Gör gärna en sida som kopplar samman människor eller på något sätt gör världen lite bättre ❤️
- Individuellt projekt
- Forka grundrepo: https://github.com/ntijoh/WSPXXV
- Loggbok på classroom (skrivs varje tillfälle)
- CSS är inget krav men är uppmuntrat
- Halvtidsavstämning v.10-11 (feedback från lärare),
- Inlämning v.14 (Te23C) / 16(TE23B)
- Lämna in en film med ljud på classroom (max 5 min) där visar och förklarar applikationens funktioner
- Standup meetings i början på varje lektion
- Github: Commits under lektion och push i slutet
- Eleven lägger inlägg i utvecklingsdagboken (classroom) i slutet av lektion
- Vissa lektioner kommer läraren att ha en kort genomgång (gg) om lite mer avancerade saker (C/A) som man kan och bör addera till sitt projekt,
| Aspekt | E | C | A |
|---|---|---|---|
| Dokumentation | Tillsammans med läraren dokumenterar du översiktligt din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med viss säkerhet enkel terminologi. | Med läraren som bollplank dokumenterar du utförligt din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med viss säkerhet korrekt terminologi. | Med läraren som bollplank dokumenterar du utförligt och nyanserat din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med säkerhet korrekt terminologi. |
| Arkitektur | Tillsammans med läraren utvecklar du en applikation där koden har en enkel kodstruktur. | Med läraren som bollplank utvecklar du en applikation där koden har en god kodstruktur. | Med läraren som bollplank utvecklar du en applikation där koden följer MVC och följer en given kodstandard. |
| Funktionalitet | Tillsammans med läraren utvecklar du en applikation med enkel funktionalitet. | Med läraren som bollplank utvecklar du en applikation med inloggningssystem och tillfredsställande funktionalitet. | Med läraren som bollplank utvecklar du en applikation med ett inloggningssystem och komplex funktionalitet. |
| Datalagring | Tillsammans med läraren utvecklar du en applikation som använder en enkel lösning för att spara data mellan sidvisningar. | Med läraren som bollplank utvecklar du en applikation som använder en enkel databaslösning för att spara data mellan sidvisningar. | Med läraren som bollplank utvecklar du en applikation som använder en komplex databaslösning för att spara data mellan sidvisningar. |
| Säkerhet | Tillsammans med läraren vidtar du enkla åtgärder för att förhindra att applikationen utnyttjas. | Med läraren som bollplank vidtar du lite mer avancerade åtgärder för att förhindra att applikationen utnyttjas. | Med läraren som bollplank vidtar du avancerade åtgärder för att förhindra att applikationen utnyttjas. |
Gemensamt för samtliga aspekter på E-nivå är en brist på självständighet. Detta innebär att den efterfågade funktionaliteten i aspekterna nedan kan till viss del tagits fram tillsammans med läraren.
Gemensamt för samtliga aspekter på C-nivå är större grad av självständighet än på E-nivå.
Gemensamt för samtliga aspekter på A-nivå är en större grad av självständighet än på E-nivå.
| E | C | A |
|---|---|---|
| Tillsammans med läraren dokumenterar du översiktligt din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med viss säkerhet *enkel* terminologi. | Med läraren som bollplank dokumenterar du utförligt din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med viss säkerhet *korrekt* terminologi. | Med läraren som bollplank dokumenterar du utförligt och nyanserat din applikations funktionalitet, utvecklingsprocess och säkerhet och använder med säkerhet *korrekt* terminologi. |
Eleven har en enkel beskrivning över applikationens funktionalitet (en enkel domänbeskrivning) och ett enkelt er-diagram. Eleven har svårt för begrepp som t.ex route, resurs, vy, entitet. Eleven commitar/pushar sin kod till Github varje vecka. Vid lektionens slut sammanfattar eleven enkelt dagens arbete i text och bild i sitt dokument på classroom.
Eleven har utförlig domänbeskrivning som beskriver olika användares behörigheter, och ett korrekt er-diagram. Eleven har svårt för mer avancerade begrepp som RESTFUL och kardinalitet. Vid lektionens slut sammanfattar eleven dagens arbete i text och bild i sitt dokument på classroom.
Eleven har domänbeskrivning likt C-nivå, och använder obehinrdat de flesta begrepp. Applikationens routes är även dokumenterade enligt tex Yardoc. Vid lektionens slut sammanfattar eleven detaljerat dagens arbete i text och bild i sitt dokument på classroom.
| E | C | A |
|---|---|---|
| Tillsammans med läraren utvecklar du en applikation där koden har en enkel kodstruktur. | Med läraren som bollplank utvecklar du en applikation där koden har en god kodstruktur. | Med läraren som bollplank utvecklar du en applikation där koden följer MVC och följer en given kodstandard. |
Eleven har i stort sett all logik i app.rb,.
Eleven kan upprepa logik som t.ex databasuppkopplingar och valideringar i flera routes snarare än använda before-block.
Elevens vyer/routes följer ingen tydlig namngivning
Eleven har god separation av olika sorters logik.
Eleven har t.ex helper-funktioner för db-uppkoppling, använder before-block och har en någotsånär DRY-kod.
Eleven följer någotsånär REST och har en tydlig namngivning av vyer/routes.
Eleven följer MVC. I controllerns finns ingen SQL-kod istället är funktionaliteten utflyttad till modellfiler.
Eleven följer REST fullt ut.
| E | C | A |
|---|---|---|
| Tillsammans med läraren utvecklar du en applikation med enkel funktionalitet. | Med läraren som bollplank utvecklar du en applikation med inloggningssystem och tillfredsställande funktionalitet. | Med läraren som bollplank utvecklar du en applikation med ett inloggningssystem och komplex funktionalitet. |
Applikationen erbjuder ett enkelt CRUD-gränssnitt (åtminstone Create/Show/Delete) för någon resurs.
Applikationen erbjuder ett enkelt CRUD-gränssnitt för några resurser, varav minst en har en association/relation till en annan resurs.
Appliktionen har ett inloggninssystem, och det finns skillnad på vad man kan göra beroende på om man är inloggad eller ej.
Applikationen erbjuder ett CRUD-gränssnit för flera resurser, där flera har associationer/relationer till varandra. Vid uppdatering och borttagning av relaterade resurser förändras även kopplade resurser där så är nödvändigt (t.ex genom ON DELETE CASCADE-liknande funktinalitet).
Inloggningssystemet skiljer på vad oinloggade och inloggade användare kan göra, och implementerar ett enkelt behörighetssystem (t.ex guest-user, standard-user, admin).
Eleven använder automatiserade tester (cypress) för att testa någon funktionalitet i applikationen.
| E | C | A |
|---|---|---|
| Tillsammans med läraren utvecklar du en applikation som använder en enkel lösning för att spara data mellan sidvisningar. | Med läraren som bollplank utvecklar du en applikation som använder en enkel databaslösning för att spara data mellan sidvisningar. | Med läraren som bollplank utvecklar du en applikation som använder en komplex databaslösning för att spara data mellan sidvisningar. |
Eleven har en databas med minst en, korrekt formaterad, tabell (eller eventuellt, i nödfall, enbart sessioner)
Eleven har en databas med flera tabeller, varav minst två har relationer med varandra
Eleven har en databas med flera tabeller. Det finns minst en många-till-många-relation (mha en relationstabell). Eleven använder JOINs på minst 1 SQL-fråga.
| E | C | A |
|---|---|---|
| Tillsammans med läraren vidtar du enkla åtgärder för att förhindra att applikationen utnyttjas. | Med läraren som bollplank vidtar du lite mer avancerade åtgärder för att förhindra att applikationen utnyttjas. | Med läraren som bollplank vidtar du avancerade åtgärder för att förhindra att applikationen utnyttjas. |
Om eleven har ett inloggningssystem kontrollerar hen användarnamn/lösenord (eventuellt hårdkodade).
Om eleven har ett inloggningssystem kontrollerar hen åtminstone någon get-route.
Eleven har ett inloggningssystem, med hashade lösenord i databasen. Eleven säkrar upp routes (både get och post (både inloggning och att användaren "äger" resursen)
Eleven validerar och escapar användarinput
Eleven har ett inloggninssystem med hashade lösenord i databasen. Eleven säkrar upp routes och implementerar t.ex logging kring inloggningsförsök och cool-down eller liknande vid hackningsförsök. Eventuellt implementerar eleven "strong params" mha black/whitelist (valbart). Eleven kan även använda sig av Sinatras CSRF-funktionalitet(valbart).