Pattern Catalog
The AI-Built Software Pattern Catalog — 2,527 active patterns across 116 bundles. Each pattern describes a specific failure mode in AI-built software, with citation against CWE, OWASP, WCAG, NIST, and other standards. Content licensed CC-BY-4.0.
2,527 / 2,527
- Annual reminder with renewal date, price, cancel instructionsab-002564 · subscription-complianceinfo
- Failed payment handling and grace period disclosedab-002563 · subscription-complianceinfo
- Price increase notification before new-rate renewalab-002562 · subscription-complianceinfo
- Renewal reminder sent before charge with time to cancelab-002561 · subscription-compliancelow
- Free trial duration, expiry behavior, post-trial price explicitab-002560 · subscription-compliancehigh
- Material terms not buried in fine print or behind linksab-002558 · subscription-compliancemedium
- Price per billing period clearly statedab-002556 · subscription-compliancelow
- Subscription terms displayed clearly before checkoutab-002552 · subscription-compliancecritical
- Total cost including taxes/fees disclosed before paymentab-002557 · subscription-compliancehigh
- Enrollment requires affirmative, unambiguous consentab-002559 · subscription-compliancecritical
- No negative option enrollment where inaction = chargesab-002541 · subscription-compliancelow
- Written confirmation sent after enrollment with all termsab-002545 · subscription-compliancemedium
- Subscription consent separate from one-time purchaseab-002542 · subscription-compliancemedium
- Written cancellation confirmation sent immediatelyab-002555 · subscription-compliancehigh
- Cancellation in same steps (or fewer) as enrollmentab-002543 · subscription-compliancecritical
- Downgrade and pause options presented before final cancelab-002553 · subscription-compliancelow
- If enrolled online, cancellation available onlineab-002544 · subscription-compliancehigh
- Pro-rated refund policy disclosed; refund for unused portionab-002554 · subscription-compliancemedium
- Custom 404 pageab-002548 · site-health-checkmedium
- Favicon is presentab-002551 · site-health-checkinfo
- Privacy policy or terms of service linkedab-002547 · site-health-checkcritical
- No empty src or href attributesab-002549 · site-health-checkmedium
- No placeholder contentab-002550 · site-health-checkinfo
- Canonical URL is setab-002537 · site-health-checkmedium
- Meta description is presentab-002528 · site-health-checkhigh
- Open Graph tags are presentab-002539 · site-health-checkmedium
- robots.txt and sitemap are accessibleab-002535 · site-health-checkinfo
- Title tag is present and reasonable lengthab-002530 · site-health-checkhigh
- Content Security Policy header is presentab-002532 · site-health-checkhigh
- Clickjacking protection is presentab-002529 · site-health-checklow
- HSTS header is presentab-002518 · site-health-checkhigh
- HTTPS is enforcedab-002521 · site-health-checkcritical
- X-Content-Type-Options is setab-002531 · site-health-checklow
- Cache-Control headers are presentab-002538 · site-health-checkmedium
- Response compression is enabledab-002536 · site-health-checkhigh
- Images use lazy loadingab-002540 · site-health-checkinfo
- Limited render-blocking resources in headab-002525 · site-health-checkinfo
- Response time is under 3 secondsab-002534 · site-health-checkcritical
- Heading hierarchy is correctab-002526 · site-health-checkmedium
- HTML lang attribute is setab-002527 · site-health-checkmedium
- Images have alt textab-002533 · site-health-checkinfo
- Semantic HTML elements are usedab-002546 · site-health-checkinfo
- Viewport meta tag is presentab-002524 · site-health-checkhigh
- Favicon is present and properly configuredab-002522 · seo-fundamentalslow
- Open Graph image meets minimum size requirementsab-002519 · seo-fundamentalsmedium
- Open Graph tags are presentab-002523 · seo-fundamentalshigh
- Twitter Card meta tags are presentab-002520 · seo-fundamentalslow
- Canonical URL is set on each pageab-002517 · seo-fundamentalsmedium
- Character encoding is declaredab-002512 · seo-fundamentalsmedium
- Meta descriptions are between 120-160 charactersab-002497 · seo-fundamentalsinfo
- HTML lang attribute is setab-002499 · seo-fundamentalslow
- Every page has a meta descriptionab-002514 · seo-fundamentalshigh
- Title tags are between 30-60 charactersab-002500 · seo-fundamentalsinfo
- Every page has a unique title tagab-002515 · seo-fundamentalscritical
- Viewport meta tag is properly configuredab-002513 · seo-fundamentalshigh
- URLs are clean and human-readableab-002510 · seo-fundamentalslow
- Production pages are not accidentally set to noindexab-002507 · seo-fundamentalscritical
- robots.txt exists and is properly configuredab-002508 · seo-fundamentalshigh
- XML sitemap exists and is validab-002511 · seo-fundamentalshigh
- Sitemap URL is referenced in robots.txtab-002506 · seo-fundamentalsmedium
- Every page has exactly one H1 tagab-002496 · seo-fundamentalscritical
- Heading hierarchy is logicalab-002498 · seo-fundamentalshigh
- Images have meaningful alt textab-002494 · seo-fundamentalshigh
- Site has internal linking between pagesab-002509 · seo-fundamentalslow
- Page uses semantic HTML elementsab-002495 · seo-fundamentalsmedium
- External backlink profile from relevant domainsab-002478 · seo-advancedinfo
- Content Security Policy header present and allows essential resourcesab-002477 · seo-advancedlow
- Key pages meet Core Web Vitals thresholdsab-002482 · seo-advancedcritical
- All images optimized with next-gen formats and fallbacksab-002501 · seo-advancedlow
- All images have descriptive alt text, semantic filenames, and optimized weightab-002479 · seo-advancedlow
- Page speed metrics meet thresholdsab-002481 · seo-advancedmedium
- Google Search Console linked and verified with healthy crawl statsab-002480 · seo-advancedlow
- BreadcrumbList schema present on hierarchical pagesab-002484 · seo-advancedhigh
- FAQ pages include FAQPage schema with questions and answersab-002486 · seo-advancedmedium
- Home page, product/service pages, and blog posts include valid JSON-LD structured dataab-002487 · seo-advancedcritical
- LocalBusiness schema on local business pages with address and hoursab-002475 · seo-advancedlow
- Organization schema on home page with contact and social profilesab-002483 · seo-advancedlow
- Review and rating pages include Review or AggregateRating schemaab-002488 · seo-advancedmedium
- All JSON-LD Schema.org types match page content with critical properties presentab-002485 · seo-advancedhigh
- VideoObject schema on pages with embedded videosab-002474 · seo-advancedlow
- Blog posts and articles have datePublished and dateModified in schemaab-002505 · seo-advancedlow
- All indexable pages have at least 300 words of original substantive contentab-002504 · seo-advancedlow
- Internal linking hub-and-cluster structure with bidirectional linksab-002502 · seo-advancedhigh
- No two indexable pages target the same primary keywordab-002503 · seo-advancedlow
- Orphan pages addressed; all indexable pages reachable within 3 clicks from homeab-002516 · seo-advancedlow
- Crawl budget managed; no infinite scroll or session IDs in URLsab-002473 · seo-advancedhigh
- International SEO hreflang tags implemented correctlyab-002491 · seo-advancedinfo
- Critical content accessible to Googlebot; no cloaking between bot and usersab-002476 · seo-advancedcritical
- No unintended noindex tags or X-Robots-Tag headers on indexable pagesab-002492 · seo-advancedmedium
- Paginated content uses rel=next/prev or canonicalizes to page 1ab-002471 · seo-advancedhigh
- No redirect chains longer than one hopab-002472 · seo-advancedhigh
- Structured data Rich Results previews verifiedab-002489 · seo-advancedinfo
- Robots.txt accessible and doesn't block Googlebot from content, CSS, or JSab-002490 · seo-advancedmedium
- XML sitemap includes all indexable pages; noindex pages excludedab-002493 · seo-advancedmedium
- Structured data validated; no syntax errors or missing required propertiesab-002470 · seo-advancedhigh
- HTML validated against common email clientsab-002465 · sending-pipeline-infrastructuremedium
- Merge fields sanitized to prevent header injectionab-002469 · sending-pipeline-infrastructurecritical
- Plain-text alternative generated for all HTML emailsab-002448 · sending-pipeline-infrastructureinfo
- Templates rendered server-sideab-002466 · sending-pipeline-infrastructurehigh
- Template versioning tracks breaking changesab-002468 · sending-pipeline-infrastructurelow
- Unsubscribe link injected automaticallyab-002467 · sending-pipeline-infrastructurehigh
- Retries use exponential backoffab-002450 · sending-pipeline-infrastructurehigh
- Temporary failures do not block the rest of the queueab-002449 · sending-pipeline-infrastructuremedium
- Retries are idempotent — no duplicate sendsab-002451 · sending-pipeline-infrastructurecritical
- Retry limit set with dead letter escalationab-002452 · sending-pipeline-infrastructurehigh
- Permanent failures do not retryab-002453 · sending-pipeline-infrastructuremedium
- At-least-once delivery with deduplication guardab-002458 · sending-pipeline-infrastructurehigh
- Dead letter queue for permanently failed sendsab-002457 · sending-pipeline-infrastructurehigh
- Queue jobs include campaign and recipient identifiers for traceabilityab-002459 · sending-pipeline-infrastructurehigh
- Message ordering preserves campaign sequenceab-002456 · sending-pipeline-infrastructurelow
- Queue backed by durable persistent storageab-002442 · sending-pipeline-infrastructurecritical
- Message priority separates transactional from marketingab-002455 · sending-pipeline-infrastructurelow
- ESP API credentials stored in environment variablesab-002454 · sending-pipeline-infrastructurecritical
- ESP abstracted behind a common interfaceab-002462 · sending-pipeline-infrastructurehigh
- ESP health check validates connectivity before processingab-002461 · sending-pipeline-infrastructurelow
- Multi-ESP fallback routing configuredab-002463 · sending-pipeline-infrastructureinfo
- ESP response codes mapped to internal status modelab-002464 · sending-pipeline-infrastructuremedium
- Delivery status via webhooks, not pollingab-002460 · sending-pipeline-infrastructurehigh
- Clear-Site-Data header on logoutab-002439 · security-headers-iihigh
- HSTS includes includeSubDomainsab-002441 · security-headers-iihigh
- HSTS preload flag configuredab-002438 · security-headers-iimedium
- No mixed content (HTTP resources on HTTPS pages)ab-002440 · security-headers-iicritical
- No dynamic script injection with user-controlled contentab-002428 · security-headers-iicritical
- Third-party scripts documentedab-002427 · security-headers-iiinfo
- SRI elements have crossorigin attributeab-002430 · security-headers-iihigh
- SRI uses SHA-384 or strongerab-002429 · security-headers-iimedium
- Third-party scripts use async or deferab-002431 · security-headers-iimedium
- Legacy Feature-Policy header also setab-002443 · security-headers-iilow
- Sensitive APIs restricted (camera, microphone, geolocation)ab-002445 · security-headers-iihigh
- Additional browser APIs restrictedab-002446 · security-headers-iimedium
- upgrade-insecure-requests directive presentab-002447 · security-headers-iimedium
- base-uri restrictedab-002424 · security-headers-iimedium
- CSP reporting endpoint configuredab-002434 · security-headers-iilow
- No unsafe-eval in any CSP directiveab-002425 · security-headers-iicritical
- CSP uses nonce or hash-based script allowlistingab-002418 · security-headers-iicritical
- object-src set to noneab-002426 · security-headers-iilow
- Restrictive default-srcab-002423 · security-headers-iihigh
- strict-dynamic in script-srcab-002415 · security-headers-iihigh
- style-src does not use unsafe-inline without noncesab-002433 · security-headers-iilow
- Cross-Origin-Embedder-Policy configuredab-002437 · security-headers-iimedium
- Cross-Origin-Opener-Policy header is setab-002436 · security-headers-iimedium
- Cross-Origin-Resource-Policy on static assetsab-002432 · security-headers-iimedium
- Iframes use sandbox attributeab-002444 · security-headers-iilow
- External links use noopener noreferrerab-002435 · security-headers-iilow
- HSTS header is present with reasonable max-ageab-000002 · security-headershigh
- HTTPS is enforcedab-000001 · security-headerscritical
- Cookies have appropriate SameSite attributeab-000004 · security-headersmedium
- Session cookies have Secure and HttpOnly flagsab-000003 · security-headershigh
- Custom 404 and 500 error pages are configuredab-000015 · security-headerslow
- Server version headers are suppressedab-000014 · security-headerslow
- Source maps are not publicly accessible in productionab-000016 · security-headershigh
- Production error responses do not expose stack tracesab-000013 · security-headerscritical
- CORS headers are explicitly configuredab-000012 · security-headersinfo
- CSP does not use unsafe-inline for scriptsab-000006 · security-headershigh
- Content-Security-Policy header is presentab-000005 · security-headershigh
- Permissions-Policy header restricts sensitive APIsab-000010 · security-headerslow
- Referrer-Policy header is setab-000009 · security-headersmedium
- External scripts use Subresource Integrity hashesab-000011 · security-headersinfo
- X-Content-Type-Options: nosniff is setab-000008 · security-headersmedium
- X-Frame-Options or CSP frame-ancestors is setab-000007 · security-headersmedium
- No known critical vulnerabilities in dependenciesab-000019 · security-headershigh
- .env files are listed in .gitignoreab-000017 · security-headershigh
- Package lock file is committedab-000020 · security-headersmedium
- No hardcoded API keys or secrets in source codeab-000018 · security-headerscritical
- security.txt file existsab-000021 · security-headersinfo
- Configuration management separates environment-specific values from codeab-002393 · security-hardeninglow
- CORS configuration is restrictiveab-002395 · security-hardeninglow
- Dependency vulnerability scanning enabledab-002394 · security-hardeninglow
- Deserialization attack preventionab-002413 · security-hardeninglow
- Path traversal preventionab-002411 · security-hardeninglow
- Encryption in transit using TLS 1.2 or higherab-002401 · security-hardeninghigh
- Command injection preventionab-002404 · security-hardeningmedium
- Encryption at rest for sensitive dataab-002398 · security-hardeninghigh
- File upload validation enforced server-sideab-002399 · security-hardeningmedium
- Multi-factor authentication availableab-002403 · security-hardeningmedium
- OAuth state parameter validated on callbackab-002400 · security-hardeningmedium
- Server-side input validation enforcedab-002402 · security-hardeningmedium
- SQL injection prevention via parameterized queries or ORMab-002407 · security-hardeninghigh
- SSRF prevention on outbound requestsab-002397 · security-hardeningmedium
- XSS prevention through proper output escapingab-002405 · security-hardeninghigh
- XML external entity (XXE) preventionab-002396 · security-hardeningmedium
- .env and secrets files listed in .gitignoreab-002416 · security-hardeninginfo
- Software Bill of Materials or dependency tree reviewedab-002421 · security-hardeninginfo
- Secrets not exposed in error messages or logsab-002414 · security-hardeninginfo
- Security logging and audit trails for auth eventsab-002419 · security-hardeninginfo
- Threat modeling or security architecture review completedab-002417 · security-hardeninginfo
- Principle of least privilege for database and service accountsab-002420 · security-hardeninglow
- Package dependencies locked to specific versionsab-002412 · security-hardeninglow
- Outdated dependencies patched within 30 days for high and critical CVEsab-002409 · security-hardeninglow
- Secure defaults enforced in productionab-002422 · security-hardeninglow
- Subresource Integrity hashes for third-party CDN scriptsab-002410 · security-hardeninglow
- Account lockout after repeated failed login attemptsab-002375 · security-hardeninghigh
- Rate limiting enforced on authentication endpointsab-002408 · security-hardeninghigh
- CSRF tokens on state-changing requestsab-002376 · security-hardeninghigh
- JWT validation covers signature, algorithm, expiry, and audienceab-002406 · security-hardeninghigh
- Password hashing uses bcrypt, argon2, or scryptab-002386 · security-hardeningcritical
- Secrets stored in environment variables and never committed to codeab-002374 · security-hardeningcritical
- Session timeout enforced server-side with 30-minute idle limitab-002377 · security-hardeninghigh
- Session tokens are cryptographically random and at least 128 bitsab-002373 · security-hardeningcritical
- Modern exports field definedab-002371 · sdk-package-qualitycritical
- Files field restricts published contentsab-002361 · sdk-package-qualityhigh
- License field and LICENSE file presentab-002363 · sdk-package-qualitymedium
- Package name follows conventionsab-002359 · sdk-package-qualityhigh
- Framework dependencies listed as peerDependenciesab-002360 · sdk-package-qualityhigh
- TypeScript type declarations shippedab-002370 · sdk-package-qualitycritical
- API documentation covers exportsab-002384 · sdk-package-qualitylow
- CHANGELOG with entries per versionab-002379 · sdk-package-qualityhigh
- Keywords array for discoverabilityab-002385 · sdk-package-qualityinfo
- README with install and usage exampleab-002382 · sdk-package-qualityhigh
- Repository metadata fields presentab-002387 · sdk-package-qualitylow
- Version history shows semver complianceab-002383 · sdk-package-qualityhigh
- Build script produces outputab-002380 · sdk-package-qualitymedium
- No bloated dependenciesab-002388 · sdk-package-qualityhigh
- Dual ESM/CJS format or clear ESM-only stanceab-002391 · sdk-package-qualityhigh
- Minimal runtime dependenciesab-002381 · sdk-package-qualitymedium
- Source maps availableab-002378 · sdk-package-qualitylow
- Tree-shaking enabledab-002392 · sdk-package-qualityhigh
- Async operations return Promisesab-002356 · sdk-package-qualitymedium
- Clear default entry pointab-002362 · sdk-package-qualitycritical
- Configuration via constructor, not global stateab-002390 · sdk-package-qualitylow
- Custom error classes exportedab-002358 · sdk-package-qualityhigh
- Named exports used for tree-shakingab-002355 · sdk-package-qualityhigh
- No side effects on importab-002357 · sdk-package-qualitycritical
- Generic types for flexibilityab-002389 · sdk-package-qualitylow
- Email verification does not block initial accessab-002349 · saas-onboardingmedium
- Every signup and onboarding screen has a clear next action — no dead endsab-002346 · saas-onboardingcritical
- Signup form collects only essential fieldsab-002353 · saas-onboardingmedium
- Successful signup provides clear confirmationab-002347 · saas-onboardingmedium
- Social or OAuth signup is availableab-002345 · saas-onboardinglow
- Onboarding UI is accessible to users with disabilitiesab-002372 · saas-onboardingcritical
- Back navigation preserves form stateab-002369 · saas-onboardinglow
- Help documentation is accessible from within the onboarding flowab-002368 · saas-onboardinglow
- Team invitation flow is clearly presentedab-002366 · saas-onboardingmedium
- Onboarding can be skipped and revisited laterab-002367 · saas-onboardinglow
- Multi-step setup shows progress to the userab-002365 · saas-onboardinglow
- Empty states explain what goes here and how to add itab-002337 · saas-onboardinghigh
- A key action is prompted within the first sessionab-002348 · saas-onboardinghigh
- Sample data or a starter template is available for empty statesab-002340 · saas-onboardinghigh
- Application settings have sensible defaults for new usersab-002338 · saas-onboardingmedium
- New users see a welcome screen or guided orientation on first loginab-002344 · saas-onboardingmedium
- Error states during onboarding include clear recovery guidanceab-002336 · saas-onboardinghigh
- First value moment is achievable in under 5 minutesab-002339 · saas-onboardingcritical
- Loading states are shown during async setup operationsab-002364 · saas-onboardinglow
- Onboarding flow is functional on mobile devicesab-002335 · saas-onboardingmedium
- Admin can view but not modify tenant data without an audit trailab-002352 · saas-multi-tenancylow
- Audit logs are tenant-scopedab-002342 · saas-multi-tenancylow
- Tenant creation is validated and rate-limitedab-002351 · saas-multi-tenancylow
- Tenant data export is scoped to the requesting tenantab-002350 · saas-multi-tenancylow
- Tenant deletion cascades completelyab-002341 · saas-multi-tenancyhigh
- URL patterns do not expose internal tenant IDsab-002354 · saas-multi-tenancylow
- Background jobs are scoped to a single tenantab-002317 · saas-multi-tenancymedium
- Cross-tenant resource access is blockedab-002316 · saas-multi-tenancyhigh
- Rate limiting is applied per tenantab-002328 · saas-multi-tenancylow
- Search and filter do not cross tenant boundariesab-002318 · saas-multi-tenancyhigh
- Tenant switching does not leak prior tenant dataab-002319 · saas-multi-tenancyhigh
- Webhook payloads do not include other tenants' dataab-002326 · saas-multi-tenancymedium
- Invitation flow validates tenant membershipab-002329 · saas-multi-tenancyhigh
- Shared resources do not leak between tenantsab-002327 · saas-multi-tenancyhigh
- Tenant settings are isolatedab-002343 · saas-multi-tenancylow
- Cache keys include the tenant identifierab-002320 · saas-multi-tenancyhigh
- Every database query is scoped to the active tenantab-002332 · saas-multi-tenancycritical
- File storage is segregated by tenantab-002315 · saas-multi-tenancyhigh
- No cross-tenant data visible in API responsesab-002334 · saas-multi-tenancycritical
- Tenant context is set from authenticated session, not client inputab-002330 · saas-multi-tenancycritical
- API response times are tracked per routeab-002321 · saas-loggingmedium
- Correlation IDs are propagated through requestsab-002333 · saas-logginglow
- Database query performance is monitoredab-002323 · saas-logginglow
- Log format is consistent across all log sourcesab-002331 · saas-logginglow
- Logs are searchable and queryableab-002324 · saas-loggingmedium
- Third-party service health is monitoredab-002325 · saas-logginglow
- Disk, memory, and CPU monitoring is configuredab-002296 · saas-loggingmedium
- Error rate alerting is configuredab-002309 · saas-logginghigh
- Health check endpoint existsab-002297 · saas-loggingmedium
- Performance monitoring tracks response timesab-002295 · saas-loggingmedium
- Uptime monitoring is configuredab-002306 · saas-loggingcritical
- Sensitive operations are recorded in an audit logab-002294 · saas-loggingcritical
- Audit logs are immutableab-002293 · saas-loggingmedium
- Log retention policy is definedab-002322 · saas-logginglow
- Error logging includes stack trace and contextab-002308 · saas-logginghigh
- Log levels are used appropriatelyab-002312 · saas-loggingmedium
- No debug logging in productionab-002307 · saas-logginglow
- No sensitive data in logsab-002310 · saas-loggingcritical
- Request logging captures method, path, status, and durationab-002305 · saas-logginghigh
- Structured logging library is usedab-002314 · saas-logginghigh
- API responses use a consistent error formatab-002291 · saas-error-handlinghigh
- Form validation errors are inline and specificab-002292 · saas-error-handlinghigh
- Network errors show a retry optionab-002302 · saas-error-handlingmedium
- 404 pages are custom and helpfulab-002290 · saas-error-handlingmedium
- Rate limit errors explain when to retryab-002300 · saas-error-handlinglow
- Timeout errors have appropriate messagingab-002299 · saas-error-handlingmedium
- Async error handling is consistent across the codebaseab-002313 · saas-error-handlinglow
- Background job failures are logged and retriedab-002303 · saas-error-handlinglow
- Error recovery does not lose user dataab-002304 · saas-error-handlinghigh
- Error states have a reset mechanismab-002311 · saas-error-handlinglow
- No console.error in production without boundaryab-002298 · saas-error-handlinglow
- Partial page failures do not crash the entire pageab-002301 · saas-error-handlinghigh
- API errors are logged server-sideab-002278 · saas-error-handlinghigh
- Client-side errors are reported to monitoringab-002289 · saas-error-handlinglow
- Error reporting service is configuredab-002279 · saas-error-handlinghigh
- Errors include context without PIIab-002281 · saas-error-handlingmedium
- Error boundaries have meaningful fallback UIab-002282 · saas-error-handlinghigh
- 500 pages do not expose internal detailsab-002280 · saas-error-handlingcritical
- React error boundary wraps main applicationab-002287 · saas-error-handlingcritical
- No unhandled promise rejections in productionab-002285 · saas-error-handlingcritical
- Downgrade removes access to premium featuresab-002254 · saas-billinghigh
- Feature access is gated on subscription statusab-002255 · saas-billinghigh
- Invoice generation and retrieval is implementedab-002257 · saas-billingmedium
- Payment failure handling with grace periodab-002261 · saas-billingmedium
- Refund flow is implementedab-002260 · saas-billingmedium
- Subscription status is verified server-sideab-002253 · saas-billinghigh
- Trial period enforces feature limitsab-002256 · saas-billinghigh
- Webhook retry handling for payment eventsab-002258 · saas-billingmedium
- Cancellation flow is completeab-002275 · saas-billinghigh
- Free tier limits are enforcedab-002277 · saas-billinghigh
- Pricing page matches backend enforcementab-002259 · saas-billinghigh
- Usage-based billing tracks metrics accuratelyab-002276 · saas-billinghigh
- No credit card data stored in application databaseab-002264 · saas-billingcritical
- No way to bypass payment via APIab-002265 · saas-billingcritical
- Payment processing uses a PCI-compliant providerab-002263 · saas-billingcritical
- Webhook signature verification is implementedab-002262 · saas-billingcritical
- Billing audit trail existsab-002273 · saas-billinglow
- Billing information is accessible in account settingsab-002288 · saas-billinginfo
- Currency handling is consistentab-002284 · saas-billinglow
- Customer self-service billing portal is accessibleab-002286 · saas-billinglow
- Payment operations are idempotentab-002274 · saas-billingmedium
- Tax calculation is handledab-002283 · saas-billinginfo
- Bulk Operations Verify Per-Resource Permissionsab-002240 · saas-authorizationmedium
- Every API Route Checks Permissionsab-002249 · saas-authorizationcritical
- File Upload Permissions Scoped to Userab-002241 · saas-authorizationhigh
- No Insecure Direct Object References (IDOR)ab-002244 · saas-authorizationcritical
- Resource Ownership Verifiedab-002252 · saas-authorizationcritical
- Shared Resources Have Access Controlsab-002235 · saas-authorizationhigh
- API Keys Have Scoped Permissionsab-002237 · saas-authorizationhigh
- API Rate Limits Differentiated by Roleab-002271 · saas-authorizationlow
- Authorization Failures Return 403ab-002239 · saas-authorizationmedium
- Negative Authorization Tests Presentab-002238 · saas-authorizationlow
- Webhook Endpoints Validate Senderab-002236 · saas-authorizationmedium
- Admin Routes Protected with Role Checkab-002270 · saas-authorizationcritical
- Database Queries Scoped to Tenantab-002268 · saas-authorizationhigh
- Multi-Tenant Data Isolation Enforcedab-002272 · saas-authorizationhigh
- No Cross-Tenant Data Leakage in List Endpointsab-002266 · saas-authorizationhigh
- No Privilege Escalation via Parameter Tamperingab-002267 · saas-authorizationhigh
- Sensitive Operations Require Re-authenticationab-002269 · saas-authorizationhigh
- Authorization Model Definedab-002245 · saas-authorizationhigh
- Authorization Logic Centralizedab-002248 · saas-authorizationlow
- Feature Flags Server-Verifiedab-002251 · saas-authorizationlow
- Role Assignment Restrictedab-002242 · saas-authorizationlow
- Role Hierarchy Enforcedab-002250 · saas-authorizationhigh
- Authentication library is on a recent releaseab-002219 · saas-authenticationinfo
- JWT tokens have a reasonable expiry if usedab-002220 · saas-authenticationhigh
- MFA option is available for usersab-002224 · saas-authenticationinfo
- OAuth state parameter is validatedab-002228 · saas-authenticationhigh
- Social auth callback URLs are whitelistedab-002221 · saas-authenticationinfo
- Authentication events are logged for audit purposesab-002247 · saas-authenticationinfo
- Auth state is not stored in localStorageab-002208 · saas-authenticationmedium
- Login UI provides clear user feedbackab-002243 · saas-authenticationinfo
- Auth tokens are not passed in URL parametersab-002210 · saas-authenticationhigh
- Refresh token rotation is implementedab-002206 · saas-authenticationhigh
- Remember-me uses a separate long-lived tokenab-002229 · saas-authenticationmedium
- Session expiry is configured with a reasonable timeoutab-002209 · saas-authenticationhigh
- Session fixation protection is in placeab-002207 · saas-authenticationhigh
- Session is invalidated on password changeab-002205 · saas-authenticationmedium
- Session tokens use secure, HttpOnly, SameSite cookiesab-002216 · saas-authenticationhigh
- Account recovery does not leak user informationab-002226 · saas-authenticationmedium
- No default or test accounts in non-test codeab-002246 · saas-authenticationinfo
- Email verification is required on signupab-002223 · saas-authenticationhigh
- Plaintext passwords are not written to logs or errorsab-002218 · saas-authenticationcritical
- Passwords are hashed with a modern algorithmab-002222 · saas-authenticationcritical
- Password reset tokens are time-limited and single-useab-002227 · saas-authenticationhigh
- Password strength requirements are enforcedab-002217 · saas-authenticationmedium
- Account lockout is implemented after failed attemptsab-002230 · saas-authenticationhigh
- Auth error messages do not reveal whether email existsab-002225 · saas-authenticationmedium
- Auth middleware protects all private routesab-002231 · saas-authenticationcritical
- Login form has CSRF protectionab-002234 · saas-authenticationcritical
- Logout invalidates the server-side sessionab-002233 · saas-authenticationhigh
- Login endpoint has rate limitingab-002232 · saas-authenticationcritical
- Bulk operations available where neededab-002202 · saas-api-designlow
- Filtering and sorting supported where appropriateab-002201 · saas-api-designlow
- No unnecessary data in responses (over-fetching)ab-002200 · saas-api-designlow
- Pagination on list endpointsab-002168 · saas-api-designhigh
- Request body size limits configuredab-002199 · saas-api-designmedium
- Authentication required on non-public endpointsab-002195 · saas-api-designcritical
- CORS properly configuredab-002194 · saas-api-designhigh
- File upload endpoints have size and type restrictionsab-002197 · saas-api-designhigh
- GraphQL query depth and complexity limitsab-002196 · saas-api-designhigh
- Idempotency keys for payment and mutation endpointsab-002198 · saas-api-designhigh
- Input validation on all endpointsab-002203 · saas-api-designcritical
- Rate limiting implementedab-002204 · saas-api-designcritical
- Webhook endpoints validate payloadsab-002193 · saas-api-designmedium
- API responses include appropriate cache headersab-002212 · saas-api-designlow
- API deprecation strategy definedab-002215 · saas-api-designlow
- API timeout handling configuredab-002211 · saas-api-designlow
- Error responses include codes and messagesab-002214 · saas-api-designhigh
- OpenAPI / Swagger documentation existsab-002213 · saas-api-designlow
- API versioning strategy definedab-002165 · saas-api-designmedium
- Consistent API naming conventionab-002167 · saas-api-designhigh
- Consistent response envelope formatab-002166 · saas-api-designmedium
- HTTP methods used correctlyab-002169 · saas-api-designhigh
- API routes require authenticationab-002577 · project-snapshotcritical
- User content does not reach dangerous sinks unsanitizedab-002616 · project-snapshotcritical
- .env files are gitignoredab-002565 · project-snapshotcritical
- User input is validated server-side, not just client-sideab-002574 · project-snapshothigh
- No hardcoded API keys or secrets in sourceab-002566 · project-snapshotcritical
- No service-role or secret keys exposed to the public bundleab-002568 · project-snapshotcritical
- Dynamic-id routes enforce object-level ownershipab-002612 · project-snapshotcritical
- Protected route groups actually call a session getterab-002611 · project-snapshotcritical
- Core security response headers are configuredab-002615 · project-snapshothigh
- Imported security middleware is actually wired inab-002614 · project-snapshothigh
- Supabase RLS is enabled with real policies on every tableab-002569 · project-snapshotcritical
- Validation schemas are actually parsed at runtimeab-002613 · project-snapshotcritical
- Users can delete their account and PII is actually purgedab-002617 · project-snapshotcritical
- Tracking scripts gated on consentab-002581 · project-snapshothigh
- Users can download a machine-readable export of their personal dataab-002618 · project-snapshothigh
- Footer exposes a "Do Not Sell or Share" / "Your Privacy Choices" opt-out linkab-002619 · project-snapshothigh
- Form inputs have labelsab-002585 · project-snapshothigh
- Images have alt textab-002584 · project-snapshotcritical
- Server-side code does not log full user objects, bodies, or credentialsab-002620 · project-snapshothigh
- Terms of Service and Privacy Policy pages exist and are linked from the footerab-002621 · project-snapshotmedium
- No PII, card data, or session tokens in server logsab-002623 · project-snapshothigh
- Payment amounts sourced server-side, never from clientab-002622 · project-snapshotcritical
- Login / signup / password-reset endpoints have rate limitsab-002604 · project-snapshothigh
- List-returning API endpoints enforce pagination or hard limitsab-002610 · project-snapshotmedium
- Webhook handlers are idempotentab-002609 · project-snapshotmedium
- Webhook endpoints verify the incoming signatureab-002601 · project-snapshothigh
- Apple touch icon is presentab-002185 · pre-launchlow
- Cross-browser compatibility is addressedab-002175 · pre-launchmedium
- Custom 404 page is present and helpfulab-002187 · pre-launchmedium
- Custom 500 page is present and does not expose internalsab-002182 · pre-launchhigh
- Favicon is presentab-002181 · pre-launchmedium
- Mobile responsiveness is verifiedab-002171 · pre-launchhigh
- Social sharing preview metadata is configuredab-002174 · pre-launchmedium
- Analytics tracking is installedab-002177 · pre-launchmedium
- Database backup strategy is definedab-002178 · pre-launchcritical
- Email delivery is tested and workingab-002173 · pre-launchhigh
- Error monitoring is configuredab-002179 · pre-launchhigh
- Cookie consent mechanism is presentab-002180 · pre-launchhigh
- Privacy policy page existsab-002186 · pre-launchcritical
- Terms of service page existsab-002184 · pre-launchhigh
- Custom domain email is configuredab-002183 · pre-launchinfo
- Debug mode is disabled in productionab-002104 · pre-launchcritical
- DNS is configured correctlyab-002100 · pre-launchhigh
- Environment variables are production valuesab-002103 · pre-launchcritical
- SSL certificate is valid and auto-renewsab-002101 · pre-launchcritical
- www/non-www redirect is configuredab-002102 · pre-launchmedium
- Console.log statements are cleaned upab-002170 · pre-launchlow
- Performance baseline is documentedab-002192 · pre-launchlow
- Rollback plan existsab-002190 · pre-launchmedium
- Staging and test URLs are removed from codebaseab-002191 · pre-launchinfo
- Test and seed data has been removedab-002176 · pre-launchhigh
- All third-party services are on production plansab-002188 · pre-launchmedium
- Web app manifest is presentab-002189 · pre-launchinfo
- Plugin API versionedab-002088 · plugin-extension-architecturehigh
- Breaking changes follow semverab-002089 · plugin-extension-architecturehigh
- Conflicting plugins detectedab-002092 · plugin-extension-architecturelow
- Plugin dependency resolutionab-002091 · plugin-extension-architecturelow
- Incompatible plugins gracefully disabledab-002093 · plugin-extension-architecturehigh
- Plugin manifest requiredab-002090 · plugin-extension-architecturehigh
- Plugin error boundariesab-002082 · plugin-extension-architecturecritical
- No global state pollutionab-002085 · plugin-extension-architecturehigh
- Resource cleanup on removalab-002086 · plugin-extension-architecturemedium
- Resource limits enforcedab-002087 · plugin-extension-architecturemedium
- Resource scoping enforcedab-002083 · plugin-extension-architecturecritical
- Permission-based sandboxingab-002084 · plugin-extension-architecturehigh
- Async hooks supportedab-002078 · plugin-extension-architecturehigh
- Execution order definedab-002077 · plugin-extension-architecturehigh
- Clear hook registration APIab-002076 · plugin-extension-architecturecritical
- Plugin lifecycle hooks definedab-002075 · plugin-extension-architecturecritical
- Before/after hook patternsab-002080 · plugin-extension-architecturemedium
- Hook payloads typedab-002079 · plugin-extension-architecturehigh
- Hook unregistration supportedab-002081 · plugin-extension-architecturemedium
- Plugin API changelog maintainedab-002098 · plugin-extension-architecturelow
- Plugin authoring guide existsab-002094 · plugin-extension-architecturehigh
- Example plugin providedab-002096 · plugin-extension-architecturelow
- Plugin loading mechanism documentedab-002095 · plugin-extension-architecturehigh
- Plugin registry or marketplaceab-002099 · plugin-extension-architectureinfo
- Test utilities for pluginsab-002097 · plugin-extension-architecturelow
- Rendering strategy matches content type (static pages use SSG, dynamic use SSR/ISR)ab-002065 · performance-loadhigh
- Client hydration is not blocking above-the-fold contentab-002067 · performance-loadlow
- Loading states are present for async content (skeletons, spinners)ab-002068 · performance-loadlow
- SEO-critical pages are not client-side rendered onlyab-002066 · performance-loadcritical
- No sequential API request waterfalls on page loadab-002069 · performance-loadhigh
- Images use modern formats (WebP, AVIF) or Next/Image componentab-002053 · performance-loadhigh
- Images specify width and height to prevent layout shiftab-002054 · performance-loadhigh
- Below-fold images use lazy loadingab-002055 · performance-loadmedium
- Images are not significantly larger than their display sizeab-002057 · performance-loadlow
- Images use srcset or responsive image component for different screen sizesab-002056 · performance-loadlow
- API responses specify appropriate caching behaviorab-002072 · performance-loadlow
- Gzip or Brotli compression is enabled for text assetsab-002073 · performance-loadlow
- Static assets use content-hash filenames for cache bustingab-002071 · performance-loadmedium
- Preconnect/dns-prefetch hints for third-party originsab-002074 · performance-loadinfo
- Static assets have appropriate Cache-Control headersab-002070 · performance-loadhigh
- Route-based code splitting is configuredab-002059 · performance-loadhigh
- Heavy libraries use dynamic imports (not loaded on every page)ab-002062 · performance-loadlow
- Fonts use font-display: swap or optional, not blockab-002063 · performance-loadmedium
- No individual JS bundles exceed 250KB gzippedab-002058 · performance-loadcritical
- No large unused dependencies in bundleab-002061 · performance-loadmedium
- Third-party scripts are loaded asynchronouslyab-002064 · performance-loadmedium
- Build tool supports tree shaking (no barrel file issues)ab-002060 · performance-loadlow
- DOM node count under 1500 on typical pageab-002034 · performance-deep-divemedium
- Garbage collection pauses under 50msab-002033 · performance-deep-divemedium
- Showing first 500 of 2,527 — refine filters to narrow.