MojtabaSajadfar
I turn spatial data into interfaces people genuinely enjoy using.
Six years building WebGIS platforms, PWAs, and custom OpenLayers modules — from municipal fleet systems to national open-data catalogs.
$whoami
Mojtaba Sajadfar
$cat role.txt
Front-End Developer
$cat location.txt
Yazd, Islamic Republic Of Iran
$./stack.sh --core
Angular · TypeScript · Ionic · OpenLayers · NestJS
$status --available
From raw coordinates to shipped product.
I'm a Front-End Developer based in Yazd, Islamic Republic Of Iran, specializing in WebGIS applications and progressive web apps. For the past six years at Saafaa I've built and maintained high-performance mapping platforms for municipalities and national data programs — integrating spatial data, customizing open-source GIS libraries, and turning messy geographic datasets into interfaces people can actually navigate.
Outside client work, I design and ship full-stack products on my own, end to end — from front-end to back-end, including Iranzamin, a full-stack tourism guide built around a custom design system inspired by Achaemenid art and ancient Iran.
Where I've built.
A knowledge-based company building WebGIS applications to gather, share, and monitor spatial data. I've worked across the full product line — from national data platforms to municipal fleet and asset systems.
Amirkabir University, Arak, Islamic Republic Of Iran
Platforms in production, plus a handful I built on my own.
Front-end development and ongoing maintenance across six live GIS products at Saafaa, plus several personal projects — including Iranzamin, a full-stack tourism guide — each designed and shipped entirely on my own, front-end to back-end.
Iranzamin — Historic Iran Tourism Guide
Case studyA full-stack tourism-guide app for Iran's historic cities that I designed and built entirely on my own, front-end to back-end: a NestJS + PostgreSQL API behind a fully custom, hand-drawn interface — no default Ionic components — built around a design system inspired by Achaemenid art and ancient Iran, with lotus-inscription borders, Persepolis step patterns, rosette-shaped ratings, and iwan-arch imagery. Car and pedestrian route planning, an AR view for on-site exploration, place details with reviews and ratings, a light and dark home screen, and a full admin console for managing places, submissions, and comment moderation — fully bilingual, English and Persian, and backed by 32 end-to-end tests.
Yooz — Workforce Attendance Mobile App
A mobile HR and attendance app I designed and built end to end: two-step OTP login, live check-in dashboards, multi-step approval workflows (Cartable), payroll, push notifications for approvals and shift updates, and an admin console for managing users, groups, and shifts.
Waqtnegar (وقتنگار) — Jira Worklog Manager
A mobile-first time-tracking companion for Jira that talks straight to the Jira REST API v2 with no backend of its own: sign in with a username and password or a Personal Access Token, browse your tasks with search and JQL-driven filters built on live Jira metadata, move issues through their real workflow, and log work in a few taps. Start a timer right on a task to measure the time, then confirm and submit the final worklog yourself. Daily, weekly, and monthly reports run on a Jalali calendar inside a Persian, RTL, dark-themed UI — built around one job: find a task fast, log time fast, see where it went.
Contacts — Multi-List Contact Manager
A mobile contacts manager I designed and built solo with Angular 20, Ionic 8, and Capacitor 8: multiple contact lists with custom cover photos and colour-coded icons, contacts added manually or pulled straight from the device's native address book, and one-tap dialling with a confirmation step. Iranian mobile numbers are validated and auto-formatted everywhere they're entered, storage is offline-first, and the whole UI ships fully RTL with Persian typography.
shamsi-datepicker
DetailsA dependency-free Jalali/Gregorian date & time picker written in plain TypeScript: a DOM-free core usable from Node or any framework, with thin adapters for Angular, React, and vanilla JS. Single-date or range selection, an optional time picker, full RTL/Persian localisation, and independent per-instance theming for multiple pickers on the same page.
Geotajak3
An open-source WebGIS core for organizations managing large volumes of geographic data — vector/raster layers, satellite imagery, and 3D maps, with full OGC-standard services, advanced cartography, cache-optimized rendering, a field-ready mobile GIS app, and Cartable workflow tools built in.
geotajak-sdk
A lightweight OpenLayers wrapper I designed and published as an npm package: WMS layers with live GetFeatureInfo, draw & measurement tools, proxied or direct XYZ basemaps, and a fully theme-able UI (toolbar, layer switcher, color picker, HUD) — framework-agnostic, with ready-made React and Angular examples.
Data Catalog Platform
A national-scale hub for searching, previewing, and downloading spatial datasets published by government and organizational data providers, with direct WMS/WFS access, rich metadata, and category/tag-based filtering.
Accident Analysis
Maps and analyzes traffic-accident data so authorities can spot risk patterns and act on road safety — with ShapeFile, GeoTIFF, and KML import, layer version control, and full OGC (WMS/WFS/WCS/CSW) compliance, built on the Geotajak core.
Drilling Management
Digitizes the permit process for urban drilling and excavation, tracking operations on the map in real time to catch and prevent utility-network overlaps before they happen.
Fleet Management (FMS)
Real-time GPS tracking and fleet control for Shiraz Municipality, built on the Traccar platform — live vehicle positions, driver & shift management, route reports, and smart alerts.
Web development, step by step.
Three courses I've put together: a beginner path through HTML, CSS and JavaScript, an advanced course on JavaScript and TypeScript, and a specialist WebGIS workshop on OGC services and OpenLayers.
HTML, CSS & JavaScript
Start from zero and build real web pages: structure with HTML, style and lay out with CSS, then add interactivity with JavaScript and the DOM.
JavaScript & TypeScript
For developers who know the basics: go deeper into JavaScript and its patterns, then add static typing with TypeScript for safer, more maintainable code.
WebGIS, OGC & OpenLayers
From GIS concepts and coordinate systems to standard OGC services, interactive maps with OpenLayers and SLD styling — with GeoServer and PostGIS.
Let's build something worth putting on the map.
Open to front-end and WebGIS roles — reach out by email or phone, or send a message on LinkedIn.
I'M MSR