尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证SUBMYNT V2 — an interactive world-map universe for discovering, comparing and optimizing subscriptions
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
An interactive discovery canvas for finding, comparing and optimizing digital
subscriptions. Every subscription is a large, recognizable floating logo,
organized into dense clusters by category and popularity rather than any
real-world geography — search, filter, pan, zoom, click through to detail,
compare alternatives, and track savings. Standalone project; separate from
the main Submynt marketing site.
Live: https://submynt-universe.vercel.app
Repo: https://github.com/jupelyofficial-max/submynt-universe查看完整 README ↗An interactive discovery canvas for finding, comparing and optimizing digital subscriptions. Every subscription is a large, recognizable floating logo, organized into dense clusters by category and popularity rather than any real-world geography — search, filter, pan, zoom, click through to detail, compare alternatives, and track savings. Standalone project; separate from the main Submynt marketing site.
Live: https://submynt-universe.vercel.app Repo: https://github.com/jupelyofficial-max/submynt-universe
src/app/globals.css)useUniverseStore) and persisted local state
(useMySubscriptionsStore, localStorage-backed — no backend, no bank login)npm install
npm run dev
Open http://localhost:3000. Routes:
| Route | Purpose |
|---|---|
/ | Redirects straight to /explore — there's no separate landing page |
/explore | The Subscription Universe — search, filter, Universe/List views |
/my-subscriptions | Manually tracked subscriptions |
/compare | Side-by-side comparison (?ids=a,b,c) |
/optimize | Spend summary + savings opportunities |
src/types/subscription.ts + src/data/subscriptions.ts.
~130 mock subscriptions (illustrative INR pricing, not live data) built from
one Subscription shape — no component is hard-coded to an individual
brand. Swapping in a real catalogue/API means replacing SUBSCRIPTIONS
only; everything downstream (nodes, list, compare, optimize) already reads
the generic shape.src/components/universe/universeCanvasTexture.ts
draws the abstract backdrop — a warm cream surface with a faint
cartographic grid and a few soft radial washes, no real geography. There
is deliberately nothing to recognize as a "map" here; it's environment,
not content.src/lib/universeLayout.ts groups subscriptions by
category, fans the categories themselves out from the center in a
golden-angle spiral (biggest category closest in, so the default view
opens on the densest, most recognizable cluster), and fans same-category
services out around their category's center the same way (most popular
closest to the center). Faint "constellation" links are drawn between
nearby nodes within the same category cluster. Pure function of the
catalogue, so it's stable across sessions — positioning does not depend
on any real-world geography.scripts/fetch-logos.mjs is a one-time script (not a runtime
dependency) that fetches each mock subscription's real logo from a public
favicon service into public/logos/, with a manifest at
src/data/logoManifest.json. SubscriptionLogo.tsx (2D UI) and
src/components/universe/logoTexture.ts (3D nodes) both render the real
logo when available, falling back to a canvas-generated colored
lettermark circle for the handful that don't resolve.CameraController.tsx is a custom pan/zoom rig (not drei's
OrbitControls) so the canvas behaves like a real map you fly over, not a
freely-orbiting 3D object. It only moves on deliberate input — drag,
wheel/pinch zoom, a camera command (reset/focus/search), or "Discover
mode" — never passively from mouse position, so the background stays
still while you're just reading the page.useUniverseStore holds search/filter/view/selection/camera-
command state; useMySubscriptionsStore persists what the user has added,
hydrated client-side post-mount to avoid SSR/localStorage mismatches.npm run dev # start dev server (Turbopack)
npm run build # production build
npm run start # run the production build
npm run lint # eslint (react-hooks/react-compiler rules included)
Standard Next.js app — deploys to Vercel with zero extra config
(vercel.json isn't needed; framework is auto-detected). The GitHub repo is
connected to the submynt-universe Vercel project, so pushes to main
auto-deploy. To deploy manually:
npx vercel --prod