Skip to content

Capstone · Flutter and Dart

Capstone: a housing society dues app

Capstoneexpert· about 30 hours· 12 steps

The brief

Build Society Dues, a Flutter app for an apartment society: residents pick their flat, see the maintenance dues with late fees, pay with a UPI ID (a pretend payment against a mock server you run), and get a receipt. It works offline from a saved copy, adapts from phone to the office desktop, is covered by unit, widget and integration tests, and ships as a signed Android App Bundle and a web build with a store listing ready.

Why it matters

Housing societies, RWAs and facility managers across India pay agencies to build exactly this, and it is a strong portfolio piece because it shows the whole job: an API contract, offline behaviour, state management, navigation with deep links, forms, responsive design, a test pyramid, signing and publishing. You can demo it from a link and explain every layer in an interview.

Skills you practise

  • planning screens and an API contract
  • a mock API with dart:io
  • JSON models and business rules
  • http with an offline cache in shared_preferences
  • Provider with a sealed state
  • go_router with nested routes
  • validated forms
  • LayoutBuilder and AnimatedSwitcher
  • unit, widget and integration tests
  • flutter analyze
  • upload-key signing and app bundles
  • flutter build web and --dart-define
  • Play Store listing

You need

  • Flutter 3.24 or newer (stable), with Android Studio or VS Code
  • An Android emulator or phone, and Chrome
  • curl (built into Windows 10 and 11 as curl.exe, and into macOS and Linux)
  • A Java keytool (it comes with Android Studio's JDK) to make an upload key

What you will have at the end

Society Dues: a Flutter app for Android and the web with a mock API, offline copy, Provider state, go_router screens, a validated pay form, a responsive two-pane layout, 17 unit and widget tests plus an integration test, a signed app bundle, a live web demo and a ready store listing.

How it is marked (rubric, 100 points)
Working productA resident can load dues (online or offline), pay and get a receipt on Android and the web; the amounts and late fees are right.25
Architecture and codeRules in plain Dart models, a repository for data, a sealed state in a ChangeNotifier, small widgets, nested routes, no personal data in logs, flutter analyze clean.25
Testing17 unit and widget tests and an integration test pass, using fakes; the offline fallback and the late fee have their own tests.20
Release and listingThe bundle is signed with an upload key kept out of git; the web demo is live; the listing, privacy policy and Data safety answers are ready.20
Portfolio storyThe README explains the plan, the architecture, the trade-offs and what you would build next, with screenshots and a demo link.10

0/12 steps done

Step 1 of 12

Plan and create the project

The society_dues project exists for Android and the web, with provider, go_router, http, shared_preferences and intl added.

Before code, write a one-page plan in README.md: the screens (flats, dues, pay, receipt), the API (GET /flats/{flat}/dues, POST /payments), the late fee rule (example: ₹100 for each unpaid month before the current one), and what happens offline. A client signs off on this page, and it becomes your interview story.

Create the project for the two platforms you will ship, then add the five packages in one command. Copy the starter files. The file test/what-to-test.dart lists every test you will write and the exact names to use; it is a plan, so delete it once your real test files exist.

Run this on your machine, then paste the output below
$ flutter pub add provider go_router http shared_preferences intl

Also check yourself

Your notes: lib/models.dart, lib/repository.dart, lib/dues_model.dart, lib/main.dart

Write down each command you ran. It goes into your project summary.