Checking API…

The 2026 World Cup,
one conversation
at a time.

WC26 Threads is an open-source social companion for the tournament — every match gets its own thread, every take its own space. Built as a portfolio piece by a football fan who loves his craft.

The World Cup trophy
Portugal fans
What it is

A focused product, deliberately small.

WC26 Threads is a backend + Android app built end-to-end as a portfolio piece. It ships only the features that matter for a tournament-long fan experience.

01 / Browse

Every match, every detail

Schedule, venues, kickoff times, game results. All 104 matches seeded into the database from day one.

02 / Post

One thread per match

Each match has its own feed. Drop a take, see what other fans are saying. No follows, no algorithm — just the match.

03 / React

Likes, comments, replies

Standard social mechanics, implemented with the right backend patterns: denormalized counters, idempotent endpoints, cursor pagination.

04 / Build

Modern Android, clean Kotlin

Native Android with Jetpack Compose, Material 3, Paging 3. Backend in Ktor with Exposed and Postgres.

05 / Ship

Real production stack

Dockerized, deployed on Oracle Cloud, behind nginx with Let's Encrypt TLS. CI/CD via GitHub Actions.

06 / Open

Fully open source

Backend and Android repos are public. README explains the architecture, the tradeoffs, and what I learned.

Brazil fan
Try the App

Join the WC26 Threads Beta

Be part of the conversation. Follow these two simple steps to whitelist your account and download the WC26 Threads Android application.

Step 1

Whitelist Your Account

Join our Google Group using the same Google account you use on your Android device to whitelist your access.

Join Beta Group
Step 2

Get it on Google Play

Once whitelisted, register as a tester on Google Play and download the app to your device.

Get it on Google Play
Under the hood

Built with what I'd choose at work.

No "trendy framework of the month." Every choice is something I'd defend in a code review.

KotlinKtorExposedPostgreSQL 16FlywayJWT + BCryptHikariCPJetpack ComposeMaterial 3Paging 3HiltRetrofitDockernginxOracle CloudGitHub Actions
Try it

The API is live. Right now.

Open a terminal and try a real endpoint. No keys needed for public reads. Or hit it from a browser.

# Fetch the first three group-stage matches
GET https://wc26.adelash.dev/api/matches?limit=3

# Read posts for a specific match
GET https://wc26.adelash.dev/api/matches/1/posts

# Public profile lookup
GET https://wc26.adelash.dev/api/users/1

Check the full endpoint documentation here.