My Personal Portfolio. I put things here, hopefully it looks good.
- React 19 + TypeScript via Vite
- Tailwind CSS for styling with custom material-inspired components
- Framer Motion for smooth, accessible animations
- @dnd-kit for drag-and-drop skill reordering with localStorage persistence
- Cloudflare Pages for global edge hosting and preview environments
VITE_PAGECLIP_API_KEY
– Required for the contact form to work. API key from Pageclip.VITE_TURNSTILE_SITE_KEY
(or legacyVITE_TURNSTYLE_SITE
) – Cloudflare Turnstile site key that powers the human verification step on the contact form.
Configure these variables in your local .env
file and in the Cloudflare Pages project settings so production builds hydrate them at runtime.
- Build with
npm run build
(output indist/
), then deploy using Wrangler:npx wrangler pages deploy dist --project-name kiyaverse --compatibility-date=2024-06-01
. - GitHub Actions (
cloudflare-pages-preview.yml
andcloudflare-pages-merge.yml
) run linting, build the bundle, and publish to Cloudflare Pages when enabled. Provide the following repository secrets for automation:CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_API_TOKEN
(PagesEdit
+Deployments
permissions)VITE_PAGECLIP_API_KEY
VITE_TURNSTILE_SITE_KEY
(and/orVITE_TURNSTYLE_SITE
for legacy naming)
The repository needs a FIREBASE_SERVICE_ACCOUNT_KIYAVERSE
secret with deploy access to the kiyaverse
Firebase project.
npm run data:to-json -- src/data/projects.ts
exports convertibleexport const
values tosrc/data/projects.json
alongside round-trip metadata.npm run data:to-ts -- src/data/projects.json
restores the original TypeScript module (use--overwrite
to replace an existing file).- Pass
--pick projectsFallback,educationFallback
to work with specific exports when a file contains multiple arrays or objects. - Open
src/tools/convert.html
in a browser for an all-in-one local UI that handles file drops, selective exports, and downloads without leaving the machine.
- Open
src/tools/visualizeme.html
locally to inspect JSON structures with pan/zoom navigation, modal node editing, search, expand/collapse controls, and SVG export. - Switch the input mode to load TypeScript data modules directly; the tool converts exports into JSON for editing and can export the updated module back to TypeScript once you save.