A modern, privacy-first journaling app for iOS 26+ that leverages Apple Intelligence for on-device AI features and showcases the new Liquid Glass design language.
CardGenie is a native iPhone app built for iOS 26 that combines beautiful design with intelligent features - all while keeping your data completely private and offline.
For a consolidated, easy-to-browse index of all documents, see docs/README.md.
- π Rich Text Journaling - Write and organize your thoughts with ease
- π€ On-Device AI - Summarize entries, generate tags, and get reflections using Apple Intelligence
- βοΈ Writing Tools - Built-in proofreading, rewriting, and text transformation
- π 100% Offline - All data and AI processing stay on your device
- π Liquid Glass UI - Modern, translucent interface with fluid animations
- π Smart Search - Find entries by content, tags, or summaries
- βΏοΈ Accessibility First - Full support for Dynamic Type, Reduce Motion, and Reduce Transparency
CardGenie/
βββ App/
β βββ CardGenieApp.swift # Main app entry point
βββ Data/
β βββ Models.swift # SwiftData models
β βββ Store.swift # Persistence layer
βββ Intelligence/
β βββ FMClient.swift # Foundation Models wrapper
β βββ WritingTextEditor.swift # Writing Tools integration
βββ Features/
β βββ JournalListView.swift # Entry list screen
β βββ JournalDetailView.swift # Editor with AI actions
β βββ SettingsView.swift # Settings & info
βββ Design/
β βββ Theme.swift # Liquid Glass materials
β βββ Components.swift # Reusable UI components
βββ Tests/
βββ FMClientTests.swift # AI client tests
βββ StoreTests.swift # Data layer tests
- MVVM Architecture - Separation of concerns between UI and logic
- SwiftUI + SwiftData - Modern declarative UI with reactive data
- Offline-First - All features work without internet
- Privacy by Design - No data collection, tracking, or cloud sync
- Xcode 17+ with iOS 26 SDK
- iOS 26.0+ deployment target
- iPhone 15 Pro or newer for Apple Intelligence features
- Apple Intelligence enabled in Settings
- Clone the repository
- Open
CardGenie.xcodeprojin Xcode - Set the deployment target to iOS 26.0
- Build and run on a device with iOS 26+
The app works out of the box with placeholder AI responses for testing. To enable full Apple Intelligence features:
- Ensure your device supports Apple Intelligence (iPhone 15 Pro+)
- Go to Settings > Apple Intelligence & Siri
- Enable Apple Intelligence
- Wait for the on-device model to download (first time only)
- Launch CardGenie and test AI features
CardGenie uses Apple's on-device Foundation Models for custom AI features:
// Example: Summarizing an entry
let client = FMClient()
let summary = try await client.summarize(entryText)Features powered by Foundation Models:
- Summarization - Condense entries into 2-3 sentences
- Tag Generation - Extract key topics and themes
- Reflections - Generate encouraging insights
Implementation Notes:
- The
FMClient.swiftfile contains placeholder implementations for testing - When building with the actual iOS 26 SDK, replace placeholders with real API calls
- See inline comments in
FMClient.swiftfor exact API patterns
Built-in text editing assistance via UIKit's Writing Tools:
// Enable Writing Tools on text view
textView.isWritingToolsEnabled = trueAvailable to users:
- Proofread - Grammar and spelling checks
- Rewrite - Alternative phrasings and tones
- Summarize - Quick summaries of selected text
- Transform - Change style and formality
Writing Tools appear automatically when users select text in the editor.
CardGenie uses iOS 26's Liquid Glass materials for a modern, translucent UI:
// Apply Liquid Glass panel
view.glassPanel()
// Apply content background
view.glassContentBackground()
// Custom glass overlay
view.glassOverlay(cornerRadius: 16)- Translucency with Purpose - Glass materials for chrome and panels
- Content First - UI recedes when focusing, expands when needed
- Fluid Motion - Spring animations and smooth transitions
- Accessibility - Automatic fallbacks for Reduce Transparency
All Liquid Glass effects include solid fallbacks:
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
if reduceTransparency {
content.background(Glass.solid) // Opaque
} else {
content.background(Glass.panel) // Translucent
}@Model
final class JournalEntry {
var id: UUID
var createdAt: Date
var text: String
var summary: String?
var tags: [String]
var reflection: String?
}- All data stored in app sandbox via SwiftData
- No iCloud sync or external file access
- Private and secure by default
- Survives app updates and restarts
// Create
let entry = store.newEntry()
// Read
let entries = store.fetchAllEntries()
// Update
entry.text = "Updated content"
store.save()
// Delete
store.delete(entry)
// Search
let results = store.search("keyword")Run tests via Xcode Test Navigator (βU):
// Test AI client
FMClientTests.swift - 15+ tests covering all AI operations
// Test data layer
StoreTests.swift - 25+ tests covering CRUD, search, persistence- Create new entry and save text
- Search for entries by keyword
- Generate AI summary (requires Apple Intelligence)
- Select text and use Writing Tools (Proofread/Rewrite)
- Generate tags and reflections
- Delete entries with confirmation
- Share entry via system share sheet
- Test in dark mode
- Test with Reduce Transparency enabled
- Test with Reduce Motion enabled
- Test with various Dynamic Type sizes
- Turn on Airplane Mode and verify all features work offline
# Recommended test scenarios:
# - Create 100+ entries
# - Search through large datasets
# - Summarize very long entries (1000+ words)
# - Monitor memory during AI operations
# - Check battery impact of AI features- β 100% Offline - No network calls
- β On-Device AI - All processing via Neural Engine
- β Local Storage - Data never leaves device
- β No Analytics - Zero tracking or telemetry
- β No Third Parties - No external dependencies
- Journal entries stored in app sandbox
- SwiftData encrypts data when device is locked
- No iCloud sync (optional future feature)
- No backup to external locations
- User can clear all data via Settings
- Core journaling features
- Apple Intelligence integration
- Liquid Glass UI
- Offline functionality
- Search and organization
- Photo attachments
- Voice notes
- Mood tracking
- Export to PDF
- Optional iCloud sync
- Siri Shortcuts integration
- Widgets for quick entry
- Apple Watch companion app
-
Set Deployment Target
- Project Settings > General > Deployment Info
- Set to iOS 26.0
-
Configure Signing
- Automatic signing recommended
- Team: Your Apple Developer account
-
Add Frameworks
- SwiftUI (auto-included)
- SwiftData (auto-included)
- Foundation Models (iOS 26+)
- UIKit (for Writing Tools bridge)
-
Update Info.plist (if adding media later)
NSCameraUsageDescription- "To add photos to journal entries"NSMicrophoneUsageDescription- "To record voice notes"
- Update version number in project settings
- Test on physical device with Apple Intelligence
- Verify all AI features work correctly
- Test accessibility features
- Review and update privacy policy
- Prepare App Store screenshots
- Write App Store description highlighting privacy
- Submit for App Review
- Must be built with Xcode 17+ and iOS 26 SDK (as of April 2026)
- App Privacy form: "No data collected"
- Age rating: 4+ (journal app, no objectionable content)
- Categories: Productivity, Lifestyle
- Keywords: journal, diary, AI, privacy, offline
@MainActor
final class FMClient: ObservableObject {
func capability() -> FMCapabilityState
func summarize(_ text: String) async throws -> String
func tags(for text: String) async throws -> [String]
func reflection(for text: String) async throws -> String
}@MainActor
final class Store: ObservableObject {
func newEntry() -> JournalEntry
func delete(_ entry: JournalEntry)
func save()
func fetchAllEntries() -> [JournalEntry]
func search(_ searchText: String) -> [JournalEntry]
}extension View {
func glassPanel() -> some View
func glassContentBackground() -> some View
func glassOverlay(cornerRadius: CGFloat = 12) -> some View
func glassCard(cornerRadius: CGFloat = 16) -> some View
}- Foundation Models Framework
- Writing Tools Integration
- Liquid Glass Design Guidelines
- SwiftData Documentation
- "What's New in iOS 26"
- "Generating Content with Foundation Models"
- "Integrate Writing Tools in Your App"
- "Design with Liquid Glass"
- "Privacy and Machine Learning"
This is a reference implementation for iOS 26 features. Contributions welcome!
- Follow Swift API design guidelines
- Maintain offline-first approach
- Preserve privacy principles
- Include tests for new features
- Update documentation
MIT License - See LICENSE file for details
The Foundation Models API used in this project is based on the iOS 26 specification. When Apple releases the actual iOS 26 SDK, you'll need to:
-
Update
FMClient.swiftwith real API calls:- Replace placeholder implementations in
generateTextWithFoundationModels() - Import the actual
FoundationModelsframework - Use real
SystemLanguageModelandLanguageModelSessionAPIs - Handle all availability states properly
- Replace placeholder implementations in
-
Update
WritingTextEditor.swiftif needed:- Verify
isWritingToolsEnabledis the correct property name - Check for any additional configuration options
- Test on actual iOS 26 devices
- Verify
-
Test thoroughly on real devices:
- iPhone 15 Pro or newer
- iOS 26.0+ installed
- Apple Intelligence enabled
- Verify all AI features work as expected
- AI features use placeholder implementations for testing
- Writing Tools integration uses documented APIs but needs verification
- Liquid Glass effects use current SwiftUI materials as a baseline
- All code is production-ready except for the AI integration placeholders
Built with β€οΈ for iOS 26 β’ Privacy First β’ 100% Offline β’ Apple Intelligence Powered