Das Projekt, welches wir im Rahmen des Kurses umsetzten wollen, wird ein Blog sein. Der Blog wird speziell zu dem Thema Reisen sein. Der User des Blogs (Admin des Blogs) soll Beiträge erstellen, editieren und löschen können. Besucher der Blog-Seiten können die Beiträge lesen. Die Titel der Beiträge können über eine Suchfunktion gefunden werden. Des Weiteren sollen die Beiträge durch gesetzte Kategorien gefiltert angezeigt werden können.
Personen der Zielgruppe „Leser“: Privatpersonen, die sich für das Thema Reisen interessieren Personen der Zielgruppe „User/Admin“: Privatpersonen, die gerne über Reisen berichten und dazu ein minimalistisches CMS nutzen möchten
- User bekommt ein Adminname mit default adminPasswort erstellt beim Systemstart
- Nach dem Einloggen kann dann das default Passwort in persönliches Passwort geändert werden
- User kann Beiträge erstellen, editieren, löschen
- Beiträge erstellen: können getaggt werden mit Kategorien (Muss: initialisieren 6 vorgefertigte Kategorien)
- Suchfunktion (Suche nach Titeln)
- Aus Besuchersicht: Blog
- Aus Usersicht: CMS
- Besucher hat nur Read-Rechte für die Blog-Artikel
- Es gibt nur einen User = Adminrechte
- Admin kann Beiträge erstellen, editieren und löschen
- Browser in dem JavaScript erlaubt sein muss
- Cookies müssen erlaubt sein, zumindest bei Admin
- Kommentar-System
- Up- & Downvotes als Bewertungssystem (vergleichbar mit „Likes“)
- Umsetzung im Scrum Modus
- Trennung von Backend und Frontend
- Backend hat eine API-Spezifikation
- Datenbanktechnologie soll austauschbar sein
- Nutzung ODM
- User bleibt eine gewisse Zeit lang eingeloggt (Session-Management)
- Daten im Frontend werden zwischengespeichert um aus Performancegründen HTTP-Requests zu sparen
- Frontend: React
- Statemanagement: Redux
- Routing: React Router
- Backend: NodeJs / Express
- Sessionmanagement: Express-Session + SessionCookie
- Sessionstorage: MongoDB
- Datenbank: MongoDB Atlas
- ODM: mongoose
- Design: Stylesheets Erstellung mit Sass
- Heroku
- Planung: Trello
- Kommunikation: Discord
- API-Spezifikation: Swagger
- Versionsverwaltung: Git
- Repository: Github
Plan:
- Sprintplanung: alle
- Trello update: Isabelle Karal
Create:
- Backend: Vlad Fetisov
- Frontend: Safak Altundag, Jim Kendzierski
- Design/Styling: Isabelle Karal
Build, Release, Deploy, Configure: Vlad Fetisov
Plan:
- Trello (Sprintplanung und Orga-Übersicht)
- Discord (Besprechungen und Problemlösungen)
Create:
- Entwicklungsumgebung: Visual Studio Code
- Visuelle Übersicht der Datenbank mit MongoDB Compass
- Browser: Chrome, Firefox
- Browser-DevTools
- Global dependencies: node js, npm & create-react-app
- Backend dependencies: "bcrypt": "^5.0.1", "body-parser": "^1.19.1", "config": "^3.3.6", "connect-mongo": "^4.6.0", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^10.0.0", "express": "^4.17.1", "express-session": "^1.17.2", "mongodb": "^4.2.0", "mongoose": "^6.0.13", "multer": "^1.4.4", "nodemon": "^2.0.15"
- Frontend dependencies: "base-64": "^1.0.0", "react": "^17.0.2", "react-app": "^1.1.2", "react-dom": "^17.0.2", "react-redux": "^7.2.6", "react-router-dom": "^6.2.1", "react-scripts": "4.0.3", "redux": "^4.1.2", "redux-persist": "^6.0.0", "redux-thunk": "^2.4.1", "web-vitals": "^1.1.2"
Build: "create-react-app" (basierend auf webpack) -> npm run build
Release:
- lokal: kein Tool
- production: git-flow bei push in Main Branch
Deploy: git-action pipeline push zu heroku
Configure: selbsterstellte env Datei (lokal)
Monitor: Browser-DevTools
- Nodejs > v14 & npm > 5
- MongoDB > 5
- create-react-app via npm
-
Projekt aus dem Github-Verzeichnis ziehen unter https://github.com/vladorjiggy/awt_uebermotiviert.git
-
Projekt öffnen in Editor jeglicher Art (z.B. Visual Studio Code)
-
.env Datei anlegen | Beispiel: example.env
-
Datenbank Mongodb 5.0 herunterladen unter https://www.mongodb.com/try/download/community und installieren
-
Die "mongod" Anwendung ausführen (unter Windows im Verzeichnis von Mongodb, Pfad: MongoDB/Server/5.0/bin)
-
ConnectionString in die configDatei schreiben unter /server/config/default.json
-
Backend:
- Konsole öffnen und in den Ordner frontend navigieren mittels "cd server"
- Im Verzeichnis server: Installation der dependencies mittels "npm install"
- "npm start" um das Backend zu starten
- Frontend:
- Konsole öffnen und in den Ordner frontend navigieren mittels "cd frontend"
- Im Verzeichnis frontend: Installation der dependencies mittels "npm install"
- "npm start" um das Frontend zu starten
- (Optional bei Bedarf) Bei MongoDB Compass angelegte Datenbank einsehen:
- MongoDB Compass installieren unter https://www.mongodb.com/products/compass
- öffnen und unter New Connection auf den Button Connect klicken
- unter Datenbank awtReiseblog können die Collections "categories", "posts", "sessions" und "users" eingesehen werden
- Start der Anwendung:
- Wenn frontend und Backend laufen im Browser http://localhost:3000/ aufrufen
- Anwendung kann als normaler Nutzer/Leser benutzt werden oder durch Klick auf "Login" kann man das CMS nutzen
- um sich im CMS anzumelden benötigt man die Adminzugangsdaten aus der default Datei User.json (könne bei Bedarf geändert werden)
-
Projekt aus dem Github-Verzeichnis ziehen unter https://github.com/vladorjiggy/awt_uebermotiviert.git
-
Projekt öffnen in Editor jeglicher Art (z.B. Visual Studio Code)
-
Heroku CLI herunterladen und installieren (https://devcenter.heroku.com/articles/heroku-cli)
-
Einloggen in der Heroku CLI:
- Terminal öffnen
- npm install -g heroku
- "heroku login" ausführen
-
Auf der Heroku Webseite eine App erstellen
-
MongoDB Atlas Cluster erstellen:
- Einloggen oder Registrieren unter https://www.mongodb.com/atlas/database
- Cluster erstellen
- Netzwerkfreigabe für alle IP-Adressen freigeben
- Connection-String erstellen
-
UmgebungsVariablen in der zuvor erstellten Heroku App eintragen anhand der .env.example Datei im Ordner server
-
Im Ordner frontend eine .env Datei erstellen und Variablen eintragen anhand der Datei .env.example im Ordner frontend
-
Im Ordner server ein git repo für heroku erstellen -> git init
-
Im Ordner server die heroku-app als remote repo hinzufügen -> heroku git:remote -a AppName
-
Im Ordner frontend "npm install" und dann "npm run production" ausführen