The official website for Open Navigation LLC, built with Astro and Tailwind CSS.
- Modern, responsive design
- Static site generation for fast performance
- Animated hero section with Nav2 balloon
- News/blog system with Markdown content
- Contact form with Google Sheets integration
- Automatic deployment to GitHub Pages
- Node.js 20.0 or higher
- npm (comes with Node.js)
-
Clone the repository
git clone https://github.com/your-org/opennav-website.git cd opennav-website -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open in browser
Visit http://localhost:4321
| Command | Description |
|---|---|
npm run dev |
Start development server at localhost:4321 |
npm run build |
Build production site to ./dist/ |
npm run preview |
Preview production build locally |
├── public/ # Static assets (images, videos, favicon)
│ ├── images/
│ └── videos/
├── src/
│ ├── components/ # Reusable Astro components
│ ├── content/ # Markdown content (news articles)
│ │ └── news/
│ ├── layouts/ # Page layouts
│ ├── pages/ # Page routes
│ │ └── news/
│ └── styles/ # Global CSS
├── scripts/ # Utility scripts (Google Apps Script)
├── astro.config.mjs # Astro configuration
├── tailwind.config.cjs # Tailwind CSS configuration
└── package.json
-
Create a new
.mdfile insrc/content/news/ -
Add frontmatter with required fields:
--- title: "Your Article Title" description: "Brief description for previews" pubDate: 2024-01-15 author: "Author Name" tags: ["tag1", "tag2"] ---
-
Write your content in Markdown below the frontmatter
The contact form sends submissions to Google Sheets and sends email notifications.
-
Create a Google Sheet
- Go to Google Sheets
- Create a new spreadsheet
- Add headers:
Timestamp | Name | Email | Subject | Message | Interests
-
Create Apps Script
- In your sheet, go to Extensions > Apps Script
- Copy the code from
scripts/google-apps-script.js - Update
SPREADSHEET_IDwith your sheet's ID - Update
NOTIFICATION_EMAILwith your email
-
Deploy as Web App
- Click Deploy > New deployment
- Select "Web app"
- Execute as: "Me"
- Who has access: "Anyone"
- Deploy and copy the URL
-
Update the Contact Form
- Open
src/components/ContactForm.astro - Replace
YOUR_GOOGLE_APPS_SCRIPT_URLwith your deployed URL
- Open
The site automatically deploys to GitHub Pages on every push to main:
- Push your changes to the
mainbranch - GitHub Actions will build and deploy automatically
- Your site will be available at
https://your-org.github.io/repo-name
To use a custom domain (e.g., opennav.org):
-
Add a
CNAMEfile topublic/with your domain:opennav.org -
Configure DNS with your domain registrar:
- Add a CNAME record pointing to
your-org.github.io - Or add A records pointing to GitHub's IP addresses
- Add a CNAME record pointing to
-
Enable HTTPS in GitHub Pages settings
- Astro - Static site generator
- Tailwind CSS - Utility-first CSS
- TypeScript - Type safety
- GitHub Actions - CI/CD pipeline
- GitHub Pages - Static hosting
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Copyright Open Navigation LLC. All rights reserved.