{
  "profile": {
    "name": "Shahriyar Aghajani",
    "headline": "Senior Android Developer",
    "specialties": [
      "Kotlin",
      "Jetpack Compose",
      "Kotlin Multiplatform"
    ],
    "tagline": "I build fast, maintainable apps for Android, iOS, desktop and the web, from one Kotlin codebase.",
    "intro": "Senior Android and Kotlin Multiplatform developer with 9+ years of shipping production apps: e-commerce and e-learning apps used by millions, and a multi-tenant B2B platform I architected end-to-end. I can take your idea from the first sketch to the store, or level up the app you already have.",
    "summary": "9+ years building production Kotlin/Android applications; the last several spent architecting and essentially single-handedly driving a large multi-tenant B2B platform end-to-end: a Compose Multiplatform client (Android/iOS/Desktop) and its Spring Boot backend. Deep expertise in Kotlin Multiplatform, Jetpack Compose, and Clean Architecture, with full-stack range from offline-first mobile data layers to backend service design and open-source library authorship. EU Blue Card holder based in Düsseldorf, Germany.",
    "location": "Düsseldorf, Germany",
    "workAuthorization": "EU Blue Card holder",
    "availability": "Open to new projects and collaborations",
    "usersReached": "2M+",
    "cvUrl": "Shahriyar_Aghajani_CV.pdf",
    "contact": {
      "email": "shahriyar@aghajani.email",
      "links": [
        {
          "kind": "linkedin",
          "label": "linkedin.com/in/sha-ag",
          "url": "https://linkedin.com/in/sha-ag"
        },
        {
          "kind": "github",
          "label": "github.com/Shahriyar13",
          "url": "https://github.com/Shahriyar13"
        }
      ]
    },
    "languages": [
      {
        "name": "English",
        "level": "fluent"
      },
      {
        "name": "Persian",
        "level": "native"
      },
      {
        "name": "German",
        "level": "basic"
      }
    ]
  },
  "services": [
    {
      "id": "android",
      "title": "Native Android apps",
      "summary": "Modern, maintainable Android apps in Kotlin and Jetpack Compose that follow Material 3, from the first prototype to the Google Play release.",
      "deliverables": [
        "Jetpack Compose UI with Material 3",
        "Offline-first data with Room",
        "Push notifications with FCM",
        "Play Store release and CI"
      ],
      "technologies": [
        "Kotlin",
        "Jetpack Compose",
        "Material 3",
        "Room",
        "Coroutines & Flow",
        "Hilt",
        "Koin"
      ]
    },
    {
      "id": "multiplatform",
      "title": "One codebase, every platform",
      "summary": "Kotlin Multiplatform and Compose Multiplatform apps that share business logic and UI across Android, iOS, desktop and the web: fewer bugs, one team, faster releases.",
      "deliverables": [
        "Shared domain and data layers",
        "Shared Compose UI for Android, iOS and desktop",
        "Platform integrations where they matter",
        "One release pipeline"
      ],
      "technologies": [
        "Kotlin Multiplatform",
        "Compose Multiplatform",
        "Ktor",
        "Room",
        "SQLDelight",
        "Koin"
      ]
    },
    {
      "id": "web",
      "title": "Web apps in Kotlin",
      "summary": "App-like web experiences compiled to WebAssembly from the same Kotlin code as your mobile apps, like the site you are looking at right now.",
      "deliverables": [
        "Compose for Web (Kotlin/Wasm)",
        "Responsive Material 3 layouts",
        "Shared code with your mobile apps",
        "Static hosting, no server required"
      ],
      "technologies": [
        "Compose Multiplatform",
        "Kotlin/Wasm",
        "Material 3",
        "Navigation Compose"
      ]
    },
    {
      "id": "backend",
      "title": "Backends and APIs",
      "summary": "Spring Boot services in Kotlin with PostgreSQL, JWT authentication and a clean, hexagonal architecture, designed together with the apps that use them.",
      "deliverables": [
        "REST API design and implementation",
        "Authentication and role-based access",
        "PostgreSQL data modelling",
        "Ports and adapters for integrations"
      ],
      "technologies": [
        "Spring Boot",
        "Kotlin",
        "PostgreSQL",
        "REST",
        "JWT"
      ]
    },
    {
      "id": "documents",
      "title": "Documents and reporting",
      "summary": "Invoices, purchase orders and reports generated as PDF and Excel from one declarative spec, with per-tenant numbering rules. The work behind my open-source library docdsl.",
      "deliverables": [
        "PDF and Excel from one spec",
        "Per-tenant document numbering",
        "Reporting dashboards",
        "Correct pagination and column sizing"
      ],
      "technologies": [
        "docdsl",
        "OpenPDF",
        "Apache POI",
        "Kotlin"
      ]
    },
    {
      "id": "architecture",
      "title": "Architecture and modernisation",
      "summary": "Untangle legacy code: migrate Java, XML and MVP apps to Kotlin, Compose and Clean Architecture, set up modularisation and CI, and mentor your team along the way.",
      "deliverables": [
        "Architecture review and roadmap",
        "Java to Kotlin and XML to Compose migration",
        "Modularisation with Gradle Kotlin DSL",
        "Code review and mentoring"
      ],
      "technologies": [
        "Clean Architecture",
        "MVVM",
        "MVI",
        "Modularization",
        "Gradle (Kotlin DSL)",
        "GitHub Actions"
      ]
    }
  ],
  "process": [
    {
      "title": "Discover",
      "description": "We clarify your goals, users and constraints, then agree on scope and milestones."
    },
    {
      "title": "Design and architect",
      "description": "Screens in Material 3 and a clean, testable architecture that fits your roadmap."
    },
    {
      "title": "Build in iterations",
      "description": "A working build every sprint, so you can test early and steer the product."
    },
    {
      "title": "Launch",
      "description": "Store submission or web deployment, with monitoring and crash reporting in place."
    },
    {
      "title": "Support and grow",
      "description": "Maintenance, new features and performance work after release."
    }
  ],
  "projects": [
    {
      "id": "flowerk",
      "name": "Flowerk",
      "tagline": "Multi-tenant B2B trade-management platform",
      "description": "A trade-management platform for industrial projects: RFQs, quotations, purchase orders, proforma invoices, invoices, packing lists, contracts, supplier inspections, freight forwarding, and HR attendance and leave. One Compose Multiplatform client for Android, iOS and desktop, shipped as several tenant-specific builds from a single codebase, backed by a Spring Boot service.",
      "highlights": [
        "Client structured around Clean Architecture (core, data, domain, presentation) with Koin across six modules",
        "Offline-first persistence with Room and versioned schema migrations; Ktor against a 30+ feature REST API",
        "Dual-format PDF and Excel document pipeline, plus a per-tenant engine that generates and validates document codes",
        "Driving the Clean Architecture migration of the Spring Boot backend: ports and adapters, transactional use cases"
      ],
      "category": "enterprise",
      "platforms": [
        "android",
        "ios",
        "desktop",
        "backend"
      ],
      "technologies": [
        "Kotlin",
        "Kotlin Multiplatform",
        "Compose Multiplatform",
        "Material 3",
        "Navigation Compose",
        "Clean Architecture",
        "Modularization",
        "Koin",
        "Room",
        "Ktor",
        "REST",
        "Coroutines & Flow",
        "Spring Boot",
        "PostgreSQL",
        "docdsl",
        "Android SDK"
      ],
      "organization": "MTP GmbH",
      "role": "Architect and lead developer",
      "startYear": 2022,
      "endYear": null,
      "status": "live",
      "metrics": [
        {
          "value": "30+",
          "label": "API features"
        },
        {
          "value": "3",
          "label": "platforms, one codebase"
        }
      ],
      "links": [],
      "featured": true,
      "sketch": "erp-dashboard",
      "accent": "#3F7CF4",
      "preview": "images/previews/flowerk.gif"
    },
    {
      "id": "docdsl",
      "name": "docdsl",
      "tagline": "Open-source Kotlin document-generation library",
      "description": "Describe a business document such as an invoice or a purchase order as data, and let a renderer turn it into a file. One declarative spec renders to PDF or Excel. Grew directly out of production PDF work and is published on Maven Central under Apache 2.0.",
      "highlights": [
        "A migrated generator shrank from between 700 and 1,100 lines of hand-built OpenPDF code to about 145",
        "Pagination-safe \"Page X of Y\" footers",
        "Font-metric-based column sizing instead of guessed widths",
        "Graceful fallback for non-Latin-1 scripts"
      ],
      "category": "developer-tools",
      "platforms": [
        "library"
      ],
      "technologies": [
        "Kotlin",
        "Kotlin DSL",
        "OpenPDF",
        "Apache POI",
        "Gradle (Kotlin DSL)",
        "Maven Central"
      ],
      "organization": "Open source",
      "role": "Author and maintainer",
      "startYear": 2026,
      "endYear": null,
      "status": "open-source",
      "metrics": [
        {
          "value": "~145",
          "label": "lines instead of 700 to 1,100"
        },
        {
          "value": "2",
          "label": "output formats"
        }
      ],
      "links": [
        {
          "kind": "source",
          "label": "GitHub",
          "url": "https://github.com/Shahriyar13/docdsl"
        },
        {
          "kind": "package",
          "label": "Maven Central",
          "url": "https://central.sonatype.com/artifact/app.duss.docdsl/docdsl-core"
        }
      ],
      "featured": true,
      "sketch": "code-to-document",
      "accent": "#E4572E"
    },
    {
      "id": "ecommerce-platform",
      "name": "EcommercePlatform",
      "tagline": "White-label multiplatform storefront",
      "description": "A white-label e-commerce platform: Kotlin Multiplatform storefront and manager apps for Android, iOS, desktop, JS and Wasm from one shared codebase, with a Spring Boot backend.",
      "highlights": [
        "Storefront and manager apps on five targets from one shared codebase",
        "Spring Boot backend with JWT authentication and role-based access",
        "Configurable payments: PayPal, Klarna, Apple Pay and Google Pay",
        "German delivery providers: DHL, Hermes, GLS and UPS",
        "Dynamic per-category custom fields and a reporting engine"
      ],
      "category": "commerce",
      "platforms": [
        "android",
        "ios",
        "desktop",
        "web",
        "backend"
      ],
      "technologies": [
        "Kotlin",
        "Kotlin Multiplatform",
        "Compose Multiplatform",
        "Kotlin/Wasm",
        "Material 3",
        "Navigation Compose",
        "Ktor",
        "Koin",
        "Spring Boot",
        "PostgreSQL",
        "JWT",
        "Android SDK"
      ],
      "organization": "Personal project",
      "role": "Author",
      "startYear": 2026,
      "endYear": null,
      "status": "in-development",
      "metrics": [
        {
          "value": "5",
          "label": "targets from one codebase"
        },
        {
          "value": "4",
          "label": "payment methods"
        }
      ],
      "links": [],
      "featured": true,
      "sketch": "storefront",
      "accent": "#8E5CF7"
    },
    {
      "id": "trade-marketing",
      "name": "Trade Marketing",
      "tagline": "Offline-first field-sales and retail-execution app",
      "description": "An app for field sales reps that keeps working without a connection: store visits, surveys and audits are captured offline and synced when connectivity returns. It helps the sales team boost sales with analytical data and reporting tools.",
      "highlights": [
        "Offline-first sync through a local Room store",
        "In-app route mapping and tracking for field reps, plus background location tracking for route verification",
        "Custom dynamic form generator for configurable store surveys and audits, with in-field photo capture",
        "Monitoring layer that cut runtime crashes by 30%"
      ],
      "category": "enterprise",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "Clean Architecture",
        "MVVM",
        "WorkManager",
        "Navigation Component",
        "Dagger",
        "LiveData & Data Binding",
        "Coroutines & Flow",
        "Room",
        "Camera2",
        "Firebase",
        "Glide",
        "Android SDK"
      ],
      "organization": "Golrang System",
      "role": "Android developer",
      "startYear": 2020,
      "endYear": 2022,
      "status": "internal",
      "metrics": [
        {
          "value": "-30%",
          "label": "runtime crashes"
        }
      ],
      "links": [],
      "featured": true,
      "sketch": "map-route",
      "accent": "#1E9E6A",
      "preview": "images/previews/trade-marketing.gif"
    },
    {
      "id": "gajino",
      "name": "Gajino",
      "tagline": "E-learning and online exam platform",
      "description": "An online learning platform with video courses, a PDF reader and live online exams for students.",
      "highlights": [
        "ExoPlayer-based video streaming optimised to cut load times by about 10%",
        "Redesigned the online exam flow, including interrupted sessions, so students join 30% faster",
        "Reduced the PDF reader's memory footprint by 25%"
      ],
      "category": "education",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "Java",
        "Clean Architecture",
        "MVVM",
        "Single-Activity",
        "LiveData & Data Binding",
        "RxJava",
        "Coroutines & Flow",
        "ExoPlayer",
        "Firebase",
        "Picasso",
        "OAuth2",
        "Android SDK"
      ],
      "organization": "Gajino",
      "role": "Android developer",
      "startYear": 2020,
      "endYear": 2020,
      "status": "live",
      "metrics": [
        {
          "value": "1M+",
          "label": "downloads on Google Play"
        },
        {
          "value": "-30%",
          "label": "time to join an exam"
        }
      ],
      "links": [
        {
          "kind": "google-play",
          "label": "Google Play",
          "url": "https://play.google.com/store/apps/details?id=ir.gaj.gajino"
        }
      ],
      "featured": true,
      "sketch": "video-exam",
      "accent": "#F2A541",
      "preview": "images/previews/gajino.gif"
    },
    {
      "id": "khanoumi",
      "name": "Khanoumi",
      "tagline": "E-commerce app for cosmetics",
      "description": "A large cosmetics e-commerce app covering login, product catalogue, basket and marketing-attribution tracking. I worked on the original Java/MVP app and its rebuild in Kotlin with MVVM and a single-activity architecture.",
      "highlights": [
        "Reached 2M+ combined users together with Noarous, delivered under tight deadlines",
        "Time-based notification queueing system",
        "Profiled the app at scale and migrated image loading from Picasso to Glide to cut memory use and jank",
        "OTP-based authentication"
      ],
      "category": "commerce",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "Java",
        "MVVM",
        "MVP",
        "Single-Activity",
        "Navigation Component",
        "Dagger",
        "LiveData",
        "Coroutines & Flow",
        "Retrofit",
        "Room",
        "SQLite",
        "Firebase",
        "Glide",
        "Android SDK"
      ],
      "organization": "Khanoumi",
      "role": "Android developer",
      "startYear": 2019,
      "endYear": 2020,
      "status": "shipped",
      "metrics": [
        {
          "value": "2M+",
          "label": "users with Noarous"
        },
        {
          "value": "100K+",
          "label": "installs on Google Play"
        }
      ],
      "links": [
        {
          "kind": "website",
          "label": "khanoumi.com",
          "url": "https://www.khanoumi.com"
        }
      ],
      "featured": true,
      "sketch": "shop-catalog",
      "accent": "#E5487F",
      "preview": "images/previews/khanoumi.gif"
    },
    {
      "id": "lingocast",
      "name": "Lingocast",
      "tagline": "Improve your speaking skills anywhere, on the phone",
      "description": "A language and audio-learning app that helps people practise speaking on their phone. Built as a freelance project and shipped to Google Play and Cafe Bazaar.",
      "highlights": [
        "Audio-first learning experience",
        "Shipped to Google Play and Cafe Bazaar"
      ],
      "category": "education",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "MVVM",
        "LiveData",
        "Retrofit",
        "Room",
        "Firebase",
        "Glide",
        "Android SDK"
      ],
      "organization": "Freelance",
      "role": "Android developer",
      "startYear": 2020,
      "endYear": 2022,
      "status": "live",
      "metrics": [
        {
          "value": "1K+",
          "label": "installs on Google Play"
        }
      ],
      "links": [
        {
          "kind": "cafe-bazaar",
          "label": "Cafe Bazaar",
          "url": "https://cafebazaar.ir/app/com.lingocast"
        }
      ],
      "featured": true,
      "sketch": "audio-wave",
      "accent": "#4AA3DF",
      "preview": "images/previews/lingocast.gif"
    },
    {
      "id": "noarous",
      "name": "Noarous",
      "tagline": "Wedding planner for newly married couples",
      "description": "A wedding-planning app that helps couples organise their wedding, delivered alongside Khanoumi.",
      "highlights": [
        "OTP-based authentication",
        "Refined list interactions such as swipe-to-delete"
      ],
      "category": "lifestyle",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "MVP",
        "Retrofit",
        "SQLite",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Khanoumi",
      "role": "Android developer",
      "startYear": 2019,
      "endYear": 2020,
      "status": "shipped",
      "metrics": [
        {
          "value": "1K+",
          "label": "installs on Google Play"
        }
      ],
      "links": [
        {
          "kind": "website",
          "label": "noarous.com",
          "url": "https://www.noarous.com"
        }
      ],
      "featured": false,
      "sketch": "planner-checklist",
      "accent": "#D9667B",
      "preview": "images/previews/noarous.gif"
    },
    {
      "id": "peysepar",
      "name": "Peysepar",
      "tagline": "Corporate ride-hailing for passengers and drivers",
      "description": "A two-sided corporate transportation app: employees book and schedule trips with company drivers and vehicles, and a companion driver app tracks routes with live GPS.",
      "highlights": [
        "Trip booking and scheduling for requesters",
        "Companion driver app with live GPS route tracking",
        "Built on an MVP architecture"
      ],
      "category": "mobility",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "Java",
        "MVP",
        "Background Services",
        "Retrofit",
        "SQLite",
        "Firebase",
        "Glide",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "shipped",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "ride-map",
      "accent": "#F5B700"
    },
    {
      "id": "callcenter-1666",
      "name": "Callcenter 1666",
      "tagline": "Call-centre agent and activity management",
      "description": "An app for managing call-centre agents, their calls and reports, iterated through multiple releases.",
      "highlights": [
        "Agent activity and call reporting",
        "Iterated through multiple releases"
      ],
      "category": "enterprise",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "Retrofit",
        "SQLite",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "call-dashboard",
      "accent": "#5C6BC0",
      "preview": "images/previews/callcenter-1666.gif"
    },
    {
      "id": "bumyar",
      "name": "Bumyar",
      "tagline": "Municipal services in your pocket",
      "description": "A municipal-services app (also released as Shahrnik) for submitting and tracking service requests, enrolling in online municipal courses and paying bills.",
      "highlights": [
        "Submit and track municipal service requests",
        "Photo evidence capture for submitted requests",
        "Course enrolment and bill payments"
      ],
      "category": "public-services",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "Retrofit",
        "SQLite",
        "Camera",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "shipped",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "city-services",
      "accent": "#26A69A",
      "preview": "images/previews/bumyar.gif"
    },
    {
      "id": "sheek",
      "name": "Sheek",
      "tagline": "Find court experts and legal services",
      "description": "A directory that helps the public find government court experts and advocates, along with their services and fees.",
      "highlights": [
        "Find government court experts and advocates",
        "Their services and fees, in one directory"
      ],
      "category": "public-services",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "Retrofit",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "shipped",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "directory-search",
      "accent": "#7E57C2",
      "preview": "images/previews/sheek.gif"
    },
    {
      "id": "dastyar-bimeh",
      "name": "Dastyar Bimeh",
      "tagline": "Insurance issue tracking for technicians",
      "description": "The official app for insurance organisations to manage issues and notify technicians to check them.",
      "highlights": [
        "Issue tracking with technician notifications"
      ],
      "category": "enterprise",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "Retrofit",
        "SQLite",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "issue-tracker",
      "accent": "#EF6C00"
    },
    {
      "id": "gas-194",
      "name": "Gas 194",
      "tagline": "Issue reporting and asset maintenance for a gas utility",
      "description": "The official app of the gas organisation for managing reported issues, notifying technicians to check them, and maintaining gas assets with step-by-step issue tracking. Available only inside the organisation.",
      "highlights": [
        "Technician dispatch notifications",
        "Step-by-step asset maintenance tracking",
        "SOAP integration with the organisation's systems"
      ],
      "category": "public-services",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "Background Services",
        "SOAP",
        "SQLite",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Rayan Andisheh Nasr",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "utility-assets",
      "accent": "#1E88E5",
      "preview": "images/previews/gas-194.gif"
    },
    {
      "id": "enterprise-solution",
      "name": "Enterprise Solution",
      "tagline": "Company and financial reporting tools",
      "description": "Reporting tools about companies and financial management, built with Flutter.",
      "highlights": [
        "Financial dashboards and reports",
        "Clean Architecture with Bloc state management"
      ],
      "category": "enterprise",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Flutter",
        "Dart",
        "Clean Architecture",
        "Bloc"
      ],
      "organization": "Golrang System",
      "role": "Mobile developer",
      "startYear": 2020,
      "endYear": 2022,
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "finance-charts",
      "accent": "#00897B"
    },
    {
      "id": "smart-employee",
      "name": "Smart Employee",
      "tagline": "The employer's contact point to employees",
      "description": "An internal app that connects a company with its employees, built with Flutter.",
      "highlights": [
        "A single contact point between the company and its employees",
        "Clean Architecture with Provider state management"
      ],
      "category": "enterprise",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Flutter",
        "Dart",
        "Clean Architecture",
        "Provider"
      ],
      "organization": "Golrang System",
      "role": "Mobile developer",
      "startYear": 2020,
      "endYear": 2022,
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "employee-hub",
      "accent": "#43A047"
    },
    {
      "id": "looking",
      "name": "Looking",
      "tagline": "Find favourite places and events nearby",
      "description": "A discovery app for finding favourite places, locations and events nearby, shipped to Google Play and Cafe Bazaar.",
      "highlights": [
        "Nearby places and events",
        "Mixed MVVM and MVP codebase in Java and Kotlin"
      ],
      "category": "lifestyle",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Kotlin",
        "Java",
        "MVVM",
        "MVP",
        "LiveData",
        "Retrofit",
        "Room",
        "Firebase",
        "Picasso",
        "Android SDK"
      ],
      "organization": "Freelance",
      "role": "Android developer",
      "status": "shipped",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "places-nearby",
      "accent": "#EC407A",
      "preview": "images/previews/looking.gif"
    },
    {
      "id": "cisco-jabber-guest",
      "name": "Cisco Jabber Guest",
      "tagline": "Internal VoIP calling for Digikala",
      "description": "An internal VoIP calling app built on the Cisco Jabber Guest SDK for Digikala.",
      "highlights": [
        "VoIP calls through the Cisco Jabber Guest SDK"
      ],
      "category": "communication",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Java",
        "MVP",
        "Cisco Jabber Guest SDK",
        "Android SDK"
      ],
      "organization": "Freelance",
      "role": "Android developer",
      "status": "internal",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "voip-call",
      "accent": "#049FD9",
      "preview": "images/previews/cisco-jabber-guest.gif"
    },
    {
      "id": "madrese-plus",
      "name": "Madrese-Plus",
      "tagline": "School management, early stage",
      "description": "An early-stage school-management Android app, built as a freelance project.",
      "highlights": [
        "Early-stage school-management features"
      ],
      "category": "education",
      "platforms": [
        "android"
      ],
      "technologies": [
        "Android SDK"
      ],
      "organization": "Freelance",
      "role": "Android developer",
      "startYear": 2017,
      "endYear": 2019,
      "status": "prototype",
      "metrics": [],
      "links": [],
      "featured": false,
      "sketch": "school-timetable",
      "accent": "#FFA000"
    }
  ],
  "experience": [
    {
      "id": "mtp",
      "company": "MTP GmbH",
      "companyNote": "Metal Technology Projects MTP GmbH",
      "role": "Senior Android Developer",
      "location": "Düsseldorf, Germany",
      "start": "2022-11",
      "end": null,
      "context": "Flowerk, a multi-tenant B2B trade-management platform",
      "achievements": [
        "Own and develop the Android/iOS/Desktop client of Flowerk, a multi-tenant B2B trade-management platform built with Kotlin Multiplatform and Compose Multiplatform, shipping multiple tenant-specific builds (debug/release) from a single codebase.",
        "Structured the client around Clean Architecture (core/data/domain/presentation) with Koin dependency injection across six modules, Room for offline-first local persistence with versioned schema migrations, and Ktor for networking against a 30+ feature REST surface spanning RFQs, quotations, purchase orders, proforma invoices, invoices, packing lists, contracts, supplier inspections, freight forwarding, and HR attendance and leave.",
        "Designed and shipped a dual-format (PDF + Excel) document-generation pipeline and a per-tenant document numbering/coding engine that generates and validates compliant reference codes (purchase order, RFQ, invoice, etc.) against each tenant's own numbering rules; later extracted the PDF engine into a published open-source Kotlin library (docdsl).",
        "Also drive the Clean Architecture migration of the platform's Spring Boot backend: moved domain logic free of framework/infrastructure dependencies, introduced ports and adapters for messaging (Outlook), file storage, and PDF generation, and made all write use cases transactional to close data-integrity gaps."
      ],
      "projectIds": [
        "flowerk",
        "docdsl"
      ]
    },
    {
      "id": "golrang",
      "company": "Golrang System",
      "companyNote": null,
      "role": "Android Developer",
      "location": "Tehran, Iran",
      "start": "2020-10",
      "end": "2022-11",
      "context": "Trade Marketing, an offline-first field-sales and retail-execution app",
      "achievements": [
        "Built an offline-first field-sales and retail-execution app (Kotlin, Clean Architecture with app/data/domain modules) for field reps, syncing through a local Room store when connectivity returns.",
        "Implemented in-app route mapping/tracking for field reps and a custom dynamic form generator for configurable store surveys and audits, including in-field photo capture for shelf/compliance evidence.",
        "Added background location tracking, improving field-data reliability and enabling route verification without manual check-ins.",
        "Built a monitoring layer that cut runtime crashes by 30%, and improved storage efficiency through targeted caching.",
        "Freelance, same period: Lingocast, a language/audio-learning Android app (Kotlin), shipped to Google Play."
      ],
      "projectIds": [
        "trade-marketing",
        "enterprise-solution",
        "smart-employee",
        "lingocast"
      ]
    },
    {
      "id": "gajino",
      "company": "Gajino",
      "companyNote": null,
      "role": "Android Developer",
      "location": "Tehran, Iran",
      "start": "2020-04",
      "end": "2020-10",
      "context": "Online learning and exam platform",
      "achievements": [
        "Built core features on Clean Architecture (app/domain/data/framework modules), including ExoPlayer-based video streaming optimized to cut load times by about 10%.",
        "Redesigned the Online Exam flow, including handling of interrupted/uncompleted sessions, reducing time for students to join a session by 30%.",
        "Reduced the PDF-reader module's memory footprint by 25% through targeted rendering/caching optimization."
      ],
      "projectIds": [
        "gajino"
      ]
    },
    {
      "id": "khanoumi",
      "company": "Khanoumi",
      "companyNote": null,
      "role": "Android Developer",
      "location": "Tehran, Iran",
      "start": "2019-03",
      "end": "2020-04",
      "context": "Khanoumi (e-commerce) and Noarous (wedding planning)",
      "achievements": [
        "Delivered two production Android apps (Khanoumi e-commerce, Noarous wedding-planning) to 2M+ combined users under tight deadlines, covering login/auth, product catalog and basket, and marketing-attribution tracking.",
        "Implemented a time-based notification queueing system; at Khanoumi's scale, profiled and optimized app performance, including migrating image loading (Picasso to Glide) to cut memory use and jank.",
        "Added OTP-based authentication and refined UX (swipe-to-delete, list interactions) across both apps."
      ],
      "projectIds": [
        "khanoumi",
        "noarous"
      ]
    },
    {
      "id": "rayan",
      "company": "Rayan Andisheh Nasr",
      "companyNote": null,
      "role": "Android Developer",
      "location": "Tehran, Iran",
      "start": "2017-05",
      "end": "2019-03",
      "context": "First professional Android role",
      "achievements": [
        "Built Peysepar, a two-sided corporate transportation app: trip booking/scheduling against company drivers and vehicles for requesters, plus a companion driver app with live GPS route tracking, using MVP architecture in Kotlin.",
        "Built and shipped Callcenter 1666 (call-center agent/activity management, iterated through multiple releases) and Sheek (a directory for locating government/court experts and services).",
        "Built Bumyar/Shahrnik, a municipal-services app for submitting and tracking service requests, course enrollment, and bill payments, with photo-evidence capture for submitted requests.",
        "Also delivered Dastyar Bimeh (insurance issue tracking/technician notification) and 194 (Gas), a utility app for gas-organization issue reporting and asset tracking.",
        "Mentored interns and helped establish the team's MVP architecture conventions.",
        "Freelance, same period: Madrese-Plus, an early-stage school-management Android app."
      ],
      "projectIds": [
        "peysepar",
        "callcenter-1666",
        "sheek",
        "bumyar",
        "dastyar-bimeh",
        "gas-194",
        "madrese-plus"
      ]
    }
  ],
  "skillGroups": [
    {
      "name": "Languages",
      "skills": [
        {
          "name": "Kotlin",
          "aliases": []
        },
        {
          "name": "Java",
          "aliases": []
        }
      ]
    },
    {
      "name": "Multiplatform & UI",
      "skills": [
        {
          "name": "Android SDK",
          "aliases": []
        },
        {
          "name": "Kotlin Multiplatform (KMP)",
          "aliases": [
            "Kotlin Multiplatform"
          ]
        },
        {
          "name": "Jetpack Compose",
          "aliases": [
            "Compose Multiplatform"
          ]
        },
        {
          "name": "Compose Multiplatform",
          "aliases": []
        },
        {
          "name": "Compose Navigation",
          "aliases": [
            "Navigation Compose"
          ]
        },
        {
          "name": "Material 3",
          "aliases": []
        },
        {
          "name": "Jetpack (Lifecycle, ViewModel, WorkManager, Glance)",
          "aliases": [
            "WorkManager",
            "LiveData",
            "LiveData & Data Binding",
            "Navigation Component"
          ]
        },
        {
          "name": "Decompose",
          "aliases": []
        }
      ]
    },
    {
      "name": "Architecture",
      "skills": [
        {
          "name": "Clean Architecture",
          "aliases": []
        },
        {
          "name": "MVVM",
          "aliases": []
        },
        {
          "name": "MVI",
          "aliases": []
        },
        {
          "name": "MVP",
          "aliases": []
        },
        {
          "name": "Modularization",
          "aliases": []
        }
      ]
    },
    {
      "name": "Async & Local Data",
      "skills": [
        {
          "name": "Coroutines & Flow",
          "aliases": []
        },
        {
          "name": "Room",
          "aliases": []
        },
        {
          "name": "SQLDelight",
          "aliases": []
        },
        {
          "name": "SQLite",
          "aliases": []
        },
        {
          "name": "DataStore",
          "aliases": []
        }
      ]
    },
    {
      "name": "Networking",
      "skills": [
        {
          "name": "Ktor",
          "aliases": []
        },
        {
          "name": "Retrofit",
          "aliases": []
        },
        {
          "name": "REST API design & integration",
          "aliases": [
            "REST",
            "Retrofit"
          ]
        },
        {
          "name": "Push Notifications (FCM)",
          "aliases": []
        }
      ]
    },
    {
      "name": "Dependency Injection",
      "skills": [
        {
          "name": "Koin",
          "aliases": []
        },
        {
          "name": "Hilt",
          "aliases": []
        },
        {
          "name": "Dagger",
          "aliases": []
        }
      ]
    },
    {
      "name": "Backend & Data",
      "skills": [
        {
          "name": "Spring Boot",
          "aliases": []
        },
        {
          "name": "PostgreSQL",
          "aliases": []
        },
        {
          "name": "JWT auth",
          "aliases": [
            "JWT"
          ]
        }
      ]
    },
    {
      "name": "Tooling & Practice",
      "skills": [
        {
          "name": "Git/GitFlow",
          "aliases": []
        },
        {
          "name": "Gradle (Kotlin DSL)",
          "aliases": []
        },
        {
          "name": "GitHub Actions/CI",
          "aliases": [
            "GitHub Actions"
          ]
        },
        {
          "name": "Firebase",
          "aliases": []
        },
        {
          "name": "Localization/i18n",
          "aliases": []
        },
        {
          "name": "Agile/Scrum",
          "aliases": []
        },
        {
          "name": "Code review",
          "aliases": []
        }
      ]
    },
    {
      "name": "Also shipped with",
      "skills": [
        {
          "name": "Flutter & Dart",
          "aliases": [
            "Flutter",
            "Dart",
            "Bloc",
            "Provider"
          ]
        },
        {
          "name": "RxJava",
          "aliases": []
        },
        {
          "name": "ExoPlayer",
          "aliases": []
        },
        {
          "name": "Google Maps",
          "aliases": []
        },
        {
          "name": "Camera & Camera2",
          "aliases": [
            "Camera",
            "Camera2"
          ]
        }
      ]
    }
  ],
  "education": [
    {
      "degree": "Bachelor of IT Engineering",
      "institution": "Azad University",
      "location": "Iran",
      "start": "2016-07",
      "end": "2020-07"
    }
  ],
  "certifications": [
    {
      "title": "Advanced Android Bootcamp 2023 (Jetpack, Architecture & More)",
      "issuer": "Udemy",
      "start": "2023-07",
      "end": null
    },
    {
      "title": "MVI Architecture with Jetpack Compose for Android 2023",
      "issuer": "Udemy",
      "start": "2023-06",
      "end": null
    },
    {
      "title": "Java EE, Services, Spring, Hibernate",
      "issuer": "Sematec",
      "start": "2018-04",
      "end": "2018-07"
    },
    {
      "title": "Android Advance",
      "issuer": "Sematec",
      "start": "2017-05",
      "end": "2017-07"
    },
    {
      "title": "Android Development (Canadian Android-ATC license)",
      "issuer": "Sematec",
      "start": "2016-12",
      "end": "2017-02"
    },
    {
      "title": "Java EE",
      "issuer": "MFT",
      "start": "2016-07",
      "end": "2016-09"
    },
    {
      "title": "SQL Server",
      "issuer": "MFT",
      "start": "2016-05",
      "end": "2016-07"
    },
    {
      "title": "Java SE",
      "issuer": "MFT",
      "start": "2016-03",
      "end": "2016-05"
    }
  ],
  "awards": [
    {
      "title": "2nd place, Programming Challenge",
      "issuer": "Azad University, Roudehen",
      "date": "2018-07"
    }
  ],
  "site": {
    "title": "How this site is built",
    "summary": "This website is itself a Kotlin app: the same tools I use for client projects, compiled to WebAssembly.",
    "points": [
      {
        "title": "Compose Multiplatform for Web",
        "description": "Kotlin 2.4 and Compose compiled to WebAssembly, rendered on a canvas with Material 3."
      },
      {
        "title": "Clean Architecture",
        "description": "Separate Gradle modules for domain, data, design system, sketch engine, each page, and the app shell."
      },
      {
        "title": "Unidirectional data flow",
        "description": "ViewModels expose immutable UI state through StateFlow; use cases hold the business rules."
      },
      {
        "title": "Koin and Navigation",
        "description": "Dependency injection with Koin, type-safe Navigation Compose routes synced with the browser history."
      },
      {
        "title": "Data you can swap",
        "description": "Content is parsed from JSON with kotlinx.serialization behind a repository, ready to point at a real API."
      },
      {
        "title": "Hand-drawn, live",
        "description": "Every app sketch on this page is drawn and animated in real time on a Compose Canvas."
      }
    ]
  }
}
