Architecture

Repository

Understanding Currencia's monorepo architecture

Repository Structure

Monorepo Architecture

Currencia is organized as a monorepo using Turborepo, which provides several advantages for managing a complex application ecosystem:

currencia/
├── apps/                 
   ├── app/             # Main Nuxt application
   └── formatter/       # Standalone Nitro formatter
├── packages/            # Shared internal packages
   ├── cryptos/         # Crypto libraries
   ├── mongo/           # MongoDB utilities
   └── utils/           # Shared utilities
└── scripts/            # Build and maintenance scripts

Turborepo Benefits

Pipeline Optimization

  • Remote Caching: Faster builds by reusing previously built assets
  • Parallel Execution: Runs tasks across packages simultaneously
  • Incremental Builds: Only rebuilds what changed
  • Task Dependencies: Automatically manages build order

Workspace Management

  • Centralized Dependencies: Shared node_modules for consistent versions
  • Selective Execution: Run commands on specific packages
  • Cross-Package References: Easy imports between packages
  • Unified Tooling: Consistent development experience

Development Experience

  • Task Pipelines: Defined in turbo.json
turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    }
  }
}

Package Organization

Apps: Standalone applications:

  • Packages: Shared internal libraries
  • Scripts: Maintenance and build utilities

This architecture enables:

  • Code sharing between applications
  • Consistent development practices
  • Efficient build processes • Easy maintenance and updates
Copyright © 2025