Link to the exercise: GitHub
The technologies are used in the solution:
- Frontend: Next Js, Chakra UI
- Backend: Golang, Go Fiber
- Database: PostgreSQL
- DevOps: Docker, NGINX
-
Backend Journies:
- Get pagination journies
- Get journey by ID
- Sort or Order journies by columns
- Filter the journies based on the departure and return stations
Stations:
- Get pagination stations
- Sort or Order stations by columns
- Get stations suggestion
Single stations:
- Basic information
- The average distance of a journey starting from the station
- The average distance of a journey ending at the station
- Top 5 most popular return stations for journeys starting from the station
- Top 5 most popular departure stations for journeys ending at the station
- Pagination journies that departure from this stations
- Pagination journies that return at this stations
- Ability to filter all the calculations per month
-
Frontend Journies:
- List of all journies
- Search journies using starting point and end point
- Add new journey
Stations:
- List of all stations
- Single station view
- Search station by name
- Add new station
To run the application on the local machine, there are some requirements:
- Docker is running on your machine
- Environment variables for database, backend and frontend
// Place in postgres/.env
POSTGRES_PASSWORD=
POSTGRES_USER=
POSTGRES_DB=
// Place in backend/.env
DB_DSN=postgres://<POSTGRES_USER>:<POSTGRES_PASSWORD>@database:5432/<POSTGRES_DB>?sslmode=disable
// Place in frontend/.env.production
BACK_BASE_API=
FRONT_BASE_API=
GOOGLE_MAP_KEY=
If all prepared, the application can be run using the script:
sh ./run-prod.sh
NOTE: The backup file of database was not included in the repository. Contact me if you want to get it and put in the folder posgrest/initdb.d