Single-page portfolio built with TanStack Start, React 19, Vite 7 and Tailwind v4. Runs on the edge — designed for Cloudflare Workers / Pages.
bun install
bun devbun run buildThe output is a Cloudflare-compatible Worker in .output/ (Nitro cloudflare-module preset — already configured in vite.config.ts).
You have two easy paths. Pick one.
- Push this repo to GitHub.
- In the Cloudflare dashboard: Workers & Pages → Create → Pages → Connect to Git.
- Pick the repo, then set:
- Framework preset:
None - Build command:
bun run build - Build output directory:
.output/public - Root directory:
/ - Environment variables: add
NODE_VERSION=20(or newer)
- Framework preset:
- Click Save and Deploy.
Every push to your default branch redeploys automatically.
-
Install Wrangler once:
bun add -g wrangler -
Log in:
wrangler login -
Build:
bun run build -
Deploy the generated Worker:
wrangler deploy --name shnwazdev \ --compatibility-date 2025-01-01 \ --compatibility-flag nodejs_compat \ .output/server/index.mjs
Optional wrangler.toml:
name = "shnwazdev"
main = ".output/server/index.mjs"
compatibility_date = "2025-01-01"
compatibility_flags = ["nodejs_compat"]
[assets]
directory = ".output/public"Then just: wrangler deploy.
In the Cloudflare dashboard → your Pages/Worker → Custom domains → Set up a custom domain. Point your domain's nameservers to Cloudflare first, then add the record.
src/
├─ routes/
│ ├─ __root.tsx # HTML shell, head, providers
│ └─ index.tsx # Home page (EN / RU)
├─ styles.css # Tailwind v4 + design tokens
└─ assets/ # avatar, static images
Language toggle (EN / RU) is client-side and persisted in localStorage.
© 2025 SHNWAZDEV. All rights reserved.