/docker-template

Project in React/TypeScript and Django

Primary LanguageTypeScript

Job Board

Job Board is a recruitment platform aimed at the IT industry and recruiters that seek for employees who will meet their expectations. It allows registered users to find their dream job and recruiters to advertise their job positions.

demo demo

Resources

The code repository is hosted on GitHub

The server side application is written in the Django framework.

User interface is written in TypeScript using the React framework.

Frontend building tool is handled by Vite

The project is maintained in a containerized environment with Docker

Time-consuming tasks such as sending emails are handled by an asynchronous worker - rq

  • You can verify the running task statuses by using the RQ dashboard at localhost:9181. The dashboard should refresh automatically, displaying all pending tasks.

For more information, refer to the RQ website or django-rq documentation.

Running from sources

Docker Compose setup

git clone https://github.com/kamilkaminski01/job-board.git
cd job-board/
docker compose build
docker compose up

Docker Compose is leveraged for reproducible builds and consistent local development environments. The default docker-compose.yml file is set up to support local development with code reload and debug mode.

The Makefile contains common commands that can be used to build, run, and test the project. The most important commands include:

  • build: builds the project with Docker Compose.
  • run: runs the project with Docker Compose.
  • check: performs backend static code checks.
  • frontcheck: performs frontend static code checks.
  • clear: stops the currently running services and removes the volumes.

Application setup

After running the application, the following actions must be executed:

Run make initial_data to initialize database with example data including:
If make isn't supported run: docker compose run --rm web python manage.py initialize_data

Companies can log in to the admin panel with their associated email and password Admin-123
Candidates can log in to their profile with their associated email and password Admin-123

Admin panel is available at localhost:8000/admin
Frontend application is available at localhost:3000

Troubleshooting

In case of errors with typing or missing dependencies, try to rebuild the Docker images:

make clear
make build
make run

If make is not supported, the associated Docker Compose commands can be used directly in order to build and run the project again:

docker compose down -v
docker system prune --force
docker volume prune --force
docker compose build
docker compose up

Code quality standards

Backend

All backend code is formatted and verified by the black, flake8, mypy and isort tools. Their configurations can be found in the setup.cfg file. Additionally, pre-commit checks are performed in order to verify whitespaces, credentials, etc.

Custom functions and methods use type hints to improve IDE code completions, prevent from type errors and extend code documentation.

Frontend

All frontend code is formatted and verified by the prettier, eslint and tsc tools. Pre-commit hooks can be set up with husky. CSS class names are defined according to the BEM methodology.