尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Antares — site vitrine HTML only
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Marketing site for Antares — the Solana rug-detection Chrome extension. Static HTML, no build step, deployed on Vercel.
Live: https://antaresscan.com
Sister repo (the extension + backend): antares-extension
| Path | What it is |
|---|---|
*.html (top level) | One file per public route. Each page is self-contained: <style> for desktop, links to shared CSS/JS for shared concerns. |
assets/ | Static images shared across pages — favicon, app icon, og-share images. Served with a long-immutable cache; legacy root paths (/favicon.png, /icon.png, /og-image.{png,svg}) 301 to here. |
css/base.css | Universal rules (skip-link, :focus-visible, prefers-reduced-motion). Loaded by every page. |
css/mobile-fixes.css | All mobile (<761 px) overrides. The single source of truth for mobile layout — never edit inline <style> for mobile. |
css/home-animations.css | Counter + typewriter keyframes used only on /. |
js/error-monitor.js | Cross-cutting client-side error catcher. Loaded first on every page. |
js/a11y.js | Injects skip-link + tags focusable scroll regions on every page. |
js/burger.js | Mobile drawer. State-aware: handles all four "button × drawer present/missing" combinations. |
js/nav-account.js | Swaps "Log in" → "Account" in the nav when a session cookie is present. |
js/mobile-cta-rewrite.js | Mobile-only: pulls every desktop nav .cta into the drawer so the top bar stays clean. |
js/hero-effects.js | Particles + parallax on the home hero. Gated behind body.is-home. |
js/home-animations.js | A1 counter tick-up + B1 typewriter on the home page only. |
js/faq-accordion.js | Q&A accordion behaviour for /faq and /support. |
fonts/ | Self-hosted woff2 (Bebas Neue + IBM Plex Mono). |
vercel.json | cleanUrls: true + per-route rewrites + security headers + per-route cache rules. |
manifest.json | PWA install manifest (icons point at /assets/). |
scripts/audit.mjs | Playwright-based regression audit. Runs both viewports against every public route. CI gates every PR on this passing. |
scripts/setup-auth.sh | One-shot bootstrap for the auth backend env var + redeploy. |
scripts/og-generator.html | Dev tool for crafting the OG share image — open it locally to render. Not a public route. |
scripts/migrations/ | Archived one-shot rewrites. Each migration is a record of how a cross-page change landed. |
.github/workflows/audit.yml | Wires the audit to pull_request and push: main. Two jobs: local-static-server audit + Vercel-preview audit (latter needs VERCEL_BYPASS_TOKEN secret — see docs/ci-setup.md). |
docs/ARCHITECTURE.md | Deeper map of conventions and the body-class opt-in pattern. Read this before touching anything cross-page. The placement-rules table in §1 covers what lives where. |
docs/ci-setup.md | One-time setup for the Vercel preview audit secret. |
docs/AUTH-SETUP.md | Operational runbook for the auth + payment pipeline (cross-repo with antares-extension). |
_audit/, _screenshots/ | Local-only artifacts (gitignored). |
Each is served via Vercel cleanUrls from the matching *.html:
/ /demo /features /engine
/compare /pricing /sources
/faq /changelog /about
/api /security /support /auth
/account /privacy /terms
/install has no page: vercel.json redirects it to the Chrome Web Store listing (every "Install" button of the site points at it).
/token?ca=… redirects out to the extension's backend (302).
The site is plain HTML — open any *.html directly in a browser, or
run a static server for cleanUrls + relative paths to work the way they
do in production:
# Python (no install)
python3 -m http.server 8000
# Node
npx serve .
To exercise the audit + lint locally:
npm ci # install playwright, htmlhint, stylelint
npm run lint # HTMLHint + Stylelint (fast — < 1 s)
npm test # = npm run audit — both viewports, 19 routes
npm run audit:mobile # mobile (375×812) only
npm run audit:desktop # desktop (1280×800) only
npm run audit:prod # audit https://antaresscan.com instead of local
The audit exits non-zero on any regression and prints which routes
failed which contract. Both lint and audit run in CI on every PR —
see .github/workflows/audit.yml.
One-time per clone, install a git pre-commit hook that runs npm run lint before every commit (catches HTML/CSS typos at commit time
rather than CI time):
npm run hooks:install # creates .git/hooks/pre-commit
Bypass with git commit --no-verify if you ever need to.
Push to main → Vercel rebuilds and promotes to https://antaresscan.com.
Pushes to any other branch get a preview URL. The audit gates merges
into main via .github/workflows/audit.yml.
newpage.html at the repo root. Copy the head + nav from
about.html (the simplest one) as a starting point.vercel.json:
{ "source": "/newpage", "destination": "/newpage.html" }
css/mobile-fixes.css in <head> and js/burger.js so the
mobile drawer wires itself up. Add mobile-cta-rewrite.js if the
page has nav CTAs.<body> class if the page has special needs:
is-home → home-specific styles + animationsshort-mobile → compact spacing pattern (about, security, …)legal-page → typography for /privacy, /termsis-demo, is-compare, is-pricing → page-specific tweaksscripts/audit.mjs ROUTES array and re-run the
audit locally. Make sure both viewports pass.A lot of the code is shaped by past incidents. Before changing
anything cross-page, skim docs/ARCHITECTURE.md — it documents the
contracts the audit enforces and why each exists.
<style> blocks are for desktop styling only. All mobile
rules live in css/mobile-fixes.css. PR #146 broke checkout by
injecting CSS into an inline <script> string — don't do that.max-width: 760px. Don't introduce other breakpoints; the
audit only exercises 375 × 812 and 1280 × 800.<script>
tag (?v=2). Vercel caches /js/* for a year — see
MEMORY.md::project_vercel_cache..nav-burger button without <div id="mobile-menu">
in the same page. The audit catches this, but better not to hit it.