Skip to content
View ChandraChaan's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report ChandraChaan

Report abuse

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

Report abuse
ChandraChaan/README.md
Chandra ObulaReddy, mobile engineer in Bangalore

Website  ·  LinkedIn  ·  Apps  ·  Open source  ·  Where I've worked


Hi, I'm Chandra. Chandra means moon in Telugu, which is why there's one up there.

I'm a mobile engineer in Bangalore, and for the last 8+ years I've built apps and the backends behind them for FinTech, HealthTech, EdTech, HRMS and e-commerce. Today I'm a Principal Software Engineer (Mobile) at mPokket, where I lead the Flutter work on SkillZi, a learning and rewards app used by 100K+ people. Over the years I've led teams of up to 8 engineers, and the apps I've shipped have held 99.8%+ crash-free users.

The things I enjoy most are Flutter architecture, Bluetooth LE and wearables, payments and app security. After work I make small apps I wish existed, mostly open source and ad-free, in Telugu, Hindi and English. I also write down what I've learned, and send fixes to other people's projects when I find a bug.

The small apps

Each one does a single job. They're open source and free of ads, and the ones that run on one phone keep your data on that phone.

Faith, games and a little fun

  • Devalay is a devotional app: aarti and bhajans, the Bhagavad Gita, Panchang, a virtual Mandir, a japa mala and Rashifal, with Telugu support.  APK · website
  • Chittilata brings the Telugu paper-chit games Chittilu Aata and Raja Rani to real-time multiplayer. The server enforces the rules, so nobody can cheat.  APK
  • Puli Meka is Tiger and Goats, the board game of Kadapa and Rayalaseema, in Telugu and English.  APK
  • Tambola Host runs a Housie night with a voice caller, printable tickets and a claim checker.  open in browser
  • Gully Cricket Scorer scores street and weekend matches ball by ball, and works offline.  open in browser

Everyday tools

  • ScrollLess counts the Reels and Shorts you watch and how long you scroll.  APK
  • Notification Batch holds noisy notifications and delivers them a few times a day. Calls, alarms and OTPs still come straight through.  APK
  • Data Pack Meter shows live speed in the status bar and how much of today's data pack is left, app by app.  APK
  • Medicine Reminder is made for elderly parents: reminders spoken in Telugu, Hindi or English, and a family check for missed doses.  APK
  • DueDay reads bill and EMI due dates from your SMS, on the phone, and reminds you before they're due.  APK
  • Chat Media Cleaner finds large, duplicate and old chat media. You review everything, and deleted files sit in a 7-day trash.  APK
  • Best Clock has a world clock, alarms that still ring after a reboot, a lap stopwatch and a timer, with dark, light and OLED themes.  APK
  • Grabbit is an Android browser that finds videos, audio and images on a page and downloads them, HLS streams included.  APK
  • UPI Split splits a bill and sends each friend their own UPI payment link, equally, by shares or by amount.  open in browser
  • Heart Rate Web connects any Bluetooth heart-rate strap to the browser for live bpm, zones, HRV and export.  open in browser
  • Tatkal Helper is a Chrome extension for IRCTC Tatkal booking with saved passengers, one-click form fill and a countdown. You still do every click yourself.  download · website

Things for other developers

Dart packages

  • ble_gatt_parser turns raw bytes from heart-rate straps, BP cuffs, oximeters, scales and cycling sensors into typed Dart objects.  playground pub
  • ble_device_simulator simulates BLE health and fitness devices so you can test apps without hardware. pub
  • india_validators validates PAN, GSTIN, Aadhaar, IFSC, UPI ID, mobile and PIN code, with real checksums. pub
  • upi_kit builds, parses and validates UPI payment links and Bharat QR codes, with CRC checks.  playground

Guides and templates

Open source

When something I use is broken, I'd rather fix it than work around it. Each badge below shows the live state of the pull request.

Flutter, Dart and their ecosystem
Project What I fixed Status
flutter/flutter Screen readers kept announcing a text's old label or language after it changed PR
flutter/flutter Animated box decorations lost their blend mode until the last frame PR
flutter/packages · material_ui Button theme equality ignored the button bar layout PR
flutter/flutter TableBorder lost its rounded corners while animating PR
flutter/flutter Text fields ignored a changed spell-check selection colour PR
flutter/packages · material_ui SnackBar theme dropped its close button during theme animations PR
flutter/packages · cupertino_ui iOS theme equality ignored the selection handle colour PR
flutter/packages · camera Recording events broke the ==/hashCode contract PR
dart-lang/http RetryClient threw when the retry check read the response body PR
dart-lang/core · args Help-text separators ignored the configured line length PR
dart-lang/tools · csslib Wrong hex values for three named CSS colours PR
plus_plugins · share_plus Windows builds failed under C++20 PR
plus_plugins · device_info_plus Linux device info kept stray quotes from os-release on some distros PR
carp-health-flutter · health Android workout summaries were always empty PR
bloc · replay_bloc Undo history ignored a lowered history limit PR
dio ListFormat.tsv joined values with a literal \t instead of a tab PR
serverpod The CLI planned a bogus rename cycle when two columns swapped names PR
Python, Rust, Go and TypeScript projects
Project What I fixed Status
PyAV AudioFifo accepted frames with a different channel layout PR
PyAV AudioFrame.planes could report more planes than the frame has PR
pdm setup dropped the version from an earlier project file when a later one had none PR
PySceneDetect The CSV cut-list row was unlabelled when no cut list was passed PR
MoneyPrinterTurbo The config error now explains how to fix a Docker bind-mounted config.toml that became a folder PR
dominate attr() and dict attributes skipped the tag's attribute cleaning PR
minijinja split(none, n) returned trailing whitespace PR
minijinja The Go port's split(none, n) maxsplit handling now matches Rust PR
miller fsec2hms and fsec2dhms lost the carry from rounded fractional seconds PR
croc File sizes showed 1024.0 kB instead of 1.0 MB PR
dust --only-dir mishandled duplicate top-level names PR
YouTube.js The parser had no InlineSurvey, ExpandableSurveyResponse, RatingSurvey or RatingSurveyOption nodes PR
xerj Autoindex skipped Dart extension and extension type declarations PR

Where I've worked

  • Apr 2026 to now · Principal Software Engineer (Mobile), mPokket. I lead SkillZi, an AI-powered learning and rewards app for 100K+ users, with in-app purchases, referrals, SSL pinning and secure video streaming.
  • Sep 2025 to Apr 2026 · Technical Architect, SEWB (via Cosmos Media). I took an AWS digital health platform from concept to MVP, with AI features and HealthKit, Google Fit, Fitbit and Samsung Health integrations.
  • Jun 2022 to Sep 2025 · Senior Software Engineer, SoftDEL Systems. I worked on MSA Safety XS Connect (BLE hardware through native Java and Swift bridged to Flutter), the Lochinvar PWA and apps, KONE and Asset Vantage.
  • Feb 2021 to Jun 2022 · Mobile Lead, Reliance Industries. I led the Flutter team for People First (HRMS), Sunstone (EdTech, 100K+ students) and Plus Pin Pharma, with Paytm, Stripe and Razorpay integrations.
  • Mar 2018 to Jan 2021 · Software Engineer, Marvelous Tech Solutions. I built full-stack web and Flutter apps: EstreetMart, GastroCare, Edecofy and NRIbuddy.

B.Tech in Computer Science, JNTU Anantapur.

Teaching

I mentor engineers and teach Flutter by building real apps, from the first widget to production architecture. The free material is all public: the handbook, the flashcards and the system design guide.

What I work with

Mobile  Flutter, Dart, Kotlin, Java, Swift, Android Studio
Backend and cloud  Node.js, Python, FastAPI, PHP, Laravel, AWS, Firebase, MongoDB, MySQL
Also  Bluetooth LE, HealthKit, Google Fit, Fitbit, BLoC, Riverpod, GetX, SSL pinning, Stripe, Razorpay, Paytm, UPI, PWA, CI/CD, Playwright, local LLMs (Ollama), Claude


If you'd like to talk about Flutter, Bluetooth devices or building small things well, say hello on LinkedIn or through chandrachaan.com.

Pinned Loading

  1. ble_gatt_parser ble_gatt_parser Public

    Parse standard Bluetooth LE GATT characteristics (heart rate, blood pressure, glucose, SpO2, cycling, running) into typed Dart objects. Pure Dart, works with any BLE plugin.

    Dart

  2. flutter-agent-skills flutter-agent-skills Public

    AGENTS.md rules and skills that make AI coding agents write production-quality Flutter. Claude Code plugin; works with Cursor, Copilot, Codex, Gemini.

    Dart

  3. scroll-less scroll-less Public

    ScrollLess: Android app that counts Instagram Reels and YouTube Shorts and tracks scrolling time, privately on-device (Flutter + Kotlin)

    Dart 1

  4. upi_kit upi_kit Public

    Build, parse and validate UPI payment links (upi://pay) and Bharat QR (EMV) codes in pure Dart. CRC checks, typed amounts, live playground.

    Dart

  5. flutter-architect-handbook flutter-architect-handbook Public

    Flutter interview & architecture handbook, junior to architect: 67 questions on Dart, Flutter internals, state management, architecture, performance, security, testing, mobile system design and lea…

  6. mobile-system-design mobile-system-design Public

    Mobile system design case studies for interviews and real projects: UPI payments, wearable sync, offline-first chat, feeds, live tracking, uploads, rollouts.

    Python