Database Seeding
Ever Gauzy includes database seeders to populate demo data, default configurations, and test fixtures.
Seed Commandsโ
# Seed all demo data
yarn seed:all
# Seed specific modules
yarn seed:module:all
# Seed with specific database
DB_TYPE=postgres yarn seed:all
Seed Data Categoriesโ
Default Seed Dataโ
Always required for the platform to function:
| Data | Description |
|---|---|
| Roles | Default role set (SUPER_ADMIN, ADMIN, EMPLOYEE, etc.) |
| Permissions | Default permission-to-role mappings |
| Languages | Supported languages (en, es, fr, ru, bg, etc.) |
| Countries | Country list for address/region selection |
| Currencies | Currency definitions (USD, EUR, GBP, etc.) |
| Feature Flags | Default feature flag states |
Demo Seed Dataโ
Populated in demo/development environments:
| Data | Description |
|---|---|
| Demo Tenant | Default tenant ("Ever Technologies") |
| Demo Users | Admin, Employee, and Candidate accounts |
| Demo Organization | Sample organization with settings |
| Demo Employees | Sample employee records |
| Demo Projects | Sample projects with tasks |
| Demo Time Logs | Sample time tracking data |
| Demo Invoices | Sample invoices and estimates |
| Demo Expenses | Sample expense records |
Demo Credentialsโ
The demo seed creates the following accounts:
| Password | Role | |
|---|---|---|
admin@ever.co | admin | SUPER_ADMIN |
employee@ever.co | 123456 | EMPLOYEE |
candidate@ever.co | 123456 | CANDIDATE |
warning
These are demo credentials. Change them immediately in production deployments.
Seed Architectureโ
Seeders are located in packages/core/src/lib/:
packages/core/src/lib/
โโโ role/seed/ # Role seeds
โโโ role-permission/seed/ # Permission seeds
โโโ tenant/seed/ # Tenant seeds
โโโ user/seed/ # User seeds
โโโ employee/seed/ # Employee seeds
โโโ organization/seed/ # Organization seeds
โโโ time-tracking/seed/ # Time tracking seeds
โโโ tasks/seed/ # Task seeds
โโโ ...
Seed Service Patternโ
Each seeder follows a common pattern:
@Injectable()
export class EmployeeSeedService {
constructor(
private readonly employeeService: EmployeeService,
private readonly userService: UserService,
) {}
async run(tenant: ITenant, organization: IOrganization): Promise<void> {
const employees = [
{ firstName: 'John', lastName: 'Doe', ... },
{ firstName: 'Jane', lastName: 'Smith', ... },
];
for (const employee of employees) {
// Create user
const user = await this.userService.create({
email: `${employee.firstName.toLowerCase()}@ever.co`,
...employee,
});
// Create employee record
await this.employeeService.create({
userId: user.id,
tenantId: tenant.id,
organizationId: organization.id,
...employee,
});
}
}
}
Configurationโ
Enable/Disable Seedingโ
# Seed demo data on startup (development only)
DEMO=true
# Clean database before seeding
DB_RESET=false
Seeding on Application Startโ
When DEMO=true, the application seeds demo data during bootstrap:
// In bootstrap module
if (configService.get("DEMO")) {
await seedService.executeDemoSeed();
}
Custom Seedsโ
To create custom seed data:
- Create a seed service in your module:
@Injectable()
export class CustomSeedService {
async run(tenant: ITenant, org: IOrganization): Promise<void> {
// Your custom seed logic
}
}
- Register it in the seed orchestrator:
@Module({
providers: [CustomSeedService],
})
export class SeedModule {}
Related Pagesโ
- Database Overview โ general database info
- Demo & Testing โ demo environment setup
- Migrations โ schema management