Architecture

Overview

This section offers a schematic overview of the project's architecture, highlighting core components, data flow, and key integrations.

architecture

Architecture Overview

Currencia follows a distributed architecture pattern designed for real-time cryptocurrency data processing and delivery, built entirely with the Vue/Nuxt ecosystem.

System Components

1. Data Providers

The system collects data from multiple sources through different methods:

  • Web Scrapers
    • CoinMarketCap Scraper: Extracts market data from CoinMarketCap
    • CryptoCompare Scraper: Collects additional market data from CryptoCompare
  • API Integration
    • Kraken API: Direct API integration for trading data
  • AI Services
    • Sentiment Analysis: Cloud-based AI service running on Azure VPS for market sentiment processing

2. Message Queue

  • RabbitMQ
    • Handles asynchronous communication between components
    • Ensures reliable message delivery
    • Manages data flow from providers to formatter

3. Data Storage

  • Temporary Storage (MongoDB)
    • Stores unformatted raw data
    • Enables quick access to recent market data
    • Acts as a buffer between data providers and formatter
  • Permanent Storage (PostgreSQL)
    • Stores processed and formatted data
    • Maintains user information and preferences
    • Handles relationships between entities

4. Application Stack (Nuxt Full Stack)

  • Frontend (Nuxt 3)
    • Vue-based framework for the user interface
    • Server-Side Rendering (SSR) capabilities
    • Built-in state management
    • Full TypeScript
  • Backend (Nitro Server)
    • Powers both the formatter service and application backend
    • Handles API routes and server middleware
    • Processes and standardizes data from different sources
    • Manages database interactions
    • Provides high-performance server capabilities

Data Flow

  1. Data providers continuously send cryptocurrency information
  2. RabbitMQ queues incoming data for processing
  3. Raw data is temporarily stored in MongoDB
  4. Nitro Server processes and standardizes the information
  5. Formatted data is stored in PostgreSQL
  6. Nuxt application retrieves and displays data to users

Key Technical Features

  • Unified Server Engine: Nitro powers both the formatter and application backend
  • Full-Stack TypeScript: End-to-end type safety
  • Server-Side Rendering: Improved performance and SEO
  • Real-time Updates: Reactive data processing and display
  • Scalable Architecture: Distributed components for better performance
  • Data Consistency: Standardized formatting across all sources

Development Benefits

  • Unified Development Experience: Same technology stack across services
  • Simplified Deployment: Nitro's unified server approach
  • Strong TypeScript Integration: Better development experience and type safety
  • Vue/Nuxt Ecosystem: Rich set of tools and plugins available
Copyright © 2025