mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
b6fb6b743dd706a3a5d124586164b8316986aef1
The policy described leaderboards and cloud save as the only things that leave the device, and stated outright: "This data is not transmitted to our servers unless you use the leaderboard or cloud save features." That is not true. - Gameplay telemetry POSTs to api.such.software on every platform, automatically rather than opt-in, tagged with the anonymous device ID, display name and platform. It carries level starts and completions with times and stars, how a run ended (cause, hazard, speed, fuel, progress through the level), rewarded-ad and share actions, purchase attempts, and error messages. None of it was disclosed. - Google Firebase (Analytics and Crashlytics) ships in the mobile builds and receives the same device ID as a user property alongside app version, device model, OS version and language. It was not mentioned anywhere, including in the third-party recipients table. - Cloud save uploads automatically on every save, not only on an explicit action, and its payload now also carries store purchase receipts (the ledger that stops a purchase being credited twice). - The page claimed Google AdSense serves ads on the web build. It does not: web/custom_shell.html records that the AdSense placeholders were removed and web monetization is handled in-game. Removed the claim and the AdSense row from the recipients table. Left as-is: the statement that iOS serves non-personalized ads and does not access the IDFA. No code path presents the ATT prompt, so the identifier stays zeroed and that claim holds.
Such Software Website
Corporate website for Such Software LLC, a full-service software provider based in Kennett Square, PA.
Lighthouse Scores
| Page | Performance | Accessibility | SEO | Best Practices |
|---|---|---|---|---|
| Home | 99% | 100% | 100% | 77%* |
| Services | 98% | 100% | 100% | 100% |
| About | 99% | 100% | 100% | 100% |
*Home page Best Practices is 77% due to Cloudflare Turnstile third-party cookies.
Tech Stack
- Next.js 15 with App Router
- React 18 + TypeScript 5
- Tailwind CSS 3 + Framer Motion 11
- Radix UI accessible primitives
- next-themes for dark/light mode
- Zod for validation
- Cloudflare Turnstile for bot protection
- Turborepo + pnpm 9
Project Structure
such-software-site/
├── apps/web/ # Next.js website
│ ├── src/app/ # Pages (home, services, about)
│ ├── src/components/ # React components
│ ├── tests/ # Playwright a11y tests
│ └── public/ # Static assets
├── packages/ui/ # Shared UI components
└── packages/config/ # Shared config
Development
pnpm install # Install dependencies
pnpm dev # Start dev server at localhost:3000
pnpm build # Production build
pnpm start # Start production server
Testing
cd apps/web
pnpm test:a11y # Run Playwright accessibility tests
pnpm test:ui # Run tests with interactive UI
42 accessibility tests across Chromium, Firefox, and WebKit covering WCAG 2.2 AA criteria, heading hierarchy, color contrast, and keyboard navigation.
Accessibility
- WCAG 2.2 AA — engineered to meet, audited against (Lighthouse measured 100%)
- Skip-to-main link, semantic HTML5, ARIA labels
- Proper heading hierarchy, color contrast (4.5:1+)
prefers-reduced-motionsupport- Keyboard navigation, focus indicators
- Structured data (JSON-LD) and canonical URLs
Environment Variables
Create apps/web/.env.local:
NEXT_PUBLIC_TURNSTILE_SITE_KEY=your_site_key
TURNSTILE_SECRET_KEY=your_secret_key
See apps/web/.env.example for template.
License
Proprietary - Such Software LLC
Languages
TypeScript
81%
MDX
15.3%
CSS
2.8%
JavaScript
0.9%