Files
gh-jeremylongshore-claude-c…/commands/project-scaffold.md
2025-11-30 08:20:34 +08:00

7.7 KiB

description, shortcut, category, difficulty, estimated_time
description shortcut category difficulty estimated_time
Generate complete fullstack project structure with all boilerplate ps devops beginner 5-10 minutes

Project Scaffold

Generates a complete fullstack project structure with frontend, backend, database, authentication, testing, and deployment configuration.

What This Command Does

Generated Project:

  • Frontend (React + TypeScript + Vite)
  • Backend (Express or FastAPI)
  • Database (PostgreSQL + Prisma/SQLAlchemy)
  • Authentication (JWT + OAuth)
  • Testing (Jest/Pytest + E2E)
  • CI/CD (GitHub Actions)
  • Docker setup
  • Documentation

Output: Production-ready fullstack application

Time: 5-10 minutes


Usage

# Generate fullstack project
/project-scaffold "Task Management App"

# Shortcut
/ps "E-commerce Platform" --stack react,express,postgresql

# With specific features
/ps "Blog Platform" --features auth,admin,payments,analytics

Generated Structure

my-app/
├── client/                    # Frontend (React + TypeScript + Vite)
│   ├── src/
│   │   ├── components/       # React components
│   │   ├── pages/            # Page components
│   │   ├── hooks/            # Custom hooks
│   │   ├── services/         # API services
│   │   ├── context/          # Context providers
│   │   ├── utils/            # Utilities
│   │   ├── types/            # TypeScript types
│   │   ├── App.tsx
│   │   └── main.tsx
│   ├── public/
│   ├── index.html
│   ├── package.json
│   ├── vite.config.ts
│   ├── tsconfig.json
│   └── tailwind.config.js
│
├── server/                    # Backend (Express + TypeScript)
│   ├── src/
│   │   ├── controllers/      # Request handlers
│   │   ├── services/         # Business logic
│   │   ├── models/           # Database models
│   │   ├── routes/           # API routes
│   │   ├── middleware/       # Express middleware
│   │   ├── utils/            # Utilities
│   │   ├── config/           # Configuration
│   │   ├── app.ts
│   │   └── server.ts
│   ├── tests/
│   ├── prisma/
│   │   └── schema.prisma
│   ├── package.json
│   ├── tsconfig.json
│   └── jest.config.js
│
├── .github/
│   └── workflows/
│       ├── ci.yml            # Continuous Integration
│       └── deploy.yml        # Deployment
│
├── docker-compose.yml         # Development environment
├── Dockerfile                 # Production container
├── .env.example              # Environment template
├── .gitignore
├── README.md
└── package.json              # Root workspace

Example: Task Management App

Frontend (client/src/pages/Dashboard.tsx):

import { useState, useEffect } from 'react'
import { TaskList } from '../components/TaskList'
import { CreateTaskForm } from '../components/CreateTaskForm'
import { useAuth } from '../context/AuthContext'
import { taskService } from '../services/api'

export function Dashboard() {
  const { user } = useAuth()
  const [tasks, setTasks] = useState([])
  const [loading, setLoading] = useState(true)

  useEffect(() => {
    loadTasks()
  }, [])

  async function loadTasks() {
    try {
      const data = await taskService.getAll()
      setTasks(data)
    } catch (error) {
      console.error('Failed to load tasks:', error)
    } finally {
      setLoading(false)
    }
  }

  async function handleCreateTask(task: CreateTaskInput) {
    const newTask = await taskService.create(task)
    setTasks([newTask, ...tasks])
  }

  async function handleToggleTask(id: string) {
    const updated = await taskService.toggle(id)
    setTasks(tasks.map(t => t.id === id ? updated : t))
  }

  if (loading) return <div>Loading...</div>

  return (
    <div className="container mx-auto p-4">
      <h1 className="text-3xl font-bold mb-6">
        Welcome, {user?.name}
      </h1>

      <CreateTaskForm onSubmit={handleCreateTask} />

      <TaskList
        tasks={tasks}
        onToggle={handleToggleTask}
      />
    </div>
  )
}

Backend (server/src/controllers/task.controller.ts):

import { Request, Response } from 'express'
import { TaskService } from '../services/task.service'

const taskService = new TaskService()

export class TaskController {
  async getAll(req: Request, res: Response) {
    const tasks = await taskService.findAll(req.user!.userId)
    res.json({ data: tasks })
  }

  async create(req: Request, res: Response) {
    const task = await taskService.create(req.user!.userId, req.body)
    res.status(201).json({ data: task })
  }

  async toggle(req: Request, res: Response) {
    const task = await taskService.toggle(req.params.id, req.user!.userId)
    res.json({ data: task })
  }

  async delete(req: Request, res: Response) {
    await taskService.delete(req.params.id, req.user!.userId)
    res.status(204).send()
  }
}

Quick Start

1. Install dependencies:

# Install all dependencies (client + server)
npm install

# Or individually
cd client && npm install
cd server && npm install

2. Setup environment:

cp .env.example .env
# Edit .env with your configuration

3. Setup database:

cd server
npx prisma migrate dev
npx prisma generate

4. Start development:

# Start all services (client, server, database)
docker-compose up

# Or start individually
npm run dev:client   # Frontend on http://localhost:5173
npm run dev:server   # Backend on http://localhost:3000

5. Run tests:

npm run test         # All tests
npm run test:client  # Frontend tests
npm run test:server  # Backend tests

Stack Options

Frontend:

  • React + TypeScript + Vite (default)
  • Next.js 14 (App Router)
  • Vue 3 + TypeScript

Backend:

  • Express + TypeScript (default)
  • FastAPI + Python
  • NestJS

Database:

  • PostgreSQL + Prisma (default)
  • MongoDB + Mongoose
  • MySQL + TypeORM

Styling:

  • Tailwind CSS (default)
  • CSS Modules
  • Styled Components

Included Features

Authentication:

  • JWT authentication
  • OAuth (Google, GitHub)
  • Email verification
  • Password reset

Testing:

  • Frontend: Jest + React Testing Library + Cypress
  • Backend: Jest + Supertest
  • E2E: Playwright

CI/CD:

  • GitHub Actions workflows
  • Automated testing
  • Docker build and push
  • Deployment to cloud platforms

Development:

  • Hot reload (frontend + backend)
  • Docker development environment
  • Database migrations
  • Seed data

Production:

  • Optimized Docker images
  • Health checks
  • Logging and monitoring
  • Environment-based config

Customization

Add Features:

# Add payment processing
/ps --add-feature payments --provider stripe

# Add file uploads
/ps --add-feature uploads --storage s3

# Add email service
/ps --add-feature email --provider sendgrid

# Add admin dashboard
/ps --add-feature admin

Change Stack:

# Use Next.js instead of React
/ps --frontend nextjs

# Use FastAPI instead of Express
/ps --backend fastapi

# Use MongoDB instead of PostgreSQL
/ps --database mongodb

Deployment

Vercel (Frontend):

cd client
vercel

Railway (Backend):

cd server
railway up

Docker (Full Stack):

docker-compose -f docker-compose.prod.yml up -d

  • /express-api-scaffold - Generate Express API
  • /fastapi-scaffold - Generate FastAPI
  • /auth-setup - Authentication boilerplate
  • /env-config-setup - Environment configuration

Start building immediately. Ship faster. Scale effortlessly.