AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
무료 웹사이트 접근성 검사기로 WCAG 2.2·ADA·Section 508 기준을 스캔하고 코드 수준 수정안을 제공합니다
Free website accessibility checker. Scan any page against WCAG 2.2, ADA and Section 508 to see how many issues it has, then get code-level fixes with Pro.
개발 도구JavaScript · AstroGitHub @mindfulmarketingad-cmd온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Marketing site and free website accessibility checker for accessbell.co.
api/ (/api/scan, /api/contact)/app pages (static HTML + bundled scripts) backed by /api/app/*, Supabase (Auth + Postgres), Stripe Payment Link billing and Inngest background monitoringvercel.json holds headers, redirects and function config)| Command | What it does |
|---|---|
npm install | Install dependencies (Node 22.12+) |
npm run dev | Astro dev server at localhost:4321 (pages only, no /api) |
npm run preview | Production build plus a local server that mirrors vercel.json (headers, clean URLs, redirects) and runs the /api functions |
npm test | Unit tests. Set TEST_DATABASE_URL to a disposable Postgres to also run the dashboard integration tests |
npm run assets | Regenerate favicon, icons, logo.png, logo.svg and og-default.png from public/favicon.svg (needs Playwright) |
api/ Vercel functions (thin handlers): scan, contact, app, stripe-webhook, inngest
server/app/ Dashboard backend: auth, accounts and roles, billing, domains, scanning, team, monitoring
server/inngest/ Scheduled monitoring functions
supabase/migrations/ Database schema (run once in the Supabase SQL editor)
server/ Checker engine and security helpers
browser-audit.js axe-core in a real browser (Browserless), used when BROWSER_WS_ENDPOINT is set
audit.js WCAG rules over parsed HTML (parse5), the fallback engine
fetch-page.js Size/time-limited page fetcher, manual redirects
net-guard.js SSRF protection (private IP ranges, connect-time DNS check)
rate-limit.js Per-instance rate limiter
contact.js Contact form validation and delivery (Resend)
http.js JSON responses, origin check, body limits
src/
config/site.ts Name, URL, nav, footer, social links
data/pricing.ts Plans, prices, comparison table
content/blog/ Blog posts (Markdown)
lib/routes.ts Single list of URLs feeding /sitemap and /sitemap.xml
pages/ Routes
public/js/ Client scripts (external files so CSP can block inline JS)
tests/ node:test suites
www.accessbell.co (primary) and accessbell.co (redirects to www in the Vercel domain settings). Do not also redirect www to the apex in vercel.json, or assets loop between the two..env.example):
RESEND_API_KEY, CONTACT_TO_EMAIL, CONTACT_FROM_EMAIL (verify the sending domain in Resend)BROWSER_WS_ENDPOINT to your Browserless URL (wss://production-sfo.browserless.io?token=...) so scans run axe-core in a real browser. If it is missing or the browser is down, scans fall back to the HTML checker automatically./api/* (for example 20 requests per minute per IP). The built-in limiter is per instance only.supabase/migrations/0001_app_schema.sql -> Run. It creates a private app schema that Supabase's public API cannot reach. Then run each later migration in order (0002_onboarding.sql, ...). Only 0001 is destructive: never re-run it on a live database; the later ones are additive and safe to run again.https://www.accessbell.co; add Redirect URLs https://www.accessbell.co/app/auth/callback and your Vercel preview domain's /app/auth/callback.smtp.resend.com, port 465, user resend, password = your Resend API key).https://www.accessbell.co/app/billing, and allow customers to adjust quantity (quantity = number of domains). Create a webhook to https://www.accessbell.co/api/stripe-webhook for checkout.session.completed and customer.subscription.created/updated/deleted. Activate the Customer Portal and allow quantity changes, card updates and cancellation.https://<your-domain>/api/inngest on every deploy. Monitoring runs daily at 06:00 UTC..env.example to Vercel, then redeploy.How it fits together: a user signs up (Supabase Auth, session kept in httpOnly cookies scoped to /api), an account is created with them as owner, "Start 3-day free trial" sends them to the Stripe Payment Link with client_reference_id = account id, and the webhook activates the account with a domain quota equal to the subscription quantity. Roles: owner (billing), admin (domains, settings, team), member (pages, scans), viewer (read only).
unsafe-inline: every script and stylesheet is an external same-origin file. JSON-LD is a data block and is not executed.X-Frame-Options: DENY, frame-ancestors 'none', nosniff, strict referrer policy, locked-down Permissions-Policy, COOP.textContent only, so hostile pages cannot inject markup.Origin check, per-IP rate limits, Cache-Control: no-store, generic error messages./.well-known/security.txt for vulnerability reports. npm audit reports 0 vulnerabilities./Blog 308-redirects to /blog).@graph): Organization, WebSite, WebPage and BreadcrumbList on every page, plus SoftwareApplication with offers (home, pricing), FAQPage (home, pricing), Blog, BlogPosting, AboutPage and ContactPage./sitemap.xml with lastmod, /robots.txt, /rss.xml, HTML sitemap at /sitemap, Open Graph and Twitter cards with a 1200x630 image, web manifest and full favicon set.Home (/)
├── Pricing (/pricing) hub: plans, FAQ, links to disclaimer and contact
├── Blog (/blog) hub: lists every post
│ └── /blog/[slug] each post links up to Blog and Home (breadcrumbs),
│ to Home with "website accessibility checker" anchor text,
│ to Pricing, and sideways to 2 related posts
├── Solutions (/solutions) hub: continuous monitoring, automated fixes, compliance vault
├── About (/about) links to Home, Pricing, Blog and two cornerstone posts
└── Contact, Disclaimer, Privacy, Terms, Sitemap (footer on every page)
Every page links back up through breadcrumbs and the header. The homepage links down to the three newest posts and to every hub. Recommended next step: add a Standards hub (/standards with /standards/wcag-2-2, /standards/ada, /standards/section-508, /standards/en-301-549). The homepage legislation tabs and blog posts would link into it, giving each regulation keyword its own ranking page instead of competing blog posts.
Create src/content/blog/my-post-slug.md:
---
title: 'Post title (max 70 characters)'
seoTitle: 'Optional shorter <title> (max 60)'
description: '110-165 character meta description.'
pubDate: 2026-10-01
category: 'Guides'
related: ['wcag-2-2-checklist', 'ada-website-compliance-guide']
---
It appears automatically on /blog, the homepage (if among the newest three), /sitemap, /sitemap.xml and /rss.xml. Link to / with the anchor text "website accessibility checker" at least once.
src/config/site.ts with your real accounts./contact?topic=trial&plan=...; point them at your signup flow when it exists./privacy, /terms and /disclaimer, and set the governing-law jurisdiction.https://www.accessbell.co/sitemap.xml.