Production-ready personal website for RUPAN PRASAI, built with Astro and optimized for SEO on the custom domain https://rupanprasai.com.
- Astro (static output)
- Markdown content collection for blog posts
- Simple CSS (minimal JavaScript)
- Cloudflare Pages deployment target
- Install dependencies:
npm install
- Start development server:
npm run dev
- Open the local URL shown in terminal (usually
http://localhost:4321).
npm run buildBuild output is generated to dist/.
- Push this repository to GitHub.
- In Cloudflare Dashboard, go to Workers & Pages → Create application → Pages → Connect to Git.
- Select your repo and configure:
- Framework preset: Astro
- Build command:
npm run build - Build output directory:
dist - Node.js version: use a common LTS (recommended
20.x).
- Save and deploy.
- In your Pages project, go to Custom domains.
- Add
rupanprasai.com(apex/root). - Add
www.rupanprasai.com. - In DNS, point records to Cloudflare as instructed by Pages.
- Set
https://rupanprasai.comas canonical in site content (already configured insrc/site.config.ts+astro.config.mjs).
- Global site/profile details (name, tagline, email, location, projects):
src/site.config.ts - Home page content:
src/pages/index.astro - About page content:
src/pages/about.astro - Projects page structure:
src/pages/projects.astro - Blog posts:
src/content/blog/*.md - Blog index and post routes:
src/pages/blog/index.astro,src/pages/blog/[slug].astro - Contact details/page:
src/pages/contact.astro - Shared SEO layout:
src/layouts/BaseLayout.astro - Robots policy:
public/robots.txt
- Unique title + description per page
- Canonical URL tags on every route
- OpenGraph + Twitter card metadata on every route
- Homepage Person JSON-LD structured data
robots.txtallowing indexing- Automatic sitemap generation via
@astrojs/sitemap
Replace YOUR_EMAIL, YOUR_CITY_STATE, and YOUR_TAGLINE in src/site.config.ts with your real details.