# Ooneex ## Docs - [Dependency Injection](https://docs.ooneex.com/advanced/dependency-injection.md): Resolve controllers, services, middleware, and repositories through a shared Inversify-based container with scoped lifetimes and constructor injection. - [Deployment](https://docs.ooneex.com/advanced/deployment.md): Take an Ooneex application to production — configure the environment, build the bundle, run it, containerize its backing services, and cut a release. - [Testing](https://docs.ooneex.com/advanced/testing.md): Test an Ooneex application with Bun's built-in test runner, resolving services from the container and passing mock contexts to middleware and controllers. - [WebSockets](https://docs.ooneex.com/advanced/websockets.md): Build real-time features end to end with the @ooneex/socket server controllers and the @ooneex/socket-client typed client. - [Built-in Tools](https://docs.ooneex.com/ai/agents/built-in-tools.md): Ready-made web search, encyclopedia, biomedical, and Linear tools you can drop into any agent - [Defining an Agent](https://docs.ooneex.com/ai/agents/defining.md): Subclass Chat, implement four getters, and register the agent with the container - [Middleware](https://docs.ooneex.com/ai/agents/middleware.md): Observe and transform every stage of an agent run with lifecycle hooks - [Overview](https://docs.ooneex.com/ai/agents/overview.md): Build tool-using AI agents on a typed Chat class — model, system prompts, tools, and middleware in one place - [Running an Agent](https://docs.ooneex.com/ai/agents/running.md): Run an agent to completion or stream its events, and shape each call with per-request input - [Structured Output](https://docs.ooneex.com/ai/agents/structured-output.md): Get a validated, typed object back from an agent instead of free text - [Tools](https://docs.ooneex.com/ai/agents/tools.md): Give an agent function-calling tools with validated, typed input and optional call hooks - [Controller](https://docs.ooneex.com/ai/prompts/application/controller.md): Prompt for generating a controller - [Entity](https://docs.ooneex.com/ai/prompts/application/entity.md): Prompt for generating an entity - [Middleware](https://docs.ooneex.com/ai/prompts/application/middleware.md): Prompt for generating a middleware - [Repository](https://docs.ooneex.com/ai/prompts/application/repository.md): Prompt for generating a repository - [Service](https://docs.ooneex.com/ai/prompts/application/service.md): Prompt for generating a service - [Address Resource](https://docs.ooneex.com/ai/prompts/resources/address-resource.md): A ready-to-run spec that scaffolds the `address` module as private, user-owned postal data with a single default per user and owner/admin permissions on every operation. - [Audio Resource](https://docs.ooneex.com/ai/prompts/resources/audio-resource.md): A ready-to-run spec that scaffolds the `audio` module for user-owned uploaded media, with storage, a processing pipeline, and owner/admin permissions on every mutation. - [Book Resource](https://docs.ooneex.com/ai/prompts/resources/book-resource.md): A ready-to-run spec that scaffolds the `book` module and only the resources the domain needs, with owner/admin permissions wired onto every mutation. - [Category Resource](https://docs.ooneex.com/ai/prompts/resources/category-resource.md): A ready-to-run spec that scaffolds the `category` module as a shared, admin-managed taxonomy with self-nesting, where only admins can mutate the tree. - [Chat Resource](https://docs.ooneex.com/ai/prompts/resources/chat-resource.md): A ready-to-run spec that scaffolds the `chat` module as a user-owned, three-level conversation store — conversations group driver-run histories, and each history holds its messages — with owner/admin permissions on every mutation. - [City Resource](https://docs.ooneex.com/ai/prompts/resources/city-resource.md): A ready-to-run spec that scaffolds the `city` module as shared, admin-managed geo reference data that addresses point at, where only admins curate the gazetteer. - [Country Resource](https://docs.ooneex.com/ai/prompts/resources/country-resource.md): A ready-to-run spec that scaffolds the `country` module as shared, admin-managed geo reference data that cities point at, where only admins curate the list. - [Coupon Resource](https://docs.ooneex.com/ai/prompts/resources/coupon-resource.md): A ready-to-run spec that scaffolds the `coupon` module as admin-managed discount codes with redemption rules, usage caps, and code-level redemption open to any authenticated user. - [Event Resource](https://docs.ooneex.com/ai/prompts/resources/event-resource.md): A ready-to-run spec that scaffolds the `event` module as a user-owned calendar event with attendees, a scheduling window, and owner/admin permissions on every mutation. - [Folder Resource](https://docs.ooneex.com/ai/prompts/resources/folder-resource.md): A ready-to-run spec that scaffolds the `folder` module as user-owned, self-nesting containers, with owner/admin permissions wired onto every mutation. - [Image Resource](https://docs.ooneex.com/ai/prompts/resources/image-resource.md): A ready-to-run spec that scaffolds the `image` module for user-owned uploaded images, with storage, a processing pipeline that derives variants, and owner/admin permissions on every mutation. - [Logger Resource](https://docs.ooneex.com/ai/prompts/resources/logger-resource.md): A ready-to-run spec that scaffolds the `log` module as an append-only, admin-only request/exception audit trail — stored in its own database, written by the framework, never edited — with a paginated, filterable read surface locked to admins. - [Product Resource](https://docs.ooneex.com/ai/prompts/resources/product-resource.md): A ready-to-run spec that scaffolds the `product` module as a user-owned catalog item with pricing, inventory, images, a publish lifecycle, and owner/admin permissions on every mutation. - [Tag Resource](https://docs.ooneex.com/ai/prompts/resources/tag-resource.md): A ready-to-run spec that scaffolds the `tag` module as a flat, shared, admin-managed label set, where only admins can mutate the vocabulary. - [Task Resource](https://docs.ooneex.com/ai/prompts/resources/task-resource.md): A ready-to-run spec that scaffolds the `task` module as a user-owned, self-nesting to-do with an optional assignee and owner/admin permissions on every mutation. - [Topic Resource](https://docs.ooneex.com/ai/prompts/resources/topic-resource.md): A ready-to-run spec that scaffolds the `topic` module as a flat, shared, admin-managed subject set, where only admins can mutate the vocabulary. - [User Resource](https://docs.ooneex.com/ai/prompts/resources/user-resource.md): A ready-to-run spec that scaffolds the `user` module as the identity core — the user profile — with self-service on your own profile and admin control over any account. - [Video Resource](https://docs.ooneex.com/ai/prompts/resources/video-resource.md): A ready-to-run spec that scaffolds the `video` module for user-owned uploaded media, with storage, a processing pipeline, and owner/admin permissions on every mutation. - [Convertor](https://docs.ooneex.com/ai/rag/convertor.md): Convert PDF documents into structured chunks for embedding - [Embeddings](https://docs.ooneex.com/ai/rag/embeddings.md): Generate embeddings with OpenAI embedding models - [Filtering](https://docs.ooneex.com/ai/rag/filtering.md): Composable filter conditions with AND, OR, and NOT logic - [Overview](https://docs.ooneex.com/ai/rag/overview.md): Retrieval-Augmented Generation toolkit with vector database integration - [Search](https://docs.ooneex.com/ai/rag/search.md): Hybrid full-text and vector search with RRF reranking - [Vector Database](https://docs.ooneex.com/ai/rag/vector-database.md): Define and connect custom vector databases with LanceDB - [Vector Table](https://docs.ooneex.com/ai/rag/vector-table.md): Add, index, and manage records in a vector table - [Spec-Driven Development](https://docs.ooneex.com/ai/spec-driven-development.md): Turn a request into a structured spec, plan it, and let AI agents implement it — Ooneex's issue-driven workflow of find, plan, and fix. - [Exception](https://docs.ooneex.com/basics/exception.md): A structured error system: a base Exception class plus specialized HTTP exceptions carrying status codes, typed immutable data, timestamps, and JSON stack traces. - [Request](https://docs.ooneex.com/basics/request.md): Read the incoming HTTP request inside a controller — URL, method, headers, query and route params, JSON payload, client IP, locale, and uploaded files. - [Response](https://docs.ooneex.com/basics/response.md): Build every controller's reply with the fluent context.response object — JSON, exceptions, redirects, headers, and cookies — resolved to a native Web API Response. - [Routing](https://docs.ooneex.com/basics/routing.md): Map incoming HTTP and WebSocket requests to controllers with decorator-driven routes, validated parameters, and named URL generation. - [Validation](https://docs.ooneex.com/basics/validation.md): Define type-safe schemas with @ooneex/validation and built-in constraints that validate route input automatically before a controller runs. - [ai:chat:create](https://docs.ooneex.com/cli/commands/ai-chat-create.md): Generate a new AI chat class. - [ai:middleware:create](https://docs.ooneex.com/cli/commands/ai-middleware-create.md): Generate a new AI middleware class. - [ai:tool:create](https://docs.ooneex.com/cli/commands/ai-tool-create.md): Generate a new AI tool class. - [analytics:create](https://docs.ooneex.com/cli/commands/analytics-create.md): Generate a new analytics class. - [app:build](https://docs.ooneex.com/cli/commands/app-build.md): Build the application by bundling the app module's entrypoint into its dist directory. - [app:create](https://docs.ooneex.com/cli/commands/app-create.md): Create a new application with its app and shared modules, configuration files, dependencies, and optional CI/CD setup. - [app:init](https://docs.ooneex.com/cli/commands/app-init.md): Initialize an application by writing its configuration files, environment file, and tooling, then setting up git and husky. - [app:start](https://docs.ooneex.com/cli/commands/app-start.md): Start the application by bringing up its Docker services and running every spa, microservice, and api module concurrently. - [app:stop](https://docs.ooneex.com/cli/commands/app-stop.md): Stop the application by bringing down its Docker services. - [cache:create](https://docs.ooneex.com/cli/commands/cache-create.md): Generate a new cache class. - [claude:init](https://docs.ooneex.com/cli/commands/claude-init.md): Initialize Claude configuration and skills. - [codex:init](https://docs.ooneex.com/cli/commands/codex-init.md): Initialize Codex configuration and skills. - [command:create](https://docs.ooneex.com/cli/commands/command-create.md): Generate a new command class. - [command:run](https://docs.ooneex.com/cli/commands/command-run.md): Run a custom command from a module. - [completion:zsh](https://docs.ooneex.com/cli/commands/completion-zsh.md): Install Zsh completion for the oo command. - [controller:create](https://docs.ooneex.com/cli/commands/controller-create.md): Generate a new controller class with its route configuration and test file. - [cron:create](https://docs.ooneex.com/cli/commands/cron-create.md): Generate a new cron class. - [database:create](https://docs.ooneex.com/cli/commands/database-create.md): Generate a new database class. - [design:create](https://docs.ooneex.com/cli/commands/design-create.md): Generate a new design module. - [design:remove](https://docs.ooneex.com/cli/commands/design-remove.md): Remove an existing design module. - [docker:create](https://docs.ooneex.com/cli/commands/docker-create.md): Add a docker service to docker-compose.yml. - [entity:create](https://docs.ooneex.com/cli/commands/entity-create.md): Generate a new entity class. - [event:create](https://docs.ooneex.com/cli/commands/event-create.md): Generate a new event class. - [flag:create](https://docs.ooneex.com/cli/commands/flag-create.md): Generate a new feature flag class. - [help](https://docs.ooneex.com/cli/commands/help.md): Show available commands. - [issue:create](https://docs.ooneex.com/cli/commands/issue-create.md): Create a YAML skeleton file for a new issue. - [issue:pull](https://docs.ooneex.com/cli/commands/issue-pull.md): Pull an issue from Linear and save it as a YAML file. - [issue:push](https://docs.ooneex.com/cli/commands/issue-push.md): Push a local issue YAML to Linear, creating or updating it. - [logger:create](https://docs.ooneex.com/cli/commands/logger-create.md): Generate a new logger class. - [mailer:create](https://docs.ooneex.com/cli/commands/mailer-create.md): Generate a new mailer class. - [microservice:create](https://docs.ooneex.com/cli/commands/microservice-create.md): Generate a new microservice. - [microservice:remove](https://docs.ooneex.com/cli/commands/microservice-remove.md): Remove an existing microservice. - [middleware:create](https://docs.ooneex.com/cli/commands/middleware-create.md): Generate a new middleware class. - [migration:create](https://docs.ooneex.com/cli/commands/migration-create.md): Generate a new migration file. - [migration:up](https://docs.ooneex.com/cli/commands/migration-up.md): Run migrations for all modules. - [module:create](https://docs.ooneex.com/cli/commands/module-create.md): Generate a new module under the modules directory and register it into its destination module. - [module:remove](https://docs.ooneex.com/cli/commands/module-remove.md): Remove an existing module and unregister it from the application. - [permission:create](https://docs.ooneex.com/cli/commands/permission-create.md): Generate a new permission class. - [queue:create](https://docs.ooneex.com/cli/commands/queue-create.md): Generate a new queue class. - [release:create](https://docs.ooneex.com/cli/commands/release-create.md): Release packages with version bump, changelog, and git tag. - [repository:create](https://docs.ooneex.com/cli/commands/repository-create.md): Generate a new repository class. - [sdk:create](https://docs.ooneex.com/cli/commands/sdk-create.md): Generate a browser SDK from module controllers. - [seed:create](https://docs.ooneex.com/cli/commands/seed-create.md): Generate a new seed file. - [seed:run](https://docs.ooneex.com/cli/commands/seed-run.md): Run seeds for all modules. - [service:create](https://docs.ooneex.com/cli/commands/service-create.md): Generate a new service class with its test file. - [spa:create](https://docs.ooneex.com/cli/commands/spa-create.md): Generate a new spa module. - [spa:feature:create](https://docs.ooneex.com/cli/commands/spa-feature-create.md): Generate a new spa feature (route, layout, hooks and folders). - [spa:remove](https://docs.ooneex.com/cli/commands/spa-remove.md): Remove an existing spa module. - [storage:create](https://docs.ooneex.com/cli/commands/storage-create.md): Generate a new storage class. - [translation:create](https://docs.ooneex.com/cli/commands/translation-create.md): Generate a new translation class. - [vector-database:create](https://docs.ooneex.com/cli/commands/vector-database-create.md): Generate a new vector database class. - [workflow:create](https://docs.ooneex.com/cli/commands/workflow-create.md): Generate a new workflow class. - [workflow:transition:create](https://docs.ooneex.com/cli/commands/workflow-transition-create.md): Generate a new workflow transition class. - [Installation](https://docs.ooneex.com/cli/installation.md): Install the Ooneex CLI globally with Bun and enable Zsh completions. - [AI](https://docs.ooneex.com/components/ai.md): Build AI chats, tools, and middleware on a unified multi-provider API powered by OpenRouter. - [Analytics](https://docs.ooneex.com/components/analytics.md): Capture product events and user behavior with a type-safe, container-managed analytics API. - [Auth](https://docs.ooneex.com/components/auth.md): Authenticate requests and manage users with a pluggable, container-managed auth framework. - [Cache](https://docs.ooneex.com/components/cache.md): Cache data behind a single ICache interface with filesystem or Redis backends. - [Command](https://docs.ooneex.com/components/command.md): Build typed, container-managed CLI commands with decorator registration and automatic argument parsing. - [Controller](https://docs.ooneex.com/components/controller.md): Bind HTTP and WebSocket routes to typed handler classes that receive a rich request context and return responses. - [Cron](https://docs.ooneex.com/components/cron.md): Schedule recurring background jobs with a human-readable time syntax, timezone awareness, and lifecycle control. - [Database](https://docs.ooneex.com/components/database.md): Connect to PostgreSQL, SQLite, or Redis behind a small set of adapters with TypeORM repositories and a Bun Redis client. - [Entity](https://docs.ooneex.com/components/entity.md): Define database models as TypeORM entity classes on a shared IEntity contract. - [Event](https://docs.ooneex.com/components/event.md): Publish and subscribe to typed event channels over Redis for decoupled, event-driven communication between components. - [Feature Flag](https://docs.ooneex.com/components/feature-flag.md): Define feature flags as injectable, named toggles with a key, a description, and a sync or async enablement check. - [Logger](https://docs.ooneex.com/components/logger.md): Write structured logs through a single ILogger interface with terminal and database backends. - [Mailer](https://docs.ooneex.com/components/mailer.md): Send transactional emails with React-rendered templates behind a single IMailer interface. - [Middleware](https://docs.ooneex.com/components/middleware.md): Intercept HTTP and WebSocket requests in a decorator-registered pipeline before they reach a controller. - [Migrations](https://docs.ooneex.com/components/migrations.md): Apply versioned, transactional schema changes to your database with up/down rollbacks and dependency ordering. - [Permission](https://docs.ooneex.com/components/permission.md): Authorize what a user can do with ability-based, CASL-backed permission classes. - [Queue](https://docs.ooneex.com/components/queue.md): Enqueue and process background jobs with a BullMQ-backed Queue base class wired to Redis. - [Rate Limit](https://docs.ooneex.com/components/rate-limit.md): Throttle requests by key with Redis-backed counters behind a single IRateLimiter interface. - [Repository](https://docs.ooneex.com/components/repository.md): Decorator-based data access layer with a paginated query contract and dependency injection. - [Service](https://docs.ooneex.com/components/service.md): Encapsulate business logic in injectable service classes registered with and resolved from the DI container. - [Storage](https://docs.ooneex.com/components/storage.md): Store and retrieve files behind a single IStorage interface with filesystem, Cloudflare R2, or Bunny backends. - [Translation](https://docs.ooneex.com/components/translation.md): Localize, interpolate, and pluralize messages from a single dictionary behind the Translation base class. - [Workflow](https://docs.ooneex.com/components/workflow.md): Compose business processes from small, conditional, reversible transitions with automatic rollback on failure. - [Create](https://docs.ooneex.com/design-system/create.md): Scaffold a new design module from the skeleton-design source and wire its dependencies into your project. - [Overview](https://docs.ooneex.com/design-system/overview.md): A reusable front-end design system — components, hooks, icons, fonts, and styles — packaged as a special design module and consumed by your SPA. - [Remove](https://docs.ooneex.com/design-system/remove.md): Delete a design module and clean up every reference to it across the workspace. - [Structure](https://docs.ooneex.com/design-system/structure.md): How a design module is laid out on disk — its module-level files and the asset-kind folders under src/. - [Usage](https://docs.ooneex.com/design-system/usage.md): Build front-end UI by composing components, hooks, icons, fonts, styles, and utils from the design module. - [Configuration](https://docs.ooneex.com/getting-started/configuration.md): Configure your application with environment variables and roles — both declared in YAML and loaded at boot. - [Create your app](https://docs.ooneex.com/getting-started/create-app.md): Go from zero to a running Ooneex application — install the CLI, scaffold the project, and build your first resource with the CLI or an AI prompt. - [Welcome](https://docs.ooneex.com/getting-started/index.md): Welcome to your project - [Monorepo](https://docs.ooneex.com/getting-started/monorepo.md): How an Ooneex application is structured as a Bun workspace monorepo — modules as packages, Nx task orchestration, shared root tooling, and TypeScript path aliases. - [Composition](https://docs.ooneex.com/microservice/composition.md): Declare the controllers, entities, middlewares, cron jobs, and events a microservice owns in its own ModuleType, then boot it from its own entrypoint. - [Create a microservice](https://docs.ooneex.com/microservice/create.md): Scaffold a standalone microservice module with its own entrypoint, env, and Docker setup, fully wired into your project's networking. - [Networking](https://docs.ooneex.com/microservice/networking.md): How the app/API and microservices reach each other over the network — distinct ports per service and env-var-driven service discovery declared in config. - [Overview](https://docs.ooneex.com/microservice/overview.md): A standalone module that runs as its own independently-deployable service, reachable by the app over HTTP. - [Remove a microservice](https://docs.ooneex.com/microservice/remove.md): Delete a microservice module and unregister it from every place create wired it in. - [Structure](https://docs.ooneex.com/microservice/structure.md): The directory layout and generated files of an Ooneex microservice — definition, entrypoint, start hook, config, env, roles, Dockerfile, and tests. - [Composition](https://docs.ooneex.com/module/composition.md): Declare the artifacts a domain owns in a ModuleType object, then register the module so the app can resolve them. - [Create a module](https://docs.ooneex.com/module/create.md): Scaffold a new backend module and register it into your app with a single generator command. - [Overview](https://docs.ooneex.com/module/overview.md): Organize application features into cohesive, domain-scoped units that group everything a business capability needs. - [Remove a module](https://docs.ooneex.com/module/remove.md): Delete an existing module and unregister it from the application, its tsconfig path alias, and its commitlint scope. - [Structure](https://docs.ooneex.com/module/structure.md): The directory layout and generated files of an Ooneex module — definition, config, package, tests, and artifact folders. - [JWT](https://docs.ooneex.com/security/jwt.md): Generate, sign, verify, and decode JSON Web Tokens with the JOSE-backed Jwt class for stateless authentication. - [Roles](https://docs.ooneex.com/security/roles.md): Config-agnostic role-based authorization — define roles, hierarchies, and access levels, then enforce them per route. - [Users](https://docs.ooneex.com/security/users.md): The user identity data model — profiles, credentials, sessions, and roles — that auth resolves and permissions consume. - [Create a spa](https://docs.ooneex.com/spa/create.md): Scaffold a standalone Vite single-page app module wired to a design module, with a free dev port and the spa dependencies installed. - [Data Fetching](https://docs.ooneex.com/spa/data-fetching.md): Fetch and mutate backend data from the SPA with TanStack Query, where hooks are the only layer that talks to the backend. - [Features](https://docs.ooneex.com/spa/features.md): Build a Single Page App as vertical slices — self-contained features that own their full front-end stack. - [Internationalization](https://docs.ooneex.com/spa/internationalization.md): Per-feature translation dictionaries and a generated hook that resolves the active language from the URL. - [Overview](https://docs.ooneex.com/spa/overview.md): Hold a front-end React single-page application in its own module — a Vite app on TanStack Router and Query, served to the browser. - [Remove a spa](https://docs.ooneex.com/spa/remove.md): Remove an existing spa module and clean up every reference it left behind. - [Routing](https://docs.ooneex.com/spa/routing.md): Client-side routing in the Single Page App with file-based TanStack Router. - [Structure](https://docs.ooneex.com/spa/structure.md): The full directory layout of a spa module — bootstrap, routes, feature slices, and shared code. - [Color](https://docs.ooneex.com/utilities/color.md): Convert hex colors to rgba strings and pick from a curated palette of named simple colors. - [CSV](https://docs.ooneex.com/utilities/csv.md): Stream rows from CSV files and convert them to JSON or YAML, powered by Bun's file APIs. - [Currencies](https://docs.ooneex.com/utilities/currencies.md): Currency dataset and a typed converter for formatting and exchanging amounts between currencies. - [Fetcher](https://docs.ooneex.com/utilities/fetcher.md): Lightweight, chainable HTTP client built on fetch with typed JSON responses and header management. - [File System](https://docs.ooneex.com/utilities/fs.md): Async, type-safe utilities for reading, writing, copying, streaming, and watching files and directories on Bun. - [Hour Utils](https://docs.ooneex.com/utilities/hour-utils.md): Convert a single time amount in hours, minutes, seconds, or milliseconds into a breakdown of days, hours, minutes, and seconds with a formatted text label. - [HTML](https://docs.ooneex.com/utilities/html.md): Parse HTML and extract structured content like links, images, headings, videos, and tasks with a Cheerio-powered API. - [JSON](https://docs.ooneex.com/utilities/json.md): Stream large JSON files record-by-record with an async generator, and convert them to YAML or CSV. - [JWT](https://docs.ooneex.com/utilities/jwt.md): Create, verify, and decode JSON Web Tokens signed with HS256 using the JOSE library - [PDF](https://docs.ooneex.com/utilities/pdf.md): Generate, edit, split, and extract text and images from PDF files with page-level access - [Types](https://docs.ooneex.com/utilities/types.md): Shared TypeScript type definitions and interfaces used as foundational building blocks across the Ooneex ecosystem. - [URL](https://docs.ooneex.com/utilities/url.md): Parse and manipulate URLs with typed query strings, path normalization, and convenient accessors for common parameters. - [Utils](https://docs.ooneex.com/utilities/utils.md): A grab-bag of small, focused helper functions for strings, time formatting, IDs, translations, and environment parsing. - [Yaml](https://docs.ooneex.com/utilities/yml.md): Stream large YAML files item by item using Bun's built-in parser, with optional filtering and JSON/CSV export. - [YouTube Utils](https://docs.ooneex.com/utilities/youtube-utils.md): Extract YouTube video IDs and build embed, watch, and thumbnail URLs from any YouTube link.