Static website for Terrastories — a free and open-source geostorytelling application built for communities to map, protect, and share place-based oral histories.
Terrastories is a geostorytelling application built to enable Indigenous and other local communities to locate and map their own oral storytelling traditions about places of significant meaning or value to them. Community members can add places and stories through a user-friendly interface, and make decisions about designating certain stories as private or restricted. Terrastories works both online and offline, so that remote communities can access the application entirely without needing internet connectivity.
This repository contains the static website for the Terrastories project — built with Astro and Tailwind CSS — serving as the project's public face, blog, documentation hub, and community portal.
| Layer | Technology |
|---|---|
| Framework | Astro 6 — static site generation |
| Styling | Tailwind CSS 4 — utility-first CSS |
| Typography | @tailwindcss/typography — prose styling |
| Images | Sharp — image optimization |
| Sitemap | @astrojs/sitemap — auto-generated |
| Content | Astro Content Collections — Markdown + type-safe queries |
| TypeScript | Strict mode throughout |
# Clone the repository
git clone https://github.com/Terrastories/terrastories-website.git
cd terrastories-website
# Install dependencies
npm install
# Start development server
npm run dev
# Production build
npm run build
# Preview production build locally
npm run previewThe dev server runs at http://localhost:4321. Content hot-reloads on save.
terrastories-website/
├── src/
│ ├── components/ # Header, Footer, SEO, PostCard, PartnerLogo, PeopleGrid
│ ├── layouts/ # BaseLayout, PageLayout, PostLayout
│ ├── pages/ # index.astro, community.astro, 404.astro, [slug].astro
│ ├── content/
│ │ ├── pages/ # 11 Markdown content pages
│ │ └── posts/ # 33 Markdown blog posts
│ ├── data/
│ │ └── nav.ts # Navigation, sponsors, partners, social links
│ ├── styles/
│ │ └── global.css # Tailwind theme, brand colors, typography
│ └── utils/ # Category helpers, base path utility
├── public/
│ └── media/ # 160+ images, documents, favicons
├── scripts/ # Content migration & image processing utilities
├── astro.config.mjs # Astro configuration
├── package.json # Dependencies and scripts
└── README.md
Deployed to Cloudflare Pages. Every push to main triggers a production build:
npm run build # Outputs to dist/A subpath preview is deployed at https://terrastories.github.io/terrastories-website via GitHub Actions workflow:
ASTRO_BASE=/terrastories-website npm run buildThe ASTRO_BASE environment variable activates subpath support — all asset URLs, images, and links are automatically prefixed with /terrastories-website/ while canonical URLs remain set to terrastories.app.
Terrastories is sponsored by:
- Awana Digital — Design, mapping, and technology for social and environmental justice
Built with ❤️ by the Terrastories community. Become a partner →