# How to Vibe Code Your Own Ulysses (and Stop Paying for It)

> The Ultimate Writing App for Mac, iPad and iPhone

- Site: https://ulysses.app
- Category: Productivity
- Platforms: macOS app, iOS app
- Verdict: **Serious undertaking** (35/100 vibecodeable)
- Estimated effort: 2-4 months of part-time engineering

## Verdict

Build a simplified single-platform clone with Swift and SwiftUI, but expect months of rigorous work to match native text performance and export formatting.

Replicating Ulysses as a personal-use clone requires stepping away from web frameworks entirely and diving deep into native Apple development. Building a clean multi-pane split-view on macOS and iOS with Swift, managing a hierarchical document store in local SQLite or CoreData synced via CloudKit, and building custom Markdown parsing inside an NSTextView or TextKit 2 component will consume dozens of hours. Furthermore, generating clean, paginated PDF and `.docx` exports programmatically from Markdown AST nodes is notoriously tedious. If you are a writer looking for a tool, pay for Ulysses; if you want to master native macOS/iOS development and local-first architecture, building a personal clone is an intense but rewarding multi-week project.

### What you can't replicate

- Multi-language professional proofreading and grammar rule engine covering 20 languages
- Decade-plus of edge-case bug fixes in typography, text rendering, and performance
- Seamless integration with proprietary Apple App Store family sharing and licensing

## What it does

A markdown-based distraction-free writing application featuring an organizational library, grammar and style checker, multi-device synchronization, and flexible export and publishing integrations.

### Core features

- Distraction-free Markdown text editor with custom syntax highlighting
- Hierarchical organizational library (folders, groups, sheets, sub-sheets)
- Multi-device document sync using native CloudKit / iCloud documents
- Built-in proofreader and style checking rules
- Multi-format export engine (PDF, Word DOCX, ePub, HTML)
- Direct publishing integrations (WordPress, Ghost, Medium, Substack)
- Writing goals, character counters, and daily habit tracking

## The business

### Pricing

- Monthly Plan: $5.99/mo
- Yearly Plan: $39.99/yr

Founded 2011.
Team size: 11-12.

## The hard parts

- Building a buttery-smooth zero-latency text editor using TextKit and custom attributes rather than a heavy web view wrapper
- Handling offline-first document synchronization and conflict resolution reliably over CloudKit
- Writing robust layout and styling engines that compile raw Markdown into paginated, publication-grade PDFs and complex Word `.docx` documents
- Maintaining API synchronization and authentication wrappers for changing external publishing platforms

## How to vibe code Ulysses

### Prerequisites

- Mac: Required to run Xcode and build native macOS/iOS applications.
- Xcode (free): The official IDE for compiling Swift, SwiftUI, and TextKit applications.
- Apple Developer Account ($99/yr): Required if you want to test iCloud/CloudKit document synchronization on physical iOS devices.
- Cursor (Free tier / $20/mo): AI-native code editor to accelerate Swift boilerplate generation and algorithm design.

### Recommended AI tools

- Cursor: Best for iterating on SwiftUI view layouts and Swift data models with AI assistance.
- Claude Code: Excellent for reasoning through complex text parsing and export logic scripts.

### Stack

- Frontend: SwiftUI, AppKit (macOS), UIKit (iOS), TextKit 2
- Backend: Local-first architecture with SwiftData / CoreData
- Database: SQLite / CloudKit private database container
- Auth: Apple iCloud Account (CloudKit identity)
- Payments: StoreKit (optional if adding local IAP)
- Other: Swift-Markdown (Markdown parsing library), AeroGear / custom PDF rendering renderer

### Hosting

- Apple iCloud / CloudKit (Document synchronization across user devices): $0/mo (uses user's personal iCloud quota)

### Build guide

1. **Project Scaffolding & Split-View Navigation** — Initialize a multiplatform SwiftUI document-based app supporting macOS and iOS, establishing the classic three-column layout (library sidebar, sheet list, and editor).

```
Create a new multiplatform SwiftUI document-based application structure targeting macOS and iOS. Implement a three-column navigation view: sidebar for hierarchical folders/groups, middle column for sheet lists (with sorting by date/title and word count badges), and a main pane for the editor. Configure SwiftData or CoreData models to represent Groups, Sheets, and Tags recursively. Ensure the sidebar supports nested folders and drag-and-drop reordering of sheets between groups. Write clean Swift code adhering to modern SwiftUI paradigms, separating views into modular components, and including unit tests for the hierarchical data model operations.
```

2. **Markdown Editor & Custom Syntax Styling** — Implement a high-performance text editing surface using TextKit 2 or NSTextView wrapped in SwiftUI, featuring custom Markdown inline syntax highlighting.

```
Build a custom Markdown text editor wrapper for SwiftUI using TextKit 2 (`NSTextView` for macOS, `UITextView` for iOS). Implement real-time syntax highlighting for Markdown elements (headers, bold, italic, blockquotes, lists, and links) by applying custom attributed string styles dynamically as the user types, without introducing input lag. Add keyboard shortcuts for common formatting actions (e.g., Cmd+B for bold, Cmd+I for italic). Ensure the editor tracks cursor position, word count, character count, and reading time in real-time, displaying them in a sleek footer toolbar.
```

3. **CloudKit Synchronization Engine** — Integrate Apple CloudKit to handle background synchronization of sheets and folders across the user's personal devices without third-party server overhead.

```
Integrate CloudKit synchronization into the SwiftData/CoreData document store. Configure private database container records for Groups and Sheets. Implement robust conflict resolution handling (e.g., last-write-wins or merge prompts for simultaneous edits on different devices). Add background notification observers for push-based sync updates when documents change on remote devices. Write comprehensive error handling for network drops, local storage limits, and account status changes (e.g., user signed out of iCloud).
```

4. **Writing Goals and Statistics Dashboard** — Add goal-tracking features allowing users to set daily writing targets or strict character/word limits on individual sheets.

```
Implement a writing goals and statistics system. Create a model and UI for setting daily word/character targets and document-specific deadlines. Build a progress ring view in SwiftUI that visualizes daily completion status. Track historical writing velocity by logging daily word count deltas into a local store and render a clean weekly/monthly progress chart using Swift Charts. Include notification scheduling to remind users when they are falling behind their daily writing goals.
```

5. **Multi-Format Export Engine (PDF & Word)** — Build an export pipeline that compiles Markdown documents into styled PDF documents, Word `.docx` files, and ePubs.

```
Build a document export engine that converts Markdown abstract syntax trees (AST) into styled PDF, Microsoft Word (.docx), and HTML outputs. Implement a preview modal that renders live HTML representations using WebKit with selectable themes (e.g., Solarized, GitHub, Manuscript). For PDF and Word exports, write layout generation code supporting custom typography, page numbers, margins, and title pages. Provide a share sheet interface allowing users to export, print, or share files directly to system apps.
```

6. **Direct Publishing Integrations** — Add publishing connectors to sync drafts directly to external blogging platforms like WordPress and Medium.

```
Implement a publishing module that connects directly to WordPress (via REST API) and Medium API. Create settings screens for saving API credentials and authentication tokens securely in the macOS/iOS Keychain. Build a publication preparation sheet where users can select tags, set categories, configure excerpts, and attach featured images before pushing drafts directly to remote platforms as published posts or drafts. Handle API error responses gracefully with clear user alerts.
```

### Cost vs paying

**Starting costs (one-time):**

- Apple Developer Account (optional for device testing): $99/yr
- AI Coding Assistant (Cursor Pro): $20 one-time
- Total: ~$119 one-time (or $20 if testing locally without developer account)

**Ongoing costs (monthly):**

- iCloud Storage (user existing quota): $0/mo
- Total: $0/mo

- Paying for the SaaS instead: $3.33/mo ($39.99/yr)
- Build time: 60-90 hours
- AI tool credits: $20 (Cursor Pro for 1 month)
- Break-even: Never (paying $39.99/yr is vastly cheaper than your time and developer account fees)

## Sources

- [Ulysses Official Website](https://ulysses.app)
- [Ulysses App Store Listing](https://apps.apple.com/app/ulysses/id1225570693)
- [Tracxn Company Profile - Ulysses](https://tracxn.com)