Demo applikasjon som gjenskaper TFK sin ansatte app: http://apps.t-fk.no/ansatte
Den består av en backend og en frontend. Backend er skrevet i Python med Django som rammeverk
og bruker Django Rest Framework for api oppsett.
Frontend er skrevet i Ember og snakker med backend via AJAX kall.
Alle tjenester håndteres av docker og docker-compose, docker-compose tar seg å starte opp
alle tjenesten man trenger og binder dem sammen med bruk av nginx som reverse proxy.
Skripting gjøres via Fabric, feks. for første gangs oppsett og deployment.
- Git clone dette repoet
- Gå inn in working copy
- kopier dist filene til lokale filer og modifiser
- start docker containere med docker-compose
- Importer data til databasen med Django kommandoen
import_data
Første gangs oppsett krever at noen lokale filer lages, dette kan gjøres med:
fab setupEller manuelt med:
cp .env-dist .env
cp backend/settings/.env-dist backend/settings/.env
cp backend/settings/local-dist.py backend/settings/local.pyBygg docker images med:
docker-compose buildFor å starte alle tjenestene kjør:
docker-compose upApplikasjonen er nå tilgjengelig via WEB_PORT som konfigurert
Importer data om ansatte ved å kjøre:
docker-compose run --rm backend python manage.py import_data ansatte.jsonLitt informasjon om docker imagene som er brukt.
Docker image som er basert på Python men som starter Django applikasjonen via
start-dev.sh skriptet, dette skriptet sørger for å migrere databasen og vil håndtere feil
og prøver å restarte applikasjonen hvis dette skjer.
entrypoint.sh sørger for å vente på at databasen er klar før den fortsetter.
Det er også et oppsett for produksjon hvor gunicorn er brukt.
Docker image basert på offisiell nginx men som integrerer envplate, dette
gjør det mulig å bruke environment variabler i konfigen.
Docker image basert på nodejs, som integrer yarn, watchman, bower, livereload og nodemon.
yarn erstatter npm for installasjon av pakker, og nodemon brukes for å starte og restarte ember serveren når hovedkonfigurasjon er endret. Dette gjør utviklingsjobben en del enklere.
Offisielt image brukes men er konfigurert for lokalt utvikling.
Fila docker-compose.yml brukes til lokal utvikling
Docker oppsettet eksponerer to porter (settes i .env), WEB_PORT er porten
for reverse proxy som er den man bruker til vanlig. APP_PORT er porten
direkte mot Django backend, trengs normalt ikke men kan brukes for
Livereload er konfigurert slik at alt går igjennom WEB_PORT, dette gjør
det også enkelt å ta bruk tjenester som ngrok slik at man kan få hele
oppsettet gjennom et domene og SSL.
API'et ligger i backend og leveres via pathen /backend/api, koden
for dette ligger i backend/backend/api.py og er laget i Django Rest Framework.
All søk i APIet er case insensitive og bruker et enkelt SQL like søk.
Følgende API punkter er tilgjenglig:
/backend/api/people?q=<search>– Søk etter personer på fornavn/etternavn./backend/api/people?department_id=<department>– Hent alle personer i en bestemt avdeling./backend/api/people?department_id=<department>&q=<search>– Søk etter personer i en bestemt avdeling./backend/api/people/id– Hent en spesifikk person etter id/backend/api/departments– Hent ut alle avdelinger/backend/api/departments?q=<search>– Søk etter avdeling på avdelingsnavn/backend/api/departments/id- Hent en spesifikk avdeling etter id og alle relaterte personer./backend/api/departments/id?q=<search>– Søk etter personer på fornavn/etternavn i en spesifikk avdeling.
Django Rest Framework sin interaktive api browser er tilgjenglig på
/backend/api.