{"id":41650064,"url":"https://github.com/webflow/webflow-university","last_synced_at":"2026-01-24T15:42:35.132Z","repository":{"id":323923525,"uuid":"1091209045","full_name":"webflow/webflow-university","owner":"webflow","description":"wfu monorepo for client-side scripts and code components.","archived":false,"fork":false,"pushed_at":"2025-11-18T19:05:57.000Z","size":677,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-02T14:58:46.841Z","etag":null,"topics":["business-critical-yes"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-06T17:47:10.000Z","updated_at":"2025-11-18T19:06:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/webflow/webflow-university","commit_stats":null,"previous_names":["webflow/webflow-university"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/webflow/webflow-university","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webflow%2Fwebflow-university","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webflow%2Fwebflow-university/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webflow%2Fwebflow-university/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webflow%2Fwebflow-university/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webflow","download_url":"https://codeload.github.com/webflow/webflow-university/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webflow%2Fwebflow-university/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28730330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["business-critical-yes"],"created_at":"2026-01-24T15:42:34.409Z","updated_at":"2026-01-24T15:42:35.126Z","avatar_url":"https://github.com/webflow.png","language":"TypeScript","readme":"# Webflow University Monorepo\n\nA pnpm monorepo containing client-side scripts and React components for Webflow University.\n\n## 📦 Packages\n\n### `packages/scripts`\n\nTypeScript code that compiles to JavaScript and is served via jsdelivr from GitHub. These scripts power UI functionality on the website.\n\n**Usage:**\n\n```html\n\u003c!-- Use major version (e.g., @2) for auto-updates within same major version --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/webflow/webflow-university@2/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n\n\u003c!-- Or pin to specific version (e.g., @2.1.0) --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/webflow/webflow-university@2.1.0/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n```\n\n### `packages/code-components`\n\nA Vite React project for Webflow code components. These components are imported into Webflow using their CLI tool.\n\n**Usage:**\n\n```bash\nnpx webflow library share\n```\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- pnpm 10.20.0+\n\n### Installation\n\n```bash\n# Install dependencies for all packages\npnpm install\n```\n\n### Development\n\n```bash\n# Run scripts package in dev mode (with live reload)\npnpm dev:scripts\n\n# Run code-components in dev mode\npnpm dev:components\n\n# Build all packages\npnpm build\n\n# Build specific package\npnpm build:scripts\npnpm build:components\n```\n\n### Linting \u0026 Type Checking\n\n```bash\n# Lint all packages\npnpm lint\n\n# Fix linting issues\npnpm lint:fix\n\n# Type check all packages\npnpm check\n\n# Format code\npnpm format\n```\n\n## 📝 Version Management \u0026 Releases\n\nThis monorepo uses [Changesets](https://github.com/changesets/changesets) for semantic versioning (e.g., 1.0.0, 1.1.0, 2.0.0).\n\n**Why semantic versioning?**\n\n- Clear versioning scheme (major.minor.patch)\n- jsdelivr supports version tags (`@2`, `@2.1.0`, `@v2.1.0`)\n- Easy to pin to specific versions or allow minor/patch updates\n- Industry standard\n\n### Creating a Changeset\n\nWhen you make changes that should trigger a version bump:\n\n```bash\npnpm changeset\n```\n\nThis will:\n\n1. Ask which packages should be bumped\n2. Ask what kind of change (major, minor, patch)\n3. Create a changeset file in `.changeset/`\n\n### Versioning Packages\n\nAfter creating changesets, version the packages:\n\n```bash\npnpm changeset:version\n```\n\nThis will:\n\n- Update package versions based on changesets\n- Update changelogs\n- Remove used changeset files\n\n### Releasing\n\nThe release process is automated via GitHub Actions. When you merge to `main`:\n\n1. If there are changesets, a PR will be created to version packages\n2. Once merged, a GitHub release will be created\n3. The scripts package will be built and artifacts uploaded\n\n**Manual release (if needed):**\n\n```bash\npnpm release\n```\n\n## 🔄 Workflow\n\n### Daily Development\n\n1. Create a feature branch\n2. Make your changes\n3. Run `pnpm lint` and `pnpm check` before committing\n4. Create a changeset if version bump is needed: `pnpm changeset`\n5. Push and create a PR\n\n### Releasing Scripts Package\n\nThe scripts package is automatically deployed via jsdelivr when:\n\n- Code is pushed to `main` branch\n- A GitHub release is created\n\n**To deploy a specific version:**\n\n1. Create a changeset for the scripts package\n2. Merge the version PR\n3. The GitHub Action will create a release\n4. Use the jsdelivr URL with the commit hash or tag\n\n**Get deployment info:**\n\n```bash\nnode scripts/deploy-info.js\n```\n\n### Working with Code Components\n\n1. Make changes in `packages/code-components`\n2. Build: `pnpm build:components`\n3. Share with Webflow: `npx webflow library share`\n4. The built components will be available in Webflow\n\n## 🏗️ Project Structure\n\n```\nwebflow-university/\n├── packages/\n│   ├── scripts/          # Client-side scripts (TypeScript → JavaScript)\n│   │   ├── src/          # Source TypeScript files\n│   │   ├── dist/         # Compiled JavaScript (git-ignored)\n│   │   └── bin/          # Build scripts\n│   └── code-components/  # React components for Webflow\n│       ├── src/          # React component source\n│       └── dist/         # Built components (git-ignored)\n├── .github/\n│   └── workflows/        # GitHub Actions workflows\n├── .changeset/          # Changeset files\n└── scripts/              # Utility scripts\n```\n\n## 🤖 GitHub Actions\n\n### CI Workflow (`.github/workflows/ci.yml`)\n\n- Runs on every PR and push to main\n- Lints and type-checks all packages\n- Builds all packages to ensure they compile\n\n### Release Workflow (`.github/workflows/release.yml`)\n\n- Runs on push to main\n- Creates version PRs if changesets exist\n- Publishes packages\n- Creates GitHub releases\n- Uploads build artifacts\n\n### Build Scripts Workflow (`.github/workflows/build-scripts.yml`)\n\n- Runs on changes to scripts package\n- Builds and uploads scripts artifacts\n\n## 📋 Available Scripts\n\n### Root Level\n\n- `pnpm build` - Build all packages\n- `pnpm build:scripts` - Build scripts package only\n- `pnpm build:components` - Build code-components only\n- `pnpm dev:scripts` - Dev mode for scripts (with live reload)\n- `pnpm dev:components` - Dev mode for code-components\n- `pnpm lint` - Lint all packages\n- `pnpm lint:fix` - Fix linting issues\n- `pnpm check` - Type check all packages\n- `pnpm format` - Format all code\n- `pnpm changeset` - Create a new changeset\n- `pnpm changeset:version` - Version packages based on changesets\n- `pnpm release` - Version and build packages\n- `pnpm clean` - Clean build artifacts\n- `pnpm clean:all` - Clean everything including node_modules\n\n### Scripts Package\n\n- `pnpm --filter scripts dev` - Development mode\n- `pnpm --filter scripts build` - Production build\n- `pnpm --filter scripts lint` - Lint scripts\n\n### Code Components Package\n\n- `pnpm --filter code-components dev` - Development server\n- `pnpm --filter code-components build` - Production build\n- `pnpm --filter code-components preview` - Preview production build\n\n## 🔗 jsdelivr URLs\n\nThe scripts package is served via jsdelivr. **The `dist/` folder is committed to git** so jsdelivr can serve the files directly from GitHub.\n\n**Recommended URL patterns:**\n\n**By semantic version (recommended):**\n\n```html\n\u003c!-- Major version - auto-updates for minor/patch releases --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/OWNER/REPO@2/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n\n\u003c!-- Specific version - pinned --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/OWNER/REPO@2.1.0/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n\n\u003c!-- With 'v' prefix (also works) --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/OWNER/REPO@v2.1.0/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n```\n\n**Other options:**\n\n```html\n\u003c!-- From branch (for development/testing) --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/OWNER/REPO@main/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n\n\u003c!-- Specific commit (for debugging) --\u003e\n\u003cscript\n  defer\n  src=\"https://cdn.jsdelivr.net/gh/OWNER/REPO@abc1234/packages/scripts/dist/index.js\"\n\u003e\u003c/script\u003e\n```\n\nRun `node scripts/deploy-info.js` to get the exact URLs for your current setup.\n\n## 🚀 Quick Deployment Guide\n\nFor a complete step-by-step walkthrough, see [DEPLOYMENT_WALKTHROUGH.md](./DEPLOYMENT_WALKTHROUGH.md).\n\n**TL;DR:**\n\n1. Make changes → `pnpm build:scripts` → `pnpm changeset` → commit → PR → merge\n2. Version PR created automatically → merge it\n3. Release created automatically → use jsdelivr URL with new version\n\n## 👥 Team Workflow\n\n### Making Changes\n\n1. **Create a branch:**\n\n   ```bash\n   git checkout -b feature/my-feature\n   ```\n\n2. **Make your changes** in the appropriate package(s)\n\n3. **Test locally:**\n\n   ```bash\n   pnpm build\n   pnpm lint\n   pnpm check\n   ```\n\n4. **Create a changeset** if needed:\n\n   ```bash\n   pnpm changeset\n   ```\n\n5. **Commit and push:**\n\n   ```bash\n   git add .\n   git commit -m \"feat: add new feature\"\n   git push origin feature/my-feature\n   ```\n\n6. **Create a PR** on GitHub\n\n### Reviewing PRs\n\n- CI will automatically run linting, type checking, and builds\n- Review the changes\n- If changesets are included, review the version bump\n- Merge when ready\n\n### After Merging\n\n- If changesets exist, a version PR will be created automatically\n- Review and merge the version PR\n- GitHub Actions will create a release\n- Scripts will be available via jsdelivr\n\n## 🛠️ Troubleshooting\n\n### Build Issues\n\n```bash\n# Clean and rebuild\npnpm clean\npnpm install\npnpm build\n```\n\n### Dependency Issues\n\n```bash\n# Clean everything and reinstall\npnpm clean:all\npnpm install\n```\n\n### Changeset Issues\n\nIf changesets aren't working:\n\n1. Check `.changeset/config.json` exists\n2. Ensure you're on the `main` branch when versioning\n3. Check that changeset files are in `.changeset/` directory\n\n## 📚 Additional Resources\n\n- [pnpm Workspaces](https://pnpm.io/workspaces)\n- [Changesets](https://github.com/changesets/changesets)\n- [jsdelivr](https://www.jsdelivr.com/)\n- [Webflow Code Components](https://developers.webflow.com/docs/code-components)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebflow%2Fwebflow-university","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebflow%2Fwebflow-university","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebflow%2Fwebflow-university/lists"}