Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy to GitHub Pages

on:
push:
branches:
- main

jobs:
build:
name: Build Docusaurus
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Build website
run: npm run build
- name: Upload build artifact
uses: actions/upload-pages-artifact@v3
with:
path: build

deploy:
name: Deploy to GitHub Pages
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
23 changes: 23 additions & 0 deletions .github/workflows/test-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Test deployment

on:
pull_request:
branches:
- main

jobs:
test-deploy:
name: Test deployment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Test build website
run: npm run build
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Dependencies
node_modules/

# Docusaurus build output and cache
build/
.docusaurus/

# Claude Code local config (plans, memory, worktrees)
.claude/

# System files
.DS_Store
51 changes: 49 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,55 @@
# 8thwall.github.io
Landing page for 8th Wall Open Source

Landing page for 8th Wall Open Source. Built with [Docusaurus](https://docusaurus.io/) for one styling system, one nav, one build pipeline (homepage, download page, docs, and blog).

## Local Development

```bash
npm install
npm start
```

Open [http://localhost:3000](http://localhost:3000).

## Build

```bash
npm run build
```

Output is in `build/`. To preview: `npm run serve`.

## Structure

- **Home** (`/`) – Custom React homepage with interactive hero, product cards, getting started, FAQ, CTA
- **Downloads** (`/downloads`) – Custom React downloads page
- **Docs** (`/docs`) – Docusaurus docs (placeholder in `docs/` for future content)
- **Blog** (`/blog`) – Docusaurus blog (folder ready for future posts)

Static assets (logo, favicon, images) live in `static/`. Custom styles are in `src/css/custom.css`.

## Mobile Testing

To test on a physical device on the same Wi-Fi network:

```bash
npm run start:network
```
npx http-server .

This starts Docusaurus bound to `0.0.0.0` (all interfaces) on port 3000. Find your machine's local IP:

```bash
# macOS
ipconfig getifaddr en0
```

Then open `http://<your-local-ip>:3000` on your phone. Make sure both devices are on the same network.

## Deployment

Two workflows handle CI/CD:

- **`deploy.yml`** — triggers on merge to `main`. Builds the site and deploys via GitHub's native Pages deployment.
- **`test-deploy.yml`** — triggers on pull requests to `main`. Runs a build to catch errors before merge.

**First-time setup:** Go to **Settings → Pages** and set the source to **GitHub Actions**.
Empty file added docs/.gitkeep
Empty file.
88 changes: 88 additions & 0 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/** @type {import('@docusaurus/types').Config} */
const config = {
title: '8th Wall',
markdown: {
format: 'detect',
},
tagline: 'Open Source AR & 3D',
favicon: 'favicon.svg',
url: 'https://8thwall.org',
baseUrl: '/',
organizationName: '8thwall',
projectName: '8thwall.github.io',
trailingSlash: false,
onBrokenAnchors: 'warn',
presets: [
[
'classic',
{
docs: false,
blog: {
path: 'blog',
routeBasePath: 'blog',
showReadingTime: false,
},
theme: {
customCss: './src/css/custom.css',
},
},
],
],
themeConfig: {
colorMode: {
defaultMode: 'dark',
disableSwitch: true,
respectPrefersColorScheme: false,
},
announcementBar: {
id: 'migration',
content: '<span class="announcement-text">The hosted 8th Wall platform was retired Feb 28, 2026. Existing published experiences continue to run until Feb 28, 2027.</span><span class="announcement-btns"><a target="_blank" rel="noopener" href="https://8th.io/migration" class="banner-btn">View Migration Guide</a><a target="_blank" rel="noopener" href="https://8th.io/blog" class="banner-btn">View Announcements</a></span>',
backgroundColor: '#111',
textColor: '#a1a1a1',
isCloseable: false,
},
navbar: {
title: '',
logo: {
alt: '8th Wall',
src: 'logo.png',
srcDark: 'logo.png',
height: '24px',
style: { height: '24px', width: 'auto' },
},
items: [
{ href: 'https://github.com/8thwall', label: 'GitHub', position: 'left' },
{ href: 'https://8th.io/examples', label: 'Samples', position: 'left' },
{ href: 'https://www.youtube.com/@8thwall', label: 'Tutorials', position: 'left' },
{ href: 'https://8th.io/blog', label: 'Blog', position: 'left' },
{ href: 'https://8th.io/discord', label: 'Discord', position: 'left' },
{ href: 'https://www.8thwall.com/docs', label: 'Docs', position: 'left' },
{
type: 'html',
position: 'right',
value: '<a href="/downloads" class="btn btn-primary navbar-download-btn">Download</a>',
},
],
},
footer: {},
metadata: [
{ property: 'og:image', content: 'https://8thwall.org/social-cover.png' },
{ property: 'og:type', content: 'website' },
{ name: 'twitter:image', content: 'https://8thwall.org/social-cover.png' },
],
},
clientModules: [require.resolve('./src/clientModules/navbarScroll.js')],
plugins: [
[
'@docusaurus/plugin-content-docs',
{
id: 'legacy-policies',
path: 'legacy-policies',
routeBasePath: 'legacy-policies',
sidebarPath: require.resolve('./sidebars-legacy.js'),
},
],
],
};

module.exports = config;
Loading
Loading