///
Aruuri is built as a **monorepo** to foster transparent community funding, leveraging a sophisticated architecture designed for scalability, maintainability, and clear separation of concerns. This str
108 views
~108 views from guests
Guest views are estimated from total page views. These include anonymous visitors and users who weren't logged in when they viewed the page.
Aruuri is built as a monorepo to foster transparent community funding, leveraging a sophisticated architecture designed for scalability, maintainability, and clear separation of concerns. This structure is powered by Turborepo↗ for efficient build orchestration and pnpm↗ for package management, following domain-driven design principles with functional programming patterns. For an overview of the platform's mission and purpose, refer to the [Aruuri Platform Overview] page.
The codebase is organized into two main top-level directories: apps/ for independent deployable applications and packages/ for shared, reusable code.
aruuri/
├── apps/
│ ├── web/ # Next.js public web app (App Router)
│ ├── cms/ # Payload CMS (future, subdomain)
│ └── functions/ # AWS Lambda functions (future, webhooks/cron)
└── packages/
├── services/ # Vendor-agnostic services (email, storage, payments)
├── domain/ # Business logic (pure functions, immutable)
├── database/ # Drizzle ORM for Neon PostgreSQL
├── design-tokens/ # Design tokens from Figma → CSS variables
└── utils/ # Shared utilities (date, currency, format)
apps/ DirectoryThis directory contains independently deployable applications, each representing a distinct part of the Aruuri platform:
web/: The main public-facing web application. It's built with Next.js (utilizing the App Router), React, Tailwind CSS v4, and Radix UI. This is where users interact with the platform, contribute, and track impact.cms/: Planned for a future subdomain, this will house the Payload CMS instance, managing content, media, and other administrative data.functions/: Reserved for future AWS Lambda functions. These serverless functions will handle various backend tasks such as webhooks, cron jobs, and specific API endpoints, providing a scalable and cost-effective approach for real-time operations.packages/ DirectoryThis directory is home to shared code and components that can be consumed by multiple applications within the monorepo, ensuring consistency and reusability:
services/: This package abstracts external vendor integrations (e.g., email, storage, payments). Its vendor-agnostic design allows for switching providers (e.g., from Resend to SendGrid) without requiring changes in the application-level code.domain/: Contains the core business logic of the Aruuri platform. It adheres to functional programming patterns, emphasizing pure functions and immutability, making the logic predictable and testable.database/: Provides the shared database layer using Drizzle ORM for Neon PostgreSQL. This package encapsulates schema definitions, migration scripts, and client configurations, ensuring type-safe interactions with the multi-domain database setup. Detailed information can be found in packages/database/README.md.design-tokens/: Houses the centralized design tokens, which are exported from Figma and transformed into CSS variables and JavaScript constants using Style Dictionary. This ensures a single source of truth for design language across the platform. Refer to docs/FIGMA_TOKENS.md for its workflow.utils/: A collection of shared utility functions, including helpers for date formatting, currency conversions (minor to major units and vice-versa), number formatting, and string manipulation like slugification.The Aruuri architecture is founded on several core principles:
apps/ directory is designed to be independently deployable, allowing for flexible scaling and deployment strategies for the web app, CMS, and serverless functions.packages/ directory ensures that common functionalities and UI components are centralized and reusable, reducing redundancy and promoting consistency.services/ package. This minimizes coupling to specific third-party providers, making it easier to swap services without affecting business logic.For more in-depth architectural guidance, refer to docs/ARCHITECTURE.md.
Aruuri leverages a modern and robust tech stack to deliver a high-performance, transparent, and user-friendly platform: