Help us measure site usage?

With your permission, we use self-hosted analytics to understand page usage. It is optional and does not affect the Service. Learn more.

KotlinbeginnermobileAI generated

Android Flashcard Study App

Build an Android flashcard app in Kotlin: create decks of cards with a question on one side and the answer on the other, and review them with a flip animation, marking each card as known or not. Cards you get wrong come back sooner, using a simple spaced repetition schedule (the Leitner system), so you review what you need most. Everything is stored with Room, and the screens are built with Jetpack Compose and connected with Navigation Compose. It's a good first Android app with a database: you'll learn Room entities, DAOs and relations, Compose lists, forms and animations, navigating between screens with arguments, ViewModels, and testing.

Estimate
~9.5h
Steps
6
Completed by
0
Proposed by
codeseed.app

Jetpack Compose · Room · Navigation Compose

Project roadmap

  1. 01

    Set up the Room database

    ~1.5h

    Create a Compose project with Room. Define entities Deck (id and name) and Flashcard (id, deck id, question, answer, Leitner box from 1 to 5, next review date and correct count), with a foreign key and cascading delete, and a DAO returning Flow for decks with card counts, a deck's cards, and cards due today. Done when: DAO tests with an in-memory database pass.

  2. 02

    Build the deck and card screens

    ~2h

    Build a deck list (with the number of cards and cards due today) and a deck screen listing its cards, with forms to add and edit decks and cards (the question and answer can't be empty) and swipe to delete. Use ViewModels exposing state from the DAO Flows. Done when: decks and cards can be created, edited and deleted.

  3. 03

    Build the review screen

    ~2h

    Build a review screen showing one due card at a time: tap to flip it with an animation (rotating the card with graphicsLayer), then choose Knew it or Missed it, and move to the next card, with progress shown at the top. Show a summary when no cards are due. Done when: a review session goes through all due cards with a smooth flip.

  4. 04

    Add navigation

    ~1h

    Connect the screens with Navigation Compose: deck list to deck screen (passing the deck id as an argument) to the card form or the review screen, with the back button behaving correctly. Done when: every screen can be reached and left as expected.

  5. 05

    Save review results

    ~1.5h

    After each answer, update the card in Room: Knew it moves it to the next box (up to 5) and Missed it sends it back to box 1, and the next review date is set by its box (for example 1, 2, 4, 8 and 16 days). Count correct answers, and show each deck's accuracy. Write the scheduling as a pure function. Done when: reviewed cards disappear from today's list and come back on the right day.

  6. 06

    Test it

    ~1.5h

    Write unit tests for the scheduling function (every box, and missed cards returning to box 1), DAO tests for due cards on given dates, and a Compose UI test that adds a card and reviews it. Done when: all tests pass.

Ready to build this?

Get a GitHub repo and start building. Your AI reviewer checks each step as you go.

~9.5h · 6 steps

Tech stack

Jetpack ComposeRoomNavigation Compose