A notepad for what's on your mind.
A "thing" has a name, a date, optional tags (people / places / feelings), and the ability to star/favorite what matters. Swipe-left a card to mark it completed. Completed cards show up on their own searchable page.
- SwiftUI, iOS 17+
- Single-target Xcode project, no third-party dependencies
UserDefaultsJSON persistence (Persistence.swift)- App icon and
project.pbxprojare generated by scripts (see below) so they stay reproducible
open Things.xcodeproj…then ⌘R against any iPhone simulator.
Things/
├── ThingsApp.swift # @main
├── Models/
│ ├── Thing.swift # model + date helpers + grouping
│ └── Persistence.swift # UserDefaults JSON store
├── Theme/
│ ├── Theme.swift # color tokens, fonts (violet accent)
│ └── Icons.swift # custom SwiftUI shapes
└── Views/
├── ContentView.swift # 3-tab TabView (Home / Add / Completed)
├── HomeView.swift # active list, swipe-left to complete
├── CompletedView.swift # done list, swipe to undo / delete
├── DetailView.swift # detail + mark done / edit / delete
├── EditorView.swift # create / edit sheet
├── ThingCard.swift # the card primitive
├── AppIconView.swift # in-app preview of the app icon
└── FlowLayout.swift # tag wrap layout
The Xcode project file and the app icon are both generated:
python3 scripts/generate_xcodeproj.py # rewrites Things.xcodeproj/project.pbxproj
python3 scripts/generate_icons.py # rewrites Assets.xcassets/AppIcon.appiconset/icon-1024.pngRe-run generate_xcodeproj.py after adding or removing a Swift file — it auto-discovers everything under Things/.