Egy Angular 19+-ban írt közösségi fórum oldal ami egy Reddithez hasonló beágyazott komment struktúrát használ, ami lehetővé teszi hogy a felhasználók megjegyzéseket hagyjanak egymás posztjai alatt vagy a posztok alatti egyes kommentekre. Ezeket a posztokat „járásokba”, vagyis kategóriákba szervezve jeleníti meg a főoldal. Minden felhasználó írhat saját kommenteket akár az eredeti posztra vagy más felhasználók válaszaira, lájkolhatják mások kommentjeit vagy létrehozhatnak új posztokat a főoldalon, a posztjaikhoz pedig csatolhatnak maximum 9 kép csatolmányt. (És jelen pillanatban a személyes blog bejegyzéseimet is néha ide töltöm fel, ha akad valami megosztásra méltó.) Mindezt akár bejelentkezés nélkül is megtehetik, ugyanis az oldal felkeresésekor alapvetően mindenki egy megosztott „vendég” fiókba van bejelentkezve és minden alap funkció mindenkinek egyformán elérhető, csak ezzel együtt bárki könnyedén felülírhatja amit egy másik vendég csinált. Bejelentkezett felhasználók írásait azonban csak ők maguk változtathatják meg és a lájkjaikat is csak ők vonhatják vissza. Bejelentkezni Google-os email címmel lehet a jobb felső lebegő gombra kattintva. (Aki bejelentkezik az bekerül az app adatbázisába.)
Ez a projekt valójában két együttműködő projekt egyben (három, ha a kép csatolmány szervert is külön beszámoljuk), egy felhasználó oldali frontend ami egy Angular SPA (Single Page Application), és egy szerver oldali backend ami egy Fastify alapú Nest.js keretrendszerben íródott. Ez a két kód két különböző IP címen van hosztolva, és a projekt fő kihívása az volt hogy a két oldal sikeresen tudjon kommunikálni egymással sütik és fejlécek használatával, nemcsak a böngészők beépített CORS védeleme ellenében hanem a Vercel (a hoszt platform) sajátos implementációs megoldásait is körbejárva.
A frontend oldal Typescriptet és SCSS stíluslapokat használ, az adatbázis pedig egy helyben tárolt PostgeSQL adatbázis amit a Vercel és Neon biztosítanak.
A kép csatolmányok kezeléséért egy saját Medea nevű projekt a felelős, ami API hívásokon keresztül kommunikál a Wayfarer backend oldalával és a felhasználó által feltöltött képeket egy saját adatbázisban tartja nyílván. (Egész pontosan a workflow úgy néz ki, hogy a Wayfarer frontend oldala feltölti a csatolmányokat a Vercel Blob adattárházba ami pont az ilyen nem-szöveg alapú adatfájlokra specializálódott, majd szól a Medea-nak hogy másolja fel azokat az ImageKit.io médiakezelő platformra és tartsa számon őket egy saját Postgres adatbázisban, majd az megküldi a feltöltött képek URL-jét a Wayfarer-nek. Vendég felhasználók csatolmányait 30 nap után törli a rendszer, a Medea szól a Wayfarer szerverének és a posztokban csak egy placeholder kép fog megjelenni.)
Github forráskód: https://github.com/FarpadGit/Wayfarer



