Built with Astro · Deployed on GitHub Pages · Auto-deployed via GitHub Actions.
npm install
npm run dev # starts at http://localhost:4321
npm run build # production build → ./dist
npm run preview # preview the production build locally| Branch | Purpose |
|---|---|
main |
Production. Every push auto-deploys to deccanspatial.com |
dev |
Staging / integration. PRs merge here first. |
feature/* |
Individual features (e.g. feature/new-hero, feature/blog-section) |
feature/my-change → dev (PR + review) → main (PR + deploy)
Never push directly to main.
Create a file in src/content/projects/your-project-slug.md:
---
title: "Project Title"
slug: "project-slug"
date: 2025-01-01
client: "Client Name"
tags: ["QGIS", "Python"]
thumbnail: "/images/projects/your-image.jpg"
summary: "One sentence summary for the card."
featured: false
---
Full project description in markdown...Create a file in src/content/blog/your-post-slug.md with the same frontmatter pattern.
Deployment is fully automatic:
- Push to
main - GitHub Actions builds the site (
npm run build) - Output is deployed to GitHub Pages
- Live at https://deccanspatial.com within ~60 seconds
First-time GitHub Pages setup (one time only):
- Go to repo → Settings → Pages
- Set Source to "GitHub Actions"
- Point your DNS
CNAMErecord at<your-github-username>.github.io
src/
├── components/ # Reusable UI components (.astro)
├── layouts/ # Page wrappers (BaseLayout.astro)
├── pages/ # File-based routing (index.astro → /)
├── styles/ # tokens.css — single source of brand truth
└── content/
├── projects/ # Markdown files, one per project
└── blog/ # Markdown files, one per post
public/
├── favicon.svg
├── robots.txt
└── images/ # Static assets
.github/
└── workflows/
└── deploy.yml # CI/CD pipeline
All design values live in src/styles/tokens.css. Never hardcode colors, fonts, or spacing in components — always reference a token variable. This means a full rebrand requires editing one file.
Key tokens:
--color-navy— primary brand color--color-teal— CTAs and interactive elements--color-gold— premium accents--font-serif— Playfair Display (headings)--font-sans— Inter (body and UI)