Skip to content

Repository files navigation

WebCV - Job Portal & CV Management System

WebCV is a modern, full-stack application that connects job seekers with employers through automated job scraping, AI-powered CV text extraction, keyword matching, and a comprehensive applicant tracking dashboard.


📂 Folder Structure

The project has been organized into a professional, clean, and modular folder structure:

├── backups/                  # Database backups and archive files
├── docs/                     # System design, ML documentation, and guides
│   ├── DEPLOYMENT.md         # Server and deployment instructions
│   ├── FRONTEND_DOCUMENTATION.md
│   ├── ML_DOCUMENTATION.md   # CV extraction and matching algorithms
│   ├── MIGRATION_COMMANDS.md # Flask-Migrate CLI command list
│   └── SYSTEM_DOCUMENTATION.md
│
├── backend/                  # Flask backend service (Python)
│   ├── app/                  # Core application blueprints, models, and routes
│   │   ├── routes/           # Blueprints for authentication, jobs, etc.
│   │   └── models.py         # SQLAlchemy schemas (PostgreSQL)
│   │
│   ├── scraper/              # BongThom Selenium job scraper package
│   │   ├── auto_scraper.py   # Scraper engine
│   │   ├── scheduler.py      # Daily cron job trigger (APScheduler)
│   │   └── run_scraper_now.py# Manual execution script
│   │
│   ├── scripts/              # Maintenance and developer utility scripts
│   │   ├── seed.py           # Populates initial data
│   │   ├── check_jobs.py     # Database queries check helper
│   │   └── check_notifications.py
│   │
│   ├── logs/                 # Centralized logs folder (ignored by git)
│   ├── config.py             # App configurations
│   ├── run.py                # Gunicorn / Flask entry point
│   └── requirements.txt      # Python dependencies
│
├── src/                      # Next.js frontend app (React / TypeScript)
│   ├── pages/                # File-system router routes and page views
│   ├── components/           # Reusable UI components (Navbar, Layouts, etc.)
│   ├── lib/                  # Fetch API helpers and shared types
│   └── styles/               # Global CSS styles
│
├── ml/                       # Machine Learning service codebase (FastAPI)
│   ├── data/                 # Job description dataset for Cosine indexing
│   ├── src/                  # Core vectorizer and layout parsing modules
│   └── main.py               # API route entrypoint
│
├── docker-compose.yml        # Main multi-container composer file
└── Dockerfile                # Next.js production build container

🚀 Getting Started

1. Run via Docker Compose (Recommended)

Make sure you have Docker installed, then boot the entire stack (Database, Backend, Worker, Frontend, and Nginx proxy):

docker compose up --build -d

Access points:


2. Manual Development Setup

Next.js Frontend

  1. Navigate to root and install dependencies:
    npm install
  2. Start the local server:
    npm run dev
    The site will be available on http://localhost:3000.

Flask Backend

  1. Move to the backend folder:
    cd backend
  2. Execute setup helper to configure virtual environment and .env template:
    • On Linux/macOS: bash setup.sh
    • On Windows: setup.bat
  3. Edit the newly generated .env file to customize database links.
  4. Run migrations and seed files:
    flask db upgrade
    python -m scripts.seed
  5. Start Flask development server:
    python run.py

🛠️ Utility Module Commands

When running backend scripts or the scraper manually outside of Docker, execute them as python package modules from the backend/ directory:

  • Seed database:
    python -m scripts.seed
  • Execute job scraper immediately:
    python -m scraper.run_scraper_now
  • Launch scraper scheduler:
    python -m scraper.scheduler
  • Verify database notifications count:
    python -m scripts.check_notifications

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages