Fluent - Time Saving (TS) utils
Explore the docs Β»
Β·
Report Bug
Β·
Request Feature
A comprehensive TypeScript ecosystem for building data-driven applications with unified query interfaces, multi-database support, and extensive utilities for Node.js and browser environments.
# Install the core package
pnpm add @goatlab/fluent
# Install specific database connectors
pnpm add @goatlab/fluent-firebase # For Firebase/Firestore
pnpm add @goatlab/fluent-loki # For in-memory database
pnpm add @goatlab/fluent-pouchdb # For PouchDB
# Install utilities
pnpm add @goatlab/js-utils # Browser/Node utilities
pnpm add @goatlab/node-utils # Node.js specific utilities- @goatlab/fluent - TypeScript query builder and ORM wrapper with multi-database support via TypeORM
- @goatlab/fluentjs - JavaScript implementation of the Fluent query interface
- @goatlab/fluent-firebase - Firebase/Firestore connector with real-time capabilities
- @goatlab/fluent-loki - LokiJS in-memory database connector
- @goatlab/fluent-pouchdb - PouchDB connector for offline-first applications
- @goatlab/fluent-formio - Form.io API connector for form-based data
- @goatlab/js-utils - Comprehensive utilities for browser and Node.js (arrays, objects, HTTP, promises)
- @goatlab/node-utils - Node.js specific utilities (JWT, encryption, streams, file operations)
- @goatlab/js-html - HTML processing with sanitization and text extraction
- @goatlab/node-xlsx - Excel file streaming and processing
- @goatlab/formio-utils - Form.io form parsing and validation utilities
- @goatlab/queue-core - Unified interface for message brokers (Kafka, RabbitMQ) and job schedulers (Bull, Agenda)
- @goatlab/queue-node - Node.js cron-based scheduler implementation
- @goatlab/tasks-core - Common interface for queueable tasks
- @goatlab/tasks-adapter-gcp - Google Cloud Tasks adapter
- @goatlab/tasks-adapter-hatchet - Hatchet workflow engine adapter
- @goatlab/uploads - Multi-cloud file upload middleware (S3, Google Cloud, Azure)
- @goatlab/node-backend - Flexible caching with Redis and LRU support
- @goatlab/node-metascraper - Web metadata extraction
- @goatlab/metabase - Comprehensive Metabase API wrapper
- @goatlab/typesense - Modern TypeScript wrapper for Typesense search engine
- @goatlab/benchmarks - Performance benchmarking for database operations
- @goatlab/eslint - Shared ESLint configuration
- @goatlab/tsconfig - Shared TypeScript configuration
- @goatlab/ts-package-template - Template for new TypeScript packages
- @sodium/delphi - Multi-agent consensus system with flexible AI model configuration, session management, and production-ready agreement protocols
- PostgreSQL
- MySQL / MariaDB
- SQLite
- Microsoft SQL Server
- Oracle
- MongoDB
- CockroachDB
- SAP Hana
- sql.js
- Firebase / Firestore
- LokiJS (in-memory)
- PouchDB (offline-first)
- Form.io (API-based)
This monorepo follows a modular architecture with:
- Unified Query Interface: All database connectors implement the same Fluent API
- Type Safety: Full TypeScript support with Zod schema validation
- Decorator-based Entities: Define your models using decorators
- Extensible Connectors: Easy to add new database support
- Monorepo Structure: Managed with pnpm workspaces and Turbo
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Run development mode
pnpm dev
# Lint code
pnpm lintimport { Fluent, TypeOrmConnector } from '@goatlab/fluent'
import { z } from 'zod'
// Define your schema
const UserSchema = z.object({
id: z.string(),
name: z.string(),
email: z.string().email(),
age: z.number().optional()
})
// Create a repository
class UserRepository extends TypeOrmConnector<User> {
constructor() {
super({
entity: User,
dataSource: myDataSource
})
}
}
// Use the Fluent API
const users = await userRepo
.where({ age: { $gte: 18 } })
.orderBy({ name: 'ASC' })
.limit(10)
.find()This monorepo uses Changesets for versioning and publishing.
# Create a changeset
pnpm changeset
# Version packages
pnpm changeset version
# Build and publish
pnpm changeset publishRelease dependency chain: js-utils β node-utils β fluent β other packages
Distributed under the MIT License. See LICENSE for more information.
Ignacio Cabrera - @twitter_handle - ignacio.cabrera@goatlab.io
This library is based on the work of other Authors and Open Source Libraries. Have a look at them and give them a well deserved Star β!