Skip to content

apoorvdarshan/verceltics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

275 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Verceltics

Hosting, analytics, deployments, and domains on your iPhone.
App Store · Website

Screenshots

Projects Analytics
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
Pages & Routes Countries & Devices Deep Breakdowns
Pages and Routes Countries and Devices Devices and OS
Pages, routes, hostnames, and referrers — ranked by visitors Countries with flags, devices, and browsers Operating systems, events, flags, and query parameters

Features

  • 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

Pricing

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.

Tech Stack

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

Repository Structure

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)

Setup (iOS)

  1. Clone the repo
    git clone https://github.com/apoorvdarshan/verceltics.git
  2. Open ios/verceltics.xcodeproj in Xcode
  3. Select your team in Signing & Capabilities
  4. Build and run (iOS 18.0+)

Setup (Web)

cd web
npm install
npm run dev

Deploy the static export to Cloudflare Workers Static Assets:

npm run deploy

Wrangler manages the verceltics.com and www.verceltics.com custom-domain routes declared in web/wrangler.jsonc, including their Cloudflare DNS records.

Vercel Tokens

The app uses Vercel personal access tokens for authentication:

  1. Go to vercel.com/account/tokens
  2. Create a token with your account scope
  3. Paste it in the app
  4. Add more accounts from the account switcher

Cloudflare Global API Key

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.

Purchase Testing

To test the paywall in Xcode:

  1. Open ios/verceltics.xcodeproj in Xcode and let Swift Package Manager resolve RevenueCat
  2. Run the app with an Apple sandbox tester or TestFlight build
  3. 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 Refund Handling

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.

API

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 Project Structure

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

Disclaimer

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.

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT

Contact

Contributors

Verceltics contributors

Star History

Verceltics star history chart

Built with ❤︎ by Apoorv Darshan

About

Vercel Web Analytics on your iPhone. Open-source SwiftUI companion app — visitors, page views, deployments, and traffic breakdowns from your Vercel projects.

Topics

Resources

License

Contributing

Security policy

Stars

22 stars

Watchers

0 watching

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors