Write us on Telegram@Odilient

WEB PLATFORM

Finkonkurs

A bilingual crypto market portal with live prices, exchange and network pages, trading contests, people profiles and news, built on a data platform that ingests 40+ sources.

Finkonkurs
Client
Fintech & Crypto
Industry
Ongoing since 2024
Duration
2026
Year
Where it started

The Challenge

Finkonkurs dates back to 2010, and its old site was a catalog of forex brokers, trading contests and broker news with years of indexed pages. The brief was a full crypto market portal in English and Russian: coins, exchanges, blockchain networks, people, contests and news. That meant ingesting dozens of APIs and feeds with different formats and rate limits, producing original copy for thousands of pages and relaunching without losing the old URLs.

What we did

The Solution

We split the platform into four services. A standalone Laravel 12 scraper ingests every source into one raw data table; the Laravel backend transforms it into domain models, scores scam risk and runs a Filament admin; n8n executes the AI enrichment workflows; and a Nuxt 4 SSR frontend renders the site with hand-tuned bilingual URLs. A mirror of the old site and targeted redirects keep legacy URLs from returning 404s.

Built with
LaravelNuxt 4PostgreSQLRedisFilamentn8nLaravel OctaneTailwind CSSTypeScriptCoolify
Inside the build

How It Came Together

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.

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.

Video Demo

Product Walkthrough

Let's Build

Want something like Finkonkurs?

Tell us what your product needs to do. We'll shape the scope, map a timeline and send a fixed price — free, and with no obligation to proceed.

Free consultation No commitment Fast reply