- Front-end Framework:
React - Styling:
SASSswitching to Chakra UI
- For handling server requests:
Node.js with Express.js Framework - Database:
POSTGRES
Optionally VSCode with extension ESLint
Optionally DBeaver to view database with GUI
-
Make a copy of
.env.exampleand name it.env -
Hook direnv onto your appropriate shell. Load the environment variables:
direnv allow . -
Install and audit node dependencies
npm install npm run audit-dep -
Spin up docker containers (this will create the
petitionsgovdatabase):docker-compose up -
Create tables in database:
npm run seq-cli db:migrate -
Seed the database with a sample dataset:
npm run seq-cli db:seed:all -
Optional: Use Dbeaver to connect to the local MySQL server at
127.0.0.1:5432, using the username and password in.env -
Check that your Database ER Diagram looks like this:
- Stop docker compose (
npm run devwill spin it up again):
docker-compose stop
-
Start running frontend, backend, localstack and mysql simultaneously (requires Docker)
npm run devAlternatively, to run individually:
# for supporting services docker-compose up # for backend server only npm run build-shared && npm run server # for frontend server only npm run clientFrontend server accessible on
localhost:3000Backend server accessible on
localhost:6174/api/v1 -
Default home page is not authorised. To become authorised user, login via
localhost:3000/login, and sign in using mockpass while on local development.
-
Password Auth Error
Ensure
.envis correct and check it is sourced by eitherdirenvor dosource .env -
Public Key Retrieval Not Allowed
Change
allowPublicKeyRetrieval=trueonDBeaver -
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Execute the following query in your database GUI
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'Where root as your user, localhost as your URL and password as your password
Then run this query to refresh privileges:
flush privileges;Try connecting using node after you do so.
If that doesn't work, try it without @'localhost' part.
-
Error: error:0308010C:digital envelope routines::unsupportedTry using Node.js 16.
GET /authGET /auth/sgid/loginGET /auth/callback
GET /postsGET /posts/:idGET /posts/basicPOST /postsDELETE /posts/:id
GET /posts/signatures/:idPOST /posts/signatures/:idDELETE /posts/signatures/:id
