95 lines
2.7 KiB
Markdown
95 lines
2.7 KiB
Markdown
|
|
|
||
|
|
# Dyolink Backend - Development Setup Guide
|
||
|
|
|
||
|
|
## 📋 Prerequisites
|
||
|
|
|
||
|
|
Before starting, ensure you have the following installed:
|
||
|
|
- **Node.js** (v18 or higher)
|
||
|
|
- **PostgreSQL** (v15 or higher) - We use v18, but any v15+ works
|
||
|
|
- **Git** (for cloning)
|
||
|
|
- **npm** or **yarn** (npm comes with Node.js)
|
||
|
|
|
||
|
|
## 🚀 Initial Setup Steps
|
||
|
|
|
||
|
|
1. Clone the Repository
|
||
|
|
```bash
|
||
|
|
git clone [your-repository-url]
|
||
|
|
cd dyolink/backend
|
||
|
|
|
||
|
|
2. Install Dependencies
|
||
|
|
bash
|
||
|
|
npm install
|
||
|
|
|
||
|
|
3. Environment Configuration
|
||
|
|
Create a .env file in the backend folder:
|
||
|
|
env
|
||
|
|
# backend/.env
|
||
|
|
DATABASE_URL=postgresql://postgres:1234@localhost:5432/dyolink_db
|
||
|
|
JWT_SECRET=your-super-secret-key-here-change-this
|
||
|
|
JWT_REFRESH_SECRET=your-super-secret-refresh-key-here-different-from-above
|
||
|
|
JWT_EXPIRES_IN=15m
|
||
|
|
JWT_REFRESH_EXPIRES_IN=7d
|
||
|
|
PORT=3000
|
||
|
|
⚠️ Important: Never commit the .env file to git! We have .gitignore set up to prevent this.
|
||
|
|
|
||
|
|
4. Database Setup
|
||
|
|
Option A: Fresh PostgreSQL Installation
|
||
|
|
If you don't have PostgreSQL installed:
|
||
|
|
Windows (using Chocolatey):
|
||
|
|
bash
|
||
|
|
choco install postgresql
|
||
|
|
macOS (using Homebrew):
|
||
|
|
bash
|
||
|
|
brew install postgresql@15
|
||
|
|
brew services start postgresql@15
|
||
|
|
Common Installation Issues & Fixes:
|
||
|
|
Issue Solution
|
||
|
|
"Password not set during installation" Edit pg_hba.conf temporarily (see Troubleshooting section)
|
||
|
|
"Service not starting" Run PowerShell/Terminal as Administrator
|
||
|
|
"Port 5432 already in use" Stop local PostgreSQL service or change port
|
||
|
|
Option B: Using Existing PostgreSQL
|
||
|
|
If you already have PostgreSQL:
|
||
|
|
bash
|
||
|
|
# Connect to PostgreSQL
|
||
|
|
psql -U postgres
|
||
|
|
# Create the database (if it doesn't exist)
|
||
|
|
CREATE DATABASE dyolink_db;
|
||
|
|
\q
|
||
|
|
|
||
|
|
5. Database Migrations
|
||
|
|
Once PostgreSQL is running and you've created the database:
|
||
|
|
bash
|
||
|
|
# Generate Prisma client
|
||
|
|
npx prisma generate
|
||
|
|
# Run migrations to create tables
|
||
|
|
npx prisma migrate dev --name init_schema
|
||
|
|
⚠️ Known Issue: If you get P1001: Can't reach database server, ensure PostgreSQL is running:
|
||
|
|
bash
|
||
|
|
# Check PostgreSQL status
|
||
|
|
# Windows:
|
||
|
|
Get-Service postgresql-x64-18
|
||
|
|
# macOS:
|
||
|
|
brew services list | grep postgres
|
||
|
|
|
||
|
|
6. Seed the Database
|
||
|
|
bash
|
||
|
|
# Seed with initial data (organization types, plans, permissions, test user)
|
||
|
|
npx prisma db seed
|
||
|
|
⚠️ Prisma 7 Note: If seeding fails with PrismaClientInitializationError, we've fixed this by using the driver adapter pattern. The seed file now uses:
|
||
|
|
typescript
|
||
|
|
import { PrismaPg } from '@prisma/adapter-pg';
|
||
|
|
import { Pool } from 'pg';
|
||
|
|
const adapter = new PrismaPg(pool);
|
||
|
|
const prisma = new PrismaClient({ adapter });
|
||
|
|
7. Verify Setup
|
||
|
|
bash
|
||
|
|
# Open Prisma Studio to verify data
|
||
|
|
npx prisma studio
|
||
|
|
# This opens http://localhost:5555 - you should see all tables with seeded data
|
||
|
|
8. Start Development Server
|
||
|
|
bash
|
||
|
|
npm run start:dev
|
||
|
|
You should see:
|
||
|
|
text
|
||
|
|
Application is running on: http://localhost:3000
|
||
|
|
✅ Database connected successfully
|