How to vibe codeGoodLinks
The Better Way to Save and Read Articles
goodlinks.app ↗Productivity
The verdict: can you vibe code GoodLinks?
Build a personal macOS and iOS subset with Swift and SwiftUI, but expect steep challenges with native share extensions and robust article DOM parsing.
Cloning GoodLinks for personal use means building a native Swift and SwiftUI application targeting macOS and iOS. While SwiftUI makes local data lists, tagging, and reader themes straightforward to scaffold, you will hit real friction writing native Safari and Share Sheet extensions in Swift, managing offline CloudKit syncing edge cases, and reliably cleaning messy article HTML DOMs without breaking on dynamic sites.
Estimated effort: 4-6 weeks of evening coding
What you can't replicate
- The exact polish and years of edge-case refinement of the official native app
- Seamless integration into the broader Apple power-user ecosystem via native AppleScript and Shortcut intents out of the box
Founded
2020
Raised
—
Team
1 person
Cheapest paid tier
$9.99
What GoodLinks does
Read-it-later and article organization app for Apple platforms that extracts core text, provides customizable reading environments, highlighting, note-taking, full-text search, and iCloud synchronization without proprietary server accounts.
Core features
- Article text extraction and readability parsing
- Clean reader mode with custom fonts, sizing, and color themes
- Highlighting and color-coded note-taking
- Centralized notebook and tag organization
- Full-text search across titles, descriptions, and article contents
- iCloud sync across devices via CloudKit
- Share Sheet and Safari extensions
- Markdown export for tools like Obsidian
- One-tap article summaries
The business
Pricing
- Universal Purchase$9.99
- Annual Feature UpgradeOptional yearly fee
Funding
Unknown / bootstrapped
The hard parts of vibe coding GoodLinks
- Robust DOM readability parsing and ad stripping across diverse website layouts
- Building reliable native Safari extensions and iOS Share Sheet extensions in Swift
- Handling CloudKit record conflict resolution and offline-first queue syncing
- Deep macOS/iOS system integration including Shortcuts, AppleScript, and widgets
How to vibecode GoodLinks
Prerequisites
Mac
Required for building iOS and macOS native applications using Xcode.
XcodeFree
Official IDE for Swift, SwiftUI development, and compiling native Apple platform extensions.
Apple Developer Account$99/yr
Required for configuring CloudKit containers and provisioning native system extensions on physical devices.
AI coding tools
Recommended stack
| Frontend | SwiftUI (iOS 16+ / macOS 13+) |
|---|---|
| Backend | CloudKit (iCloud Sync) |
| Database | SwiftData / CoreData with CloudKit container |
| Auth | Apple iCloud Account (CloudKit identity) |
| Payments | StoreKit 2 (for optional local IAP) |
| Other | SwiftSoup (HTML parsing for article extraction), Share Extension / Safari Extension targets |
Hosting & infrastructure
| Cloudflare | Optional auxiliary read-it-later proxy endpoint if cloud-side HTML extraction is needed | $0/mo |
Build guide
01Project Scaffolding & SwiftData Local Schema
Initialize a multiplatform iOS and macOS SwiftUI app container using Xcode, configuring SwiftData models for Articles, Highlights, Notes, and Tags.
Create a multiplatform Swift/SwiftUI app skeleton targeting iOS 16+ and macOS 13+. Set up SwiftData models for `Article` (id, url, title, author, contentHtml, plainTextContent, excerpt, publishedDate, addedDate, readingPosition, isStarred, isArchived, tags), `Highlight` (id, articleId, text, note, color, createdAt), and `Tag` (id, name). Configure the App entry point to initialize the SwiftData model container with CloudKit synchronization enabled using a shared iCloud container identifier.02Article Readability Extraction Pipeline
Implement a local or extension-based HTML parsing service using SwiftSoup to clean web DOMs, stripping advertisements, scripts, and navigation clutter.
Implement an article extraction utility in Swift using SwiftSoup. Write a function that takes a raw HTML string from a URL fetch, strips out script tags, styles, ads, navbars, and footers, and extracts the primary semantic container and article title. Clean the resulting HTML to render inside a customizable SwiftUI WebView or text view with adjustable font size, line spacing, and theme colors (Light, Sepia, Dark, Night).03Reader UI & Highlighting Engine
Build the immersive reading view supporting text selection, color-coded highlights, and attached user notes.
Build a SwiftUI Reader View for articles that renders clean HTML or attributed text. Implement text selection handling that allows users to tap selected text and trigger a floating menu to add a highlight with customizable colors (yellow, green, blue, pink, purple) and attach optional Markdown-compatible text notes. Store these highlights in SwiftData linked to the parent article entity and display them in a unified Notebook sidebar view.04Share Sheet and Safari Extensions
Create native Share Sheet and Safari Web Extensions to capture web pages directly into the app from any browser or app.
Add a macOS/iOS Share Extension target to the project. Implement an extension view controller or SwiftUI view that parses incoming URLs and page metadata from the system share sheet, extracts the article content, and inserts a new `Article` record directly into the shared App Group container so the main application accesses it instantly via SwiftData/CloudKit.05Organization, Search, and Markdown Export
Implement full-text search across article attributes, tag management, and customizable Markdown export functionality.
Add full-text search capabilities across article titles, authors, descriptions, and extracted content using SwiftData predicates. Build a tag management interface to filter articles by tags and starred status. Implement a Markdown export service that formats article metadata, highlights, and notes into customized Markdown templates for copying to the clipboard or sharing to external apps like Obsidian.
Cost vs paying for GoodLinks
What will you build it with?
Starting total with Claude Code~$99 one-time
Starting costs (one-time)
- Apple Developer Account$99/yr
- AI Coding Assistant (1 month)$20
Total~$119 one-time
Ongoing costs (monthly)
- Apple Developer Account renewal$8.25/mo amortized
Total~$8.25/mo
Paying for GoodLinks
$0/mo ($9.99 one-time)
Your time to build
40-60 hours
AI tool credits
$20/mo (Claude Pro / Cursor)
Break-even
N/A (Build for personal utility and learning)
Vibe code GoodLinks: FAQ
- Can you vibe code GoodLinks yourself?
- Serious undertaking — 45/100 vibecodeable. Build a personal macOS and iOS subset with Swift and SwiftUI, but expect steep challenges with native share extensions and robust article DOM parsing.
- How long does it take to vibe code GoodLinks?
- 4-6 weeks of evening coding — roughly 40-60 hours of hands-on time with an AI coding agent.
- How do you build your own GoodLinks?
- Scoped to personal use: SwiftUI (iOS 16+ / macOS 13+) on the front, CloudKit (iCloud Sync) behind it, SwiftData / CoreData with CloudKit container for data. Follow the 5-step build guide on this page — each step has a paste-ready prompt for an AI coding agent.
- How do you code your own GoodLinks without being an expert?
- Use an AI coding tool (Claude Code or Cursor) and work in small steps: scaffold, data model, core screens, then deploy. Realistic effort: 4-6 weeks of evening coding. The prompts on this page are written so the AI does the heavy lifting.
- How much does it cost to vibe code GoodLinks instead of paying?
- About ~$119 one-time to start and ~$8.25/mo to run, versus $0/mo ($9.99 one-time) for GoodLinks. Break-even: N/A (Build for personal utility and learning).
- What stack should you use to vibe code GoodLinks?
- SwiftUI (iOS 16+ / macOS 13+); CloudKit (iCloud Sync); SwiftData / CoreData with CloudKit container; plus SwiftSoup (HTML parsing for article extraction), Share Extension / Safari Extension targets.