A crypto market data platform for English- and Russian-speaking traders
Finkonkurs is a crypto market portal at finkonkurs.com that brings cryptocurrency prices, exchange ratings, blockchain network activity, trading contests, people profiles and news into one bilingual site. The live homepage positions it as a place to track Bitcoin, Ethereum and 10,000+ coins, with sentiment, dominance and 24-hour volume widgets next to an editorial news radar.
The brand is older than our work on it: its footer dates Finkonkurs to 2010, and the previous site was a catalog of forex brokers, trading contests and broker news. Since June 2024 we have been building the platform that replaced it, with its own data ingestion layer, AI content pipeline and server-rendered frontend.
Key features
- Coin, exchange and network pages — rankings and detail pages with prices, markets tables, developer activity, on-chain metrics and related news.
- Market dashboard — the homepage is assembled from dedicated widgets: Fear & Greed sentiment, BTC and ETH dominance, 24h volume, market movers, top gainers, trending coins, liquidations, whale transfers, stablecoin flows and a category heatmap.
- Trading contests — a contests index built from exchange campaign pages and competition aggregators.
- People profiles — founder and CEO pages with trust verdicts, built from AI research dossiers in which government sanctions are recorded as neutral information rather than a scam signal.
- Scam scoring — a backend job calculates a scam score with a detailed breakdown for each currency, using signals such as the trust scores of the markets that list it.
- Linked news — headlines from CoinDesk, CryptoPanic, GDELT, NewsData and RSS feeds are linked to the currencies they mention and open in a modal on the news index.
- Specialty rankings — market makers, mining and TON ecosystem projects each get their own page.
- Embeddable coin widget — a chrome-free page that partner sites can iframe to show a coin's live data.
Architecture and tech stack
The workspace is four independently versioned services tied together by an umbrella repository of git submodules.
Scraper platform
A standalone Laravel 12 service (PHP 8.4, Octane with Swoole) owns every external call. More than 120 scraper classes cover over 40 providers, including CoinGecko, CoinMarketCap, DefiLlama, Etherscan, L2Beat, Bitquery, Coinalyze, GitHub, Santiment, GoPlus Labs, exchange announcement pages and social platforms. Each source is one class plus a registry entry, run by one universal queue job. Everything lands in one raw_data table with SHA-256 deduplication and schema fingerprinting, exposed to consumers through a read-only database view.
Backend
The Laravel 12 backend reads that view over a dedicated connection and turns raw payloads into domain models through more than 50 transformer classes. It serves a public read-only API documented automatically with Scramble, runs Horizon and Pulse, and ships a Filament admin with nearly 50 resources for currencies, markets, contests, people, SEO templates and enrichment runs.
AI enrichment
Descriptions and FAQs for coins, exchanges and networks come from a multi-model research-and-writing pipeline on n8n whose prompts the client edits from the admin. It has its own case study: Finkonkurs AI content pipeline.
Frontend
The site is a Nuxt 4 SSR app in TypeScript with Tailwind CSS, Pinia, @nuxtjs/i18n and @nuxtjs/sitemap. Its API client is generated from the backend's OpenAPI spec, fonts are self-hosted, and Material Symbols icons are inlined as SVG instead of loading a 3.8 MB webfont.
SEO and performance
Relaunching a long-lived domain meant protecting what search engines already knew. A Nitro middleware serves the snapshot of the old site at its original clean URLs and 301-redirects old sections without a mirrored page to the closest live one. The mirror now covers every page of the 1,047-page snapshot the new app does not replace, up from 468 when it was keyed to the old sitemap, and can never shadow a live route.
Locale routing is hand-tuned rather than a framework default. English has no prefix and Russian uses /ru/, but coins, exchanges, networks, people and news use native Russian slugs such as /crypto, /crypto-birzhi and /konkursy, with alternate spellings redirecting to one canonical URL. Flat vanity URLs like /bitcoin resolve to the right detail page, and pages carry generated Open Graph images and XML sitemaps.
Performance work followed real traffic. Link prefetching is off: a coin page links to dozens of exchanges, each page payload fans out to about 13 backend calls, and viewport prefetching was enough to trip the API's per-IP rate limiter. Cached page payloads get an explicit browser lifetime so repeat navigation stops re-downloading them, SSR requests prove their origin with a shared secret so the backend can trust the forwarded client IP, and server renders reach the API over an internal hop instead of looping out through Cloudflare.
Infrastructure
All services deploy through Coolify across three environments: production on a dedicated server, development on a shared box, and a shared environment that hosts the scraper and n8n for both stages over WireGuard. Production is transform-only: it reads the shared scraper database but never dispatches scrapes or spends AI credits, so paid calls happen once and every stage consumes the same output. A monthly job dumps both PostgreSQL databases, mirrors the frontend to Backblaze B2 and reports through our health check bot.
Our role
We build and run the platform end to end: the scraper and its integrations, the backend domain model and admin, the n8n workflows, the Nuxt frontend and the deployment setup. The backend repository alone has more than 700 commits since June 2024, and the current Nuxt 4 frontend was started in April 2026.
Related work
The same infrastructure runs Fakton, a Web3 discovery Mini App for the TON ecosystem. For another market data build, see our crypto market aggregator, and explore our web app development and AI integration and automation services.



