{"id":49927348,"url":"https://github.com/atomantic/escapemint-swift","last_synced_at":"2026-05-17T01:00:31.103Z","repository":{"id":354471071,"uuid":"1181953576","full_name":"atomantic/EscapeMint-Swift","owner":"atomantic","description":"Free, privacy-first DCA \u0026 portfolio tracker for iPhone, iPad, and Mac. Rules-based allocation, backtesting, no accounts, no ads.","archived":false,"fork":false,"pushed_at":"2026-05-10T20:36:38.000Z","size":13858,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T00:59:59.100Z","etag":null,"topics":["dca","finance","investing","ios","macos","personal-finance","portfolio-tracker","swift6","swiftui","xcodegen"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomantic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T21:08:19.000Z","updated_at":"2026-05-10T20:36:43.000Z","dependencies_parsed_at":"2026-05-17T01:00:24.433Z","dependency_job_id":null,"html_url":"https://github.com/atomantic/EscapeMint-Swift","commit_stats":null,"previous_names":["atomantic/escapemint-swift"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/atomantic/EscapeMint-Swift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2FEscapeMint-Swift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2FEscapeMint-Swift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2FEscapeMint-Swift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2FEscapeMint-Swift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomantic","download_url":"https://codeload.github.com/atomantic/EscapeMint-Swift/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2FEscapeMint-Swift/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33124143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dca","finance","investing","ios","macos","personal-finance","portfolio-tracker","swift6","swiftui","xcodegen"],"created_at":"2026-05-17T01:00:10.915Z","updated_at":"2026-05-17T01:00:31.093Z","avatar_url":"https://github.com/atomantic.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EscapeMint\n\n**Native SwiftUI portfolio tracker for iPhone, iPad, and Mac.** Rules-based DCA tracking, per-fund recommendations, historical backtesting. No accounts, no ads, no server — your data stays in iCloud Documents or on-device.\n\n🌐 **[escapemint.shadowpuppet.net](https://escapemint.shadowpuppet.net)** — marketing page and feature overview\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://apps.apple.com/us/app/escapemint/id6760598547\"\u003e\n    \u003cimg src=\"https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg\" alt=\"Download on the App Store\" height=\"56\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Why free?\n\nI built this so my kid could manage their investments using the allocation algorithm I've been running on my own portfolio for years. I don't charge for it because **the algorithm works**.\n\nAnyone selling finance software is making money from *you* — subscription fees, affiliate referrals, data brokering. Not from a system that actually builds wealth. If their system worked, they wouldn't need your $9.99/month.\n\nEscapeMint has no Pro tier, no \"unlock full features\", no ads, no analytics, and no account to sign up for. The algorithm is here, the code is here, the app is free. Use it, fork it, send a PR.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/mac-01-dashboard.png\" alt=\"Mac dashboard — portfolio metrics, allocation pie charts, actionable funds\" width=\"860\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/iphone/01-dashboard.png\" alt=\"iPhone dashboard\" width=\"220\"\u003e\n  \u003cimg src=\"screenshots/iphone/02-backtest.png\" alt=\"iPhone backtest\" width=\"220\"\u003e\n  \u003cimg src=\"screenshots/iphone/03-fund-detail.png\" alt=\"iPhone fund detail\" width=\"220\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/iphone/04-audit.png\" alt=\"iPhone audit trail\" width=\"220\"\u003e\n  \u003cimg src=\"screenshots/iphone/05-platforms.png\" alt=\"iPhone platforms\" width=\"220\"\u003e\n  \u003cimg src=\"screenshots/iphone/06-settings.png\" alt=\"iPhone settings\" width=\"220\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Rules-based DCA recommendations** per fund — buy more when below target APY, harvest when above, hold through the dead zone\n- **Backtesting** across multi-asset allocations with historical price data (BTC, TQQQ, SPXL, VTI, BRGNX, GLD, SLV)\n- **Aggregate portfolio metrics** — realized + unrealized gains, APY, allocation drift, daily change\n- **Per-fund detail** with 4 chart types (equity, price, APY, gain)\n- **Derivatives support** — margin, liquidation detection, leveraged positions\n- **Audit trail** across all entries, searchable and filterable\n- **iCloud Documents sync** across devices (macOS ↔ iPad ↔ iPhone) or fully local\n- **Manual entry** — you own the data, same TSV+JSON format as the [EscapeMint web app](https://github.com/atomantic/EscapeMint) for portability\n- **Widgets + notifications** — portfolio value at a glance, DCA reminders when an interval hits\n- **Biometric lock** (Face ID / Touch ID) on the app\n- **Free forever.** No Pro features. No IAP. No analytics.\n\n## Install\n\n**End users:** grab it from the App Store ↑\n\n**Developers:** keep reading ↓\n\n---\n\n## Build from source\n\n### Requirements\n\n- macOS with Xcode 16.0+\n- Swift 6.0 (bundled with Xcode 16)\n- iOS 17.0+ / macOS 14.0+ deployment target\n- [XcodeGen](https://github.com/yonaskolb/XcodeGen) — `brew install xcodegen`\n\n### Quick Start\n\n```bash\ngit clone https://github.com/atomantic/EscapeMint-Swift.git\ncd EscapeMint-Swift\nxcodegen generate\nopen EscapeMint.xcodeproj\n```\n\nFrom Xcode: pick **EscapeMint_iOS** or **EscapeMint_macOS** in the scheme picker and hit ▶.\n\n### Command line\n\n```bash\n# Build (iOS simulator, no signing)\nxcodebuild build \\\n  -project EscapeMint.xcodeproj \\\n  -scheme EscapeMint_iOS \\\n  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \\\n  -configuration Debug \\\n  CODE_SIGNING_ALLOWED=NO \\\n  -quiet\n\n# Build (macOS)\nxcodebuild build \\\n  -project EscapeMint.xcodeproj \\\n  -scheme EscapeMint_macOS \\\n  -destination 'platform=macOS' \\\n  -configuration Debug \\\n  CODE_SIGNING_ALLOWED=NO \\\n  -quiet\n\n# Run tests (macOS — fastest)\nxcodebuild test \\\n  -project EscapeMint.xcodeproj \\\n  -scheme EscapeMint_macOS \\\n  -destination 'platform=macOS' \\\n  -configuration Debug \\\n  CODE_SIGNING_ALLOWED=NO\n```\n\nCI runs iOS + macOS tests on every PR — see `.github/workflows/ci.yml`.\n\n## Project layout\n\n```\nEscapeMint/\n  App/            App entry, Info.plist, entitlements, assets\n  Engine/         Pure-function math (FundEngine, BacktestEngine, Converters)\n  Models/         FundTypes, FundTypeConfig, AppStorageKeys\n  Storage/        FundStore (actor I/O), FundDataStore (MainActor state), iCloud sync\n  Services/       Notifications, widget snapshot, auth, Spotlight indexer\n  Theme/          Colors, formatters, platform modifiers\n  Views/          All SwiftUI — Dashboard, FundDetail, Backtest, Settings, etc.\nEscapeMintTests/  XCTest suite (run on both iOS and macOS)\nEscapeMintWidget/ WidgetKit extension (iOS only)\n```\n\n`project.yml` is the source of truth — `EscapeMint.xcodeproj` is regenerated from it by XcodeGen.\n\n## Contributing\n\nPRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the short version and [PLAN.md](PLAN.md) for the current roadmap and known issues.\n\n## License\n\n[MIT](LICENSE). Go wild.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomantic%2Fescapemint-swift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomantic%2Fescapemint-swift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomantic%2Fescapemint-swift/lists"}