Hosting, analytics, deployments, and domains on your iPhone.
App Store · Website
| Projects | Analytics |
|---|---|
![]() |
![]() |
| All your Vercel projects — favicons, framework dot, last commit, live deploy indicator | Visitors, page views, and the interactive chart with peak + average markers |
- Projects Dashboard — Personal and team Vercel projects with favicons, git repo, last commit, framework
- Multi-provider accounts — Connect and switch between 10 hosting platforms and 8 domain registrars
- Cloudflare Control — Accounts, zones, DNS CRUD, analytics, Pages deployments/logs/actions, Workers deployments/actions, cache purge, and a guarded advanced API explorer
- Hosting dashboards — Netlify, Railway, Render, DigitalOcean, Heroku, Fly.io, Firebase, and AWS Amplify resources, deployments, logs, actions, and provider API operation catalogs
- Registrar dashboards — Name.com, Namecheap, Porkbun, Spaceship, Dynadot, NameSilo, Gandi, and GoDaddy domains with provider API catalogs
- Live Deploy Indicator — Pulsing green dot when a deployment is < 30 minutes old
- Project Details — Scope, framework, connected repository, verified domains, and recent deployments
- Deployment Details — Open deployments to inspect target, branch, commit, creator, live URL, and build events
- Framework-tinted dots — Astro orange, Vite purple, Remix cyan, Angular red, Eleventy yellow, etc.
- Analytics — Visitors, page views, and trends with % change badges and staggered entrance
- Interactive Chart — Peak indicator, average reference line, drag-to-inspect with haptic feedback
- Full Breakdowns — Pages, routes, hostnames, referrers, UTM, countries, devices, browsers, OS, events, flags, query params
- Soft Paywall — Browse projects free; analytics gated per project tap
- Robust Favicons — Multi-source race (apple-touch-icon, scrape, weserv.nl SVG rasterise, DuckDuckGo, Google s2, icon.horse)
- Search — Filter projects by name, domain, or framework
- Pull to Refresh — Live data from Vercel API
- Update Checks — About tab shows when a newer App Store version is available
- Support Tab — Optional in-app tips (Coffee, Lunch, Big Tip, Huge Supporter) plus rate, share, star on GitHub, and Product Hunt
- About Tab — Links (GitHub, LinkedIn, X), contact, legal, and subscription management
- iPad — Adaptive grid + sidebar tab style on regular size class
- Dark Mode — Pure black (#000000) Vercel-style design
- Secure — Every credential uses device-only iOS Keychain storage; cross-host redirects are blocked and detected writes require confirmation
| Plan | Price | Trial |
|---|---|---|
| Monthly | $4.99 | — |
| Yearly | $34.99 | 7-day free trial |
| Lifetime | $59.99 | — (one-time purchase) |
Build from source for free with your own provider credentials. App Store distribution exists for convenience and to fund development.
iOS
- SwiftUI — Entire UI, layered gradient cards, scoped animations
- Swift Charts — Interactive line + area chart with peak / average / drag-select
- Swift 5 language mode — Main-actor isolation with strict concurrency checks
- RevenueCat + StoreKit — Entitlements, purchase restore, auto-renewable subscriptions, and lifetime unlock
- Keychain — Secure token storage
- async/await + actors — All API calls
Web
- Next.js — Landing page, privacy, terms
- Tailwind CSS — Styling
- Static export deployed with Cloudflare Workers Static Assets and Wrangler
This is a monorepo containing both the iOS app and the landing page:
verceltics/
├── ios/ # SwiftUI iOS app
└── web/ # Next.js landing page (verceltics.com)
- Clone the repo
git clone https://github.com/apoorvdarshan/verceltics.git
- Open
ios/verceltics.xcodeprojin Xcode - Select your team in Signing & Capabilities
- Build and run (iOS 18.0+)
cd web
npm install
npm run devDeploy the static export to Cloudflare Workers Static Assets:
npm run deployWrangler manages the verceltics.com and www.verceltics.com custom-domain
routes declared in web/wrangler.jsonc, including their Cloudflare DNS records.
The app uses Vercel personal access tokens for authentication:
- Go to vercel.com/account/tokens
- Create a token with your account scope
- Paste it in the app
- Add more accounts from the account switcher
Cloudflare accounts use the login email plus the legacy Global API Key from Cloudflare User Profile → API Tokens. The key inherits the Cloudflare user's permissions, including write access. Credentials are sent directly to api.cloudflare.com; typed destructive actions and all non-GET advanced API requests require confirmation.
To test the paywall in Xcode:
- Open
ios/verceltics.xcodeprojin Xcode and let Swift Package Manager resolve RevenueCat - Run the app with an Apple sandbox tester or TestFlight build
- Use RevenueCat customer history and Apple sandbox tools to inspect purchase state
The checked-in StoreKit config still mirrors all three products for local reference: monthly, yearly with a 7-day intro offer, and lifetime non-consumable. Production prices, trial duration, and entitlement state are managed through App Store Connect and RevenueCat.
RevenueCat Dashboard is configured to ask Apple to decline refund requests when Apple asks for developer input.
Keep this setting enabled in RevenueCat Dashboard: Project -> Apps & providers -> iOS App Store -> Handling of refund requests -> Always prefer declining refunds. Apple still makes the final refund decision.
The app communicates directly with these provider API hosts:
| Host | Endpoints | Auth |
|---|---|---|
api.vercel.com |
/v2/user, /v9/projects, /v9/projects/{id}, /v9/projects/{id}/domains |
Bearer token |
vercel.com/api |
/web-analytics/v2/* |
Bearer token |
api.cloudflare.com |
/client/v4/*, including GraphQL analytics |
Global key or scoped API token |
| Hosting provider APIs | Netlify, Railway, Render, DigitalOcean, Heroku, Fly.io, Firebase, and AWS Amplify | Provider token/key |
| Registrar provider APIs | Name.com, Namecheap, Porkbun, Spaceship, Dynadot, NameSilo, Gandi, and GoDaddy | Provider key/token |
Analytics endpoints use groupBy parameter: path, route, hostname, referrer, utm, country, device_type, client_name, os_name, event_name, flags, query_params
ios/verceltics/
├── App/VercelticsApp.swift # Entry point, soft paywall routing
├── Auth/
│ ├── AuthManager.swift # Multi-account auth, token validation, profile refresh
│ └── KeychainHelper.swift # Secure token storage
├── Network/VercelAPI.swift # All API calls (actor-based)
├── Models/
│ ├── VercelAccount.swift # Saved Vercel account metadata
│ ├── Project.swift # Project, deployment, alias, /domains
│ └── Analytics.swift # Analytics data models, time ranges
├── Views/
│ ├── LoginView.swift # Token login with animated demo chart
│ ├── MainTabView.swift # Tab bar (Projects, About, Search)
│ ├── ProjectsView.swift # Project list, search, account switcher, favicons, paywall sheet
│ ├── AnalyticsView.swift # Full analytics dashboard
│ └── AboutView.swift # Support, links, legal, update checks, sign out
├── Components/
│ ├── StatCard.swift # Metric card with change badge
│ ├── AnalyticsChart.swift # Interactive Swift Charts line graph
│ └── Shimmer.swift # Loading skeleton shimmer modifier
└── Paywall/
├── PaywallManager.swift # RevenueCat entitlement + purchase logic
├── PaywallView.swift # Subscription + lifetime paywall UI
└── Products.storekit # StoreKit testing config
Verceltics is not affiliated with, endorsed by, or sponsored by any supported hosting platform or registrar. Their names and marks belong to their respective owners. This independent, open-source project communicates directly with provider APIs using user-provided credentials.
See CONTRIBUTING.md for guidelines.
- Email: ad13dtu@gmail.com
- X: @apoorvdarshan
- LinkedIn: Verceltics
- Support: ko-fi.com/apoorvdarshan
- Issues: github.com/apoorvdarshan/verceltics/issues
- Security: see SECURITY.md for private vulnerability reporting
Built with ❤︎ by Apoorv Darshan




