#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" echo "Create a new app from template" echo "" echo "Available templates:" echo " 1) node-api - Express API service" echo " 2) nextjs-app - Next.js application" echo "" read -rp "Select template (1-2): " choice case $choice in 1) template="node-api" ;; 2) template="nextjs-app" ;; *) echo "Invalid choice"; exit 1 ;; esac read -rp "App name (kebab-case): " app_name if [[ ! "$app_name" =~ ^[a-z][a-z0-9-]*$ ]]; then echo "Error: App name must be kebab-case (lowercase, hyphens only)" exit 1 fi if [[ -d "$ROOT_DIR/apps/$app_name" ]]; then echo "Error: apps/$app_name already exists" exit 1 fi echo "" echo "Creating $app_name from $template template..." if command -v copier &>/dev/null; then copier copy "$ROOT_DIR/templates/$template" "$ROOT_DIR/apps/" --data "app_name=$app_name" else echo "Warning: copier not installed. Install with: pipx install copier" echo "Falling back to manual copy..." mkdir -p "$ROOT_DIR/apps/$app_name" echo "Created apps/$app_name/ — populate manually from templates/$template/" fi echo "" echo "Done! Next steps:" echo " cd apps/$app_name" echo " pnpm install" echo " pnpm dev"