Getting Started

Complete guide to install, configure, and launch your GrabURL marketplace

Prerequisites
Required software and services
Node.js 18+
Download from nodejs.org
PostgreSQL 14+
Database for storing domains, sales, and users
Redis (Optional)
For rate limiting and caching (recommended for production)

Quick Start (5 Minutes)

Step 1: Install Dependencies
# Navigate to project directory
cd ~/projects/graburl

# Install dependencies
npm install
Step 2: Environment Variables

Copy .env.example to .env:

cp .env.example .env
Required Variables:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/graburl"

# Auth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"

# Email (Resend)
RESEND_API_KEY="re_..."
EMAIL_FROM="noreply@yourdomain.com"

# 2FA Encryption
TWO_FACTOR_ENCRYPTION_KEY="generate-with-command-below"
Generate Encryption Key:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Step 3: Database Setup
# Create database
createdb graburl

# Generate Prisma client
npx prisma generate

# Apply database schema
npx prisma db push

# (Optional) Seed with sample data
npm run db:seed
Step 4: Start Development Server
npm run dev

Open http://localhost:3000 in your browser

Step 5: Create Admin User
npm run admin:create

Follow the prompts to create your first admin user

Optional: Redis Setup
Recommended for production environments

Redis provides distributed rate limiting and caching. Features gracefully fallback if Redis is unavailable.

Option 1: Docker (Recommended)
docker run -d -p 6379:6379 --name redis redis:7-alpine
Option 2: Cloud (Upstash)
Sign up at upstash.com and add your Redis URL to .env:
REDIS_URL="redis://your-upstash-url"
Common Issues
Database connection error
Verify PostgreSQL is running and DATABASE_URL is correct
Prisma client errors
Run npx prisma generate again
Port 3000 already in use
Change port: PORT=3001 npm run dev