Portfolio

CoinDiscovery – Crypto Listing Portal

US crypto listing, voting, and presale-discovery platform with its own $CODI token. Led full-cycle development of a scalable backend and real-time market data; grew to 21,000+ listed tokens and 9M+ users. (Platform now offline.)

CoinDiscovery – Crypto Listing Portal

The product

CoinDiscovery was a US cryptocurrency listing, voting, and presale-discovery platform with its own native $CODI token on BNB Smart Chain. Projects came to get discovered; users came to find, track, vote on, and watchlist new and trending tokens across more than a dozen blockchains. It paired a fast public discovery experience with on-chain staking and a full admin CMS for running the catalog. The platform is now offline, but at its peak it was among the largest listing platforms by token count.

My role

I led full-cycle development as the lead full-stack engineer and the single point of technical accountability for the build. That covered the backend architecture, the multi-chain data pipeline, the public discovery frontend, the admin CMS, the REST API, and the on-chain staking dApp. With 15+ years building and scaling production systems, I owned the engineering decisions end to end: how data was ingested, how it was cached and served, and how the platform stayed fast as the catalog grew into the tens of thousands of tokens.

Architecture

CoinDiscovery was built as a set of cleanly separated services rather than one monolith, so each part could scale and fail independently:

  • A CodeIgniter 4 application core. The public platform and REST API ran on a modern PHP MVC stack with thin controllers delegating to a custom data-access layer. Rather than scatter raw SQL through the app, I built a small repository-style library over the query builder that centralized reads, writes, and timestamp handling, so the data layer stayed consistent and the business logic never had to care how a row was fetched. That is the dependency-inversion idea applied in practice: the controllers depend on an abstraction, not on the database driver.
  • A dedicated ingestion service. Market data ingestion was deliberately split out of the web app into its own lightweight service. It pulled token supply, price, market cap, and liquidity from blockchain explorers and DEX data sources, normalized it, and wrote it back to the central store. Keeping ingestion off the request path meant a slow third-party API never blocked a user loading a page.
  • Per-chain adapters behind one flow. Supporting Ethereum, BSC, Polygon, and many other chains meant each chain had its own quirks for fetching token data. I structured ingestion so each chain was its own adapter behind a common fetch-and-update flow, so adding a chain meant adding a handler, not rewriting the pipeline. That is the Open/Closed Principle doing real work: open to new chains, closed for modification of the core.
  • Cache-first reads. The application was configured with a Redis-backed cache layer and a file-based fallback, so hot discovery and ranking data was served from cache instead of hitting the database on every request, and a cache hiccup degraded gracefully instead of taking the site down.
  • An on-chain staking dApp. Staking was genuinely on-chain. A Solidity staking-pool contract on BNB Smart Chain handled deposits, block-based reward accrual, harvesting, and withdrawals, and a web3 frontend connected user wallets (MetaMask, Trust Wallet, WalletConnect) to call it and show live APY, total staked, and pending rewards in real time.

The engineering challenge

Crypto data never stops moving. Prices, liquidity, and rankings for tens of thousands of tokens had to stay fresh without melting the backend, and the platform had to absorb traffic spikes whenever the market did. The core problem was decoupling freshness from the request: I solved it with scheduled, batched ingestion that refreshed only stale tokens on a rolling basis instead of re-fetching everything, a rolling price-history window so each token carried its own short-term performance chart, and cache-first reads so the public site stayed fast while the heavy network work happened out of band. On top of that sat the trust problem unique to token listings: contract validation and due-diligence signals to protect users from bad and rugpull-prone listings before they ever surfaced in discovery.

What I built

  • Real-time token discovery, price tracking, and ranking across 21,000+ coins on more than a dozen chains
  • A multi-chain ingestion pipeline with per-chain adapters and scheduled, batched refresh of stale data
  • Contract validation and onboarding so new token listings could be registered and vetted
  • Community-powered voting, trending charts, and personal watchlists
  • Per-token analytics with a rolling price-history performance window
  • An on-chain $CODI staking dApp on BNB Smart Chain with live APY, harvesting, and wallet integration
  • A REST API and an admin CMS to run the entire catalog

Engineering practices

The application was set up for PHPUnit testing and coding-standard enforcement, with cloud deployment on AWS and scheduled cron-driven jobs handling the recurring data refresh, vote-counter resets, and presale-status updates on a fixed schedule. Static asset delivery went through AWS S3 with CloudFront CDN, and a build pipeline compiled and bundled frontend assets for the public site. The public discovery frontend was a Bootstrap and jQuery interface with a Vue-assisted build, while the admin CMS was a separate React single-page application, so the team-facing tooling could evolve independently of the public site.

Stack

CodeIgniter 4 on PHP for the application core and REST API, a separate lightweight PHP service for multi-chain market-data ingestion, MySQL on AWS for storage, Redis-backed caching with a file fallback, AWS S3 and CloudFront for asset delivery, and AWS-hosted deployment with cron-driven scheduled jobs. The frontend was Bootstrap and jQuery for public discovery and a React single-page app for the admin CMS. Staking was a Solidity contract on BNB Smart Chain with a web3.js frontend supporting MetaMask, Trust Wallet, and WalletConnect.

Outcome

By the end of the engagement the platform had scaled to 21,000+ listed tokens and 9 million-plus users, putting it among the largest listing platforms by token count. It was later taken offline, but the architecture above, decoupled ingestion, per-chain adapters, cache-first reads, and real on-chain staking, is exactly the kind of system that carries an AI roadmap well: the same normalized, multi-chain market data that powered discovery is the foundation a recommendation or risk-scoring layer would build on next.