Global Tech Stack

Explain the project's tech stack and guide architecture decisions.

1|Updated Dec 4, 2024
One-click install
npx skills add https://github.com/imkdw/imkdw-dev --skill global-tech-stack-imkdw
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: Global Tech Stack
Source: https://github.com/imkdw/imkdw-dev/tree/main/.claude/skills/global-tech-stack
Command: npx skills add https://github.com/imkdw/imkdw-dev --skill global-tech-stack-imkdw

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Navigating a complex monorepo with multiple frameworks and tools can be daunting, leading to inconsistent development practices and integration issues. This Skill provides a clear, unified guide to the project's core technologies, accelerating onboarding and ensuring cohesive development.

Core Features & Use Cases

  • Unified Tech Overview: Gain a comprehensive understanding of how NestJS, Next.js, Prisma, PostgreSQL, and TypeScript interact within the project.
  • Monorepo Best Practices: Leverage Turborepo and pnpm workspaces for efficient development, build orchestration, and shared package management.
  • Standardized Tooling: Apply consistent ESLint, Prettier, and TypeScript configurations, reducing setup time and ensuring code quality.
  • Use Case: When starting a new feature, quickly understand which framework (NestJS for API, Next.js for blog) to use, how to interact with the database via Prisma, and which shared packages are available for common utilities.

Quick Start

Explain the core components of our project's tech stack and how they interact, focusing on the API and blog frameworks and their respective roles.

Frequently Asked Questions about Global Tech Stack

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

FAQPage Schema
How do I structure a monorepo with NestJS, Next.js, Prisma, and TypeScript?

Structure a monorepo using Turborepo and pnpm workspaces to organize NestJS (API), Next.js (frontend), and shared packages. Turborepo orchestrates builds across workspace packages, pnpm manages dependencies efficiently, and a split Prisma schema connects both layers to PostgreSQL with type safety in strict TypeScript mode.

What's the best way to set up a type-safe database layer in a monorepo?

Use Prisma ORM with a split schema across your monorepo packages, connecting to PostgreSQL. Generate TypeScript types from your schema definition, then import generated types in both NestJS (API) and Next.js (frontend) packages to ensure type consistency across your stack.

How do I configure ESLint, Prettier, and TypeScript consistently across workspace packages?

Define shared ESLint, Prettier, and TypeScript configurations in a common package within your pnpm workspace, then reference them from each workspace package. This enforces consistent code standards, formatting, and strict type checking across NestJS, Next.js, and shared utilities.

When should I use NestJS versus Next.js in a feature-based monorepo?

Use NestJS for API development with modular, feature-based architecture and business logic. Use Next.js 15 App Router for frontend and server-side rendering. Both run in the same monorepo, share TypeScript types and Prisma models, and coordinate via Turborepo build orchestration.

Can I share utilities and types across NestJS and Next.js packages?

Yes. Create shared workspace packages for common utilities, TypeScript types, and Prisma client exports. Both NestJS and Next.js packages depend on these shared packages via pnpm workspaces, ensuring single-source-of-truth for types and reusable logic.

What are the limitations of using a split Prisma schema in a monorepo?

Split Prisma schemas require careful migration coordination across packages and can complicate cross-package schema references. Ensure shared database migrations run before dependent packages deploy, and validate type generation across all schema segments to prevent inconsistencies.