FJob is a fullstack application (main technologies: Django Rest Framework, Nextjs, Selenium). FJob, by collecting job offers from many job portals (currently only JustJoinIT, but there are already scripts ready to collect data from: olx, Pracujpl, nofluffjobs, Pracujpl) and enabling companies to post their own job offers will allow you to easily search for job offers.
Report Bug
ยท
Request Feature
The application is no longer available in the demo version, I don't have money to maintain it with this architecture :(
Fjob consists of 3 repositories:
- Backend (current)
- Frontend https://github.com/DEENUU1/fjob_frontend
- Scrapers https://github.com/DEENUU1/fjob_scrapers
!NEW! I started refactoring the current application and moved a large part of the code initially saved in views to the service layer using the repository pattern. Some views have remained unchanged due to, for example, their simplicity related to the use of Django
- JWT and OAuth Google Integration:
- Utilizes JSON Web Tokens (JWT) in conjunction with OAuth Google for secure authentication and authorization processes.
- Web Scraping and API-driven Database Storage:
- Implements web scraping techniques to extract job offers from various websites.
- Processes and transmits the gathered data via API for storage in the database.
- Error Reporting and Favorites Functionality:
- Incorporates a robust error reporting mechanism.
- Enables users to save job offers to favorites for convenient retrieval.
- Advanced Filtering, Sorting, Pagination, and Search Capabilities:
- Provides sophisticated filtering, sorting, and pagination options for efficient data exploration.
- Facilitates advanced job search functionalities.
- Stripe Integration for Business Listings Purchase:
- Integrates with Stripe payment gateway, allowing businesses to purchase listings seamlessly.
- User and Company Account Management:
- Enables the creation of both regular user accounts and company accounts.
- Django Signals for Automated Services:
- Utilizes Django Signals for the automation of various services, including updating available job offers, sending email notifications post-payment, and handling errors in job offers.
- Instantiates Company objects following the creation of a company account.
- Custom Commands and Permissions:
- Implements custom commands and permissions for enhanced control and flexibility.
- Default Data Upload and Localization:
- Includes functionality for uploading default countries, cities, and regions (currently focused on Poland).
- NextJS and Typescript for Frontend:
- Develops the frontend application using NextJS and Typescript for a robust and type-safe user interface.
- CI/CD with GitHub Actions:
- Implements Continuous Integration/Continuous Deployment (CI/CD) using GitHub actions.
- Automates unit tests and deploys the latest code version to an AWS EC2 instance.
- NGINX Configuration for Network Traffic Handling:
- Utilizes NGINX on the EC2 instance to efficiently manage network traffic.
- SSL Certificate Renewal with Certbot:
- Configures Certbot for automatic SSL certificate renewal, ensuring secure communication.
- Background Task Handling with Redis and Celery:
- Incorporates Redis and Celery for background task processing.
- AWS Integration for Scalability and Reliability:
- Integrates Django Rest Framework with AWS S3 Bucket for storing static files and model data.
- Utilizes Google Cloud SQL for a reliable and secure database.
- Leverages AWS services such as CodeBuild for web scraping functions on Lambda, ElasticIP Addresses for fixed IP assignment, Route 53 for domain management, and Amplify for hosting and deployment.
- Event-Driven Architecture with AWS EventBridge:
- Implements AWS EventBridge to automatically trigger each web scraping function.
- Sentry Integration for Error Monitoring:
- Integrates with the Sentry platform to monitor and analyze errors in the system.
- I wrote over 120 tests, both unit and integration
- Python
- Django / Django Rest Framework
- Selenium
- Celery
- Pytest
- Requests
- Beautiful Soup 4
- React
- Next.JS
- Typescript
- AWS
- EC2
- S3 Bucket
- Elastic IP
- Route 53
- Lambda
- EventBridge
- CodeBuild
- Amplify
- Google Cloud SQL (postgreSQL)
- Docker
- Docker Compose
- Redis
- CI/CD
- Certbot
- NGINX
- SQLite
- Stripe
I'm not a frontend developer, but I think it looks pretty good
Backend in local mode use SQLite so there is no need to use Docker/Docker-compose
# Clone repository
git clone <url>
# Create .env file
cp .env_example .env
# Install libraries
pip install -r requirements.txt
# Apply migrations
python manage.py migrate
# Create super user
python manage.py createsuperuser (in User Type type "USER")
# Run server
python manage.py runserver
# Clone repository
git clone <url>
# Create .env file
cp .env_example .env
# Build image
docker-compose build
# Run containers
docker-compose up # -d
# Apply migrations
python manage.py migrate
#
# Run this commands inside web container
#
# Create super user
python manage.py createsuperuser (in User Type type "USER")
# Run server
python manage.py runserver
Run pytest
pytest
Create default Product objects
python manage.py products
Upload default cities and regions for Poland
python manage.py poland
Create default CompanyCategory objects
python manage.py category
To run stripe locally use this command to run a webhook
stripe listen --forward-to localhost:8000/api/payment/new_company/webhook
See LICENSE.txt
for more information.