Skip to content

Stack Comparison

Why we chose each technology and when to use each one.

Backend

TechnologyWhen to useProject example
GoCritical performance, low latencySPI Simulator, DICT Simulator
Node.jsRapid prototyping, rich ecosystemISO 8583, Workflow Engine
GraphQLComplex queries, nested dataLedger
RESTSimplicity, basic CRUDDICT, Open Finance

Go vs Node.js

┌─────────────────┬─────────────────┬─────────────────┐
│ Criterion       │ Go              │ Node.js         │
├─────────────────┼─────────────────┼─────────────────┤
│ Latency         │ ~0.2ms          │ ~5ms            │
│ Memory          │ ~10MB           │ ~50MB           │
│ Throughput      │ 50K req/s       │ 2K req/s        │
│ Startup         │ ~50ms           │ ~2s             │
│ Learning curve  │ High            │ Low             │
│ Ecosystem       │ Growing         │ Mature          │
│ Concurrency     │ Goroutines      │ Event loop      │
│ Deploy          │ Single binary   │ Node + node_modules │
└─────────────────┴─────────────────┴─────────────────┘

When to use Go

  • Financial systems (SPI, DICT)
  • High-performance APIs
  • Microservices with thousands of connections
  • Where memory predictability matters

When to use Node.js

  • Prototypes and MVPs
  • Simple CRUD APIs
  • Apps with complex business logic
  • Teams that know JavaScript

Databases

TechnologyWhen to useProject example
PostgreSQLStructured data, transactionsReport System
MongoDBFlexible data, dynamic schemaLedger, DICT
RedisCaching, rate limiting, sessionsLeaky Bucket
MinIOFile storage (S3-compatible)Report System

PostgreSQL vs MongoDB

┌─────────────────┬─────────────────┬─────────────────┐
│ Criterion       │ PostgreSQL      │ MongoDB         │
├─────────────────┼─────────────────┼─────────────────┤
│ Schema          │ Rigid           │ Flexible        │
│ Joins           │ Native          │ $lookup (slow)  │
│ Transactions    │ Full ACID       │ Multi-document  │
│ Performance     │ B-tree indexes  │ BSON indexes    │
│ Scalability     │ Vertical        │ Horizontal      │
│ JSON support    │ JSONB           │ Native          │
└─────────────────┴─────────────────┴─────────────────┘

When to use PostgreSQL

  • Relational data (accounts, transactions)
  • Referential integrity
  • Complex queries with JOINs
  • Compliance and auditing

When to use MongoDB

  • Semi-structured data (logs, events)
  • Schema that changes frequently
  • Rapid prototyping
  • Large data with sequential access

Frontend

TechnologyWhen to useProject example
Next.jsSSR, landing pages, SEOLanding Page
Vite + ReactSPA, internal appsKYC System
Radix UIAccessible componentsLanding Page
TailwindRapid stylingLanding Page

Infrastructure

TechnologyWhen to useProject example
DockerLocal containerizationAll services
KubernetesProduction orchestrationDeploy
VercelFrontend and docsLanding Page, Docs
ProxmoxOn-premise hypervisorDevOps Challenge

The golden rule

Use the right tool for the job.

There's no "best stack". There are trade-offs.

  • Go is better for performance
  • Node.js is better for productivity
  • PostgreSQL is better for structured data
  • MongoDB is better for flexible data
  • Docker is better for consistency
  • Kubernetes is better for scale

The goal is to understand these trade-offs and make informed choices.