Skip to content
View mojtaba-py-code's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report mojtaba-py-code

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
mojtaba-py-code/README.md

Mojtaba Karimi

Python backend, automation & data engineering — FastAPI · async SQLAlchemy · Postgres · Docker

LinkedIn Email

I build backend services, scrapers and data pipelines in Python, and I ship them the way I'd want to inherit them: typed, tested, containerised, and wired to CI. Electrical engineering graduate, based in Ankara, Türkiye (UTC+03:00), working remotely.

Available for freelance projects, and open to junior/mid backend roles. My working day overlaps European business hours. Reach me by email or on LinkedIn.

What I build for clients

  • Web scraping & data extraction — crawlers that respect robots.txt and rate limits and hand back clean CSV, JSON or JSONL instead of half-parsed HTML.
  • REST APIs — FastAPI services with authentication, validation, database migrations and a container image that runs the same on your machine and on the server.
  • Automation & scheduled pipelines — a manual weekly routine turned into a job that runs on a schedule, keeps a history, and says so when it breaks.
  • Dashboards & reporting — the collected data charted, scored, and exported as HTML or PDF.

Two demos you can open right now

  • Price tracker — scrapes products, keeps the full price history, charts it and flags every change.
  • Travel search API — several providers behind one API, browsable from the interactive OpenAPI page.

Both run on a free instance, so the first request takes ~40s to wake it.

Every repository below runs ruff, mypy and pytest on each push, plus bandit and pip-audit for security. Each pipeline pins its GitHub Actions to full commit SHAs and asks for a read-only token, and CodeQL, Dependabot and secret-scanning push protection are enabled across all 12 actively maintained repositories. Together the suites run over 1,400 tests, and every project that names a coverage floor below fails its own build when coverage drops under it. The badges are live and the workflow files are right there, so you can check any claim I make here — please do.


Featured work

Tracks prices across stores over time and shows exactly when, and by how much, each one moved.

  • Plugin-per-store scraping: adding a shop is one new file, with no change to the pipeline, the API or the database layer.
  • Append-only price history, so every product carries a full trend line, its lowest-ever price, and a log of every detected change.
  • A FastAPI dashboard charts that history; the same data is available over the API.
  • Outbound fetches pass an SSRF guard, and a fixture scraper keeps the test suite offline and deterministic instead of dependent on a live shop.

Live demo → · free tier, first request takes ~40s to wake

80% coverage floor enforced in CI · FastAPI · SQLAlchemy · PostgreSQL · Chart.js

Turns a seed URL into a clean JSONL dataset without getting you blocked.

  • Crawls within the seeded site, extracts structured data from each page, and writes JSON Lines.
  • Respects robots.txt and holds itself to one request per second per host.
  • The SSRF guard resolves every URL and refuses private, loopback and link-local addresses — there is no flag to switch it off.
  • Handles what scrapers actually run into: oversized responses, redirect abuse, and credentials leaking into logs. Credentials come from the environment only and are redacted from output.

80% coverage floor enforced in CI · threat model written down in SECURITY.md · Python CLI · JSONL · bandit-clean

Travel search across several providers behind one API that degrades instead of falling over.

  • Per-provider circuit breakers: a slow upstream costs you that provider's results, not the whole response.
  • JWT authentication with role-based access, plus Redis-backed rate limiting and caching.
  • Prometheus RED metrics per route, so latency and error rate are visible per endpoint.
  • Clean Architecture layering with Alembic migrations.

Live demo → · free tier, first request takes ~40s to wake

90% coverage floor enforced in CI · async SQLAlchemy · Redis · Prometheus · Alembic

A self-hostable threat-intelligence platform that runs fully offline by default.

  • Collects indicators from feeds, enriches and scores them, and correlates them into campaigns.
  • Shares the result over STIX 2.1 / MISP, with a live SSE alert stream for new detections.
  • Every outbound request goes through an SSRF guard that resolves the host and rejects private, link-local and loopback ranges before the socket opens.

80% coverage floor enforced in CI · FastAPI · async SQLAlchemy · Celery · Alembic · Docker Compose + nginx

Ingests log streams of any size on flat memory, then answers questions about them in seconds.

  • Streaming ingestion whose memory behaviour is measured by a benchmark harness that runs in CI, not asserted in prose.
  • Columnar Parquet/DuckDB store with partition pruning behind a safe query language.
  • Statistical anomaly detection and security analytics on top of the same store.
  • Served three ways: REST API, dashboard and CLI.

80% coverage floor enforced in CI · DuckDB · Parquet · FastAPI · mypy --strict

Fifteen operational tools behind a single CLI, one config format and one logging setup.

  • Backups, file sync, Docker and SSH helpers, deployment and monitoring.
  • Archive extraction refuses both traversal names and symlink members.
  • Every subprocess call is an argument list against an allow-listed binary, never a shell.

85% coverage floor enforced in CI · Python CLI · bandit-clean · pip-audit in CI

Scores a dataset from 0 to 100 and names the rules and rows that moved the number.

  • Profiles a tabular dataset, validates it against a rule battery, and cleans it.
  • Scores it across five dimensions; each dimension names the rules that moved it and the row positions that failed, so a bad number tells you what to fix.
  • Tracks schema and distribution drift between versions of the same dataset.
  • Reports as HTML, PDF or an interactive dashboard; every file it reads is untrusted input.

80% coverage floor enforced in CI · Clean Architecture · pandas · Streamlit · Docker


Other projects

  • AI Job Market Intelligence — NLP skill extraction and semantic job search · 85% coverage floor enforced in CI
  • Vault Backup — encrypted backups with content-addressed deduplication · 80% coverage floor enforced in CI
  • File Automation — watched-folder file processing · 85% coverage floor enforced in CI

Upstream

  • litestar-org/litestar#5017 — merged: corrected duplicated words in two error messages.
  • pypa/pip-audit#1111 — proposed validating --output before running the audit, so a scan does not complete only to fail on an unwritable path. Not merged.

Toolbox

Python FastAPI PostgreSQL SQLAlchemy DuckDB Redis Celery pandas Docker Pytest Ruff mypy GitHub Actions


Open to backend, API and data-engineering roles — remote, contract or freelance. Reach me on LinkedIn or by email.

Pinned Loading

  1. smart-travel-aggregator smart-travel-aggregator Public

    Production-grade travel aggregation API — FastAPI, async SQLAlchemy, resilient provider adapters, JWT/RBAC, structured logging, 90%+ tested.

    Python

  2. devops-utility-script-collection devops-utility-script-collection Public

    Production-ready, security-first DevOps automation toolkit: backups, file sync, Docker, SSH, networking, deployment and monitoring behind one Python CLI.

    Python

  3. polite-web-crawler polite-web-crawler Public

    A polite, security-conscious web crawler & scraper in Python. Respects robots.txt and rate limits, guards against SSRF, and exports structured data as JSON Lines.

    Python

  4. enterprise-file-automation enterprise-file-automation Public

    Config-driven file automation: files dropped in an inbox get classified, converted, renamed, compressed, encrypted and backed up. Idempotent; originals never mutated.

    Python

  5. universal-ecommerce-price-intelligence universal-ecommerce-price-intelligence Public

    Plugin-based price tracker: scrapes product data, keeps an append-only price history, detects changes and charts trends in a FastAPI dashboard. SSRF-guarded.

    Python

  6. cyber-threat-intelligence-platform cyber-threat-intelligence-platform Public

    Self-hostable threat intelligence platform: collects, enriches, scores and correlates IOCs, then shares them over STIX 2.1/MISP. Offline-first and SSRF-guarded.

    Python