nerdev-monorepo

Enforces Turborepo and Bun monorepo structure, naming conventions, CI/CD, and deployment patterns.

1|Updated Aug 17, 2026
One-click install
npx skills add https://github.com/NalinDalal/skillset --skill nerdev-monorepo-nalindalal
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: nerdev-monorepo
Source: https://github.com/NalinDalal/skillset/tree/main/skills/nerdev/nerdev-monorepo
Command: npx skills add https://github.com/NalinDalal/skillset --skill nerdev-monorepo-nalindalal

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Teams building full-stack TypeScript projects often end up with inconsistent folder structures, mixed naming conventions, undocumented code, and ad-hoc deployment setups. This Skill standardizes the entire nerdev-co development methodology so every project follows the same Turborepo + Bun monorepo architecture. ## Core Features & Use Cases - Monorepo Scaffolding Standards: Defines the canonical apps/ and packages/ layout with Vite + TanStack Router frontends, Bun + Elysia HTTP backends, and Bun WebSocket servers. - Naming and Documentation Conventions: Enforces camelCase files and functions, PascalCase types, mandatory JSDoc on exports, and required project files like AGENTS.md, design.md, and openapi.yaml. - Backend and Real-Time Patterns: Provides route file conventions, Prisma schema patterns with optimistic locking, diff-based WebSocket sync, session auth, and rate limiting. - CI/CD and Deployment: Includes GitHub Actions pipelines (typecheck, lint, build) and single-EC2 deployment with Nginx reverse proxy and PM2 process management. - Use Case: When starting a new collaborative canvas app, ask the agent to scaffold the project and it will create the full Turborepo structure with shared packages, typed WebSocket messages, and a deployment guide. ## Quick Start Ask the agent to scaffold a new nerdev-co style monorepo with a Vite frontend, Elysia backend, and shared Prisma package following these conventions.

Frequently Asked Questions about nerdev-monorepo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure a Turborepo monorepo with Bun?▼

Place deployable apps under apps/ (frontend, http-backend, ws-backend) and shared code under packages/ (db, ui, common, typescript-config, eslint-config). Configure turbo.json with build, lint, check-types, and dev pipelines, and use Bun as the runtime and package manager.

What naming conventions should a TypeScript monorepo use?▼

Use camelCase for files, directories, functions, and variables; PascalCase for types, interfaces, enums, and React components; UPPER_SNAKE_CASE for constants; and kebab-case for CSS classes. Every exported function should carry JSDoc comments.

Should I use Next.js or Vite with TanStack Router for a canvas app?▼

For canvas-heavy or real-time collaborative apps, Vite with TanStack Router is preferred over Next.js. It provides file-based routing with auto-generated type-safe route trees, loaders for data fetching, and Zod-validated search params without server-rendering overhead.

How does diff-based WebSocket sync work for real-time collaboration?▼

The frontend computes a minimal ShapeDiff containing added, modified, and deleted items, then broadcasts it via typed WebSocket messages. The server relays the diff to room members, and clients apply remote diffs immediately to local state instead of syncing full state.

When should an Elysia route file be split into a folder?▼

Start with one file per resource containing all HTTP verbs, such as routes/me.ts with handleGetMe and handlePutMe. Only promote it to routes/<resource>/ with index.ts and handlers.ts when the file exceeds roughly 300 lines or has five or more handlers.

What are the limitations of single EC2 deployment with PM2?▼

A single EC2 instance with Nginx and PM2 lacks horizontal scaling and redundancy, making it unsuitable for high-traffic production workloads. Rate limiting should be Redis-backed if you later move to distributed deployments across multiple instances.