← Back to Apps

US Civics Test

A Flutter app to help people study for the US citizenship test — my most rewarding personal project

AppProgrammerReleased5 min read
US Civics Test
EducationAndroidIOS

US Civics Test

When I became a US citizen in 2011, I was struck by how little preparation material there was that was actually enjoyable to use. The official study guides were dry and uninspiring. So I did what any programmer would do in that situation — I built something better.

The Idea

The United States Citizenship and Immigration Services (USCIS) test has 100 civics questions, and applicants need to answer at least 6 out of 10 correctly during their interview. It's not a hugely difficult test if you study, but it covers a wide range of American history and government that newcomers, myself included, just aren't all that familiar with. I wanted to build something clean and easy to use that would actually help people pass.

The Tech Evolution

The app didn't start out as what it is today. I've rebuilt it several times as the technology landscape has changed. The first version was a web app built with Angular (a JavaScript framework from Google), which I later migrated to React. Both worked fine, but the mobile experience on web apps always felt like a compromise.

Eventually I switched to Flutter, Google's cross-platform framework for building native Android and iOS apps from a single codebase. That was the right call. Flutter has become my go-to stack for all mobile development. It integrates cleanly with the hardware and services you'd expect on a modern phone, and the core packages are first-party supported by Google. Once you're in the Flutter ecosystem, you don't really want to go back.

Where It Stands

The US Civics Test app is probably my most successful personal project, though I'll be honest — the download numbers are modest. It's never going to trouble the App Store charts. But that's not really the point anymore. It's become my sandbox: the place I try out new marketing ideas, experiment with app store optimization, test new Flutter features, and generally tinker.

There's something satisfying about having a real, shipped product to experiment on rather than just spinning up throwaway demos. Each update teaches me something, whether it's about user retention, store listings, or just how to structure Flutter code better.

What's Next

I'm fairly happy with where it sits right now. The core experience is solid, the interface is clean, and it does what it's supposed to do. I'd love to see it reach more people — there's a genuine need for good citizenship test prep material — but I'm not going to lose sleep over the numbers. It's been a good project and continues to be useful.

Screenshots

US Civics Test screenshot 1
US Civics Test screenshot 2
US Civics Test screenshot 3
US Civics Test screenshot 4