This repository contains the source code for the official Dasher website.
- Astro - Modern static site generator
- TypeScript - Type-safe development
- MDX - Markdown + React components for content
- GitHub Pages - Static hosting
- GitHub Actions - CI/CD pipeline
# Clone the repository
git clone https://github.com/dasher-project/dasher-web.git
cd dasher-web
# Install dependencies
npm install# Start the development server
npm run devVisit http://localhost:4321 in your browser.
# Build the site
npm run build
# Preview the production build
npm run preview.
├── astro.config.mjs # Astro configuration
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── public/ # Static assets (images, videos, downloads)
│ ├── download/ # Alphabet XML files and training texts
│ ├── locales/ # Legacy mirrored locale HTML content
│ ├── images/ # Images and banners
│ ├── videos/ # Demo videos
│ └── logo.svg # Dasher logo
├── static/ # Legacy mirrored site subtree (old dasher pages)
│ └── dasher/ # Historical pages/assets preserved from original site
├── src/
│ ├── layouts/ # Layout components
│ │ ├── BaseLayout.astro # Main site layout
│ │ └── DocsLayout.astro # Documentation layout with sidebar
│ ├── pages/ # Page routes
│ │ ├── index.astro # Homepage
│ │ ├── docs/ # Documentation pages
│ │ ├── blog/ # Blog posts
│ │ ├── community.astro # Community page
│ │ ├── about.astro # About page
│ │ └── demonstrations.astro # Demos page
│ ├── styles/ # CSS styles
│ │ ├── design-tokens.css # CSS variables (colors, fonts, spacing)
│ │ └── global.css # Global styles
│ └── utils/ # Utility scripts
│ └── nav.ts # Documentation navigation
├── .github/workflows/ # GitHub Actions CI/CD
│ ├── build.yml # Lint and build
│ └── deploy.yml # Deploy to GitHub Pages
└── eslint.config.mjs # ESLint configuration
Documentation pages are created as .astro files in src/pages/docs/. The current structure uses Astro components for flexibility, but content and design are mixed.
Example: Creating a new doc page
---
import DocsLayout from '../../../layouts/DocsLayout.astro';
---
<DocsLayout title="Page Title - Dasher">
<h1>Page Title</h1>
<p>Your content here...</p>
</DocsLayout>To add a page to the documentation sidebar, edit src/utils/nav.ts:
{
title: 'My Section',
href: '/docs/my-section/',
children: [
{ title: 'My Page', href: '/docs/my-section/my-page/' },
],
}Alphabet XML files and training texts are stored in public/download/:
/public/download/alphabets/- 144 alphabet XML files/public/download/training.html- Training text downloads
This repository includes mirrored legacy content from the original Dasher site for preservation and reference.
public/download/contains downloadable resources served at/download/...(alphabets, training corpora, legacy platform downloads).public/locales/contains locale-specific legacy HTML pages served at/locales/....static/dasher/contains a broader historical mirror of old Dasher pages and assets.
These directories are not identical. They overlap in historical material but serve different URL trees and use different folder layouts.
When updating modern site content, prefer editing src/ and current assets in public/images or public/videos. Avoid reformatting mirrored legacy HTML unless intentionally curating those archives.
- Place images in
public/images/ - Place videos in
public/videos/ - Reference them as
/images/filename.pngor/videos/filename.mp4
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build |
npm run lint |
Run ESLint |
npm run format |
Format code with Prettier |
npm run format:check |
Check formatting |
The site is automatically deployed to GitHub Pages on push to the astro-build branch via GitHub Actions.
Deployment workflow:
- Push to
astro-buildbranch - GitHub Actions runs
build.yml(lint + build) - If successful,
deploy.ymlpublishes to GitHub Pages - Site is live at https://dasher.at
The site uses a custom design system with CSS custom properties:
Colors:
--color-deep-ink: #27537B- Primary text and headings--color-horizon-mint: #A8D0CB- Accents and highlights--color-focus-yellow: #F4E47E- Callouts and emphasis--color-target-coral: #D96A6A- CTAs and hover states--color-canvas-white: #F8F9FA- Backgrounds
Typography:
--font-ui: 'Inter'- UI text--font-display: 'Outfit'- Headings
See src/styles/design-tokens.css for all design tokens.
We welcome contributions! Please:
- Fork the repository
- Create a branch for your changes
- Make your changes
- Run
npm run lintandnpm run format:check - Submit a pull request
This website is licensed under GPL-3.0.
- Main Project: https://github.com/dasher-project/dasher
- Dasher Documentation: https://dasher.at/docs/
- Community: https://matrix.to/#/#dasher:matrix.org
- Issue Tracker: https://github.com/dasher-project/dasher/issues