Personal website and blog of PaweΕ CisΕo.
Migrated from WordPress to Astro Starlight and hosted on Cloudflare Pages.
Inside of your Astro + Starlight project, you'll see the following folders and files:
.
βββ .github/workflows/ # GitHub Actions (yearly rebuild)
βββ plugins/ # Custom remark/rehype plugins
βββ public/ # Static assets served as-is (favicon, linked images, etc.)
βββ scripts/ # Utility scripts (sync recommendations, link checker, etc.)
βββ src/
β βββ assets/ # Optimised assets (processed by Astro)
β βββ components/ # Custom Astro components (Footer, PageTitle, ThemeSelect, etc.)
β βββ content/
β β βββ docs/
β β βββ knowledge/ # Knowledge base pages (Obsidian, Espanso, etc.)
β β βββ pages/ # Legacy subfolder (images only)
β β βββ posts/ # Blog posts with images
β βββ content.config.ts # Content collection schema
β βββ pages/ # Custom Astro pages (404, RSS, tags)
β β βββ tags/ # Tag index and individual tag pages
β βββ styles/ # Custom CSS overrides
βββ astro.config.mjs # Site configuration
βββ COPYRIGHT # Content copyright notice
βββ package.json # Dependencies and scripts
βββ README.md # This file
βββ tsconfig.json # TypeScript configuration
Content organization:
- Starlight looks for
.mdor.mdxfiles in thesrc/content/docs/directory - Each file is exposed as a route based on its file name
- Blog posts are in
src/content/docs/posts/(auto-generated in sidebar) - Top-level pages (Portfolio, FAQ, Uses, etc.) live directly in
src/content/docs/ - Images are in
src/content/docs/posts/images/andsrc/content/docs/pages/images/
- Install Node.js from nodejs.org (includes npm)
- Install dependencies:
npm install - Start development server:
npm run dev
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ (auto-syncs recommendations page) |
npm run preview |
Preview your build locally, before deploying |
npm run sync:recommendations |
Sync recommendations page from GitHub |
npm run check:links |
Audit all content pages for broken/outdated external links |
npm update |
Updates packages within semver ranges |
npm outdated |
Shows which packages have newer versions |
npm run astro ... |
Run CLI commands like astro add, check |
npm run astro -- --help |
Get help using the Astro CLI |
This site is deployed on Cloudflare Pages with automatic deployments from GitHub.
βββββββββββ git push βββββββββββ webhook ββββββββββββββββββββ
β VS Code β ββββββββββββββββΊ β GitHub β βββββββββββββββΊ β Cloudflare Pages β
βββββββββββ βββββββββββ ββββββββββ¬ββββββββββ
β
npm run build
β
βΌ
ββββββββββββ CDN ββββββββββββββββ static βββββββββββββββββββ
β Visitors β βββββββββββββββ β Edge Network β ββββββββββ β Astro SSG β
ββββββββββββ ββββββββββββββββ βββββββββββββββββββ
Deployment flow:
- Push changes to the
mainbranch - Cloudflare Pages automatically builds and deploys
- Preview the
mainbranch build at pawelcislo.pages.dev - Changes are live at pawelcislo.com
Before pushing, always verify the build locally:
npm run buildThis runs the same pipeline as Cloudflare (including the recommendations sync) and catches errors before they reach production.
Additionally, a GitHub Actions scheduled workflow triggers a Cloudflare rebuild on January 1st each year to update the copyright year in the footer.