Launch checklist implementation: - Add Privacy Policy page (/privacy) with GDPR compliance - Add Terms of Service page (/terms) - Add custom 404 and error pages with helpful navigation - Add FAQ page (/faq) covering common questions - Add SEO meta tags with OpenGraph/Twitter cards - Add JSON-LD structured data (Organization, WebSite, SoftwareApplication) - Add sitemap.ts and robots.ts for search engines - Add security headers (HSTS, CSP, X-Frame-Options) in vercel.json - Add security.txt at /.well-known/security.txt - Add API rate limiting (100 req/min default, 20 req/min strict) - Add empty states in tool search for better UX - Update AppHeader with FAQ link - Update AppFooter with Privacy/Terms links - Update biome.json to allow dangerouslySetInnerHTML for JSON-LD in page files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
81 lines
1.6 KiB
JSON
81 lines
1.6 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
"vcs": {
|
|
"enabled": true,
|
|
"clientKind": "git",
|
|
"useIgnoreFile": true
|
|
},
|
|
"files": {
|
|
"ignore": [
|
|
"**/node_modules/**",
|
|
"**/dist/**",
|
|
"**/build/**",
|
|
"**/.next/**",
|
|
"**/out/**",
|
|
"**/coverage/**",
|
|
"**/.turbo/**",
|
|
"**/storybook-static/**",
|
|
"**/*.tsbuildinfo",
|
|
"**/next-env.d.ts"
|
|
]
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineWidth": 100
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"complexity": {
|
|
"noExcessiveCognitiveComplexity": "warn",
|
|
"noForEach": "off"
|
|
},
|
|
"style": {
|
|
"useImportType": "error",
|
|
"useNodejsImportProtocol": "error"
|
|
},
|
|
"suspicious": {
|
|
"noExplicitAny": "warn"
|
|
},
|
|
"a11y": {
|
|
"noSvgWithoutTitle": "warn",
|
|
"useSemanticElements": "warn"
|
|
}
|
|
}
|
|
},
|
|
"organizeImports": {
|
|
"enabled": true
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"quoteStyle": "single",
|
|
"trailingCommas": "es5",
|
|
"semicolons": "always"
|
|
}
|
|
},
|
|
"overrides": [
|
|
{
|
|
"include": ["**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noNonNullAssertion": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["**/layout.tsx", "**/page.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"security": {
|
|
"noDangerouslySetInnerHtml": "off"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|