Indic-ai-skills namma-yatri
Build, contribute to, and deploy Namma Yatri — India's open-source, zero-commission ride-hailing platform. Covers Haskell backend, PureScript frontend, Rust services, Beckn/ONDC mobility protocol, Nix-based dev setup, and API integration. Use when working with Namma Yatri, ride-hailing, Beckn protocol, or open mobility.
git clone https://github.com/ankitjh4/indic-ai-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/ankitjh4/indic-ai-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/namma-yatri" ~/.claude/skills/ankitjh4-indic-ai-skills-namma-yatri && rm -rf "$T"
skills/namma-yatri/SKILL.mdNamma Yatri
Open-source, zero-commission, driver-centric ride-hailing platform built by JusPay. Powers 71M+ rides across Bengaluru, Chennai, Kolkata, Delhi, Hyderabad, Kochi, and Mysuru.
- Zero commission — drivers keep the full fare
- No surge pricing — transparent, stable fares
- Open source — AGPL-3.0 licensed
- Beckn/ONDC native — built on India's open mobility protocol
Repository: https://github.com/nammayatri/nammayatri Open Data Dashboard: https://nammayatri.in/open/ Community: https://github.com/orgs/nammayatri/discussions
Architecture
Namma Yatri follows the Beckn Protocol for open, interoperable mobility:
┌─────────────┐ Beckn ┌──────────────┐ Beckn ┌─────────────┐ │ Rider App │◄────────────►│ Beckn │◄────────────►│ Driver App │ │ (BAP) │ search/ │ Gateway │ on_search/ │ (BPP) │ │ │ confirm │ │ on_confirm │ │ └─────────────┘ └──────────────┘ └─────────────┘ │ │ ▼ ▼ ┌─────────────┐ ┌──────────────┐ │ Rider │ │ Provider │ │ Dashboard │ │ Dashboard │ └─────────────┘ └──────────────┘
Key Beckn concepts:
- BAP (Beckn Application Platform) — consumer/rider side
- BPP (Beckn Provider Platform) — driver/provider side
- Beckn Gateway — routes requests between BAP and BPP
- Registry — service discovery and trust layer
Tech Stack
| Layer | Technology | Purpose |
|---|---|---|
| Backend | Haskell | Core business logic, APIs, ride matching |
| Frontend | PureScript | Rider and driver mobile apps |
| Location tracking | Rust | Real-time GPS tracking service |
| Notifications | Rust | Push notifications via gRPC + Redis Streams |
| GTFS server | Rust | Public transit data |
| Build system | Nix | Reproducible builds and dev environments |
| Haskell build | Cabal | Package management and compilation |
| Configuration | Dhall | Type-safe config files |
| Database | PostgreSQL | Primary data store |
| Cache | Redis | Session/location caching |
| Messaging | Kafka | Event streaming between services |
| Routing | OSRM | Open-source route calculations |
Project Structure (Monorepo)
nammayatri/ ├── Backend/ # Haskell backend (main codebase) │ ├── rider-platform/ │ │ ├── rider-app/ # Rider-facing APIs (port 8013) │ │ └── public-transport/ # Public transit integration │ ├── provider-platform/ │ │ └── dynamic-offer-driver-app/ │ │ ├── Main/ # Driver-facing APIs (port 8016) │ │ └── Allocator/ # Ride matching engine (port 9996) │ ├── dashboard/ │ │ ├── rider-dashboard/ # Rider ops dashboard │ │ └── provider-dashboard/ # Provider ops dashboard │ ├── kafka-consumers/ # Async event processors │ ├── mocks/ # Mock third-party services │ ├── dhall-configs/ # Dhall configuration files │ └── load-test/ # Load testing suite ├── Frontend/ # PureScript frontend │ ├── ui-customer/ # Rider mobile app │ └── ui-driver/ # Driver mobile app └── docs/ # Documentation
Related Repositories
| Repository | Language | Purpose |
|---|---|---|
| Haskell | Shared types, utilities, and business logic |
| Rust | Real-time driver location tracking |
| Rust | Push notification delivery |
| Haskell | Beckn protocol routing |
| Nix | Shared Nix configuration |
Development Setup
Prerequisites
- Nix package manager (with flakes enabled)
- direnv for automatic shell activation
- ~16GB RAM recommended
Backend Setup
# Clone the repository git clone https://github.com/nammayatri/nammayatri.git cd nammayatri # Activate backend dev environment ln -sf .envrc.backend .envrc direnv allow # Build all backend packages cd Backend cabal build all # Run the full mobility stack (starts all services + DB/Redis/Kafka/OSRM) , run-mobility-stack-dev
The
, prefix is a Nix-provided command runner. Run , alone to see all available commands.
Frontend Setup
# Enter frontend dev shell nix develop .#frontend # Rider app cd Frontend/ui-customer npm install && npm start # Driver app cd Frontend/ui-driver npm install && npm start
Android builds require Android Studio,
google-services.json, and MAPS_API_KEY.
Useful Dev Commands
| Command | Purpose |
|---|---|
| Start full stack via cabal (recommended) |
| Start full stack via Nix build |
| Fast compile feedback loop |
| Start pgAdmin for DB inspection |
| Start Prometheus + Grafana |
| Kill all running services |
| Run test suite |
Services & Ports
| Service | Port |
|---|---|
| rider-app | 8013 |
| beckn-gateway | 8015 |
| dynamic-offer-driver-app | 8016 |
| mock-registry | 8020 |
| transporter-scheduler | 8053 |
| allocation-service | 9996 |
Swagger docs available at
http://localhost:<port>/swagger.
API Overview
Rider APIs (BAP — port 8013)
Core rider-side flows following Beckn lifecycle:
| Endpoint Pattern | Purpose |
|---|---|
| Search for available rides |
| Select a ride option |
| Initialize booking (address, payment) |
| Confirm and place the booking |
| Check ride status |
| Track driver location |
| Cancel a ride |
| Rate the driver |
Driver APIs (BPP — port 8016)
Driver-side operations:
| Endpoint Pattern | Purpose |
|---|---|
| Receive ride requests |
| Respond to ride selection |
| Confirm driver availability |
| Accept ride booking |
| Send ride status updates |
| Send location updates |
| Handle cancellation |
Allocator (port 9996)
The ride matching engine that connects riders with nearby drivers. Handles:
- Proximity-based driver search
- Dynamic offer management (drivers quote their price)
- Ride assignment optimization
Dashboard APIs
Ops dashboards for fleet management, analytics, and administration:
- Rider dashboard — user management, ride history, support
- Provider dashboard — driver management, earnings, compliance
Contributing
Commit Convention
<sub-project>/<type>: #<issue-number> <short summary>
Sub-projects:
backend, frontend
Types:
feat, fix, chore, ci, docs, perf, refactor, test
Examples:
backend/feat: #341 Driver onboarding flow frontend/fix: #322 Font size in ride request popup backend/refactor: #400 Extract payment module
Branch Naming
<sub-project>/<type>/<issue-number><short-description>
Examples:
backend/feat/GH-341/driver-onboarding frontend/fix/GH-322/font-size
Contribution Flow
- Find or create an issue on GitHub Issues
- Fork and create a branch following naming conventions
- Make changes with atomic commits
- Ensure
andcabal build all
passcabal test all - Submit a PR with clear description
- PRs are typically squash-merged
Code Style
- Haskell: follow existing patterns in the codebase; HLS (Haskell Language Server) configured via Nix
- PureScript: standard PS conventions
- Use
+ VSCode with recommended extensions for best IDE experiencedirenv
Key Concepts
Dynamic Offer Model
Unlike fixed-price platforms, Namma Yatri uses a dynamic offer model:
- Rider searches for a ride
- Nearby drivers receive the request
- Each driver quotes their own price
- Rider selects from available offers
services-flake
External services (PostgreSQL, Redis, Kafka, OSRM) are managed via services-flake, a Nix-based alternative to docker-compose. Services start automatically with
, run-mobility-stack-dev.
Shared Kernel
Common types, utilities, and business logic live in the shared-kernel repo. To develop against a local checkout:
# In flake.nix, change: inputs.shared-kernel.url = "path:/path/to/local/shared-kernel";
Then run
nix flake lock --update-input shared-kernel.
Troubleshooting
| Issue | Solution |
|---|---|
| Segfault during linking | (stack size limit) |
| Services won't stop after Ctrl-C | |
| VSCode direnv error | |
| Slow nix build | Check Nix binary cache is configured |
| Slow cabal build | Increase in or uncomment dev flags |
| Find Nix dependency source | |
References
- Website: https://nammayatri.in
- GitHub Org: https://github.com/nammayatri
- Open Data: https://nammayatri.in/open/
- Beckn Protocol: https://developers.becknprotocol.io/
- ONDC: https://ondc.org
- Founder's Vision (video): https://youtube.com/watch?v=NnyoxiiZLZg
- JusPay: https://juspay.in
- services-flake: https://github.com/juspay/services-flake
- Contributing Guide: https://github.com/nammayatri/nammayatri/blob/main/docs/CONTRIBUTING.md
Jai Hind! 🇮🇳