QUICK
theunpartyios
Repository Details
Location: unparty-app/theunpartyios
Status: Active Development
Primary Purpose: iOS native blog creation application with mood-based content expression
Tech Stack
- Framework: SwiftUI
- Language: Swift
- Database: Core Data (Local persistence)
- Platform: iOS 14+
- Build Tool: Xcode
- Architecture Pattern: MVVM (Model-View-ViewModel)
Key Features
Core Functionality
- Mood-Based Blog Creation: Users select an icon representing their mood before writing
- Blog Post Management: Create, save, and list blog posts with title and body content
- Icon Selection Interface: Horizontal carousel picker for mood icons with smooth animations
- Multi-Step Creation Flow: Progressive disclosure from mood selection to content creation
- Core Data Persistence: Local storage of blog posts with metadata (title, body, date, icon, image URL)
- Image Integration: Support for attaching images to blog posts (prepared for cloud storage)
User Interface Components
- CarouselIconPickerView: Horizontal scrolling mood icon selector with visual feedback
- LongFormTextView: Multi-line text editor for blog post body content
- TitleTextView: Single-line text field for blog post titles
- BlogPostListView: List view displaying all saved blog posts
- StateHolderView: Main navigation container managing app state
Technical Features
- SpriteKit Integration: Visual effects and animations for enhanced user experience
- NavigationStack: Modern iOS navigation patterns for multi-screen flows
- Published Properties: Reactive UI updates via Combine framework
- Draft Management: In-progress blog post state preservation
Architecture
Code
iOS Native App (SwiftUI + MVVM)
├── Models
│ ├── BlogPostDraft (In-memory draft model)
│ └── BlogPost (Core Data entity)
├── ViewModels
│ ├── CreateBlogPostViewModel (Creation flow logic)
│ └── BlogPostViewModel (List and fetch logic)
├── Views
│ ├── StateHolderView (Root navigation)
│ ├── CarouselIconPickerView (Mood selection)
│ ├── LongFormTextView (Content input)
│ ├── TitleTextView (Title input)
│ ├── BlogPostListView (Post listing)
│ └── BlogCreationView (Creation wrapper)
├── Services
│ ├── CoreDataManager (Persistence layer)
│ ├── IconFetcher (Icon retrieval service)
│ └── Persistence (Core Data stack)
└── Assets
└── Icon assets (Mood icons)Data Flow
Code
User Interaction → View → ViewModel (ObservableObject) → Model → Core Data
↓
@Published Properties
↓
View Updates (Reactive)Core Data Model
BlogPost Entity:
title: String - The blog post titlebody: String - The main contentdatePosted: Date - Creation timestampimageUrl: String? - Optional image referenceiconName: String? - Selected mood icon identifier
Integration Points
Current Integrations
- Core Data: Local data persistence with SQLite backing
- SpriteKit: Animation and visual effects framework
- UIKit: Image handling and system integration
Prepared Integrations (TODO)
- Cloud Storage: AWS S3 or similar for image uploads
- Remote Icon API: Dynamic icon fetching from server
- Backend API: REST endpoints for blog post sync
- CloudKit: Apple's cloud storage for cross-device sync
Business Value
ABOUT - Understanding User Expression
This app enables users to explore and understand their emotional state through mood-based journaling. By starting with mood selection, users connect their emotional context to their written content, creating more authentic and self-aware blog posts.
Key Benefits:
- Encourages emotional awareness through mood tracking
- Provides a safe, private space for self-expression
- Helps users identify patterns in their writing and moods over time
BUILD - Content Creation Flow
The app facilitates effortless content creation through a carefully designed multi-step process:
- Mood Selection: Visual icon carousel for intuitive mood expression
- Title Creation: Short, focused title input
- Long-Form Content: Distraction-free writing environment
- Image Attachment: Optional visual enhancement
- Save & Review: Persistent storage with list view
Creator Empowerment:
- Reduces friction in the creative process
- Progressive disclosure prevents overwhelming users
- Draft system allows incomplete work to be saved
- Local-first approach ensures fast, responsive experience
CONNECT - Future Sharing Capabilities
While currently focused on personal journaling, the architecture prepares for future sharing and connection features:
- Image URL storage enables cloud-based sharing
- Core Data model supports metadata for categorization
- Draft system can evolve into scheduling/publishing workflow
- Icon system provides visual language for emotional expression
Privacy & Ownership:
- Local-first storage gives users full control of their data
- No account required for basic functionality
- Prepared for opt-in cloud sync with user consent
- Image references (not embedded) maintain flexibility for storage choices
Relationship to Ecosystem
Connection to Other UNPARTY Repositories
theunpartyapp (Web Platform):
- Complementary platform for web-based content management
- Potential for cross-platform content sync
- Shared design language around mood/emotion tracking
theunpartyunppp (Native Journaling App):
- Similar iOS native approach with SwiftUI
- Shares CloudKit integration strategy
- Both use Owner/Journal model patterns
- Potential for feature sharing or consolidation
theunpartyrunway (Dev Tools):
- Development velocity tracking for this repository
- Cost analysis for app development expenses
- Architecture documentation and evolution tracking
theunpartycrawler (Analytics):
- Potential for analyzing user content patterns
- Conversation data could inform feature development
- Content processing tools could enhance blog functionality
Unique Position in Ecosystem
- Simplicity Focus: Streamlined blog creation vs. comprehensive journaling
- Mood-First Approach: Unique emotional context before writing
- Local-First Design: Privacy and performance optimized
- Visual Expression: Icon-based mood language as core feature
Getting Started
Prerequisites
- macOS 11.0 or later
- Xcode 14.0 or later
- iOS 14.0+ device or simulator
Installation
- Clone the repository:
bash
git clone https://github.com/unparty-app/theunpartyios.git
cd theunpartyios- Open the Xcode project:
bash
open theapp.xcodeproj-
Select your target device or simulator
-
Build and run (⌘R)
Project Structure
Code
theunpartyios/
├── theapp/ # Main application code
│ ├── project/ # Feature-specific views and logic
│ │ ├── IconGridView.swift # Icon carousel picker
│ │ ├── LongFormTextView.swift # Content editor
│ │ ├── TitleTextView.swift # Title input
│ │ ├── BlogPostDraft.swift # Draft model
│ │ └── CreateBlogPostViewModel.swift # Creation logic
│ ├── unused/ # Experimental/deprecated features
│ ├── theappTests/ # Unit tests
│ ├── Assets.xcassets # Images and icons
│ ├── CoreDataManager.swift # Persistence layer
│ ├── BlogPostViewModel.swift # List logic
│ └── StateHolderView.swift # Root view
├── theapp.xcodeproj/ # Xcode project file
└── theappUITests/ # UI automation testsDevelopment Guidelines
Code Style
- Follow Swift API Design Guidelines
- Use meaningful variable and function names
- Document complex logic with inline comments
- Leverage SwiftUI's declarative syntax
- Maintain MVVM separation of concerns
Core Data Best Practices
- All Core Data operations go through
CoreDataManager.shared - Save context after creating/updating entities
- Use background contexts for heavy operations
- Handle fetch request errors gracefully
UI/UX Principles
- Progressive disclosure: one step at a time
- Visual feedback for all interactions
- Accessibility support (VoiceOver, Dynamic Type)
- Smooth animations with
withAnimation - Responsive layouts for different screen sizes
Future Enhancements
Planned Features
- Cloud synchronization (CloudKit or custom backend)
- Dynamic icon fetching from remote API
- Rich text editing (markdown support)
- Image upload to cloud storage
- Blog post search and filtering
- Tags and categories
- Export to various formats (PDF, Markdown)
- Sharing capabilities (social media, email)
- Dark mode optimization
- iPad and macOS support
Technical Improvements
- Implement
IconFetcherremote API integration - Add comprehensive unit test coverage
- Implement UI tests for critical user flows
- Set up SwiftLint for code quality
- Add Codable support for BlogPostDraft
- Implement draft auto-save
- Add analytics tracking
- Performance optimization for large post lists
Testing
Running Tests
Unit Tests:
bash
# Command+U in Xcode or:
xcodebuild test -scheme theapp -destination 'platform=iOS Simulator,name=iPhone 15'UI Tests:
bash
xcodebuild test -scheme theapp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:theappUITestsTest Coverage Areas
- Core Data operations (CRUD)
- ViewModel business logic
- Draft validation
- Icon selection state management
Known Issues
Current Limitations
- Icons are hardcoded; remote fetching not yet implemented
- Image URLs stored but upload mechanism incomplete
- No user authentication or multi-user support
- BlogPost editing not yet available (create-only)
- No delete functionality in UI
- Draft system exists but no explicit "save as draft" feature
TODOs from Code Comments
- Implement
IconFetcher.fetchIcons()with actual network call - Add blog post validation feedback to users
- Create preview functionality for posts
- Implement post editing view
- Add markdown/HTML support for rich content
- Consider AWS S3 integration for images
- Add tagging and categorization system
Contributing
Development Workflow
- Create a feature branch from
main - Make your changes following code style guidelines
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request with clear description
Commit Message Format
Code
<type>: <short summary>
<detailed description if needed>
<reference to issue/ticket if applicable>Types: feat, fix, docs, refactor, test, chore
License
Copyright © 2024 UNPARTY LLC. All rights reserved.
Contact & Support
Organization: UNPARTY LLC
Repository: github.com/unparty-app/theunpartyios
Created: March 2024
Ecosystem Context
This repository is part of the UNPARTY Ecosystem, a collection of interconnected applications and tools focused on creator empowerment, privacy, and authentic expression.
Related Repositories:
- theunpartyapp: Web platform for content management and marketing
- theunpartyunppp: Comprehensive native journaling application
- theunpartyrunway: Development workflow automation and intelligence
- theunpartycrawler: Analytics intelligence and conversation processing
Ecosystem Alignment:
- Creator Ownership: Local-first approach gives users full data control
- Privacy First: No required authentication, data stays on device
- Cost Sensitivity: Minimal external dependencies, prepared for opt-in cloud services
Last Updated: 2025-10-29
Status: 🚧 Active Development
Focus: Measurable user progress through mood-based journaling that supports ABOUT → BUILD → CONNECT while protecting creator ownership, privacy, and cost-sensitivity.