Skip to content

OleksandrZhydyk/FastAPI_Vue.js_JobBoard

Repository files navigation

FastAPI Vue.js Job Board

Job board application powered by FastAPI. The main goal of this is to learn FastAPI, Vue frameworks and correspond tech stack for building the complete app.

The app features:

All unregistered users in the app can:

  1. search for the necessary vacancies using filter by categories and sort them;
  2. view the full information about the vacancy;

Registered users in the app can:

  1. All the steps above;
  • Applicant:
    • apply for the vacancy;
    • view applied vacancies;
    • edit profile (photo, resume).
  • Employer:
    • CRUD of the vacancy;
    • view own archived vacancies;
    • view applicants profiles for vacancies;
    • edit profile.

Used technologies:

  • FastAPI;
  • PostgreSQL;
  • SQLAlchemy;
  • Alembic;
  • Pytest;
  • Docker, Docker Compose;
  • Vue.js, Vuex, Vue Router;
  • AWS S3;
  • Nginx

Installation

  1. Clone the repo:
https://github.com/OleksandrZhydyk/FastAPI_Vue.js_JobBoard.git

Usage

For running the app you need:

  1. Add app configuration to your .env file in the root:
#Block FastAPI settings
HOST_NAME=YOUR_HOST_NAME
WSGI_PORT=YOUR_WSGI_PORT
ROOT_PATH=YOUR_FASTAPI_ROOT_PATH
VUE_APP_BACKEND=http://${YOUR_HOST_NAME}${YOUR_FASTAPI_ROOT_PATH}
SECRET_KEY=YOUR_SECRET_KEY
ALGORITHM=ALGORITHM_FOR_JWT
ACCESS_TOKEN_EXPIRE_SECONDS=SECONDS
REFRESH_TOKEN_EXPIRE_SECONDS=SECONDS
COOKIE_MAX_AGE=SECONDS

#Block DB connection
POSTGRES_DB=YOUR_POSTGRES_DB
POSTGRES_PASSWORD=YOUR_POSTGRES_PASSWORD
POSTGRES_USER=YOUR_POSTGRES_USER
POSTGRES_HOST=YOUR_POSTGRES_HOST
POSTGRES_PORT=YOUR_POSTGRES_PORT

#Block for S3 as media files manager
AWS_ACCESS_KEY=YOUR_AWS_ACCESS_KEY_FOR_S3
AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY_FOR_S3
AWS_STORAGE_BUCKET_NAME=YOUR_AWS_BUCKET_NAME
AWS_MEDIA_LOCATION=YOUR_PATH_TO_AWS_MEDIA_LOCATION
AWS_USER_AGENT=SOME_SECRET_FOR_NGINX,S3_COMMUNICATION

#Block for local system as media files manager
STATIC_ROOT = YOUR_STATIC_ROOT
LOCAL_ORIGIN = YOUR_ORIGIN

USE_S3='True'-FOR_S3_MEDIA_SAVING, ''-FOR_SYSTEM_SAVING
  1. Run the command for building and running the images in prod mode:
docker compose up -d --build

For running in dev mode use docker-compose-dev.yml.

docker compose -f docker-compose-dev.yml up --build -d

TODO

  • Integrate Alembic migrations
  • Async CRUD and main business logic
  • Login and permissions
  • Integration async tests (Pytest)
  • Add CI (GitHub Actions)
  • Add docker compose support
  • Add Vue.js frontend
  • S3 bucket for media files
  • Nginx support

Screenshot from 2023-04-16 11-05-02

Screenshot from 2023-04-16 10-57-56

Screenshot from 2023-04-18 22-49-38

Screenshot from 2023-04-16 10-58-26

Screenshot from 2023-04-16 10-58-46

Screenshot from 2023-04-16 11-01-31

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published