Dependencies
Database
Tulip expects applications to own their database schema, migrations, and domain queries.
Tulip does not own your database.
Your application owns the database connection, schema, migrations, domain records, and transactional rules. Tulip packages provide adapters and conventions where shared package behavior needs database access.
Where databases matter
- Auth stores users, sessions, accounts, and plugin-specific data.
- Storage tracks uploaded assets in a database catalog.
- Drive providers can store folders, files, and provider metadata.
- Query and Data Tables shape the input used to load records.
- Application modules define their own domain tables and relations.
Tulip's default direction
Tulip examples use Drizzle because it keeps schema and query code close to TypeScript.
That said, Tulip packages should avoid owning app-specific schemas. Package adapters may support a specific database layer, but your app remains the source of truth.
What your app owns
- database provider and connection
- schema and migrations
- seed data
- domain queries and transactions
- authorization rules around records