diff --git a/README.md b/README.md index c380c765..f357633c 100644 --- a/README.md +++ b/README.md @@ -1,124 +1,337 @@ -# JobFinders Application +# JobFinders.site + +**South Africa's Premier Job Search Platform** + +[![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) +[![Flask](https://img.shields.io/badge/flask-2.3.2-green.svg)](https://flask.palletsprojects.com/) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) + +JobFinders.site is a comprehensive job search and recruitment platform designed specifically for the South African job market. The platform connects job seekers with employers through advanced job matching, ATS integration, and comprehensive career management tools. + +## ๐ŸŒŸ Features + +### For Job Seekers +- **Advanced Job Search**: Search jobs by keywords, location, salary, and industry +- **Profile Management**: Create detailed professional profiles with skills and experience +- **CV Builder & Management**: Upload, edit, and optimize CVs with ATS scoring +- **Job Applications**: Apply directly to jobs with cover letter customization +- **Job Alerts**: Get notified about relevant job opportunities via email +- **Application Tracking**: Monitor application status and employer responses +- **ATS Resume Checker**: Optimize resumes for Applicant Tracking Systems +- **Career Resources**: Access blog content and career development materials + +### For Employers +- **Company Profiles**: Create comprehensive company profiles with verification +- **Job Posting**: Post jobs with AI-enhanced descriptions +- **Candidate Management**: Browse and manage job applications +- **ATS Integration**: Built-in Applicant Tracking System functionality +- **Analytics Dashboard**: Track job performance and candidate metrics +- **Billing Management**: Flexible subscription plans and billing +- **Document Verification**: CIPC registration and company verification +- **Candidate Matching**: AI-powered candidate recommendation system + +### Platform Features +- **Multi-Source Job Aggregation**: Scrapes jobs from major SA job boards +- **SEO Optimized**: Dynamic SEO for better search engine visibility +- **Responsive Design**: Mobile-friendly interface +- **Email Notifications**: Automated email system for alerts and updates +- **Admin Dashboard**: Comprehensive administrative controls +- **Performance Monitoring**: Built-in monitoring and analytics + +## ๐Ÿ—๏ธ Architecture + +### Technology Stack +- **Backend**: Python 3.8+ with Flask framework +- **Database**: MySQL with SQLAlchemy ORM +- **Frontend**: HTML5, CSS3, JavaScript with Bootstrap +- **Job Scraping**: Custom scrapers for Career24, PNet, Indeed, CareerJunction +- **Email**: Integrated email system for notifications +- **Caching**: Redis for performance optimization +- **Task Queue**: Celery for background job processing + +### Project Structure +``` +jobfinders/ +โ”œโ”€โ”€ src/ # Core application code +โ”‚ โ”œโ”€โ”€ controllers/ # Business logic controllers +โ”‚ โ”œโ”€โ”€ database/ # Database models and migrations +โ”‚ โ”œโ”€โ”€ routes/ # Flask route definitions +โ”‚ โ”œโ”€โ”€ scrappers/ # Job scraping modules +โ”‚ โ”œโ”€โ”€ utils/ # Utility functions +โ”‚ โ”œโ”€โ”€ config/ # Configuration management +โ”‚ โ””โ”€โ”€ main/ # Application factory +โ”œโ”€โ”€ template/ # Jinja2 templates +โ”‚ โ”œโ”€โ”€ jobseekers/ # Job seeker interfaces +โ”‚ โ”œโ”€โ”€ company/ # Employer interfaces +โ”‚ โ”œโ”€โ”€ admin/ # Admin dashboard +โ”‚ โ”œโ”€โ”€ jobs/ # Job listing pages +โ”‚ โ”œโ”€โ”€ ats/ # ATS tools +โ”‚ โ””โ”€โ”€ layouts/ # Base templates +โ”œโ”€โ”€ static/ # CSS, JS, images +โ”œโ”€โ”€ requirements.txt # Python dependencies +โ””โ”€โ”€ app.py # Application entry point +``` + +## ๐Ÿš€ Installation + +### Prerequisites +- Python 3.8 or higher +- MySQL 5.7+ or MariaDB +- Redis (for caching) +- Git + +### Local Development Setup + +1. **Clone the repository** + ```bash + git clone https://github.com/jobfinders-site/jobfinders.git + cd jobfinders + ``` -Welcome to the JobFinders Application repository! This project is designed to help users search and apply for job openings in South Africa through a user-friendly web interface. +2. **Create virtual environment** + ```bash + python -m venv venv + source venv/bin/activate # On Windows: venv\Scripts\activate + ``` -## Table of Contents +3. **Install dependencies** + ```bash + pip install -r requirements.txt + ``` -- [Introduction](#introduction) -- [Features](#features) -- [Technologies Used](#technologies-used) -- [Installation](#installation) -- [Usage](#usage) -- [Contributing](#contributing) -- [License](#license) -- [Contact](#contact) +4. **Environment Configuration** + Create a `.env` file in the root directory: + ```env + SECRET_KEY=your-secret-key-here + DATABASE_URL=mysql://username:password@localhost/jobfinders + REDIS_URL=redis://localhost:6379/0 + MAIL_SERVER=smtp.gmail.com + MAIL_PORT=587 + MAIL_USERNAME=your-email@gmail.com + MAIL_PASSWORD=your-app-password + ``` -## Introduction +5. **Database Setup** + ```bash + # Create database + mysql -u root -p -e "CREATE DATABASE jobfinders;" + + # Run migrations (if using Flask-Migrate) + flask db init + flask db migrate -m "Initial migration" + flask db upgrade + ``` -The JobFinders Application aims to simplify the job search process by providing a platform where users can browse and apply for job listings that match their skills and preferences. The application aggregates job postings from various sources, offering a comprehensive selection of opportunities. +6. **Start the application** + ```bash + python app.py + ``` -## Features +7. **Access the application** + Open your browser and navigate to `http://localhost:8084` + +### Production Deployment + +For production deployment, consider: +- Using Gunicorn or uWSGI as the WSGI server +- Nginx as a reverse proxy +- SSL certificate configuration +- Environment-specific configuration files +- Database connection pooling +- Redis configuration for caching + +## ๐Ÿ“– Usage + +### Job Seekers +1. **Register**: Create an account with email verification +2. **Profile Setup**: Complete your professional profile +3. **Upload CV**: Add your resume and get ATS scoring +4. **Job Search**: Browse jobs or set up job alerts +5. **Apply**: Submit applications with customized cover letters +6. **Track**: Monitor your application status + +### Employers +1. **Company Registration**: Create and verify your company profile +2. **Subscription**: Choose an appropriate billing plan +3. **Post Jobs**: Create job listings with AI assistance +4. **Manage Applications**: Review and respond to candidates +5. **Analytics**: Track job performance and hiring metrics + +### Administrators +- Access admin dashboard at `/admin` +- Monitor system performance and health +- Manage users, companies, and job listings +- Configure system settings and billing plans + +## ๐Ÿ”ง Configuration + +### Environment Variables +```env +# Application +SECRET_KEY=your-secret-key +DEBUG=False +BASE_URL=https://jobfinders.site + +# Database +DATABASE_URL=mysql://user:pass@host:port/dbname + +# Redis +REDIS_URL=redis://localhost:6379/0 + +# Email +MAIL_SERVER=smtp.gmail.com +MAIL_PORT=587 +MAIL_USE_TLS=True +MAIL_USERNAME=your-email@domain.com +MAIL_PASSWORD=your-password -- **Job Search:** Search for job openings based on keywords, location, and other criteria. -- **Job Filtering:** Filter search results by job type, industry, and salary range. -- **User Authentication:** Secure user registration and login to personalize the job search experience. -- **Job Application:** Apply directly to job postings through the platform. -- **Responsive Design:** Accessible on various devices, including desktops, tablets, and smartphones. +# External APIs +PAYFAST_MERCHANT_ID=your-merchant-id +PAYFAST_MERCHANT_KEY=your-merchant-key +``` + +### Database Configuration +The application uses SQLAlchemy with MySQL. Configure your database connection in `src/config/config.py`. -## Technologies Used +## ๐Ÿงช Testing -- **Frontend:** HTML, CSS, JavaScript -- **Backend:** Python (Flask) -- **Database:** SQLite -- **Version Control:** Git and GitHub +Run the test suite: +```bash +# Install test dependencies +pip install pytest pytest-flask -## Installation +# Run tests +pytest -To run the JobFinders Application locally, follow these steps: +# Run with coverage +pytest --cov=src +``` + +## ๐Ÿ“Š Monitoring -1. **Clone the repository:** +The application includes built-in monitoring for: +- Job scraping performance +- Application response times +- Database query performance +- Email delivery status +- User engagement metrics - ```bash - git clone https://github.com/job-finders/app.git - ``` +Access monitoring dashboards through the admin interface. + +## ๐Ÿค Contributing -2. **Navigate to the project directory:** +We welcome contributions! Please follow these steps: - ```bash - cd app - ``` +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request -3. **Create a virtual environment:** +### Development Guidelines +- Follow PEP 8 style guidelines +- Write tests for new functionality +- Update documentation as needed +- Ensure all tests pass before submitting PR - ```bash - python -m venv venv - ``` +## ๐Ÿ”’ Security -4. **Activate the virtual environment:** +- User authentication with session management +- Password hashing with secure algorithms +- CSRF protection on forms +- Input validation and sanitization +- SQL injection prevention through ORM +- XSS protection in templates - - On Windows: +Report security vulnerabilities to: security@jobfinders.site - ```bash - venv\Scripts\activate - ``` +## ๐Ÿ“„ API Documentation - - On macOS/Linux: +### Job Search API +``` +GET /api/jobs?search=python&location=cape-town +``` - ```bash - source venv/bin/activate - ``` +### User Authentication +``` +POST /api/auth/login +POST /api/auth/register +``` -5. **Install the required dependencies:** +### Job Applications +``` +POST /api/applications +GET /api/applications/{id} +``` - ```bash - pip install -r requirements.txt - ``` +Full API documentation available at `/api/docs` when running the application. -6. **Set up the database:** +## ๐Ÿš€ Deployment - ```bash - flask db init - flask db migrate -m "Initial migration." - flask db upgrade - ``` +### Using Docker +```bash +# Build image +docker build -t jobfinders . -7. **Run the application:** +# Run container +docker run -p 8084:8084 jobfinders +``` - ```bash - flask run - ``` +### Using Docker Compose +```bash +docker-compose up -d +``` + +## ๐Ÿ“ˆ Performance -8. **Access the application:** +- Database query optimization with indexes +- Redis caching for frequently accessed data +- Lazy loading for large datasets +- CDN integration for static assets +- Background job processing with Celery - Open your web browser and navigate to `http://localhost:5000`. +## ๐Ÿ› Troubleshooting -## Usage +### Common Issues -- **Browse Jobs:** Use the search bar to find jobs based on keywords and location. -- **Filter Results:** Apply filters to narrow down search results according to your preferences. -- **View Job Details:** Click on a job listing to view more information about the position. -- **Apply for Jobs:** If logged in, you can apply directly through the application by submitting your resume and cover letter. +**Database Connection Errors** +```bash +# Check MySQL service +sudo systemctl status mysql -## Contributing +# Verify connection +mysql -u username -p -h hostname +``` -We welcome contributions to enhance the JobFinders Application. To contribute: +**Job Scraping Issues** +- Check scraper logs in `logs/scraper.log` +- Verify external site accessibility +- Review rate limiting settings -1. Fork the repository. -2. Create a new branch for your feature or bug fix. -3. Commit your changes with descriptive messages. -4. Push your branch to your forked repository. -5. Submit a pull request detailing your changes. +**Email Delivery Problems** +- Verify SMTP credentials +- Check spam filters +- Monitor email delivery logs -Please ensure your code adheres to the project's coding standards and includes appropriate tests. +## ๐Ÿ“ž Support -## License +- **Documentation**: [docs.jobfinders.site](https://docs.jobfinders.site) +- **Email**: support@jobfinders.site +- **Issues**: [GitHub Issues](https://github.com/jobfinders-site/jobfinders/issues) -This project is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for more details. +## ๐Ÿ“œ License -## Contact +This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details. -For questions, suggestions, or feedback, please open an issue on the [GitHub repository](https://github.com/job-finders/app/issues). +## ๐Ÿ™ Acknowledgments + +- Flask community for the excellent web framework +- Bootstrap for responsive UI components +- Contributors and beta testers +- South African job boards for data partnerships --- -*Note: This README is intended to provide a comprehensive overview of the JobFinders Application. For the most up-to-date information, please refer to the [official GitHub repository](https://github.com/job-finders/app).* +**Made with โค๏ธ for the South African job market** + +*Last updated: January 2025*