- This project received new enthusiasm as there was a desire to make the whole sign in process from Covid-19 easier for the old folks, so you give an older person a qr code with a hash value, you decode the hash, check this against the hash in the database and generate a "sign in" entry
Take note that as of last week, I have managed to get some raw html and javascript files working with the spring boot application, though a proper database is needed for this. I plan to also use either use:
- nginx
- spring boot static resources To redirect calls to the static html files and reroute them appropriately.
The scanner will read a QR code, assume that it is an integer and attempt to parse it. If it is invalid it will generate an error. But if it is valid it then attempts to check in the person in accordance with the hash.
It should be noted that the architecture of this system is:
- loose browser clients
- spring boot middleware that generates and talks to the database
- database
The browser clients talk to the middleware and the middleware talks to the database
The middleware ought to control the schema of the database (mainly due to convenience mechanisms).
And the database of choice is postgres (mainly due to a lack of expertise in anything else and I just wanted something up and running).
The hash is just a hashcode, but I am thinking that it needs to be extended to support anything really.
I did test for the following:
- Chinese character QR code encoding - this is not possible or at least I would need to get knee deep in javascript encoding which I don't really want to touch since there is no real benefit to doing this, using numbers is just fine
- Using nginx with aliases work on the network - I tested this at home using my laptop as the web server and I hooked
up an nginx server with some basic configuration with logs and stuff, and I was able to visit
http://jarvis:8000
and it would redirect correctly. - Returning chinese characters via Springboot - this was tested by returning arbitrary chinese strings in Javascript, this proves that alternative chinese names can work (I will commit the change then revert the change so its in the change log)
The following things are the things I would like to implement:
- QR code generation - currently you have to generate a QR code externally outside of this system, it would be good for this system to regenerate qr codes upon demand when needed, I am not entirely sure if this particular endpoint needs to be locked down OR alternatively, its a one shot hash/qrcode generation? Each new generation will alter the hash value and you can't query for previous qr code hashes?
- Supporting alternative names - this needs to be properly fleshed out with name id links to the appropriate tables, the main users will have chinese names and so this whole architecture needs to support chinese characters both in Javascript but also in Java and PostgreSQL
- Supporting contact information - this needs to be implemented
- Clean up the database and trial a network spanning demo at church
- Rewrote everything to use spring and java
- Added in the database files for mysql
- Tinkering with postgres to see if something can be set up that way
- Have been having a lot of thoughts in regards to how it might go together, was thinking that you hit a URL
which provides a JSON object with all the org.squire.checkin.services and required parameters to be filled in,
this could be like: GET /org.squire.checkin.services, returns
{ results: [ { name: "Services", description: "Provides an endpoint to get all the provisioned endpoints are, ideally this endpoint should not change at all", use: "", options: "", url: "/org.squire.checkin.services", methods: ['GET'] } ] }
- There should be: read, update and create, delete should not be allowed at all and should only executed when the database admin carries out the requested action
- I am thinking that perhaps I am overthinking the issue and perhaps something simple ought to be set up first, like a node server with a basic query front end with MySQL backend
- Discovered that you need to run
pip3 install psycopg2
to install the postgres connector is the interface to postgres andpython3 manage.py migrate
to migrate stuff over to the postgres database.