Scrapt Projekte von freelancermap.de, matched sie gegen dein Skill-Profil und zeigt die Ergebnisse in einem Web-Interface an.
- Scraping der Projektbörse via AJAX-API
- Matching gegen ein konfigurierbares Skill-Profil mit Score (0–100)
- SQLModel ORM für typsichere Datenbankzugriffe
- SQLite-Datenbank zur Speicherung aller Projekte und Matches
- Web-Interface (Flask) mit Matches, Detailansicht und Statistiken
- Desktop-UI (tkinter) zum Starten des Scrapers ohne Terminal
- CSV-Export der Matches
| Kategorie | Max. Punkte |
|---|---|
| Keyword-Matches (exakt) | 30 |
| Keyword-Matches (partiell) | 20 |
| Skills in Beschreibung | 20 |
| Bevorzugte Keywords in Beschreibung | 10 |
| Aktualität (exponentieller Verfall, 15 Tage) | 20 |
Projekte mit ausgeschlossenen Keywords erhalten automatisch Score 0.
- Python 3.10+
- uv – schneller Python Package Manager
- Homebrew (macOS) für tkinter:
brew install python-tk@3.XX
# Repository klonen
git clone ...
cd freelancermap
# Abhängigkeiten installieren & virtuelle Umgebung initialisieren
uv sync.env Datei im Projektordner anlegen:
FREELANCERMAP_USERNAME=deine@email.de
FREELANCERMAP_PASSWORD=deinPasswortconfig.py ist git-ignored (persönliches Profil, soll nicht gepusht/gepullt werden).
Einmalig aus dem Template anlegen und anpassen:
cp config.example.py config.pypython3 projectMatcher.pyZugangsdaten und Einstellungen können direkt im Tab Konfiguration eingetragen werden.
python3 webserver.py
# → http://localhost:5000python3 -m sqlite_web freelancermap.db
# → http://localhost:8080Das Skill-Profil wird in config.py gepflegt (siehe Skill-Profil):
PROFILE = {
'skills': ['Python', 'JavaScript', 'React', 'Vue', 'AWS', ...],
'preferred_keywords': ['Backend', 'Frontend', 'Fullstack', ...],
'excluded_keywords': ['SAP', 'Drupal'],
}freelancermap/
├── projectMatcher.py # Scraper + Matching-Logik
├── webserver.py # Flask Web-Interface
├── models.py # SQLModel ORM-Definitionen
├── database.py # Datenbankverbindung & Initialisierung
├── templates/ # HTML-Templates (Tailwind)
├── docs/ # Screenshots
├── pyproject.toml # Abhängigkeiten (uv)
├── uv.lock # Lock-File für reproduzierbare Installs
└── .env # Zugangsdaten (nicht im Git)
MIT

