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

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
- Data providers continuously send cryptocurrency information
- RabbitMQ queues incoming data for processing
- Raw data is temporarily stored in MongoDB
- Nitro Server processes and standardizes the information
- Formatted data is stored in PostgreSQL
- 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

