/borgerdata

Primary LanguageJavaScript

borgerdata

Proxy service for looking up citizen data stored in a SQL server.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

Installing

# Make a .env file based on .env.dist
cp .env.dist .env

docker-compose pull
docker-compose up --detach

docker-compose exec node yarn install

# THE FOLLOWING IS ONLY FOR TEST/DEVELOPMENT - DO NOT RUN IN PRODUCTION

# Make sure there is a database created on the server before running the following commands
docker-compose exec node node createdb.js

# Migrations and seeds are only needed in a test/development context so don't run them in production.
docker-compose exec node yarn knex migrate:latest
docker-compose exec node yarn knex seed:run

You should now be able to send a request and get some data back:

curl http://$(docker-compose port node 8081)/citizen/1234567891

Expected result:

{
  "CPR": "1234567891",
  "Fornavn": "Hans",
  "Mellemnavn": null,
  "Efternavn": "Hansen",
  "Adresseringsnavn": null,
  "Vejnavn": "Testvej",
  "HusNr": "11",
  "Etage": null,
  "Side": null,
  "Adresseringsadresse": null,
  "Bynavn": "Roskilde",
  "Postnummer": "4000",
  "Postdistrikt": null,
  "PostnummerOgBy": null
}

Release

This software does not follow a versioning scheme, instead the latest production ready version is the one in the master branch.

Whenever changes is merged in to the master branch, minimum two things should happen:

The changelog should be updated

All the entries in the [Unreleased] section should be moved to a new entry with the date of the merge as headline. See the changelog for examples.

A docker image should be build and pushed to the package repository:

docker build -t itkdev/borgerdata .
docker tag <DOCKER_IMAGE> docker.pkg.github.com/itk-dev/borgerdata/app:latest
docker push docker.pkg.github.com/itk-dev/borgerdata/app:latest

Deployment

You will need an environment where the following is present:

Place the code in the environment and create a .env file with the following contents:

###> node ###
NODE_ENV=production
###< node ###

###> APP ###
APP_PORT=8081
###< APP ###

SQL_SERVER=<URL-TO-SQL-SERVER>
SQL_PORT=<PORT>
SQL_USER=<USER>
SQL_PASSWORD=<PASSWORD>
SQL_DATABASE=<DATABASE>
SQL_SCHEMA=<SCHEMA>
SQL_TABLE=<TABLE>
#SQL_DOMAIN=<DOMAIN>

Install the dependencies:

yarn install --production

Run the app:

yarn serve