Skip to content

divyanshu12-fullstack/Caliber

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Caliber - Job Scraper Application

A full-stack job scraping application that collects job listings from multiple sources (LinkedIn, Naukri) and presents them in a beautiful, searchable web interface.

Overview

Caliber is a modern job scraping tool with:

  • πŸ•·οΈ Web Scraping - Extract jobs from LinkedIn and Naukri
  • 🎨 Beautiful Frontend - React + Vite with Tailwind CSS
  • πŸ”Œ Robust Backend - Node.js/Express API
  • πŸ” Smart Search - Filter by title, company, location, salary
  • πŸ“Š Data Management - Export to CSV, view statistics
  • πŸ“± Responsive Design - Works on all devices

Project Structure

caliber/
β”œβ”€β”€ frontend/                 # React + Vite UI
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # Header, JobCard, FilterPanel
β”‚   β”‚   β”œβ”€β”€ App.jsx          # Main application
β”‚   β”‚   β”œβ”€β”€ App.css          # Styles and animations
β”‚   β”‚   └── index.css        # Global Tailwind CSS
β”‚   β”œβ”€β”€ tailwind.config.js   # Tailwind configuration
β”‚   β”œβ”€β”€ package.json         # Frontend dependencies
β”‚   └── README.md            # Frontend documentation
β”‚
β”œβ”€β”€ backend/                  # Node.js/Express API
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ controllers/      # Request handlers
β”‚   β”‚   β”œβ”€β”€ routes/          # API endpoints
β”‚   β”‚   β”œβ”€β”€ services/        # Business logic
β”‚   β”‚   β”œβ”€β”€ models/          # Database models
β”‚   β”‚   β”œβ”€β”€ middleware/      # Express middleware
β”‚   β”‚   β”œβ”€β”€ config/          # Configuration
β”‚   β”‚   β”œβ”€β”€ app.js           # Express app
β”‚   β”‚   └── server.js        # Server entry
β”‚   β”œβ”€β”€ package.json         # Backend dependencies
β”‚   └── README.md            # Backend documentation
β”‚
β”œβ”€β”€ linkedin.py              # LinkedIn scraper
β”œβ”€β”€ naukri.py               # Naukri scraper
β”œβ”€β”€ main.py                 # Scraper orchestrator
β”œβ”€β”€ requirements.txt        # Python dependencies
β”œβ”€β”€ pyproject.toml         # Python project config
└── README.md              # This file

Tech Stack

Frontend

  • React 19 - UI framework
  • Vite - Build tool and dev server
  • Tailwind CSS - Utility-first styling
  • Lucide React - Icon library
  • Axios - HTTP client

Backend

  • Node.js - Runtime environment
  • Express - Web framework
  • MongoDB - Database (optional)
  • Axios - HTTP requests
  • Child Process - Execute Python scripts

Python Scrapers

  • Selenium/BeautifulSoup - Web scraping
  • Requests - HTTP library
  • Pandas - Data processing

Quick Start

1. Clone the Repository

git clone https://github.com/Monkdev7/Caliber.git
cd Caliber

2. Setup Frontend

cd frontend
npm install
cp .env.example .env.local
npm run dev

Frontend will be available at: http://localhost:5173

3. Setup Backend

cd ../backend
npm install
npm start

Backend will be available at: http://localhost:5000

4. Setup Python Scrapers

cd ..
python -m venv .venv
.venv\Scripts\activate  # On Windows
# or
source .venv/bin/activate  # On macOS/Linux

pip install -r requirements.txt

Features

Job Search & Filtering

  • πŸ” Search by job title or company
  • 🏒 Filter by company name
  • πŸ“ Filter by location
  • πŸ’Ό Filter by job source (LinkedIn/Naukri)
  • ⭐ View job statistics

Data Management

  • πŸ“₯ Scrape jobs from multiple sources
  • πŸ’Ύ Store jobs in database
  • πŸ“₯ Export jobs to CSV
  • πŸ”„ Real-time updates

User Interface

  • πŸ“± Fully responsive design
  • ⚑ Fast and smooth interactions
  • 🎨 Modern, professional styling
  • πŸŒ™ Clean dark-friendly design

API Endpoints

Jobs

  • GET /api/jobs - Fetch all jobs
  • POST /api/jobs - Create a new job
  • GET /api/jobs/:id - Get job by ID
  • PUT /api/jobs/:id - Update job
  • DELETE /api/jobs/:id - Delete job

Scraping

  • POST /api/scrape - Trigger scraping for a source
  • GET /api/scrape/status - Get scrape status

Environment Variables

Frontend (.env.local)

VITE_API_URL=http://localhost:5000/api

Backend (.env)

PORT=5000
MONGODB_URI=mongodb://localhost:27017/caliber
NODE_ENV=development

Running the Application

All Services

# Terminal 1: Frontend
cd frontend
npm run dev

# Terminal 2: Backend
cd backend
npm start

# Terminal 3: Python Scrapers (optional)
cd ..
python main.py

Production Build

# Frontend
cd frontend
npm run build
npm run preview

# Backend
cd backend
npm run build
npm start

Development

Frontend Development

cd frontend
npm run dev          # Start dev server
npm run lint         # Check code quality
npm run build        # Build for production

Backend Development

cd backend
npm run dev          # Start with nodemon
npm run lint         # Check code quality
npm test             # Run tests

Python Scrapers

python main.py       # Run main scraper
python linkedin.py   # Run LinkedIn scraper only
python naukri.py     # Run Naukri scraper only

Database Schema

Jobs Collection

{
  _id: ObjectId,
  title: String,
  company: String,
  location: String,
  salary: String,
  experience: String,
  description: String,
  url: String,
  source: String,      // 'linkedin' or 'naukri'
  posted_date: Date,
  scraped_at: Date,
  created_at: Date,
  updated_at: Date
}

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a pull request

Issues & Troubleshooting

Frontend Won't Load

  1. Check if backend is running: http://localhost:5000
  2. Clear browser cache and hard refresh
  3. Check .env.local API URL

API Connection Failed

  1. Verify backend is running
  2. Check CORS settings in backend
  3. Verify API URL in frontend .env.local

Scraping Issues

  1. Check Python environment is activated
  2. Verify dependencies: pip install -r requirements.txt
  3. Check browser/scraper logs for errors

Database Connection

  1. Ensure MongoDB is running
  2. Check connection string in backend .env
  3. Verify database credentials

Performance Tips

  • Frontend caches jobs in state
  • Backend implements pagination
  • Images are lazy-loaded
  • CSS is optimized with Tailwind purging

Security

  • Environment variables for sensitive data
  • Input validation on frontend and backend
  • CORS configuration
  • Rate limiting (recommended)
  • SQL/NoSQL injection prevention

Deployment

Frontend Deployment

Deploy to: Vercel, Netlify, GitHub Pages, etc.

npm run build
# Upload dist/ folder

Backend Deployment

Deploy to: Heroku, Railway, Render, AWS, etc.

npm run build
# Set environment variables
# Deploy server

Performance Metrics

  • ⚑ Frontend First Contentful Paint: < 1s
  • πŸš€ Backend Response Time: < 100ms
  • πŸ“Š Database Queries: Indexed and optimized
  • πŸ”„ Real-time job updates

Future Enhancements

  • User authentication and profiles
  • Saved/bookmarked jobs
  • Email job alerts
  • AI-powered job recommendations
  • Advanced salary analytics
  • Integration with Indeed, Glassdoor
  • Browser extension
  • Mobile app (React Native)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact & Support

Acknowledgments

  • React and Vite communities
  • Tailwind CSS team
  • Job boards for providing opportunities
  • All contributors

Happy job hunting! πŸš€

Made with ❀️ by Monkdev7

About

EPICS project college

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 59.9%
  • JavaScript 29.5%
  • Python 8.9%
  • CSS 1.4%
  • HTML 0.3%