WorkX is a Django-based job portal that connects freelancers with businesses. It features separate authentication for freelancers and businesses, Google Sign-In integration, and dynamic dashboards for job listings and postings. The project also includes a React frontend with a sleek black-themed UI.
The WorkX project is a comprehensive job platform designed to streamline the interaction between freelancers and businesses. Built with Django, React, and Firebase, it offers dual authentication systems—one for freelancers and another for businesses—integrated with Google Sign-In. The platform’s backend leverages Django Rest Framework (DRF) to provide a secure and scalable API, while the frontend, crafted with React, offers a sleek, black-themed user interface. The project integrates various APIs for dynamic content, such as live weather updates and currency conversion rates.
Additionally, Elasticsearch is used for advanced search functionalities, making it easier to match freelancers with relevant job postings. The business dashboard allows companies to post jobs and manage their listings, which are stored in a robust database and retrieved by freelancers through their dedicated portal. The platform is optimized for performance and scalability, ensuring a smooth user experience.
Frontend Setup Instructions
- Fork and Clone the repo using
git clone https://github.com/Rohantech231/WorkX.git
cd WorkX
-
Get the API key from https://api.imgbb.com/ and replace it with
REACT_APP_IMGBB_API_KEY
in.env.example
-
Get a new API key from https://smtpjs.com/ and replace it with
REACT_APP_API_KEY
in.env.example
-
Rename the file
.env.example
to.env
-
Install node dependencies
npm install
- Run Server at localhost using
npm start
Backend Setup Instructions
- Fork and Clone the repo using
git clone https://github.com/Rohantech231/WorkX.git
cd WorkX
- Change Branch to
backend
using
git checkout backend
- Setup Virtual environment
python3 -m venv env
- Activate the virtual environment
source env/bin/activate
- Install dependencies using
pip install -r requirements.txt
- Make migrations using
python manage.py makemigrations
- Migrate Database
python manage.py migrate
- Create a superuser
python manage.py createsuperuser
- Run server using
python manage.py runserver
Deploying the Application on AWS
-
Sign up for AWS: If you don't already have an AWS account, sign up here.
-
Install AWS CLI: Download and install the AWS CLI from here.
-
Configure AWS CLI: Run the following command to configure your AWS CLI with your credentials:
aws configure
-
Set up Elastic Beanstalk (EB):
- Install the EB CLI using pip:
pip install awsebcli
- Initialize your Elastic Beanstalk application:
Replace
eb init -p python-3.8 WorkX
python-3.8
with your Python version.
- Install the EB CLI using pip:
-
Deploy the application:
- Create an environment and deploy:
eb create workx-env eb deploy
- To open your application in the browser:
eb open
- Create an environment and deploy:
-
Monitor and manage your application:
- View the status of your environment:
eb status
- View logs:
eb logs
- View the status of your environment:
-
To terminate the environment:
eb terminate workx-env
For more detailed information, refer to the AWS Elastic Beanstalk documentation.
- React: For building the user interface.
- JavaScript (ES6+): Core programming language for frontend development.
- HTML5 & CSS3: Markup and styling.
- React Router: For navigation and routing.
- Bootstrap/Tailwind CSS: For responsive and modern UI components.
- Firebase: For authentication and real-time data management.
- Google Sign-In: For social login functionality.
- Django: Python-based web framework for the backend.
- Django Rest Framework (DRF): For building RESTful APIs.
- Django-CORS-Headers: To handle Cross-Origin Resource Sharing (CORS) in the API.
- Django Simple JWT: For token-based authentication.
- Django-Phonenumber-Field: For handling and validating phone numbers.
- Django-Heroku: For deploying the application to Heroku.
- PostgreSQL: Primary database for storing user data, job postings, and other persistent information.
- Elasticsearch: For advanced search functionalities.
- Elasticsearch DSL: High-level library for Elasticsearch.
- AWS: Used for deployment.
- Git: Version control system.
- GitHub: For code hosting and collaboration.
- Webpack: Module bundler for JavaScript.
- Babel: JavaScript compiler.
- Node.js & npm: For managing frontend dependencies and tools.
- ESLint: For linting and code quality.
- Prettier: Code formatting tool.
- Inspiration
- References