NeonDB Setup Skill
Provision a NeonDB serverless PostgreSQL database and configure Drizzle ORM.
Setup Steps
- •
Run the get-db CLI to provision database:
bashnpx get-db -y
This instantly creates a database and writes
DATABASE_URLto.env. The output includes the connection string and claim URL - these are automatically detected by ShipBuilder. - •
Install PostgreSQL and Drizzle packages:
bashnpm install drizzle-orm pg npm install -D drizzle-kit @types/pg
Note: Use standard
pgpackage - NeonDB is a PostgreSQL database. - •
Create Drizzle config at
drizzle.config.ts:typescriptimport { defineConfig } from 'drizzle-kit'; export default defineConfig({ dialect: 'postgresql', schema: './src/db/schema.ts', out: './drizzle', dbCredentials: { url: process.env.DATABASE_URL!, }, }); - •
Create database connection at
src/db/index.ts:typescriptimport { drizzle } from 'drizzle-orm/node-postgres'; import { Pool } from 'pg'; import * as schema from './schema'; const pool = new Pool({ connectionString: process.env.DATABASE_URL!, }); export const db = drizzle(pool, { schema }); - •
Create example schema at
src/db/schema.ts:typescriptimport { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; export const users = pgTable('users', { id: serial('id').primaryKey(), name: text('name').notNull(), email: text('email').notNull().unique(), createdAt: timestamp('created_at').defaultNow().notNull(), }); - •
Add database scripts to
package.json:json{ "scripts": { "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio" } } - •
Push schema to database:
bashnpm run db:push
Important
- •Database expires in 72 hours unless claimed
- •Claim URL is shown in CLI output and saved to
.env- inform the user to save it - •Ensure
.envis in.gitignore - •Use
db:pushfor development,db:generate+db:migratefor production
Cleanup
After success, remove this skill:
bash
rm -rf .claude/skills/neondb-setup rmdir .claude/skills .claude 2>/dev/null