High level Solution arch design - futtta/boekenzoekers GitHub Wiki

(very) high level Solution Architecture/ Design

architectuur

fb-api -> backend php -> db -> frontend php -> frontend

backend

die backend code moet dan de facebook api aanspreken (dmv de facebook PHP SDK) om nieuwe (ivm vorige query) posts eruit te halen.

we moeten dan een tabel met steden en gemeentes in de db hebben en die gebruiken we om te zien of de post één van die steden en gemeentes bevat

dat alles gaat in de database in een redelijk vlakke tabel: id; locatie; fbpost-url; fbpost-timestamp; fbpost-tekst

die backend-code zou om de X minuten moeten draaien om meest recente posts op te halen (ik creeer een cron-job op de server die de URL naar de backend-code oproept)

backend-code moet ook oude posts verwijderen (ouder dan x dagen waarbij we voorlopig uitgaan van x = 90 dagen). we moeten zien dat we dat rechtstreeks op de timestamp op de db kunnen doen, zodat dat volledig in SQL kan.

alle settings (FB credentials, database credentials) moeten in een aparte config-file. zorg dat de config-file zelf git-ignored is, maar dat er een config-sample.php file is met voorbeeld wat erin moet.

Libraries

frontend

frontend kan betrekkelijk eenvoudig; zoekveld, resultaten (zonder foto's) met timestamp (die ook in db moet)

zoeken zou met vlakke db héél snel moeten zijn; select * from boekenjagerstable where locatie="lokeren"

bedoeling is om mensen enkel te laten zoeken op plaats (we gebruiken die lijst met steden en gemeentes in de db en tonen niets als niet in die lijst) en om ze snel te laten doorklikken naar de echte FB-post (in een nieuw venster).

De frontend bestaat uit simpele html & css (geen library)

open vragen

  • gebruiken we een php-framework (symphony, laravel, cakephp, ...) of doen we native php? -> native PHP + composer packages
  • wat doen we met posts met 2 locaties (vb. lokeren eksaarde)? ik zou in de eerste versie stoppen met door de lijst gemeentes te lopen als we een hit hebben, later aan te passen ..
  • wat doen we met "boom" en soortgelijke namen van gemeentes die ook zelfstandig naamwoord zijn? we riskeren veel false positives enerzijds, maar anderzijds kunnen we dat niet volledige negeren. "de boom" en "een boom" (en nog enkele andere voorzetsels) negeren? en/ of moet een plaatsnaam met hoofdletter beginnen (ik schrijf regelmatig zonder hoofdletters, dus liever niet)?