Useful Scripts & Tools
A collection of commonly used scripts and commands for day-to-day development work.
Database Scripts
Reset Local Database
Drops and recreates the database, runs migrations, and seeds development data:
#!/bin/bash
# scripts/db-reset.sh
echo "Dropping and recreating database..."
docker compose exec postgres psql -U myuser -c "DROP DATABASE IF EXISTS mydb;"
docker compose exec postgres psql -U myuser -c "CREATE DATABASE mydb;"
echo "Running migrations..."
docker compose exec api yarn migrate
echo "Seeding development data..."
docker compose exec api yarn seed
echo "Database reset complete."
Database Dump and Restore
# Export a database dump
docker compose exec -T postgres pg_dump -U myuser mydb > backup.sql
# Import a database dump
docker compose exec -T postgres psql -U myuser mydb < backup.sql
Quick Migration Commands
# Prisma
docker compose exec api yarn prisma migrate dev --name description_of_change
docker compose exec api yarn prisma generate
docker compose exec api yarn prisma studio # Visual database browser
# TypeORM
docker compose exec api yarn typeorm migration:generate -n MigrationName
docker compose exec api yarn typeorm migration:run
docker compose exec api yarn typeorm migration:revert
Docker Scripts
Clean Rebuild
When things are broken and you want a fresh start:
# Stop everything, remove volumes, rebuild
docker compose down -v
docker compose build --no-cache
docker compose up -d
View Logs
# Follow all logs
docker compose logs -f
# Follow a specific service
docker compose logs -f api
# Show last 100 lines
docker compose logs --tail=100 api
Shell Access
# Open a shell in the API container
docker compose exec api sh
# Run a one-off command
docker compose exec api yarn lint
Development Helpers
Generate NestJS Resources
# Generate a complete CRUD module
yarn nest generate resource users
# Generate individual components
yarn nest generate module users
yarn nest generate service users
yarn nest generate controller users
Quick Dependency Check
# Check for outdated packages
yarn outdated
# Check for security vulnerabilities
yarn audit
# Update all packages to latest within semver range
yarn upgrade
TypeScript Type Checking
# Run type checker without emitting files
yarn tsc --noEmit
# Watch mode for continuous type checking
yarn tsc --noEmit --watch
Git Helpers
Clean Up Local Branches
# Delete all local branches that have been merged to develop
git branch --merged develop | grep -v "develop\|main" | xargs git branch -d
# Prune remote tracking branches that no longer exist
git remote prune origin
Quick Rebase on Develop
git fetch origin
git rebase origin/develop
Scripts Convention
Every project should define these scripts in package.json:
{
"scripts": {
"dev": "nest start --watch",
"build": "nest build",
"start": "node dist/main.js",
"lint": "eslint . --fix",
"format": "prettier --write .",
"test": "jest",
"test:watch": "jest --watch",
"test:e2e": "jest --config jest.e2e.config.ts",
"migrate": "prisma migrate deploy",
"migrate:dev": "prisma migrate dev",
"seed": "ts-node prisma/seed.ts",
"type-check": "tsc --noEmit"
}
}