Skip to content

Commit

Permalink
Website and Docs Directory (#66)
Browse files Browse the repository at this point in the history
* Initial Website Commit

* Added github pages deployment workflow.

* Downgrade react to 18

- react gallery doesn't yet support React 19.

* Navbar works with build

- Still a small bug where the underline doesn't always show the right mode though.

* Added Docs Directory

Added documentation link to website

* Remove root docs directory

* Moved site docs directory

* Docs

- Move docs to its own directory
- Allow Astro Starlight to have a custom directory mapping to allow for photos to be co-located with documents.
  • Loading branch information
scottyob authored Feb 9, 2025
1 parent d58013b commit a60d4d4
Show file tree
Hide file tree
Showing 32 changed files with 9,872 additions and 0 deletions.
47 changes: 47 additions & 0 deletions .github/workflows/website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Deploy to GitHub Pages

on:
# Trigger the workflow every time you push to the `main` branch
# Using a different branch name? Replace `main` with your branch’s name
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab on GitHub.
workflow_dispatch:

# Allows an API call to build this (useful for when our flight log is updated)
repository_dispatch:
types: [trigger-workflow]

# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest
environment:
# You may need to change the environment name to match your environment.
name: Prod

steps:
- name: Checkout your repository using git
uses: actions/checkout@v4
- name: Install, build, and upload your site
uses: withastro/action@v3
with:
path: website # The root location of your Astro project inside the repository. (optional)
# node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional)
# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
12 changes: 12 additions & 0 deletions docs/dev-references/example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: Example Reference
description: A reference page in my new Starlight docs site.
order: 5
---

Reference pages are ideal for outlining how things work in terse and clear terms.
Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting.

## Further reading

- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework
12 changes: 12 additions & 0 deletions docs/dev-references/ide-setup/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: Setting up Project
description: Setting up the Leaf Development IDE
---

Leaf uses PlatformIO. To setup and build.

1. Install vscode
2. Install platformio
3. Click the play button

![Upload Image](upload.png)
Binary file added docs/dev-references/ide-setup/upload.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions docs/user-guides/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: Getting Started
description: Getting Started with your Leaf.
---

ToDo: A guide for how to setup your leaf.
21 changes: 21 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
4 changes: 4 additions & 0 deletions website/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
11 changes: 11 additions & 0 deletions website/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
54 changes: 54 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Starlight Starter Kit: Basics

[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)

```
npm create astro@latest -- --template starlight
```

[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/withastro/starlight&create_from_path=examples/basics)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwithastro%2Fstarlight%2Ftree%2Fmain%2Fexamples%2Fbasics&project-name=my-starlight-docs&repository-name=my-starlight-docs)

> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
## 🚀 Project Structure

Inside of your Astro + Starlight project, you'll see the following folders and files:

```
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ ├── docs/
│ └── content.config.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
```

Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.

Images can be added to `src/assets/` and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the `public/` directory.

## 🧞 Commands

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/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## 👀 Want to learn more?

Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
Binary file added website/assets/leaf-with-logo.xcf
Binary file not shown.
112 changes: 112 additions & 0 deletions website/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

import tailwindcss from '@tailwindcss/vite';

import react from '@astrojs/react';

import icon from 'astro-icon';

import fs from "fs";
import path from "path";

// @ts-ignore
function getMarkdownItems(dir) {
let results = [];
let dirMap = {};

// @ts-ignore
function readDir(currentDir) {
const files = fs.readdirSync(currentDir);
let hasIndex = false;
let items = [];

for (const file of files) {
const fullPath = path.join(currentDir, file);
const stat = fs.statSync(fullPath);

if (stat.isDirectory()) {
readDir(fullPath);
} else if (file.endsWith(".md")) {
let relativePath = fullPath.replace("../docs/", "").replace(".md", "");
if (file === "index.md") {
hasIndex = true;
relativePath = relativePath.replace(/\/index$/, "");
}
items.push(relativePath);
}
}

if (items.length > 0) {
if (hasIndex && items.length > 1) {
// @ts-ignore
dirMap[currentDir] = items;
} else {
results.push(...items);
}
}
}

readDir(dir);

for (const [key, value] of Object.entries(dirMap)) {
results.push({
label: key.split("/").at(-1),
items: value,
});
}

return results;
}

// https://astro.build/config
export default defineConfig({
base: 'leaf',
integrations: [starlight({
title: 'Leaf',
social: {
github: 'https://github.com/DangerMonkeys/leaf',
},
sidebar: [
{
label: 'User Guides',
autogenerate: { directory: 'user-guides' },
// items: [
// // Each item here is one entry in the navigation menu.
// { label: 'Example Guide', slug: 'guides/example' },
// ],
},
{
label: 'Developer Reference',
// Use a custom ordering function to allow index files to be in their own directory
// @ts-ignore
items: getMarkdownItems("../docs/dev-references"),
// autogenerate: { directory: 'dev-references' },
},
],
}), react(), icon({
include: {
"game-icons": [
'bookmarklet', // Attribution Required
],
"simple-icons": [
"github",
"opensourcehardware",
"bluetooth",
],
"material-symbols": [
"bluetooth",
"wifi-rounded",
"satellite-alt",
]
},
})],

vite: {
plugins: [tailwindcss()],
server: {
allowedHosts: ["sob-desktop.tail2c07b.ts.net", "localhost"]
}
},
});
Loading

0 comments on commit a60d4d4

Please sign in to comment.