React + Vite landing page for goodmeow.dev. The app fetches the latest posts from Ghost at runtime, presents bio/contact sections, and surfaces the current build metadata.
- React 18, TypeScript, Vite 6
- HeroUI v2 components with Tailwind v4 utilities (
src/styles/globals.css) - Framer Motion for subtle entrance animations
- Ghost Content API for the “Latest Writing” section
npm install # install dependencies
npm run dev # start Vite on http://localhost:5173
npm run lint # lint + autofix
npm run version:meta # manually refresh <meta name="x-build">
npm run build # type-check, version stamp, and emit dist/
npm run preview # serve the production bundle locallyEnvironment variables live in .env.local (see .env.example). At minimum set:
VITE_GHOST_CONTENT_URL=https://blog.goodmeow.my.id/ghost/api/content/posts/
VITE_GHOST_CONTENT_KEY=<ghost-content-api-key>
dist/contains the static bundle; host via nginx, Vercel, or any static host.- The original Docker/nginx manifests remain under
deploy/for reference (docker compose -f deploy/docker-compose.yml up -d). scripts/update-build-meta.mjsruns automatically beforenpm run build, stampingindex.htmlwithYYYY.MM.DD+<shortSHA>so the footer shows the current deploy.
- Contributor & operations guide: AGENTS.md
- SEO assets:
public/robots.txt,public/site.webmanifest,public/sitemap.xml
- Application code is licensed under MIT.
- Site content is licensed under CC BY-SA 4.0.