Product information, downloads, and development progress for SolidCraft.
Built with Astro, React, TypeScript, Tailwind CSS, and Zustand.
Website · Documentation · SolidCraft · SolidCore
This repository contains the SolidCraft website: product pages, modeling demonstrations, desktop downloads, MCP setup, and live SolidCore progress reports.
Astro generates static pages. React islands provide interactive navigation, download selection, command copying, and progress reports, with shared client state managed by Zustand. The browser application and documentation are maintained separately.
Development · Project Structure · Live Data · Quality Checks · Deployment · License
| Tool | Version |
|---|---|
| Node.js | 24.10.0 |
| pnpm | 12.10.1 |
pnpm install --frozen-lockfile
pnpm devOpen localhost:4347. Run commands from the repository root; they forward to the application package in apps/frontend/solidcraft-landing/.
apps/frontend/solidcraft-landing/
├── public/ # Branding, recordings, licenses, and redirects
├── scripts/ # Content validation, output checks, and release tooling
├── src/
│ ├── components/ # Astro components and interactive React islands
│ ├── data/ # Site links, release metadata, and asset provenance
│ ├── layouts/ # Shared page layout and metadata
│ ├── lib/ # Release and progress clients, validation, and utilities
│ ├── pages/ # Product pages and SolidCore progress routes
│ ├── stores/ # Zustand state
│ └── styles/ # Shared styles and progress presentation
└── tests/ # Unit tests, browser tests, and fixtures
The root contains the pnpm workspace, shared lockfile, and CI workflow. Keep dependency versions exact and commit lockfile changes with package changes.
Downloads fetch the latest stable release from GitHub in the browser. Validated metadata is shared between download controls, cached for five minutes, and refreshed while the page is open. New releases appear without rebuilding. Checked-in release metadata supplies working package links when JavaScript or GitHub is unavailable.
Homepage download buttons identify the visitor’s desktop platform. The download page starts one matching download after checking release metadata and keeps the complete package list available. Unrecognized systems or architectures use manual selection. Releases come from tangency-labs/solidcraft and require validated release URLs.
The progress dashboard loads upstream reports directly at /solidcore/progress/, including unit details, issues, and surface-intersection results. Reports refresh every five minutes while visible and retain their source revision and generation time. Failed requests show an error with Retry; there is no saved or stale-data fallback. Remote HTML is sanitized before rendering, and upstream scripts are never executed.
Builds do not fetch release or progress data. Public requests happen in the browser without credentials or API tokens.
To prepare an update to the checked-in release metadata:
pnpm releases:refresh vX.Y.ZThis writes apps/frontend/solidcraft-landing/src/data/release-candidate.json without replacing releases.json. Review the candidate before updating the checked-in metadata.
pnpm check
pnpm typecheck
pnpm test:unit
pnpm build
pnpm --filter @solidcraft/solidcraft-landing exec playwright install chromium
pnpm test:e2e
pnpm test:dev| Command | Purpose |
|---|---|
pnpm check |
Check formatting, lint rules, and imports |
pnpm check:fix |
Apply formatting and safe lint fixes |
pnpm format |
Format supported source files |
pnpm format:check |
Check formatting without modifying files |
pnpm lint |
Run lint checks only |
Biome checks TypeScript, React, Astro, CSS, and JSON. Generated files, public assets, and upstream test fixtures are excluded. CI runs biome ci from the repository root before type checking.
The build validates release data, media hashes, licenses, local links, page metadata, and static-host file limits. It also generates security headers, including the Content Security Policy.
Browser tests cover responsive layouts, accessibility, navigation, downloads, video playback, clipboard behavior, and live-data success and failure states. They use a static server on port 4322 with the generated headers applied. The development regression uses port 4348 and checks hydration during a concurrent production build. Neither test server uses the development port, 4347.
pnpm build
pnpm previewThe output is apps/frontend/solidcraft-landing/dist/. Preview runs at localhost:4347. Hosting requires only static files; there is no server runtime or database.
| Setting | Value |
|---|---|
| Root directory | apps/frontend/solidcraft-landing |
| Build command | pnpm build |
| Output directory | dist |
| Node.js version | 24.10.0 |
The application-level .node-version pins the build runtime. Any hosting NODE_VERSION override must match it. Deploy the generated _headers and _redirects with the rest of the output.
The header’s /discord link uses a temporary redirect to discordInvite in src/data/site.ts. Change that invite and rebuild when the community invite changes; the shared website URL stays the same.
Search crawlers are allowed across the site. robots.txt publishes the sitemap, page metadata allows indexing and following links, and response headers do not block indexing.
/llms.txt provides a concise project overview and links to the maintained documentation, application, downloads, and source repositories. Keep public/llms.txt aligned with public destinations and avoid embedding release versions or progress figures that can become stale.
Website code is licensed under MIT. Product media, branding, fonts, and dependencies retain their respective licenses. Attribution and license files are included in public/notices/, with source revisions and media hashes recorded in src/data/.