---
description: "GetX Navigation conventions for LegacyApp"
alwaysApply: true
---

# GetX Navigation — LegacyApp

## Named routes
```dart
// app_pages.dart — central route definitions
abstract class AppPages {
  static const initial = Routes.home;
  static final routes = [
    GetPage(name: Routes.home,    page: () => const HomeView(),    binding: HomeBinding()),
    GetPage(name: Routes.product, page: () => const ProductView(), binding: ProductBinding()),
  ];
}

// Navigate — always use named routes
Get.toNamed(Routes.product, arguments: product);    // push
Get.offAllNamed(Routes.home);                        // replace stack
Get.back();                                          // pop
```

## Bindings
- Every route has a `Binding` class that creates and injects dependencies
- **NEVER** use `Get.put()` in a widget — only in Bindings
- Use `Get.lazyPut()` for deferred creation

## Rules
- **NEVER** use `Navigator.push/pop`
- All route strings in `lib/core/routing/routes.dart` as constants
