Unofficial WGU Extension - Adds simple UI changes to WGU pages. Student-made tool for WGU students. Not endorsed by WGU.
This is a monorepo containing:
- extension/: Browser extension built with WXT framework
- functions/: Firebase Cloud Functions for backend services
- site/: React Router website for public documentation
- data/: Data collection and processing scripts
This project follows GitHub Spec Kit principles for specification-driven development:
- ποΈ Project Constitution - Core principles, standards, and decision-making processes
- π Feature Specifications - Detailed specifications for major features:
- π Templates - Templates for new specifications and decisions
- Release Strategy Guide - Comprehensive release workflows, platform requirements, store submission process, and emergency procedures
- Deployment Runbook - Step-by-step deployment procedures for all components
- Release Management - Quick reference for conventional commits and release process
- Architecture Overview - System design, data flow, and component interactions
- CI/CD Troubleshooting - Common CI/CD issues and solutions
- DVC Setup Guide - Data Version Control configuration
- Extension README - Browser extension development
- Functions README - Firebase Functions & GraphQL API
- Site README - Documentation website
# Install dependencies
pnpm install
# Development
pnpm run dev:extension # Browser extension with hot reload
pnpm run dev:functions # Firebase functions emulator
pnpm run dev:site # Documentation website
# Build everything
pnpm run buildThis repository uses DVC (Data Version Control) to manage large files and raw data. All catalog files, PDFs, and raw community data are stored in Google Drive and tracked via DVC to keep the Git repository size manageable.
-
Install DVC (if not using Nix flake):
pip install dvc[gdrive]
-
Pull data files:
dvc pull
On first run, DVC will:
- Open your browser for Google authentication
- Request permission to access Google Drive
- Cache credentials for future use
Note: No setup required for read-only access. The OAuth2 flow handles authentication automatically.
DVC manages several types of files:
-
Catalog JSON files: Large parsed catalog data
-
PDF files: WGU catalog PDFs
-
Raw data: Community data from Discord, Reddit, WGU Connect, etc.
-
Before building or running scripts: Always run
dvc pullto ensure you have the latest files -
Automatic pulling: Build scripts include DVC pull commands where needed
-
Manual pulling: Run
pnpm run catalog:ensure --filter=data
When modifying catalog files:
- Make your changes to the JSON files
- The files are already tracked by DVC, so changes will be detected
- Commit the
.dvcfiles along with your code changes - Push catalog file changes to DVC remote after validation:
dvc push
wgu-extension/
βββ extension/ # Browser extension (WXT)
β βββ data/ # Community data collection & processing
β β βββ catalogs/ # WGU catalog parsing & storage (DVC-managed)
β β βββ discord/ # Discord server data collection
β β βββ reddit/ # Reddit community data collection
β β βββ wgu-connect/ # WGU Connect resource extraction
β β βββ unified/ # Unified community data
β βββ components/ # React components (Radix UI + Tailwind)
β βββ entrypoints/ # WXT entry points for different contexts
β βββ packages/types/ # Shared TypeScript types (published to npm)
β βββ public/ # Static community/course data
βββ functions/ # Firebase Cloud Functions
β βββ src/ # TypeScript source for HTTP endpoints
βββ site/ # React Router website
βββ app/ # Routes and components
- Node.js 22+ and pnpm 9+
- Git
- DVC (installed automatically with Nix flake or via pip)
# Enter development shell with all tools
nix develop
# Or use direnv for automatic environment loading
direnv allowSee individual workspace READMEs for detailed commands:
The extension includes comprehensive data collection from:
- WGU course catalogs (PDF parsing)
- Discord community servers
- Reddit WGU communities
- WGU Connect study groups
Catalog JSON files are large (several MB each) and are managed with DVC:
# Ensure catalog files are available
pnpm run catalog:ensure --filter=data
# Process new catalogs
pnpm run catalog:parse --filter=data <pdf-file>
# Generate reports
pnpm run catalog:report --filter=data- No personal data collection
- Minimal browser permissions
- Secure Firebase rules
- Rate limiting on API endpoints
This project follows specification-driven development. For new features:
- Review the Project Constitution for standards and principles
- Create or review feature specifications in
.specify/features/before implementation - Use provided templates in
.specify/templates/for consistency
- Fork the repository
- Create a feature branch
- Run
dvc pullto get catalog files - Review relevant specifications and create new ones if needed
- Make your changes following the project constitution
- Run tests and linting (
pnpm run typecheckandpnpm run lint) - Submit a pull request with links to relevant specifications
MIT License - see LICENSE file for details
This is an unofficial tool created by WGU students. It is not endorsed by or affiliated with Western Governors University.