d3ro-voice/.gitignore
Yun Chan a0abda7a5c
Some checks failed
ci / 정본·보안·린트·타입·테스트 (push) Successful in 53s
ci / 모바일 린트·타입·Jest (push) Successful in 45s
ci / Supabase Edge Functions + Cloudflare Worker (push) Successful in 21s
ci / .NET API 서버 테스트 (push) Successful in 13s
deploy-site / deploy (push) Failing after 27s
ci / 워크스페이스 빌드 검증 (push) Successful in 36s
feat(site): prerender every locale and publish structured data, llms.txt and sitemaps
Crawlers received an empty client-rendered shell (107 characters of text);
most AI crawlers do not run JavaScript, so the product was invisible to them.

- Build renders each locale to static HTML (/ for Korean, /en/ … /vi/) with
  src/entry-server.tsx + scripts/prerender.mjs; the browser hydrates the same
  locale. The language menu links to those pages instead of switching in place.
- Per-locale head: title, description, canonical, hreflang (+ x-default /en/),
  Open Graph and X cards with a per-locale 1200x630 image.
- JSON-LD graph: Organization, WebSite, WebPage, SoftwareApplication (KRW
  offers, version, release date, download URL from the canonical sources),
  HowTo and FAQPage. No invented ratings.
- robots.txt (search, ai-input and ai-train allowed; /app, /api, invites
  excluded), sitemap.xml with language alternates, llms.txt and llms-full.txt
  generated from the same translations and canonical values.
- IndexNow key and a post-deploy ping (Bing, Naver, Yandex).
- A factual "at a glance" section and two FAQ answers (recognised languages,
  where data is stored) in all 10 languages.
- Icons, apple-touch-icon and web manifest; asset base is now absolute so
  sub-path pages load the same bundle.

Verified: 3.6k-7.7k characters of text per page, no hydration warnings,
no overflow at 320/1440 in six locales, axe 0, Lighthouse mobile SEO,
accessibility and best practices 100.
2026-09-27 10:45:05 +09:00

133 lines
3 KiB
Text

node_modules/
dist/
out/
.next/
.expo/
.env
.env.*
!.env.example
*.log
.DS_Store
Thumbs.db
.claude/settings.local.json
# Electron release artifacts. Keep only release identity/public-key SSOT files.
release/
!/release/
/release/*
!/release/product-version.json
!/release/android-release-identity.json
!/release/mobile-release-evidence-public.pem
!/release/update-policy.json
*.unpacked
/.ci-tools/
# Build
*.tsbuildinfo
build/
# PyInstaller build artifacts (sidecar) — regenerated by `npm run sidecar:build`
apps/desktop/build/sidecar-build/
apps/desktop/build/sidecar.spec
!apps/desktop/build/
!apps/desktop/build/entitlements.mac.plist
sidecar-dist/
# Bundled binaries (download via scripts; SoX는 직접 커밋)
resources/sox/*.exe
resources/sox/*.dll
apps/desktop/resources/ollama/
apps/desktop/build/installer.nsh
!apps/desktop/build/installer.nsh
# IDE
.idea/
.vscode/
*.swp
*.swo
# Site build
site/dist/
site/node_modules/
# OS
.DS_Store
Thumbs.db
Desktop.ini
# Python
__pycache__/
*.pyc
*.pyo
venv/
.venv/
# Whisper models (large files)
resources/models/
apps/mobile-rn/android/app/src/main/assets/models/ggml-tiny.bin
apps/mobile-rn/android/app/src/main/assets/index.android.bundle
apps/mobile-rn/.maestro-output/
apps/mobile-rn/.maestro/*.junit.xml
# Chrome / Playwright Profiles
.chrome-*
.playwright-*
.chrome-debug-profile/
.chrome-interactive-profile/
.chrome-playwright-profile/
.playwright-oauth-profile/
# Local browser/account automation. These scripts may reference developer-only
# credential sources and must never be part of a release checkout.
/scripts/capture-forgejo-release-live.js
/scripts/capture-forgejo-repo.js
/scripts/inspect-forgejo-runners.js
/scripts/playwright-fill-all-live-ad-portals.js
/scripts/playwright-live-ad-portals-signup.js
/scripts/playwright-submit-applovin.js
/scripts/register-and-inspect-ad-portals.js
# Local-only automation, scratch captures, and one-off dev helpers.
# `scripts/local/` keeps them out of the release checkout while remaining runnable locally.
/scripts/local/
/junk/
/scratch/
*.st.txt
/launch-debug-chrome.bat
/open-oauth.bat
/run-admob-login.bat
/*-boundary.png
/apps/mobile-rn/*-boundary.png
/docs/v3/play/assets/screenshots/
# .NET build output
apps/api-server/bin/
apps/api-server/obj/
apps/api-server.Tests/bin/
apps/api-server.Tests/obj/
# Playwright run output
test-results/
apps/web/test-results/
apps/web/playwright-report/
apps/desktop/test-results/
# Gradle-generated vector-icon drawables (react-native-vector-icons), not source.
apps/mobile-rn/android/app/src/main/res/drawable-*/node_modules_*
# Supabase CLI local state
/supabase/.branches/
/supabase/.temp/
# Release binaries are never committed: the only distribution channel is the
# Forgejo update feed (release/update-policy.json). Landing/download/legal/invite
# pages live only in site/, so the API server has no wwwroot at all.
/site/public/releases/
/apps/web/public/releases/
/apps/api-server/wwwroot/
*.apk
*.aab
*.blockmap
D3RO-Voice-Setup-*.exe
# site 빌드 중간 산출물(서버 렌더링 번들)
site/dist-ssr/