Suraj Thalange
About

Suraj Thalange

Technical project manager and Moodle developer based in Pune, India. I have worked with Moodle since March 2022, as a developer, as a freelancer, and as the person who owns the plan on enterprise LMS delivery. This page is the technical profile: what I work with, how I run a delivery, how I test, and where I have done it.

Taking on new Moodle projects now

In short

I write Moodle plugins and themes the way core is written: PSR-4 classes, the privacy API, capabilities, language strings, backup and restore, upgrade steps, and tests that run in CI on every Moodle and PHP version the plugin supports. A Moodle Marketplace reviewer wrote of my first submission "I didn't find any blockers and recommend this plugin for approval"; that plugin is now published in the plugins directory, and a second is published too; a full Boost child theme has 73 unit tests and 20 Behat scenarios behind it.

On the delivery side I have led Moodle implementations end to end: requirements, estimates, sprint plans, coordinating development, QA, UI/UX and infrastructure, then UAT, production deployment on AWS and post-go-live support, most recently a compliance training platform for a fintech client. I am comfortable being the only developer on a project and equally comfortable leading a team that already has its own rhythm. How I run a delivery.

I am looking for freelance projects, and for remote roles with UK, EU or US teams as a Moodle or PHP developer, a technical lead, or a technical project manager on platform delivery. I work in IST and keep overlap hours with both. See the hours.

Stack

What I use every week, and what I have shipped with.

Moodle

  • Moodle 4.5 LTS to 5.2, including the 5.1 public/ document root and Hooks API
  • Plugin types: mod, report, local, block, theme, tool, auth and enrol integrations
  • Question bank and mod_qbank, completion, gradebook, SCORM, H5P
  • Privacy API, capabilities and roles, events, scheduled and ad hoc tasks
  • Web services and external functions, REST integrations
  • Backup and restore, XMLDB, upgrade steps
  • Boost child themes, SCSS, Mustache, AMD JavaScript

Engineering

  • PHP 8.1 to 8.4, strict types, PSR-4
  • PHPUnit with Moodle's advanced_testcase and generators
  • Behat with Moodle's step library and custom steps
  • moodle-plugin-ci in GitHub Actions: phpcs, phpmd, phpcpd, phpdoc, mustache, grunt, savepoints
  • MariaDB, MySQL, PostgreSQL
  • Git, code review, semantic versioning, changelogs
  • JavaScript, HTML, CSS, accessibility (WCAG 2.1 AA)

Delivery and leadership

  • End-to-end delivery across the development lifecycle, from requirements to post-go-live
  • Requirements and BRDs, project estimation, sprint planning, UAT
  • Coordinating development, QA, UI/UX and infrastructure teams
  • Stakeholder communication, written status and risk management
  • Production deployment, release runbooks, backups and rollback
  • Runbooks, admin guides and handover documentation
  • Jira, GitHub Issues, Agile and Scrum
  • AWS and Azure, Linux, Apache and nginx, PHP-FPM
github.com/surajthalange/moodle-report_transcript/actions
A green 16-job matrix run: Moodle 4.5 to 5.2, PHP 8.1 to 8.4, PostgreSQL and MariaDB

How I test

  • Unit tests first for logic. Game engines, grade presenters, inclusion rules and settings models are pure classes with tests written before the implementation.
  • Behat for what users touch. Every page a learner, teacher or administrator interacts with has a scenario, including the failure paths (no capability, hidden grade, empty scope).
  • The full matrix in CI. Every supported Moodle branch, the PHP versions it supports, and both PostgreSQL and MariaDB, because engine differences bite when a plugin ships a schema.
  • Reviewer's eye. I review my own plugins against the Marketplace checklist before submission: security, privacy, strings, versions, documentation. It is why the first review came back with no blockers and the plugin went straight into the directory.

Experience

Moodle since March 2022, running deliveries end to end since 2023. Freelance and employed, education and corporate.

  • EncureIT Systems, Pune

    Technical Project Manager and Moodle Expert since January 2026, Moodle Developer from July 2024 to December 2025. End-to-end delivery of enterprise platform implementations for external clients: requirements and BRDs, estimation, planning, build, UAT, production go-live and ongoing support, across government and private sector accounts.

  • Moodle Developer and Consultant, self-employed

    Complete Moodle implementations for education and corporate clients, run as concurrent projects from scoping through to go-live. Custom plugins, themes, reporting modules and REST API integrations, performance and scalability tuning, and Linux server deployment and support. Author of theme_atrium, mod_onelife and report_transcript, and of the fintech compliance platform on AWS.

  • Associate Software Engineer, Capgemini

    Enterprise web applications in Agile teams: development, unit testing, code review and deployment.

  • Frontend Developer, then Moodle Developer, PreDrag System

    Frontend developer from August 2021 to February 2022. Moodle developer from March 2022 to October 2022: customised Moodle platforms, plugins and themes to client specification; third-party tool and API integrations; deployment and maintenance.

Earlier projects

  • Government training LMS: end-to-end Moodle implementation with reporting dashboards, certification workflows and production rollout.
  • Australian education provider: custom plugins, themes, reports and integrations.
  • University LMS: third-party learning tool integrations and customisation.

Education

  • Master of Computer Applications, Computer Science, SRM University, 2022 to 2024
  • Bachelor of Science, Computer Science, N.E.S. Science College, Nanded, 2019 to 2022

Certifications

  • Meta Front-End Development
  • Web Development, The Sparks Foundation

Hiring for a Moodle or PHP role?

Send the job description and I will reply with a short note on fit, availability and the code that best matches it.