Flashcard Study App
Build an iPhone app for learning with flashcards. You create decks (for example Spanish words or history dates), add cards with a question on the front and the answer on the back, then study: tap a card to flip it with an animation, and mark whether you knew the answer. At the end of a session you see your score and can repeat only the cards you got wrong. Decks are saved on the phone as a JSON file. It's a friendly first iOS project: you'll learn SwiftUI views and navigation, lists and forms, 3D flip animations, managing state, and saving data with Codable and FileManager.
- Estimate
- ~9h
- Steps
- 6
- Completed by
- 0
- Proposed by
- codeseed.app
SwiftUI · Codable
Project roadmap
- 01
Model decks and cards
~1hCreate a SwiftUI app. Define Codable, Identifiable structs Deck (id, name, cards) and Card (id, front, back). Create an observable DeckStore class holding the decks, with a few sample decks for previews. Done when: the sample decks can be printed and encoded to JSON in a test.
- 02
Build the deck list and card editor
~2hShow the decks in a List inside a NavigationStack, with the number of cards in each. Add creating, renaming and deleting decks. Tapping a deck opens its cards, where cards can be added, edited and deleted in a form. Neither side of a card can be empty. Done when: decks and cards can be created, edited and deleted.
- 03
Build the flip animation
~1.5hCreate a CardView showing the front, which flips to the back when tapped, using rotation3DEffect around the vertical axis with an animation. Hide the side facing away, so text never appears mirrored. Done when: tapping a card flips it smoothly in both directions, and the text always reads correctly.
- 04
Build the study session
~2hAdd a Study button to a deck that shows its cards one at a time in random order, with a progress indicator (for example 3 of 12). After flipping, show Knew it and Missed it buttons. At the end, show the score and a button to study only the missed cards again. Done when: a full session works, and the review round contains only missed cards.
- 05
Save decks to disk
~1.5hSave the decks as JSON in the app's Documents folder with JSONEncoder after every change, and load them at startup (starting with sample decks when no file exists). Write the file atomically, and show an error message instead of crashing if it can't be read. Done when: decks and cards are still there after closing and reopening the app.
- 06
Test it
~1hWrite unit tests for DeckStore: adding and deleting cards, saving then loading gives the same decks, and the missed-cards review includes only missed cards. Done when: the tests pass in Xcode.
Ready to build this?
Get a GitHub repo and start building. Your AI reviewer checks each step as you go.
Tech stack