homeWork is a web application made with Spring Boot (backend api) and React.js + Redux (frontend), with a ASP.NET Core (backend api) version. A house work job website, homeWork provides a platform for both job seeker and recruiter. The application provides a wide range of functionalities listed below.
Here is the complete homeWork functionalities rundown:
Click to expand
- Authentication with Spring Security (backend) + React (frontend)
- Registering as Job Seeker or Job Creator
- Route protection (only authenticated users can access the functionalitites)
- User functionalities separated by roles (job creator/job seeker)
- Create/update/delete jobs as a job creator
- Applying for a job as a job seeker
- Managing applications on application dashboard as job creator (accept/reject an application)
- Dashboard separation for different roles
- Jobs marketplace
- Job types with different thumbnails
- User profile page with unique gravatar image
- Proper statuses on job (pending/accepted/rejected application)
- Responsive sidebar
- View all my posted jobs as job creator
homeWork utilizes the following points:
- React functional components
- State management with Redux
- Spring Framework for API development
- Spring Security for back end authentication and tokenization
- ASP.NET Core MVC
- ASP.NET Core JWT authentication + IdentityUser + auth middleware
- Json Web Token - Jwt Api
- MySQL for DB management
- Docker containerization, docker-compose
- Error handling with React/Redux
- Responsive UI with CSS/Bootstrap
- Gravatar pixel profile picture
- JPA @Query on repository data fetching/modification
Wanna try out homeWork on your local machine? Here are the steps:
Simple setup with Docker
Both the frontend and backend (and MySQL database) were containerized within separate Docker containers, as provided here:
- Create a file
docker-compose.yml
with the following content (you can also find it here):
version: '3'
services:
db:
image: mysql:8
restart: always
ports:
- 3307:3306
environment:
MYSQL_DATABASE: homework
MYSQL_USER: newuser
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
server:
image: ghcr.io/juliantjg/homework-backend:latest
restart: always
ports:
- 8080:8080
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/homework?autoReconnect=true
frontend:
image: ghcr.io/juliantjg/homework-frontend:latest
ports:
- 3000:3000
- Run the
docker-compose.yml
to start up the backend (server), frontend (frontend) and MySQL (db). (Please make sure your local port:3000
and:8080
aren't in use):
$ docker-compose up
=======================================================
Starting springdeploy_server_1 ... done
Starting springdeploy_frontend_1 ... done
Starting springdeploy_db_1 ... done
=======================================================
- Access the application by entering
localhost:3000
on your browser:
![](https://user-images.githubusercontent.com/53683415/230530173-d507cf61-7078-4040-b1a3-2a0a3a8f594e.png)
- Done! Now you can login. The database have been seeded, thus you can find jobs on the Hunt Jobs dashboard. Here is an employer credential (you can also sign up as one):
email: employer@email.com
password: password
Spring Framework - The Spring Framework is an application framework and inversion of control container for the Java platform.
ASP.NET Core - ASP.NET Core is a free and open-source web framework and successor to ASP.NET, developed by Microsoft.
React - React is a free and open-source front-end JavaScript library for building user interfaces based on components.
Bootstrap - Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development.
MySQL - MySQL is an open-source relational database management system.
Redux - Redux is an open-source JavaScript library for managing and centralizing application state. It is most commonly used with libraries such as React or Angular for building user interfaces.
Docker - Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers.