Overview
This guide will walk you through creating your first VizBoard dashboard in just 5 minutes. You’ll learn how to:- Create an account and sign in
- Create your first project
- Add a database connection
- Create visualization widgets
- Customize your dashboard
This guide assumes you’ve already completed the installation steps and have VizBoard running locally with seeded test databases.
Getting Started
Create Your Account
Navigate to VizBoard at After successful registration, you’ll be automatically signed in and redirected to the projects page.
http://localhost:3000 and create an account.Option 1: Email/Password Registration- Click “Sign Up” on the homepage
- Fill in the registration form:
- First Name: Your first name
- Last Name: Your last name
- Email: Your email address
- Password: A secure password (minimum 8 characters)
- Click “Create Account”
- Google: Click the Google button
- GitHub: Click the GitHub button
The registration process is handled by NextAuth.js with secure password hashing using bcrypt.
Create Your First Project
Projects are the top-level containers for organizing your dashboards and database connections.
- On the Projects page, click “Create New Project”
- Fill in the project details:
- Click “Create Project”
Projects with the Public toggle enabled get a unique shareable URL that anyone can view without authentication.
Add a Database Connection
Connect to one of the seeded test databases to start visualizing data.
You can add multiple connections to compare data across databases.
- Inside your project, click “Add Database Connection”
- Enter the connection details for the first test database:
- Click “Test Connection” to verify it works
- Click “Save Connection”
- Encrypt the credentials using AES-256-GCM encryption
- Store them securely in the database
- Automatically introspect the database schema (tables, columns, types)
- Validate the connection and mark it as active
| Database | Port | Tables | Data |
|---|---|---|---|
| vizboard_test1 | 5433 | users, products, sales, reviews | Store e-commerce data |
| vizboard_test2 | 5434 | users, products, sales, reviews | Alternative store data |
| vizboard_test3 | 5435 | clients, commandes, api_request_event | Client orders and API logs |
Create Your First Widget - Data Table
Now let’s visualize some data with a simple data table.
- Click “Add Widget” on your project dashboard
- Select “Data Table” as the widget type
- Configure the widget:
- Click “Create Widget”
- Sorting: Click column headers to sort
- Filtering: Search and filter rows
- Pagination: Navigate through large datasets
Data tables are powered by TanStack Table, providing enterprise-grade table functionality with minimal configuration.
Create a Chart Widget
Visualize your data with interactive charts.
- Click “Add Widget” again
- Select “Chart” as the widget type
- Choose a chart subtype: Bar Chart
- Configure the chart:
- Click “Create Widget”
- Bar Chart: Compare categorical data side-by-side
- Line Chart: Show trends over time
- Area Chart: Display cumulative values with filled areas
- Sum: Total of all values
- Average: Mean value
- Count: Number of records
Charts automatically update when you change the configuration, making it easy to explore different visualizations.
Organize Your Dashboard
Customize your dashboard layout with drag-and-drop.
- Drag & Drop Widgets: Click and drag widgets to reorder them
- Edit Widgets: Click the edit icon to modify configuration
- Delete Widgets: Click the delete icon to remove widgets
- Add More Widgets: Continue adding tables and charts
@dnd-kit for smooth, accessible drag-and-drop functionality. Widget order is automatically saved to your project.Add Multiple Database Connections (Advanced)
Compare data across multiple databases with integrated widgets.
- Add a second database connection (e.g., vizboard_test2):
- Create an Integrated DataTable:
- Select multiple database connections
- Choose tables from each connection
- VizBoard will combine the data for side-by-side comparison
- Comparing production vs. staging data
- Multi-tenant analytics
- Cross-region comparisons
Example: Complete Dashboard
Here’s what a complete VizBoard dashboard might look like:Sales Analytics Dashboard
Project Configuration:-
Recent Sales Table
- Type: Simple DataTable
- Table:
sales - Columns:
id,product_name,quantity,price,sale_date - Shows last 50 transactions with sorting and filtering
-
Sales by Product Chart
- Type: Bar Chart
- X-Axis:
product_name - Y-Axis:
quantity(Sum) - Shows total units sold per product
-
Revenue Over Time Chart
- Type: Line Chart
- X-Axis:
sale_date - Y-Axis:
price(Sum) - Shows revenue trends over time
-
Product Reviews Table
- Type: Simple DataTable
- Table:
reviews - Columns:
product_name,rating,comment,created_at - Shows customer feedback
-
Average Rating by Product Chart
- Type: Bar Chart
- X-Axis:
product_name - Y-Axis:
rating(Average) - Shows product satisfaction scores
Code Examples
Creating a Project Programmatically
VizBoard uses Next.js Server Actions for type-safe API calls:src/app/actions/project/crud.ts
Creating a Widget
src/app/actions/dashboard/crudWidgets.ts
Fetching Table Data
VizBoard uses Knex.js to query external databases:src/app/actions/dashboard/getTableData.ts
Best Practices
Security
- Read-Only Credentials: Use database users with SELECT-only permissions
- Network Isolation: Only connect to databases on trusted networks
- Regular Key Rotation: Rotate
ENCRYPTION_KEYandAUTH_SECRETperiodically - Private Projects: Keep sensitive data in private projects
Performance
- Limit Large Tables: Use filters and pagination for tables with millions of rows
- Index Columns: Ensure queried columns are indexed in your database
- Connection Pooling: VizBoard uses connection pooling automatically with Knex.js
- Caching: SWR caches widget data for fast navigation
Dashboard Design
- Focused Dashboards: Create separate projects for different use cases
- Descriptive Names: Use clear widget titles and descriptions
- Consistent Styling: Take advantage of VizBoard’s theming for cohesive design
- Regular Updates: Regenerate schemas when your database structure changes
Troubleshooting
Connection Failed
If your database connection fails:- Verify Credentials: Double-check host, port, username, and password
- Check Network: Ensure the database is accessible from VizBoard
- Firewall Rules: Add VizBoard’s IP to database firewall allowlist
- Database Running: Verify the database container is running:
docker ps
Widget Not Showing Data
If a widget appears empty:- Schema Introspection: Regenerate schema in project settings
- Table Exists: Verify the table exists in the database
- Permissions: Ensure database user has SELECT permission
- Data Exists: Check if the table has data:
SELECT * FROM table_name LIMIT 1;
Slow Dashboard Loading
If your dashboard is slow:- Large Tables: Add LIMIT clauses or filters to widgets
- Too Many Widgets: Consider splitting into multiple projects
- Unindexed Columns: Add database indexes on frequently queried columns
- Network Latency: Use local or nearby databases for best performance
Next Steps
Now that you’ve created your first dashboard, explore more features:Add More Widgets
Experiment with different chart types and table configurations
Share Your Dashboard
Make your project public and share the URL with your team
Connect Production Data
Connect to your real databases (with read-only credentials)
Customize Themes
Switch between light and dark themes in your profile settings
API Reference
VizBoard uses Next.js Server Actions for all API operations. Key actions:Project Actions
createProjectWithConnections(): Create project with database connectionsupdateProject(): Update project details and connectionsdeleteProject(): Delete project and all widgetsgetUserProjects(): Get all projects for current userregenerateProjectSchemas(): Re-introspect all database schemas
Widget Actions
createWidget(): Create a new visualization widgetupdateWidget(): Update widget configurationdeleteWidget(): Remove widget from dashboardupdateWidgetOrder(): Change widget order on dashboard
Connection Actions
deleteConnection(): Remove a database connectiongetProjectSchema(): Get introspected database schema
- Authentication checks
- Input validation with Zod
- Error handling
- Automatic cache revalidation
Example Database Schema
The seeded test databases include these tables:Ready to dive deeper? Check out the Installation Guide for production deployment tips or explore the source code on GitHub.
