Technology Choices
This page explains why specific technologies were chosen for each layer of the NMT platform.
Smart Wallets
| Choice | What | Why |
|---|---|---|
| Gnosis Safe | Smart wallet framework | Industry standard, $100B+ secured, audited extensively |
| Solidity 0.8.30 | Contract language | Latest stable, built-in overflow protection |
| Hardhat | Development framework | Rich plugin ecosystem, good debugging tools |
| OpenZeppelin 5.3 | Security library | Audited implementations of ReentrancyGuard, access control |
| EIP-712 | Signature standard | Human-readable transaction signing, replay protection |
Backend
| Choice | What | Why |
|---|---|---|
| Rust | Language | Memory safety without GC, excellent async performance |
| Tokio | Async runtime | Best-in-class for high-concurrency I/O workloads |
| Axum | Web framework | Built on Tokio/Tower, composable middleware |
| SeaORM | Database ORM | Async-native, compile-time query validation |
| Alloy | Blockchain client | Modern Rust Ethereum library (successor to ethers-rs) |
| PostgreSQL 16 | Database | Mature, supports complex queries needed for analytics |
Frontend
| Choice | What | Why |
|---|---|---|
| Next.js 16 | Framework | Server components for fast loads, App Router for routing |
| React 19 | UI library | Server components, concurrent rendering |
| TypeScript 5.9 | Language | Type safety across 60+ DeFi integration files |
| Prisma | Database ORM | Type-safe DB queries from server components |
| Viem | Blockchain client | Lightweight, TypeScript-first Ethereum library |
| Tailwind CSS 4 | Styling | Utility-first, consistent design system |
| Dynamic Labs | Auth | Multi-chain wallet connection with good UX |
| SWR | Data fetching | Stale-while-revalidate caching for API calls |
Infrastructure
| Choice | What | Why |
|---|---|---|
| Digital Ocean DOKS | Kubernetes | Managed K8s, scales with demand |
| Helm | Package manager | Templated K8s deployments, environment-specific configs |
| GitHub Actions | CI/CD | Integrated with the codebase, free for open source |
| Trivy | Security scanning | Container vulnerability detection in CI pipeline |
| cert-manager | TLS | Automatic Let's Encrypt certificate provisioning |
Database Strategy
NMT uses PostgreSQL as the single source of truth today, with two additional databases staged for future use:
| Database | Status | Purpose |
|---|---|---|
| PostgreSQL 16 | Active | Primary data store — users, positions, pools, prices |
| ClickHouse | Staged (configured, not enabled) | Time-series analytics at scale |
| Redis | Staged (configured, not enabled) | Caching layer for hot data |
The staged databases are fully configured in Helm charts and Docker Compose but remain disabled until the platform reaches a scale that justifies them.