Skip to content

apoorvdarshan/verceltics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

215 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Verceltics

Vercel Web Analytics on your iPhone.
App Store · Website · Instagram

Screenshots

Projects Analytics
Projects Analytics
All your Vercel projects — favicons, framework dot, last commit, live deploy indicator Visitors, page views, bounce rate, 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-account — Add multiple Vercel accounts, switch from the Projects toolbar, and see the active Vercel avatar
  • 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, bounce rate 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 & Social Links — About includes GitHub, LinkedIn, Instagram, Product Hunt, Ko-fi, contact, legal, and subscription management
  • iPad — Adaptive grid + sidebar tab style on regular size class
  • Dark Mode — Pure black (#000000) Vercel-style design
  • Secure — Vercel tokens stored in iOS Keychain, open source code

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 Vercel token. 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 6 — Strict concurrency (SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor)
  • 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
  • Deployed on Vercel

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

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 in Projects

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 uses two Vercel 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/* Bearer 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 Vercel Inc. Vercel and the Vercel logo are trademarks of Vercel Inc. This is an independent, open-source project that uses Vercel's API with user-provided authentication tokens.

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT

Contact

Contributors

Verceltics contributors

Built with ❤︎ by Apoorv Darshan