AGENCY
ZGRZ Agency

Crypto market monitoring portal for a private investor

A public web service that aggregates cryptocurrency prices, market capitalization, and baseline market analytics from external APIs and presents them in a clean table-and-chart interface.

 

Saas
MVP development
Dashboard
B2C
FinTech
Crypto
Next.js
Node.js
Directus CMS
Analytics & Reporting

About the Project

A public website in a coin-listing format, where the user sees a table of assets with price, 24-hour and 7-day change, market capitalization, and trading volume. Sorting, filtering, and search for specific assets are built in. Each coin gets its own page with a short description, a price chart, and the key indicators. Data refreshes regularly from several external sources, and the interface is tuned for fast scanning.

 

About Customer

Artem is a crypto enthusiast exploring the crypto-product niche and working on the idea of his own portal in the CoinMarketCap mold. He came to us with a request for a minimum viable product with the core market metrics — something he could drive traffic to and use to test further hypotheses. The client had no in-house technical team and no prior products in the niche, so he expected a working MVP with a reliable data-collection layer, an admin panel for the basic content, and a frontend ready for public use.

 

Unclear business goal 

 

The idea existed as "a simplified CoinMarketCap" — the requirements had to be structured carefully and trimmed to only what was strictly needed in the first release.

 

Multiple data sources 

 

The client didn't want to depend on a single provider and wanted to combine several APIs with different formats, stability profiles, and rate-limit constraints.

 

Near real-time updates 

 

Quote freshness matters to users, but constant calls to external APIs translate directly into cost and rate-limit risk.

 

A fast table with many columns 

 

The coin list had to render dozens of columns quickly, with filters and sorting — including on mobile.

 

Data quality and consistency

 

 Different sources can return different values for the same coin, incorrect tickers, or incomplete data on some assets. Those discrepancies had to be reconciled cleanly.

 

Proposed Solution

We built a headless architecture: Directus handles dictionaries, static content, and the admin panel, a dedicated Node.js service collects and normalizes market data from external APIs, and the Next.js / React frontend renders the aggregated information in tables and asset pages.

 

Focused MVP feature set 

 

We defined a short list of capabilities: a coin list with the key market metrics, an asset page, search, basic filters, and a separate informational section. Advanced charts, portfolios, and alerts were intentionally left outside the first version.

 

Data model in Directus 

 

Inside Directus, we configured collections for coins, categories, listings, static pages, and display settings. The admin panel lets the team update coin metadata, descriptions, and surrounding content without touching code.

 

Market data aggregation service 

 

A separate Node.js service connects to one or several external market-data providers, converts their responses into a unified format, computes derived metrics (24-hour, weekly, monthly change), and writes the current values into the database. The update logic was designed to stay inside every provider's rate limits.

 

Frontend API 

 

For the Next.js frontend, we implemented REST/JSON endpoints tuned for the typical scenarios — paginated coin list, coin-detail data, search by ticker or name, category lists. Responses already carry the prepared values, so the client doesn't do heavy data processing in the browser.

 

Coin-list interface and asset pages 

 

The React frontend renders a sortable table with fast search and responsive behavior on mobile. Each coin page carries a short description, basic price dynamics, the key numbers, and links to official resources — so the user doesn't bounce straight into Google.

 

Caching and data refresh 

 

To keep load and cost in check, the table and the coin pages run on backend-level caching with TTLs aligned to the upstream update cadence. Freshness stays acceptable without extra external requests.

 

Monitoring and quality control 

 

We added an error log per provider, technical health checks, and baseline dashboards on update success rate. If a provider integration fails, the portal keeps running on the last valid values, and the team sees the problem before users do.

 

We started by breaking the general product idea into concrete screens and scenarios. With the client, we defined what the user should see immediately on arrival, which information had to live in the table, and what was essential on the individual coin page. The first release had to prove the viability of the idea before moving into more advanced features — that line was drawn explicitly.

 

Next.js
React.js
TypeScript
Tailwind CSS

+5 Resource

Results

The client got a working MVP crypto market portal he can show partners, fill with content, and use as a base for validating business hypotheses. Data aggregation and normalization sit in a separate service, so future feature growth doesn't require rebuilding the whole project.

 

2 weeks

from idea to a working MVP

2 data providers

with fallback

60-second freshness

on market quotes

99.5% uptime

during the first 30 days

Under 1.8 s LCP

on the coin list on a smartphone over 4G

400 ms API response time

on the coin listing at P95

Zero manual edits

required for market data

2–5 minutes

to add a new coin to the catalog

Under 0.5%

corrupted records in the feed

Get in Touch

Or send us a message and we'll get back to you within 15 minutes during business hours

Enter your name

Enter your email

Enter your message

Andrii Trubai

Andrii Trubai

CEO | Head of WebDev department

More Success Stories