Prerequisites
Before proceeding, ensure you have:
- Docker and Docker Compose installed
- Environment variables configured
- PostgreSQL databases running (via
docker-compose up -d)
Database Schema Overview
VizBoard uses Prisma ORM to manage the main application database (vizboard_main). The schema includes the following models:
Core Models
| Model | Description |
|---|---|
| User | User accounts with authentication information |
| Account | OAuth provider accounts (for NextAuth.js) |
| Project | User projects containing dashboards and widgets |
| DbConnection | External database connections with encrypted credentials |
| Widget | Dashboard widgets (tables, charts) with configuration |
Schema Highlights
Prisma Migrations
Install Dependencies
Ensure all Node.js dependencies are installed:This installs Prisma CLI and the Prisma Client.
Run Migrations
Apply all pending migrations to create the database schema:This command:
- Applies all migrations in
prisma/migrations/ - Generates the Prisma Client
- Creates all tables, indexes, and constraints
During development, Prisma will prompt you to name new migrations. This is normal and helps track schema changes.
Verify Schema Creation
Confirm your database schema is correct using Prisma Studio:This opens a web interface at http://localhost:5555 where you can:
- Browse all database tables
- View and edit records
- Verify relationships between models
Migration Commands Reference
| Command | Description |
|---|---|
npm run db:migrate | Apply pending migrations to the database |
npm run db:reset | Reset database, delete all data, and reapply migrations |
npm run db:studio | Open Prisma Studio for database exploration |
npx prisma migrate dev --name <name> | Create a new migration (after schema changes) |
npx prisma generate | Regenerate Prisma Client (after schema changes) |
Reset Database
If you need to start fresh:- Drops all tables
- Deletes migration history
- Reapplies all migrations from scratch
- Runs the seed script (if configured)
Seeding Test Data
VizBoard includes seed scripts to populate external test databases (vizboard_test1, vizboard_test2, vizboard_test3) with sample data for widget development and testing.
Test Database Overview
| Database | Port | Purpose | Tables |
|---|---|---|---|
vizboard_test1 | 5433 | E-commerce store data | users, products, sales, reviews |
vizboard_test2 | 5434 | E-commerce store data | users, products, sales, reviews |
vizboard_test3 | 5435 | Business data | clients, commandes, apirequestevent |
Seed All Test Databases
Run All Seed Scripts
Populate all test databases with sample data:This command runs all seed scripts sequentially:
seed:store- Seeds store data tovizboard_test1andvizboard_test2seed:clients- Seeds client data tovizboard_test3seed:commandes- Seeds order data tovizboard_test3seed:apirequestevent- Seeds API event logs tovizboard_test3
Seeding all databases takes 30-60 seconds depending on your system. Each script creates 60-80 records with realistic data using Faker.js.
Individual Seed Scripts
You can run seed scripts individually for specific databases:Seed Data Characteristics
Realistic Test Data
All seed scripts use @faker-js/faker to generate realistic data:
- User names, emails, addresses (localized)
- Product names, descriptions, categories
- Monetary values with proper decimal formatting
- Dates and timestamps
- Random ratings and quantities
- 60 users per database
- 60 products per database
- 80 sales transactions
- 80 product reviews
Custom Seed Configuration
To modify seed data, edit the scripts inscripts/ directory:
scripts/seed_store.js- Store data configurationscripts/seed_clients.js- Client data from JSONscripts/seed_commandes.js- Order data from JSONscripts/seed_apirequestevent.js- API event logs from JSON
Main Database Seeding
The main application database (vizboard_main) includes a basic seed script in prisma/seed.ts:
Troubleshooting
Migration Failed
If migrations fail:- Check that your database is running and accessible
- Verify
DATABASE_URLin.envis correct - Ensure PostgreSQL user has CREATE TABLE permissions
- Try resetting:
npm run db:reset
Seed Script Connection Error
If seed scripts fail to connect:- Verify test databases are running:
docker ps - Check database ports (5433, 5434, 5435) are not in use
- Ensure Docker containers are on the same network
- Restart Docker Compose:
docker-compose restart
Cannot Find Module ‘pg’
Install missing dependencies:Prisma Client Not Generated
Regenerate Prisma Client:Next Steps
Start Development
With your databases set up, you’re ready to start the development server:Visit http://localhost:3000 to access VizBoard.
Connect Test Databases
In VizBoard:- Create a new project
- Add a database connection with these credentials:
- Host:
localhost - Port:
5433(or 5434, 5435) - Database:
vizboard_test1(or test2, test3) - User:
postgres - Password:
testdbpass1234
- Host:
- Create widgets to visualize your test data
