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.
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.
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.
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.
+5 Resource
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.
from idea to a working MVP
with fallback
on market quotes
during the first 30 days
on the coin list on a smartphone over 4G
on the coin listing at P95
required for market data
to add a new coin to the catalog
corrupted records in the feed
Or send us a message and we'll get back to you within 15 minutes during business hours