{"kind":"post","path":"/blog/pointo-platform","post":{"metadata":{"title":"My work at Pointo","summary":"How I built Pointo's operations dashboard and platform services, and helped build the rider and driver backends.","publishedAt":"2026-08-11","projectDate":"2021-09-30","ascent":"#17B86F","links":[{"label":"Pointo.in","href":"https://www.pointo.in","type":"website"},{"label":"LinkedIn","href":"https://www.linkedin.com/company/pointoindia","type":"social"}],"tags":["pointo","mobility","dashboard","backend","fullstack","operations"],"weight":1},"slug":"pointo-platform","content":"\u003c!-- cover: /images/blog/pointo-platform/cover.png --\u003e\n\nPointo was an on-demand e-rickshaw platform for local trips. It connected riders, drivers, and the team running the fleet through one ride lifecycle.\n\nI worked as Pointo's **Full Stack Lead Developer**. I built the operations dashboard and its backend, and I owned the platform services. I worked with my team on the rider and driver backends.\n\nThe product has since shut down. This case study preserves the work without publishing customer or driver data.\n\n\u003cfigure className=\"bp-native-hero bp-native-media\" data-preview-gallery=\"true\"\u003e\n \u003cimg src=\"/images/blog/pointo-platform/drivers-map-sanitized.webp\" width=\"2560\" height=\"1336\" loading=\"lazy\" alt=\"Pointo drivers map with synthetic vehicle positions\" /\u003e\n\u003c/figure\u003e\n\n\u003cdiv className=\"bp-evidence-grid bp-native-media\" data-preview-gallery=\"true\"\u003e\n \u003cimg src=\"/images/blog/pointo-platform/live-rides-cards-redacted.png\" width=\"2560\" height=\"990\" loading=\"lazy\" alt=\"Pointo live-rides operations board with personal details obscured\" /\u003e\n \u003cimg src=\"/images/blog/pointo-platform/live-rides-data-redacted.png\" width=\"2560\" height=\"1336\" loading=\"lazy\" alt=\"Pointo live-rides data table with rider identifiers obscured\" /\u003e\n \u003cimg src=\"/images/blog/pointo-platform/drivers-data-redacted.png\" width=\"2560\" height=\"1100\" loading=\"lazy\" alt=\"Pointo driver records table with personal data obscured\" /\u003e\n \u003cimg src=\"/images/blog/pointo-platform/rides-map-sanitized.webp\" width=\"2560\" height=\"1336\" loading=\"lazy\" alt=\"Pointo rides map with synthetic rider, pickup, and destination positions\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv className=\"bp-feature-carousel bp-native-carousel bp-native-media\" data-preview-gallery=\"true\" role=\"region\" aria-label=\"More Pointo operations product screens\"\u003e\n \u003cfigure className=\"bp-native-slide\"\u003e\n \u003cimg src=\"/images/blog/pointo-platform/driver-detail-redacted.png\" width=\"2560\" height=\"1336\" loading=\"lazy\" alt=\"Pointo driver detail dashboard with personal data obscured\" /\u003e\n \u003cfigcaption\u003eA driver record joined verification, ride counts, income, and trip history.\u003c/figcaption\u003e\n \u003c/figure\u003e\n \u003cfigure className=\"bp-native-slide\"\u003e\n \u003cimg src=\"/images/blog/pointo-platform/ride-control-redacted.png\" width=\"2560\" height=\"730\" loading=\"lazy\" alt=\"Pointo live ride control screen with rider and driver details obscured\" /\u003e\n \u003cfigcaption\u003eOperations could cancel, finish, reassign, or verify a live ride from one screen.\u003c/figcaption\u003e\n \u003c/figure\u003e\n\u003c/div\u003e\n\n## What I built\n\nPointo was not a single booking screen. Each surface shared the same ride, driver, fare, and status model.\n\n| Surface | What I worked on |\n|---|---|\n| Rider app backend | Built with my team: route and fare data, bookings, active trips, wallets, history, referrals, feedback, and emergency actions |\n| Driver app backend | Built with my team: registration, verification, availability, ride requests, pickup, trip state, completion, and earnings |\n| Operations dashboard and backend | Owned and built end to end: live rides, driver records, fleet state, assignment, cancellation, completion, and reporting |\n| Platform services | Owned and built end to end: authentication, booking, location, payments, notifications, and real-time ride events |\n\n## Fleet operations\n\nI built the operations dashboard and its backend end to end.\n\n```mermaid\nflowchart LR\n accTitle: Pointo Fleet Operations\n accDescr: The operations dashboard turns live fleet state into records, controls, and reports.\n fleet[\"\u003cstrong\u003eLive Fleet\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eRide Cards And Maps\u003c/small\u003e\"] --\u003e inspect[\"\u003cstrong\u003eInspect Records\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eRides, Drivers, And Fares\u003c/small\u003e\"]\n inspect --\u003e control[\"\u003cstrong\u003eControl A Ride\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eAssign, Edit, Cancel, Or Finish\u003c/small\u003e\"]\n control --\u003e report[\"\u003cstrong\u003eReview Operations\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eFilters, Metrics, And Export\u003c/small\u003e\"]\n```\n\n## The platform behind the screens\n\nI built the API and service layer that connected each product surface.\n\n```mermaid\nflowchart LR\n accTitle: Pointo Ride Platform\n accDescr: Rider and driver requests move through booking, matching, live ride state, trip control, and completion while operations shares the same state.\n rider[\"\u003cstrong\u003eRider App\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eRoute And Trip Request\u003c/small\u003e\"] --\u003e booking[\"\u003cstrong\u003eBooking Services\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eFare And Request State\u003c/small\u003e\"]\n driver[\"\u003cstrong\u003eDriver App\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eAvailability And Response\u003c/small\u003e\"] --\u003e matching[\"\u003cstrong\u003eDriver Matching\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eAvailable Drivers\u003c/small\u003e\"]\n booking --\u003e matching --\u003e live[\"\u003cstrong\u003eLive Ride State\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eOne Shared Lifecycle\u003c/small\u003e\"]\n operations[\"\u003cstrong\u003eOperations Dashboard\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eControl And Recovery\u003c/small\u003e\"] \u003c--\u003e live\n live --\u003e trip[\"\u003cstrong\u003ePickup And Trip\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003eControlled State Changes\u003c/small\u003e\"] --\u003e complete[\"\u003cstrong\u003eCompletion\u003c/strong\u003e\u003cbr/\u003e\u003csmall\u003ePayment, History, And Records\u003c/small\u003e\"]\n```\n\nThe backend covered authentication, profiles, booking, location, ride requests, payments, wallets, referrals, notifications, and support workflows.\n\n### Engineering choices\n\n- **One ride model across products.** Rider, driver, and dashboard actions shared the same core states.\n- **Real-time state with operational controls.** Location and ride events were paired with assignment and management actions.\n- **Separate interfaces, consistent services.** Each product fit its audience while authentication, validation, state, and data access stayed consistent behind it.\n- **Recovery in the product.** Connectivity loss, unavailable drivers, permissions, cancellation, and payment outcomes had explicit interface paths.\n\n### Core stack\n\n- **Dashboards:** React, Angular, TypeScript, Material UI, Bootstrap, and map tooling.\n- **Services:** Node.js, Express, TypeScript, MySQL, Redis, Socket.IO, and background jobs.\n- **Delivery:** Firebase, containerized services, CI/CD, AWS, and GCP.\n\n## What the work shows\n\nPointo became a connected mobility product rather than a set of isolated screens. Riders had a complete trip flow, drivers had a working trip lifecycle, operations had live fleet tools, and the service layer kept those views synchronized.\n\nThe company and product are no longer operating, but the work still represents how I build: across web, backend, real-time systems, and the operational interfaces that make the rest usable."}}