Professional documentation for the Archery Apprentice Android archery scoring application.
Live Site: https://blamechris.github.io/archery-apprentice-docs/
Complete guides for using Archery Apprentice:
- User Guide - App usage, features, and tutorials
- Getting started
- Feature guides (scoring, equipment, analytics, sync)
- How-to guides for common tasks
- Troubleshooting
Technical documentation for contributors:
- Developer Guide - Architecture, setup, and contributing
- Development setup
- Architecture overview (MVVM, Repository pattern, Room)
- API reference (Repositories, ViewModels, DAOs)
- Testing guides
- CI/CD documentation
Project management and coordination:
- Internal Documentation - Agent coordination & KMP migration
- KMP migration tracking (Weeks 1-12+)
- Agent reports and coordination
- Retrospectives and lessons learned
- Experiments and analysis
# Install dependencies
npm install
# Preview locally
npx quartz build --serve
# Opens at http://localhost:8080Method 1: Automatic (on merge to main)
- Any push to
mainbranch triggers GitHub Actions deployment - Workflow:
.github/workflows/deploy-quartz.yml - Uses self-hosted runner on days 22-31, GitHub-hosted on days 1-21
Method 2: Manual (using deploy script)
# From PowerShell
.\deploy.ps1Method 3: Manual (GitHub Actions)
# Trigger workflow manually
gh workflow run deploy-quartz.yml
# Or with specific runner
gh workflow run deploy-quartz.yml -f runner_mode=self-hosted
gh workflow run deploy-quartz.yml -f runner_mode=githubWhen needed: Private repos with quota limits, or for faster local builds during quota exhaustion.
- Windows 10/11, Ubuntu 20.04+, or macOS 11+
- Admin/sudo access
- Node.js 20+ (for Quartz builds)
mkdir C:\actions-runner-docs
cd C:\actions-runner-docs# Download Windows x64 runner (check for latest version at https://github.com/actions/runner/releases)
Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-win-x64-2.311.0.zip -OutFile actions-runner-win-x64-2.311.0.zip
# Extract
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/actions-runner-win-x64-2.311.0.zip", "$PWD")- Go to: https://github.com/blamechris/archery-apprentice-docs/settings/actions/runners/new
- Copy the registration token from the page
# Configure runner
.\config.cmd --url https://github.com/blamechris/archery-apprentice-docs `
--token YOUR_REGISTRATION_TOKEN `
--name "archery-docs-runner-1" `
--labels "self-hosted,Windows,X64" `
--work _work
# When prompted:
# - Runner group: [press Enter for Default]
# - Runner name: [press Enter to use "archery-docs-runner-1"]
# - Additional labels: [press Enter to skip]
# - Work folder: [press Enter for "_work"]
# - Run as service: Y
# - User account: [press Enter for NT AUTHORITY\NETWORK SERVICE]
# Service is automatically installed and startedCheck: https://github.com/blamechris/archery-apprentice-docs/settings/actions/runners
You should see your runner name with a green "Idle" status.
# Create runner directory
mkdir -p ~/actions-runner-docs
cd ~/actions-runner-docs
# Download runner (Linux x64)
curl -o actions-runner-linux-x64-2.311.0.tar.gz -L \
https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-linux-x64-2.311.0.tar.gz
# Extract
tar xzf ./actions-runner-linux-x64-2.311.0.tar.gz
# Configure runner
./config.sh --url https://github.com/blamechris/archery-apprentice-docs \
--token YOUR_REGISTRATION_TOKEN \
--name "archery-docs-runner-1" \
--labels "self-hosted,Linux,X64" \
--work _work
# Install as service
sudo ./svc.sh install
# Start service
sudo ./svc.sh start
# Verify
sudo ./svc.sh statusWindows:
cd C:\actions-runner-docs
# Check status
.\svc.sh status
# Start service
.\svc.sh start
# Stop service
.\svc.sh stop
# Restart service
.\svc.sh restart
# Uninstall service
.\svc.sh uninstallLinux/macOS:
cd ~/actions-runner-docs
# Check status
sudo ./svc.sh status
# Start service
sudo ./svc.sh start
# Stop service
sudo ./svc.sh stop
# Restart service
sudo ./svc.sh restart
# Uninstall service
sudo ./svc.sh uninstall# Windows
cd C:\actions-runner-docs
.\svc.sh stop
.\svc.sh uninstall
.\config.cmd remove --token YOUR_REMOVAL_TOKEN
# Linux/macOS
cd ~/actions-runner-docs
sudo ./svc.sh stop
sudo ./svc.sh uninstall
./config.sh remove --token YOUR_REMOVAL_TOKENGet removal token from: https://github.com/blamechris/archery-apprentice-docs/settings/actions/runners
.
├── .github/
│ └── workflows/
│ └── deploy-quartz.yml # Automated deployment workflow
├── content/ # Quartz content (symlink to root)
├── Development/
│ └── CI-CD/ # CI/CD documentation
│ ├── Hybrid-Runner-System.md
│ ├── Workflows-Overview.md
│ ├── Troubleshooting-Guide.md
│ └── Maintenance-Tasks.md
├── Architecture/ # System architecture docs
├── Flows/ # User flows and diagrams
├── Code-Graph/ # Code structure and relationships
├── projects/ # Project-specific documentation
├── quartz/ # Quartz framework
├── quartz.config.ts # Quartz configuration
├── deploy.ps1 # Manual deployment script
├── package.json # Node.js dependencies
└── README.md # This file
The deploy workflow (.github/workflows/deploy-quartz.yml) uses a hybrid runner strategy:
Automatic Mode (default):
- Days 1-21: Uses GitHub-hosted runners (
ubuntu-latest) - Days 22-31: Uses self-hosted runner (conserve quota)
Manual Overrides:
Via commit message flags:
git commit -m "docs: Update content [self-hosted]" # Force self-hosted
git commit -m "docs: Update content [github]" # Force GitHub-hosted
git commit -m "docs: Update content [skip-ci]" # Skip CI entirelyVia workflow dispatch (GitHub Actions UI):
- Actions tab → Deploy Quartz to GitHub Pages
- Run workflow → Select runner_mode:
auto(default) - Day-based selectionself-hosted- Force self-hostedgithub- Force GitHub-hostedskip- Skip workflow
When triggered, the workflow:
-
Selects runner (decide_runner job, ~4s)
-
Builds site (deploy job, ~5-8 min):
- Checks out repository
- Sets up Node.js 20
- Installs dependencies (
npm install) - Updates deployment timestamp in
content/index.md - Builds Quartz site (
npx quartz build) - Deploys to
gh-pagesbranch - Sends Discord notification (success/failure)
-
GitHub Pages deploys (~2-3 min)
- Site available at: https://blamechris.github.io/archery-apprentice-docs/
Total time from push to live: ~8-12 minutes
Cause: No self-hosted runner available for this repository
Solution:
- Check runner status: https://github.com/blamechris/archery-apprentice-docs/settings/actions/runners
- If offline, restart runner service (see "Managing the Runner Service" above)
- If no runner exists, follow "Self-Hosted Runner Setup" above
- Or override to use GitHub-hosted:
gh workflow run deploy-quartz.yml -f runner_mode=github
Cause: Platform-specific step skipped (Windows vs Linux)
Solution: Verify DISCORD_WEBHOOK_URL secret is set:
gh secret list | grep DISCORD_WEBHOOK_URL
# If missing, add it:
gh secret set DISCORD_WEBHOOK_URL
# Paste webhook URL from Discord Server Settings → Integrations → WebhooksCause: GitHub Pages cache or build errors
Solution:
- Wait 2-3 minutes for GitHub Pages to refresh
- Hard refresh browser:
Ctrl+Shift+R(Windows) orCmd+Shift+R(Mac) - Check workflow logs for errors:
gh run list --workflow=deploy-quartz.yml --limit 1 gh run view <run-id> --log
Cause: Platform-specific step didn't run
Solution: Verify both Windows and Linux timestamp steps exist in workflow (.github/workflows/deploy-quartz.yml:89-102)
- Create/edit files in Obsidian vault (this repository)
- Commit changes:
git add . git commit -m "docs: Add new documentation" git push
- Deployment happens automatically via GitHub Actions
- Verify deployment at https://blamechris.github.io/archery-apprentice-docs/
# Build and serve locally
npx quartz build --serve
# Opens at http://localhost:8080
# Ctrl+C to stop# Using deploy script
.\deploy.ps1
# Or manually
npx quartz build
# Then manually commit and push to gh-pages branchFree tier: 3000 minutes/month (private repos)
This workflow usage:
- ~5-8 minutes per deployment
- ~2-3 deployments/month typical
- Total: ~15-25 minutes/month
Quota conservation strategies:
- Hybrid runner system (automatic on days 22-31)
- Self-hosted runner (zero quota usage)
- Skip CI for minor changes:
[skip-ci]flag - Manual trigger instead of auto-deploy
In this repo:
Main repo (archery-apprentice):
External:
Last Updated: 2025-10-24 Maintained By: @blamechris