Cryptofolio

A decoupled MERN-stack crypto portfolio platform — Next.js 14 frontend, Express REST API, and a virtual demo-trading engine that computes holdings by replaying transaction history.

Role
Full Stack Developer
Status
Live · Vercel + Render
Stack
Next.js 14 · Express · MongoDB
Cryptofolio, desktop screen 1
Cryptofolio, desktop screen 2
Cryptofolio on a phone, screen 1
Cryptofolio on a phone, screen 2

Overview

Cryptofolio is a cryptocurrency portfolio platform where users track digital assets and practice trading without risking real money. It pairs live market data with a virtual trading engine — every account starts with a $10,000 balance, and holdings are derived entirely from the user's recorded buy and sell history.

Cryptofolio, desktop screen 1
Cryptofolio on a phone, screen 1

The challenge

Crypto investors juggling holdings across exchanges had no single, calm view of their position — and no safe way to test a strategy before committing capital. The product needed live prices, a clean portfolio view, and a trading sandbox, all without a heavy backend or the risk of stale, drifting balances.

Architecture

Cryptofolio is a monorepo with separate client/ and server/ directories. The client is a Next.js 14 App Router frontend on Vercel; the server is an Express REST API on Render following an MVC structure — models → routes → controllers — with MongoDB accessed through Mongoose. The two talk over HTTP/JSON via Axios, while CoinGecko prices and TradingView charts are pulled straight into the browser to keep the backend lean.

Architecture

monorepo/

  1. client/  Next.js 14 · App Router

    Vercel

    CoinGecko (prices) · TradingView (charts)

  2. server/  Express REST API · MVC

    Render

  3. MongoDB + Mongoose

The demo trading engine

Rather than storing a mutable balance that can drift out of sync, the engine treats every buy and sell as an immutable transaction in MongoDB. A user's current coin holdings and portfolio value are computed dynamically by replaying that transaction history — so the portfolio is always a provable function of what the user actually did, and never a number that can quietly go wrong.

Security

The API is treated as a public surface and hardened accordingly.

JWT Stateless token-based authentication
bcrypt Salted password hashing at rest
Helmet Hardened HTTP security headers
rate-limit express-rate-limit guards API abuse
validation express-validator sanitises every input
CORS Scoped cross-origin access control

Key features

  • Live cryptocurrency prices via the CoinGecko API
  • Interactive TradingView charts embedded client-side
  • Virtual demo trading — every user starts at $10,000
  • Holdings replayed from buy/sell transaction history
  • JWT auth with bcrypt-hashed credentials
  • Light and dark theme support via next-themes

Tech stack

Front end

  • Next.js 14
  • React 18
  • Tailwind CSS 3.4
  • PostCSS
  • Autoprefixer
  • Axios
  • next-themes
  • react-icons
  • Sharp
  • ESLint
  • Vercel

Back end

  • Node.js 22
  • Express 4
  • Mongoose 6
  • MongoDB
  • bcrypt
  • jsonwebtoken
  • Helmet
  • express-rate-limit
  • express-validator
  • CORS
  • dotenv
  • Nodemon
  • mongodb-memory-server
  • Render

Outcome

Cryptofolio is deployed and used for portfolio tracking and risk-free practice trading. The replay-based engine and offloaded third-party calls keep the backend lean while the platform stays accurate — a focused tool that does one thing, dependably.

Need something built like Cryptofolio?

I’m open to internships and freelance work — tell me what you’re working on.