Application web de scraping d'offres d'emploi depuis plusieurs sources, avec interface moderne et export des donnees.
- Recherche multi-sources : RemoteOK, Jobicy, Arbeitnow, Welcome to the Jungle
- Filtres avances : mots-cles, localisation, type de contrat, remote only
- Tri des resultats : par date, salaire, pertinence
- Export des donnees : CSV et JSON
- Interface responsive : design moderne avec Tailwind CSS
- Pagination : navigation facile dans les resultats
| Composant | Technologies |
|---|---|
| Backend | FastAPI, httpx, BeautifulSoup4, Playwright, Pydantic |
| Frontend | React 18, TypeScript, Tailwind CSS, Vite |
| Infrastructure | Docker, Docker Compose, Nginx |
Windows :
scripts\setup.batLinux/Mac :
chmod +x scripts/setup.sh
./scripts/setup.sh# Lancer toute l'application
docker-compose up -d
# Acceder a l'application
# Frontend: http://localhost
# Backend API: http://localhost:8000
# Documentation: http://localhost:8000/docscd backend
# Creer l'environnement virtuel
python -m venv venv
# Activer l'environnement (Windows)
venv\Scripts\activate
# Activer l'environnement (Linux/Mac)
source venv/bin/activate
# Installer les dependances
pip install -r requirements.txt
# Installer Playwright (pour Welcome to the Jungle)
playwright install chromium
# Lancer le serveur
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd frontend
# Installer les dependances
npm install
# Lancer le serveur de developpement
npm run devCopiez .env.example vers .env et ajustez les valeurs :
# Backend Configuration
BACKEND_HOST=0.0.0.0
BACKEND_PORT=8000
# Frontend Configuration
VITE_API_URL=http://localhost:8000
# Scraping Configuration
SCRAPER_DELAY=1.0
MAX_RETRIES=3- Ouvrir le frontend sur
http://localhost:5173(dev) ouhttp://localhost(Docker) - Entrer des mots-cles de recherche (ex: "developer", "react", "python")
- Optionnel: ajouter une localisation, un type de contrat
- Selectionner les sources a scraper
- Cliquer sur "Rechercher"
- Parcourir les resultats et exporter en CSV/JSON si necessaire
Lance une recherche d'offres d'emploi.
{
"keywords": "developer react",
"location": "Paris",
"sources": ["remoteok", "jobicy", "arbeitnow", "welcometothejungle"],
"remote": false,
"contractType": "CDI"
}Exporte les derniers resultats de recherche.
Verification de l'etat de l'API.
La documentation interactive est disponible sur:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
JobScraper/
├── backend/
│ ├── app/
│ │ ├── api/ # Routes API (future)
│ │ ├── core/ # Configuration
│ │ │ └── config.py
│ │ ├── scrapers/ # Modules de scraping
│ │ │ ├── remoteok.py
│ │ │ ├── jobicy.py
│ │ │ ├── arbeitnow.py
│ │ │ └── welcometothejungle.py
│ │ ├── services/
│ │ │ └── export_service.py
│ │ ├── main.py # Point d'entree FastAPI
│ │ └── models.py # Modeles Pydantic
│ ├── tests/ # Tests unitaires
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/ # Composants React
│ │ ├── services/ # Appels API
│ │ ├── types/ # Types TypeScript
│ │ ├── hooks/ # Custom hooks
│ │ ├── utils/ # Utilitaires
│ │ └── App.tsx
│ ├── Dockerfile
│ ├── nginx.conf
│ ├── package.json
│ └── vite.config.ts
├── docs/
│ └── CAHIER_DES_CHARGES.md
├── scripts/
│ ├── setup.sh # Script d'installation Linux/Mac
│ └── setup.bat # Script d'installation Windows
├── docker-compose.yml
├── .env.example
├── .gitignore
├── LICENSE
└── README.md
| Source | Type | Methode | Status |
|---|---|---|---|
| RemoteOK | API JSON | httpx | Active |
| Jobicy | API JSON | httpx | Active |
| Arbeitnow | API JSON | httpx | Active |
| Welcome to the Jungle | Web | Playwright | Active |
# Build et lancement
docker-compose up -d --build
# Voir les logs
docker-compose logs -f
# Arreter
docker-compose down- Connecter le repository GitHub
- Configurer les variables d'environnement
- Deployer le dossier
backend/
- Connecter le repository GitHub
- Configurer
VITE_API_URLvers l'URL du backend - Deployer le dossier
frontend/
# Backend
cd backend
pytest
# Frontend
cd frontend
npm test- Fork le projet
- Creer une branche (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add AmazingFeature') - Push la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Distribue sous licence MIT. Voir LICENSE pour plus d'informations.
JobScraper - Projet Portfolio