A Windows desktop route planner for the Karachi Metro network
Calculates the shortest route between any two stations with Dijkstra's algorithm, highlights it interactively on the map, and prints a trip receipt — all offline, no installer, no accounts.
- Dijkstra's algorithm over a 10-station weighted graph
- Custom Sky Blue / Amber destination-select buttons with dropdown station pickers
- Highlights the computed route and total distance directly on the map
- Full visual map of the Karachi Metro network
- Clickable station pins that pop up the station's full name
- Dedicated printable receipt flow with a custom Print button
- Auto-saves every trip (start, end, distance, timestamp) to a local history log
- Browse all 10 stations with a toggleable "Show Stations on Map" overlay
- Dark-themed
CustomMessageBoxreplacing standard Windows dialogs - Equidistant, DPI-aware layouts across every screen
┌────────────────────────────────────────────────────────────┐
│ WinForms UI │
│ Welcome → Choices → Map → Stations → ShortestPath → │
│ Receipt │
└───────┬───────────────┬──────────────┬─────────────────────┘
│ │ │
▼ ▼ ▼
FormNavigator SoundHelper MetroNetwork
(screen swap) (tap feedback) (Dijkstra engine)
│
▼
TripHistoryService
(local text-file log)
Full breakdown in docs/Architecture.md.
| Package | Purpose |
|---|---|
| System.Resources.Extensions | Non-string embedded resource (de)serialization |
| Assembly | Purpose |
|---|---|
| System.Buffers, System.Memory, System.Numerics.Vectors, System.Runtime.CompilerServices.Unsafe | Compatibility shims required by System.Resources.Extensions on .NET Framework 4.7.2 |
| Namespace | Purpose |
|---|---|
System.Windows.Forms |
GUI framework — forms, controls, dialogs |
System.Drawing |
Graphics, icons, and image rendering |
System.IO |
Trip history file persistence |
System.Reflection |
Dynamic assembly-version binding on the Credits screen |
System (Console.Beep) |
Tap sound feedback |
- Windows OS
- Visual Studio 2019 or later (or the .NET Framework 4.7.2 targeting pack for CLI builds)
git clone https://github.com/SufiyanAasim/metro-navigation-system.git
cd metro-navigation-systemOpen src/MetroApp/Metro App.csproj in Visual Studio and build/run (F5), or build from the command line:
dotnet build "src/MetroApp/Metro App.csproj" -c ReleaseOr download a packaged build from docs/releases/v1.1.5.md.
The app saves travel history to <app directory>/Metro App Travel History/. Full setup details in docs/Development.md.
metro-navigation-system/
├── .github/ # CI/CD workflows, issue/PR templates, CODEOWNERS
├── docs/
│ ├── Architecture.md
│ ├── Database.md
│ ├── Development.md
│ ├── Troubleshooting.md
│ └── releases/ # Per-version release notes
├── scripts/
│ └── package-release.ps1
├── src/
│ └── MetroApp/
│ ├── Metro App.csproj
│ ├── Properties/ # Assembly and settings configuration
│ ├── Resources/ # UI backgrounds, icons, and button assets
│ ├── lib/ # Vendored reference assemblies
│ ├── Choices.cs
│ ├── Credits.cs
│ ├── FormNavigator.cs
│ ├── Map.cs
│ ├── MetroNetwork.cs
│ ├── Program.cs
│ ├── ReceiptGeneration.cs
│ ├── Shortest Path.cs
│ ├── SoundHelper.cs
│ ├── Stations.cs
│ └── TripHistoryService.cs
├── tests/ # Test placeholder and guidance
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RELEASE.md
├── ROADMAP.md
├── SECURITY.md
└── SUPPORT.md
The app models 10 stations on the Karachi Metro:
| # | Station |
|---|---|
| 0 | Millennium Mall |
| 1 | Numaish |
| 2 | FTC |
| 3 | Frere Hall |
| 4 | KPT Interchange |
| 5 | Defence Morr |
| 6 | Indus Hospital |
| 7 | Shaan Chowrangi |
| 8 | Singer Chowrangi |
| 9 | Drigh Road |
There is no automated test suite yet — the wizard flow is validated manually after each change. See tests/README.md for what's testable and how to add coverage.
./scripts/package-release.ps1 -Version "1.1.5"Builds in Release mode and stages Metro Navigation System.exe plus its config, runtime DLLs, and docs into MetroNavigationSystem-v1.1.5.zip. See docs/Development.md.
This is a fully offline, single-user desktop app — no network calls, no accounts, no database (see docs/Architecture.md and docs/Database.md). The only persisted state is a local trip-history text log. See SECURITY.md to report a vulnerability.
All releases are listed below — latest on top. Click a version to view its full release notes.
| Version | Codename | Status |
|---|---|---|
| v1.1.5 | 🩵 Teal | ✅ Released |
| v1.1.0 | ❤️ Crimson | ✅ Released |
| v1.0.5 | 💚 Neon | ✅ Released |
| v1.0.0 | 🩷 Magenta | 🚧 Pre-release |
![]() Mohammad Sufiyan Aasim System Architect · AI/MLOps · Docs |
![]() Fahad Bin Nasir Front-end Development |
See CONTRIBUTING.md to get involved.
MIT License © 2026 Metro Navigation System Contributors.
⭐ Star this repo if it helped you plan a route.

