A clean, Flutter application built for the Softnet Limited Developer Assessment.
The project demonstrates strong architectural structure, efficient state management, and native mobile UX best practices.
The Expense Tracker enables users to:
- View a structured list of transactions
- Filter by category
- Search by merchant name
- View transaction details
- Add new transactions via a mobile-optimized form
The application prioritizes performance, scalability, and clean separation of concerns.
- Transaction Dashboard: View a comprehensive list of expenses with merchant details and status.
- Intelligent Filtering: Instantly filter by category (Groceries, Dining, etc.) and search by merchant name.
- Seamless Navigation: Smooth transitions between list and detail views using a declarative router.
- Native Data Entry: A form optimized for mobile with numeric keypads, category pickers, and date validation.
- Language: Dart
- Framework: Flutter
- State Management: Bloc
- Navigation: GoRouter
- Dependency Injection: GetIt
modular structure:
assets/ # for app assets. contains the mock data
lib/
├── core/
| ├──data_state # define wrapper for data and errors
│ ├── di/ # Service locator (GetIt) setup
│ ├── router/ # GoRouter configuration
│ └── util/ # utility functions and extentions
| ├── domain/ # Entities & Repository interfaces
| ├── data/ # data sources & Repository implementation
| ├── presentation/
| │ ├── bloc/ # State management logic
| │ ├── pages/ # UI Screens (List, Detail, Add)
| │ └── widgets/ # Reusable UI components
└── main.dart # Application entry point
This structure ensures:
- Clear separation of concerns
- Easy scalability
- Maintainable code organizationz
NOTE: This will be changed to a feature based structure on a more robust app.
- Native numeric keyboard using
KeyboardType.number - Category & date selection via
ModalBottomSheet | DropdownandshowDatePicker - Form validation with controlled state updates
- Efficient rendering using
ListView.builder
The app comes pre-loaded with ~20 transactions covering various categories: Groceries, Transportation, Dining, Entertainment, Healthcare, Shopping, and Utilities.
- Flutter SDK:
^3.11.0 - A mobile emulator (iOS/Android) or a physical device.
Before proceeding, ensure you have the Flutter SDK installed:
- Official Guide: Flutter Installation Guide
- Windows Tutorial:
▶️ YouTube Tutorial - macOS Tutorial:
▶️ YouTube Tutorial
git clone [email protected]:Danto1606/expense_tracker.gitgit clone https://github.com/Danto1606/expense_tracker.gitcd expense_trackerflutter pub getflutter runflutter build apk --releaseflutter build ios --releaseThis project demonstrates:
- Clean, modular Flutter architecture
- Scalable state management with Bloc
- Production-conscious UX decisions
- Performance-optimized UI rendering