Recommended Repository Consolidation for LARC
๐ฏ Goal
Simplify the LARC ecosystem while maintaining architectural clarity: keep@larcjs/core and @larcjs/ui as separate, focused packages.
โ Your Reasoning is Sound
Keepcore and components separate because:
npm install @larcjs/core stays minimalThis is architecturally correct. The problem is the 10 OTHER repos around them.
๐ Current State (10 Repos)
| Repo | Purpose | Action |
|------|---------|--------|
| core | PAN messaging bus | โ
Keep separate |
| components | 57 UI components | โ
Keep separate |
| core-types | TS types for core | ๐ Consolidate |
| components-types | TS types for components | ๐ Consolidate |
| site | Documentation | ๐ Consolidate |
| examples | Demo apps | ๐ Consolidate |
| apps | More demo apps | ๐ Consolidate (merge with examples) |
| devtools | Chrome extension | ๐ Consolidate |
| larc | Meta repo | ๐ Become monorepo |
| .github | Org files | ๐ Consolidate |
๐จ Proposed Architecture
Final Structure: 3 Repositories
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ github.com/larcjs/core โ
โ โโโ src/ (PAN bus implementation) โ
โ โโโ tests/ (261 tests) โ
โ โโโ package.json (@larcjs/core v1.1.1) โ
โ โโโ README.md (Core-focused docs) โ
โ โ
โ Published: @larcjs/core โ
โ Size: 40KB minified (128KB unminified), Zero dependencies โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ github.com/larcjs/components โ
โ โโโ src/ (57 components) โ
โ โโโ tests/ โ
โ โโโ package.json (@larcjs/ui v1.1.0) โ
โ โโโ README.md (Component library docs) โ
โ โ
โ Published: @larcjs/ui โ
โ Peer Dep: @larcjs/core ^1.1.0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ github.com/larcjs/larc (Monorepo - Development Hub) โ
โ โโโ packages/ โ
โ โ โโโ core-types/ (@larcjs/core-types) โ
โ โ โโโ components-types/(@larcjs/ui-types) โ
โ โ โโโ devtools/ (@larcjs/devtools) โ
โ โโโ docs/ โ
โ โ โโโ site/ (Documentation website) โ
โ โ โโโ guides/ (Tutorials, how-tos) โ
โ โ โโโ api/ (API reference) โ
โ โโโ examples/ โ
โ โ โโโ basic/ (Simple examples) โ
โ โ โโโ contact-manager/ (Full app) โ
โ โ โโโ invoice-studio/ (Full app) โ
โ โ โโโ hybrid-dashboard/(React+Vue+LARC) โ
โ โ โโโ offline-todo/ (State management) โ
โ โ โโโ ... โ
โ โโโ .github/ (Workflows, templates) โ
โ โโโ package.json (Workspace root) โ
โ โโโ pnpm-workspace.yaml โ
โ โ
โ Not published as a whole, but packages/* are โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฆ Package Publishing Strategy
Published to npm
| Package | Repo | Purpose |
|---------|------|---------|
| @larcjs/core | core | Standalone messaging bus |
| @larcjs/ui | components | UI component library |
| @larcjs/core-types | larc/packages/core-types | TypeScript types for core |
| @larcjs/ui-types | larc/packages/ui-types | TypeScript types for components |
| @larcjs/devtools | larc/devtools | Chrome extension (maybe) |
Not Published (Development Assets)
- Examples (live on GitHub Pages)
- Docs site (live on GitHub Pages)
- Workspace config
๐ Developer Workflows
For Core Development
# Clone core repo
git clone https://github.com/larcjs/core.git
cd core
npm install
npm test
npm run build
# Publish
npm version patch
npm publish
# Update types
cd ../larc/packages/core-types
# Update types to match
npm version patch
npm publish
For Components Development
# Clone components repo
git clone https://github.com/larcjs/components.git
cd components
npm install
npm link @larcjs/core # or use published version
npm test
npm run build
# Publish
npm version minor
npm publish
# Update types
cd ../larc/packages/ui-types
# Update types
npm version minor
npm publish
For Examples/Docs (Most Common)
# Clone monorepo
git clone https://github.com/larcjs/larc.git
cd larc
pnpm install # Installs all packages
# Work on examples
cd examples/contact-manager
# edit files...
# Uses published @larcjs/core and @larcjs/ui
# Work on docs
cd docs/site
# edit docs...
# Work on types
cd packages/core-types
# edit types...
# Single commit for related changes
git add .
git commit -m "Add example and docs for new feature"
git push
๐ Migration Steps
Phase 1: Consolidate Examples (2 hours)
Mergeapps into examples:
cd larc
mkdir -p examples
# Move from apps repo
git clone https://github.com/larcjs/apps.git temp-apps
mv temp-apps/contact-manager examples/
mv temp-apps/invoice-studio examples/
mv temp-apps/markdown-notes examples/
mv temp-apps/data-browser examples/
rm -rf temp-apps
# Merge with existing examples
git clone https://github.com/larcjs/examples.git temp-examples
mv temp-examples/* examples/
rm -rf temp-examples
# Organize
examples/
โโโ README.md
โโโ basic/ (Simple, quick demos)
โโโ intermediate/ (Real features)
โโโ advanced/ (Full applications)
โโโ contact-manager/
โโโ invoice-studio/
โโโ hybrid-dashboard/
โโโ ...
git add examples
git commit -m "Consolidate all examples"
Phase 2: Move Types to Monorepo (1 hour)
cd larc
mkdir -p packages
# Move core-types
git clone https://github.com/larcjs/core-types.git packages/core-types
rm -rf packages/core-types/.git
# Move components-types
git clone https://github.com/larcjs/components-types.git packages/ui-types
rm -rf packages/ui-types/.git
# Update package.json to reference published packages
# packages/core-types/package.json
{
"name": "@larcjs/core-types",
"version": "1.1.1",
"peerDependencies": {
"@larcjs/core": "^1.1.0"
}
}
git add packages
git commit -m "Move TypeScript types to monorepo"
Phase 3: Move Documentation (1 hour)
cd larc
mkdir -p docs
# Move site
git clone https://github.com/larcjs/site.git docs/site
rm -rf docs/site/.git
git add docs
git commit -m "Move documentation to monorepo"
Phase 4: Move DevTools (30 min)
cd larc/packages
git clone https://github.com/larcjs/devtools.git devtools
rm -rf devtools/.git
git add devtools
git commit -m "Move DevTools to monorepo"
Phase 5: Set Up Workspaces (30 min)
# Create pnpm-workspace.yaml
cat > pnpm-workspace.yaml << EOF
packages:
- 'packages/*'
EOF
# Create root package.json
cat > package.json << EOF
{
"name": "larc",
"version": "1.0.0",
"private": true,
"description": "LARC Development Monorepo",
"workspaces": [
"packages/*"
],
"scripts": {
"build": "pnpm -r build",
"test": "pnpm -r test",
"dev": "pnpm -r --parallel dev",
"clean": "pnpm -r clean",
"publish-types": "pnpm --filter '@larcjs/core-types' publish && pnpm --filter '@larcjs/ui-types' publish"
},
"devDependencies": {
"@changesets/cli": "^2.27.0"
}
}
EOF
pnpm install
git add .
git commit -m "Set up pnpm workspaces"
Phase 6: Archive Old Repos (15 min)
Don't delete! Archive for history:# On GitHub, go to each repo:
# Settings โ Archive this repository
Archive these:
- larcjs/apps
- larcjs/examples
- larcjs/site
- larcjs/core-types
- larcjs/components-types
- larcjs/devtools
Add README to each:
"This repository has been consolidated into https://github.com/larcjs/larc
See [path] for the code."
๐ Final Repository Structure
github.com/larcjs/core (Active)
core/
โโโ src/
โ โโโ pan.mjs
โ โโโ components/
โ โโโ index.js
โโโ tests/
โโโ package.json (@larcjs/core)
โโโ README.md
github.com/larcjs/components (Active)
components/
โโโ src/
โ โโโ components/
โ โโโ styles/
โ โโโ index.js
โโโ tests/
โโโ package.json (@larcjs/ui)
โโโ README.md
github.com/larcjs/larc (Active - Monorepo)
larc/
โโโ packages/
โ โโโ core-types/
โ โ โโโ index.d.ts
โ โ โโโ package.json (@larcjs/core-types)
โ โโโ components-types/
โ โ โโโ index.d.ts
โ โ โโโ package.json (@larcjs/ui-types)
โ โโโ devtools/
โ โโโ src/
โ โโโ manifest.json
โ โโโ package.json (@larcjs/devtools)
โโโ examples/
โ โโโ README.md
โ โโโ basic/
โ โ โโโ hello-world.html
โ โ โโโ message-passing.html
โ โ โโโ ...
โ โโโ intermediate/
โ โ โโโ form-validation.html
โ โ โโโ tabs-routing.html
โ โ โโโ ...
โ โโโ advanced/
โ โโโ contact-manager/
โ โโโ invoice-studio/
โ โโโ hybrid-dashboard/
โ โโโ offline-todo/
โโโ docs/
โ โโโ site/
โ โโโ index.html
โ โโโ docs/
โ โโโ guides/
โ โโโ api/
โโโ .github/
โ โโโ workflows/
โ โโโ ISSUE_TEMPLATE/
โ โโโ PULL_REQUEST_TEMPLATE.md
โโโ package.json
โโโ pnpm-workspace.yaml
โโโ README.md
โโโ CONTRIBUTING.md
๐ URLs After Consolidation
Package Installs (Unchanged)
npm install @larcjs/core
npm install @larcjs/ui
npm install -D @larcjs/core-types
npm install -D @larcjs/ui-types
GitHub URLs (Simplified)
Source code:- https://github.com/larcjs/core
- https://github.com/larcjs/components
- https://github.com/larcjs/larc
- https://larcjs.com/docs/
- https://larcjs.com/examples/
- https://larcjs.com/examples/basic/
- https://larcjs.com/examples/advanced/contact-manager/
๐ก Benefits of This Structure
For Core/Components Users (External)
- โ Clear separation: bus vs. components
- โ Minimal installs
- โ Independent versioning
- โ No change to their workflow
For Contributors (Internal)
- โ Fewer repos to clone (3 vs 10)
- โ Examples all in one place
- โ Types updated alongside features
- โ Docs co-located with examples
- โ Single source of truth
For Maintainers
- โ Fewer repos to manage
- โ Simpler CI/CD (3 repos vs 10)
- โ Coordinated releases for types
- โ Easier to keep docs in sync
๐ Alternative: Keep It Super Simple
If you want even simpler:
Option B: Just 2 Repos
github.com/larcjs/core (Stay as-is)
github.com/larcjs/components (Stay as-is)
Everything else โ Archive or move to wiki
Rationale:
- Types published as patch releases from core
- Examples live in README or GitHub Pages
- Docs on website only
๐ Comparison
| Approach | Repos | Complexity | npm Packages | Best For | |----------|-------|------------|--------------|----------| | Current | 10 | High ๐ซ | 5 | Nothing | | Recommended (3) | 3 | Low ๐ | 5 | Most teams | | Extreme (2) | 2 | Minimal ๐คฉ | 2 | Solo maintainer |
โ Recommended Action Plan
core - Published package
- components - Published package
larc (Do this):core-types โ larc/packages/core-types
- components-types โ larc/packages/ui-types
- devtools โ larc/devtools
- site โ larc/docs/site
- examples + apps โ larc/examples
- .github โ larc/.github
apps repo (merged into examples)
- Old examples repo (merged into larc)
- Old site repo (moved to larc)
- Old type repos (moved to larc)
- Old devtools repo (moved to larc)
Timeline: 5-6 hours one-time effort
Benefit: Simpler forever ๐
๐ Ready to Execute?
I can help create the migration scripts. Just say the word!