This is the monorepo of a student job board application. This application was developed in the context of ESE: Introduction to Software Engineering, a course for Bachelor students in Computer Science at the University of Bern.
Only MacOS or Linux are supported and you need at least 8GB of RAM.
- /frontend Source of the front end.
- /backend Source of the back end.
- /doc Requirements and meeting protocols.
Ensure the following tools are installed:
The backend/dev/seed_and_dev.sh will initialize a test environment with a pre seeded database.
After the script ran you can access the GraphQL-Playground on back end: http://localhost:4000.
The PostgreSQL instance runs on localhost:5432.
You can start the front end by executing the following commands in the folder frontend:
yarn install && yarn dev
Username | Password | Type |
---|---|---|
beri | 123456 | Student |
org | 123456 | Organisation |
fabio | 123456 | System Adminstrator |
This project uses a number of different technologies. Most prominent are:
- TypeScript: All code is written in TypeScript.
- React: The front end is build with React.
- GraphQL: The back end provides a GraphQL-API.
- Apollo Client: A GraphQL client which can be used with React. React components are connected with the GraphQL-API with this library.
- Next.js: A React framework for server side rendered pages. The front end is based on Next.js.
- Docker: To encapsulate front end, back end and make the developer experience a bit nicer.
- PostgreSQL: Used as the main data store.
- redis: Used to store sessions.
Next.js -- GraphQL -- Back end -- PostgreSQL & Elasticsearch
The front end (Next.js) communicates with the back end via a GraphQL powered API. The back end stores data in PostgreSQL and indexes job postings with Elasticsearch.
The job search is implemented with Elasticsearch.
Directory | Descrption |
---|---|
backend/applications/server | Main back end server and GraphQL API |
backend/packages/repositories | Business logic |
backend/packages/models | Database model and mapping |
backend/packages/search | Search API based on Elasticsearch |
frontend/components | React components of the front end |