First, the eye candy, screenshots of my rudimentary design skills.
I used a mix of color schemes from Material Design, inspiration from apps like Fable, GoodReads, and Clubhouse, to create a simple, clean, and functional design.










Architecture Overview
SwiftUI Structure
- Main App:
TheEnchantedQuillApp.swift- Entry point with login state management - Navigation:
MainTabView.swift- Tab-based navigation system - Views: Modular view structure with main sections:
HomeView.swift- Feed and recommendationsBookshelfView.swift- Digital book organizationClubsView.swift- Book clubs and communitiesChatView.swift/ChatScreen.swift- Messaging functionalityProfileView.swift- User profiles and statistics- Authentication:
LoginScreen.swift,CreateAccountScreen.swift
Design System
- Color System: Comprehensive dark academia theming in
DarkAcademiaColors.swift Color.DarkAcademia.*- Dark theme colorsColor.LightAcademia.*- Light theme colors- Pre-defined gradients for consistent styling
- Typography: Custom text field styling in
DarkAcademiaTextFieldStyle.swift - Fonts: Custom fonts loaded via Info.plist (Beachwood, Beachwood Sans, Parisienne, etc.)
Dependencies
- StreamChat: Chat functionality via Swift Package Manager
- StreamChatUI: UI components for chat interface
- Local package reference: ”../stream-chat-swift”
Configuration
- Credentials:
Config/Credentials.swiftfor API keys (seeCredentials.swift.example) - Bundle ID:
com.theenchantedquill.app - Deployment Target: iOS 17.4+
- Custom fonts: Automatically loaded via Info.plist UIAppFonts array
Media Assets
- Fonts: Located in
TheEnchantedQuill/fonts/directory - Images: Logo variants and book imagery in
media/and Assets.xcassets - Video: Background teaser video (
teaser.mp4) for login screen
Theme Management
- Environment-based color scheme detection using
@Environment(\.colorScheme) - Consistent theming through
colorScheme == .dark ? Color.DarkAcademia.* : Color.LightAcademia.*pattern - Gradient support with predefined academic color schemes
Navigation Flow
- State-based navigation with
@State private var isLoggedIn - Tab-based main interface after authentication
- Full-screen covers for modal presentations
Video Background
- AVPlayerViewController implementation for background video playback
- Auto-looping video with proper resource handling
- Graceful fallback for missing video assets
File Organization
- Main source:
TheEnchantedQuill/directory contains all Swift files - Configuration:
Config/subdirectory for credentials and settings - Assets:
Assets.xcassetsfor images,fonts/for custom typography - Documentation: Root-level markdown files for project planning and setup
- Screenshots:
screenshots/with light/dark theme examples