Skip to content

Repository Structure

This document describes the structure of the OWOX Data Marts monorepo, which is organized to separate deployable applications from shared packages.

The monorepo is divided into two main sections:

  • apps/ - Contains deployable applications and runtimes
  • packages/ - Contains shared libraries and configurations
owox-data-marts/
β”œβ”€β”€ apps/ # Deployable applications
β”‚ β”œβ”€β”€ web/ # Frontend web application
β”‚ β”‚ β”œβ”€β”€ src/ # Source code
β”‚ β”‚ └── dist/ # Build artifacts
β”‚ β”‚
β”‚ β”œβ”€β”€ backend/ # Backend API and platform runtime
β”‚ β”‚ └── src/ # Source code
β”‚ β”‚
β”‚ β”œβ”€β”€ docs/ # Documentation website
β”‚ β”‚ β”œβ”€β”€ src/ # Source code
β”‚ β”‚ └── dist/ # Build artifacts
β”‚ β”‚
β”‚ └── owox/ # Command-line interface tool
β”‚ β”œβ”€β”€ src/ # Source code
β”‚ └── dist/ # Build artifacts
β”‚
β”œβ”€β”€ packages/ # Shared libraries and configurations
β”‚ β”œβ”€β”€ ui/ # Shared UI components and design system
β”‚ β”‚ └── src/ # Source code
β”‚ β”‚
β”‚ β”œβ”€β”€ connectors/ # Data connectors and API integrations
β”‚ β”‚ └── src/ # Source code
β”‚ β”‚
β”‚ β”œβ”€β”€ connector-runner/ # Core connector execution logic
β”‚ β”‚ └── src/ # Source code
β”‚ β”‚
β”‚ β”œβ”€β”€ eslint-config/ # Shared ESLint configurations
β”‚ β”‚
β”‚ β”œβ”€β”€ prettier-config/ # Shared Prettier configurations
β”‚ β”‚
β”‚ └── typescript-config/ # Shared TypeScript configurations
β”‚
β”œβ”€β”€ tools/ # Additional scripts for project
β”œβ”€β”€ docs/ # Project documentation
β”œβ”€β”€ dist/ # Build artifacts
└── temp/ # Temporary files
  • React-based frontend application
  • Serves the main user interface
  • Consumes shared UI components from packages/ui
  • Build artifacts are served by the backend
  • README
  • NestJS-based backend API
  • Serves the web application’s build artifacts
  • Implements platform runtime
  • Uses shared packages for data connectors execution
  • README
  • Command-line interface for platform management
  • Published as global npm package (owox)
  • Reuses backend logic and connectors
  • Designed for global installation: npm i -g owox
  • README
  • Astro-based documentation website
  • Contains project documentation and guides
  • Built and deployed as static site
  • README
  • Shared React components
  • Implements shadcn/ui-based design system
  • Tailwind CSS styling
  • Used by the web application and other frontends outside of this monorepo
  • Data Source integrations
  • Shared across backend and CLI
  • Core logic for connector execution
  • Used by backend and CLI
  • README
  • Shared ESLint configuration for the workspace
  • Provides consistent code style guidelines across all projects
  • README
  • Shared Prettier configuration for the OWOX Data Marts workspace
  • Provides different configurations for various project types:
    • base: Core formatting rules for all projects
    • typescript: TypeScript-specific rules and file type handling
    • web: React/TailwindCSS-specific rules with class sorting
  • Features consistent formatting across the monorepo, TypeScript support, TailwindCSS class sorting for web projects, and Markdown/JSON formatting
  • README
  • Shared TypeScript configuration for the workspace
  • Provides consistent TypeScript settings across all projects
  • README
  1. Each app and package has its own package.json
  2. Dependencies between packages are managed using workspace references
  3. Shared configurations (linting, TypeScript) are maintained in respective packages
  4. Build artifacts are generated in respective dist/ directories
  • Root package.json defines workspaces for both apps/* and packages/*
  • Each package can be developed and tested independently
  • Dependencies between packages use workspace:* syntax
  • Shared packages are not published to npm but used internally
  1. Keep shared code in appropriate packages
  2. Maintain clear boundaries between apps and packages
  3. Use TypeScript for type safety across the monorepo
  4. Follow consistent coding standards using shared linter config
  5. Document public APIs and interfaces