QUICK

the ios app for who knows yet

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 title
  • body: String - The main content
  • datePosted: Date - Creation timestamp
  • imageUrl: String? - Optional image reference
  • iconName: 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:

  1. Mood Selection: Visual icon carousel for intuitive mood expression
  2. Title Creation: Short, focused title input
  3. Long-Form Content: Distraction-free writing environment
  4. Image Attachment: Optional visual enhancement
  5. 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

  1. Clone the repository:

bash

git clone https://github.com/unparty-app/theunpartyios.git
cd theunpartyios
  1. Open the Xcode project:

bash

open theapp.xcodeproj
  1. Select your target device or simulator

  2. 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 tests

Development 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 IconFetcher remote 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:theappUITests

Test 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

  1. Create a feature branch from main
  2. Make your changes following code style guidelines
  3. Add tests for new functionality
  4. Ensure all tests pass
  5. 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.