subs-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 1ae4feb2bebf
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 5af1a249bbbef1db1b4c5ec8
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
src/lib/services.ts
// Popular services for the name field's suggestions: each one's own website and category, and for
// some a typical US price from public pricing pages read in October 2026. A typical price is only a
// starting point: the form labels it "typical, check yours", because plans, countries and offers differ.
import type { Category, Unit } from "./subs";

export interface Service {
  name: string;
  url: string;
  category: Category;
  /** Typical US price in dollars, and how often it is charged. */
  typical?: { usd: string; unit: Unit };
  /** Other names people type for it. */
  aka?: string[];
}

const s = (name: string, url: string, category: Category, typical?: [string, Unit], aka?: string[]): Service =>
  ({ name, url, category, ...(typical ? { typical: { usd: typical[0], unit: typical[1] } } : {}), ...(aka ? { aka } : {}) });

export const SERVICES: Service[] = [
  // TV and video
  s("Netflix", "https://www.netflix.com", "video"),
  s("Disney+", "https://www.disneyplus.com", "video", undefined, ["Disney Plus"]),
  s("Hulu", "https://www.hulu.com", "video"),
  s("HBO Max", "https://www.hbomax.com", "video", undefined, ["Max"]),
  s("Prime Video", "https://www.primevideo.com", "video", undefined, ["Amazon Prime Video"]),
  s("Apple TV", "https://tv.apple.com", "video", undefined, ["Apple TV+"]),
  s("Paramount+", "https://www.paramountplus.com", "video", undefined, ["Paramount Plus"]),
  s("Peacock", "https://www.peacocktv.com", "video"),
  s("YouTube Premium", "https://www.youtube.com/premium", "video"),
  s("YouTube TV", "https://tv.youtube.com", "video"),
  s("Crunchyroll", "https://www.crunchyroll.com", "video"),
  s("Sling TV", "https://www.sling.com", "video"),
  // Music and audio
  s("Spotify", "https://www.spotify.com", "music", undefined, ["Spotify Premium"]),
  s("Apple Music", "https://www.apple.com/apple-music/", "music"),
  s("YouTube Music", "https://music.youtube.com", "music"),
  s("Amazon Music Unlimited", "https://www.amazon.com/music/unlimited", "music"),
  s("Tidal", "https://tidal.com", "music"),
  s("SiriusXM", "https://www.siriusxm.com", "music"),
  s("Pandora", "https://www.pandora.com", "music"),
  s("Audible", "https://www.audible.com", "music"),
  // Bundles, storage and software
  s("Apple One", "https://www.apple.com/apple-one/", "software"),
  s("iCloud+", "https://www.apple.com/icloud/", "storage", undefined, ["iCloud"]),
  s("Google One", "https://one.google.com", "storage"),
  s("Dropbox", "https://www.dropbox.com", "storage"),
  s("Microsoft 365", "https://www.microsoft.com/microsoft-365", "software", undefined, ["Office 365"]),
  s("Adobe Creative Cloud", "https://www.adobe.com/creativecloud.html", "software", undefined, ["Photoshop", "Lightroom"]),
  s("Canva Pro", "https://www.canva.com", "software"),
  s("Notion", "https://www.notion.com", "software"),
  s("Evernote", "https://evernote.com", "software"),
  s("Todoist", "https://www.todoist.com", "software", ["7", "month"]),
  s("1Password", "https://1password.com", "software"),
  s("NordVPN", "https://nordvpn.com", "software"),
  s("ExpressVPN", "https://www.expressvpn.com", "software"),
  s("Grammarly", "https://www.grammarly.com", "software"),
  s("ChatGPT Plus", "https://chatgpt.com", "software", undefined, ["ChatGPT", "OpenAI"]),
  s("Claude Pro", "https://claude.ai", "software", undefined, ["Claude"]),
  s("Google AI Pro", "https://gemini.google.com", "software", undefined, ["Gemini"]),
  s("Perplexity Pro", "https://www.perplexity.ai", "software", undefined, ["Perplexity"]),
  s("Midjourney", "https://www.midjourney.com", "software"),
  s("Rocket Money Premium", "https://www.rocketmoney.com", "money", undefined, ["Rocket Money", "Truebill"]),
  // News and reading
  s("The New York Times", "https://www.nytimes.com", "news", undefined, ["NYT", "New York Times"]),
  s("The Washington Post", "https://www.washingtonpost.com", "news"),
  s("The Wall Street Journal", "https://www.wsj.com", "news", undefined, ["WSJ"]),
  s("The Economist", "https://www.economist.com", "news"),
  s("Medium", "https://medium.com", "news"),
  s("Apple News+", "https://www.apple.com/apple-news/", "news"),
  s("Kindle Unlimited", "https://www.amazon.com/kindleunlimited", "news"),
  // Games
  s("Xbox Game Pass", "https://www.xbox.com/xbox-game-pass", "games"),
  s("PlayStation Plus", "https://www.playstation.com/ps-plus/", "games", undefined, ["PS Plus"]),
  s("Nintendo Switch Online", "https://www.nintendo.com/switch/online/", "games"),
  s("Apple Arcade", "https://www.apple.com/apple-arcade/", "games"),
  s("Discord Nitro", "https://discord.com/nitro", "games"),
  // Health and fitness
  s("Peloton", "https://www.onepeloton.com", "health"),
  s("Strava", "https://www.strava.com", "health"),
  s("MyFitnessPal", "https://www.myfitnesspal.com", "health"),
  s("ClassPass", "https://classpass.com", "health"),
  s("Calm", "https://www.calm.com", "health", ["69.99", "year"]),
  s("Headspace", "https://www.headspace.com", "health", ["69.99", "year"]),
  s("BetterSleep", "https://www.bettersleep.com", "health", ["9.99", "month"]),
  s("Insight Timer", "https://insighttimer.com", "health", ["9.99", "month"]),
  s("Noisli", "https://www.noisli.com", "health", ["12", "month"]),
  s("Strong", "https://www.strong.app", "health", ["4.99", "month"]),
  s("Hevy", "https://www.hevyapp.com", "health", ["2.99", "month"]),
  s("JEFIT", "https://www.jefit.com", "health", ["12.99", "month"]),
  s("Habitica", "https://habitica.com", "health", ["4.99", "month"]),
  // Learning
  s("Duolingo Super", "https://www.duolingo.com", "learning", ["12.99", "month"], ["Duolingo", "Super Duolingo", "Duolingo Max"]),
  s("Babbel", "https://www.babbel.com", "learning", ["17.95", "month"]),
  s("Busuu", "https://www.busuu.com", "learning"),
  s("Rosetta Stone", "https://www.rosettastone.com", "learning", ["19.99", "month"]),
  s("Memrise", "https://www.memrise.com", "learning", ["24.99", "month"]),
  s("Quizlet Plus", "https://quizlet.com", "learning", ["7.99", "month"], ["Quizlet"]),
  s("Brainscape", "https://www.brainscape.com", "learning"),
  s("MasterClass", "https://www.masterclass.com", "learning"),
  s("Coursera Plus", "https://www.coursera.org", "learning", undefined, ["Coursera"]),
  s("Skillshare", "https://www.skillshare.com", "learning"),
  s("LinkedIn Premium", "https://www.linkedin.com/premium", "work"),
  // Food, shopping and memberships
  s("Amazon Prime", "https://www.amazon.com/prime", "shopping", undefined, ["Prime"]),
  s("Walmart+", "https://www.walmart.com/plus", "shopping", undefined, ["Walmart Plus"]),
  s("Costco", "https://www.costco.com", "shopping"),
  s("DashPass", "https://www.doordash.com/dashpass/", "food", undefined, ["DoorDash"]),
  s("Uber One", "https://www.uber.com/us/en/u/uber-one/", "food"),
  s("Instacart+", "https://www.instacart.com", "food", undefined, ["Instacart"]),
  s("HelloFresh", "https://www.hellofresh.com", "food"),
  // Money
  s("YNAB", "https://www.ynab.com", "money", ["14.99", "month"], ["You Need A Budget"]),
  s("Monarch Money", "https://www.monarch.com", "money", ["14.99", "month"], ["Monarch"]),
  s("Copilot Money", "https://www.copilot.money", "money", ["13", "month"]),
  s("Goodbudget", "https://goodbudget.com", "money", ["10", "month"]),
  s("Splitwise Pro", "https://www.splitwise.com", "money", undefined, ["Splitwise"]),
  // Work tools
  s("Zoom", "https://zoom.us", "work", ["16.99", "month"], ["Zoom Pro"]),
  s("Slack", "https://slack.com", "work"),
  s("Trello", "https://trello.com", "work", ["6", "month"]),
  s("Asana", "https://asana.com", "work", ["13.49", "month"]),
  s("Miro", "https://miro.com", "work"),
  s("Toggl Track", "https://toggl.com/track/", "work", ["12", "month"], ["Toggl"]),
  s("Harvest", "https://www.getharvest.com", "work"),
  s("WeTransfer", "https://wetransfer.com", "work"),
  s("DocuSign", "https://www.docusign.com", "work", ["132", "year"]),
  s("Dropbox Sign", "https://sign.dropbox.com", "work", ["15", "month"], ["HelloSign"]),
  s("PandaDoc", "https://www.pandadoc.com", "work", ["228", "year"]),
  s("Typeform", "https://www.typeform.com", "work", ["39", "month"]),
  s("Jotform", "https://www.jotform.com", "work", ["39", "month"]),
  s("SurveyMonkey", "https://www.surveymonkey.com", "work"),
  s("Calendly", "https://calendly.com", "work"),
  s("Doodle", "https://doodle.com", "work"),
  s("Bitly", "https://bitly.com", "work", ["120", "year"]),
  s("Rebrandly", "https://www.rebrandly.com", "work", ["11", "month"]),
  s("Linktree", "https://linktr.ee", "work"),
  s("Beacons", "https://beacons.ai", "work"),
  s("Smallpdf", "https://smallpdf.com", "work"),
  s("iLovePDF", "https://www.ilovepdf.com", "work"),
  s("Adobe Acrobat", "https://www.adobe.com/acrobat.html", "work", undefined, ["Acrobat Pro"]),
  s("FreshBooks", "https://www.freshbooks.com", "work"),
  s("Invoice Simple", "https://www.invoicesimple.com", "work", ["6.99", "month"]),
  s("Wispr Flow", "https://wisprflow.ai", "work", ["15", "month"]),
  s("Otter.ai", "https://otter.ai", "work", undefined, ["Otter"]),
  s("Loom", "https://www.loom.com", "work", ["18", "month"]),
  s("TinyPNG", "https://tinypng.com", "work"),
  s("remove.bg", "https://www.remove.bg", "work", undefined, ["removebg"]),
  s("Zety", "https://zety.com", "work"),
  s("Resume.io", "https://resume.io", "work"),
  s("SignUpGenius", "https://www.signupgenius.com", "work"),
  s("Pastebin Pro", "https://pastebin.com", "work", undefined, ["Pastebin"]),
  s("Slido", "https://www.slido.com", "work"),
  s("Mentimeter", "https://www.mentimeter.com", "work"),
  s("Kahoot", "https://kahoot.com", "work", undefined, ["Kahoot!"]),
  // Family
  s("Huckleberry", "https://huckleberrycare.com", "family"),
  s("Glow Baby", "https://glowing.com", "family", ["59.99", "year"]),
  s("Nanit", "https://www.nanit.com", "family", undefined, ["Nanit Insights"]),
];

const norm = (t: string) => t.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();

/** Services whose name (or other name) starts with, or has a word starting with, what was typed. */
export function suggest(typed: string, limit = 8): Service[] {
  const q = norm(typed);
  if (!q) return [];
  const score = (sv: Service) => {
    let best = 9;
    for (const n of [sv.name, ...(sv.aka || [])].map(norm)) {
      if (n === q) best = Math.min(best, 0);
      else if (n.startsWith(q)) best = Math.min(best, 1);
      else if (` ${n}`.includes(` ${q}`)) best = Math.min(best, 2);
    }
    return best;
  };
  return SERVICES.map((sv) => ({ sv, k: score(sv) }))
    .filter((x) => x.k < 9)
    .sort((a, b) => a.k - b.k || a.sv.name.localeCompare(b.sv.name))
    .slice(0, limit)
    .map((x) => x.sv);
}

/** The listed service with exactly this name (or other name), if any. */
export function serviceNamed(name: string): Service | undefined {
  const q = norm(name);
  return q ? SERVICES.find((sv) => [sv.name, ...(sv.aka || [])].some((n) => norm(n) === q)) : undefined;
}

Change history

Point store links to openapps.free
1ae4feb2be · 18 hours ago
Bind agent address in policy
99bbab3f0c · 19 hours ago
Use OpenApps service URLs and add contribution strip
781c3c23e5 · 19 hours ago
Bounded source sync
048e3257a5 · 1 day ago
Bounded source sync
7a358a3be6 · 1 day ago
Bounded source sync
0c833fcb0e · 1 day ago