From root folder:
- Install package dependencies with
npm i
- Start containers for postgresql and pgAdmin with:
npm run start:docker
- Start backend api server with:
npm run start:backend
- Start frontend with:
npm run start:frontend
(3 different terminals are required)
- Access frontend on http://localhost:4200/
- Login with username: glass-lewis & password: P4$sw0rD
- Access PgAdmin on http://localhost:8800/
- Login with username: [email protected] & password: postgres
- As you browse to the created database, you will be asked for the db password: postgres
- Access swagger on http://localhost:3000/api/swagger
- From root run
npm run lint --workspaces
- From frontend folder run
npm run test
Authentication works via JWT tokens. The current expiration time for the JWT token is 2 hours. If you want to test how the frontend behaves if the token expires, please make the following changes:
- Open the file
backend/src/api/authentication/AuthenticationController.ts
- Edit private property
_tokenExpirationTimeInSeconds
and set a new value (eg. 5)
All the points below have not been worked on due to the nature of this challenge. The assumption is that production ready code is not expected, and that this is to be a broad overview of the candidates capabilities.
- error handling can use some improvement (both fe & be); i know, stack traces in http responses are a big no-no
- the UI was not given careful consideration (i consider this the job of a designer - ui / ux person). it is merely functional
- UI could benefit from a better responsiveness concept
- even though i can write backend code (so technically i'm a fullstack developer), i have a very strong preference towards frontend
- listing table could use more advanced filtering ui, selection, yada, yada
- frontend api request need more abstraction
- unit testing is not complete. i only wrote a couple of "demo" unit tests (app.component.spec.ts & companies.resolver.spec.ts). anything else would take too much time