How We Build Full-Stack Products at TwinForge
Our end-to-end stack—from Next.js and TypeScript on the web to Django, Redis, and Celery behind products like Sportra.
At TwinForge, we don’t think in “frontend or backend.” We think in products: what fans and users touch in the browser, and what has to stay correct on the server. That’s how we built this site, our in-house tools, and Sportra — a live football platform on the web backed by a serious data layer underneath.
Here’s the stack, in one pass, without the jargon avalanche.
The surface: Next.js, React, and TypeScript
Next.js is our default for web apps and marketing sites. React powers the UI; TypeScript keeps the team aligned as features grow.
For public pages we care about speed and SEO — server rendering, clean URLs, and pages that make sense to search engines. For product UI we care about clarity — only making the browser do work when it needs to (live scores, filters, accounts).
Tailwind CSS ties TwinsLegacy, TwinForge, and project sites to a consistent visual system so we iterate quickly without design drift.
The bridge: same-origin APIs
On products like Sportra, the browser talks to our domain, not directly to every internal service. Next.js route handlers call the real API with credentials that never ship to the client. Sessions live in secure cookies — not scattered tokens in browser storage.
That pattern gives us a safer BFF-style layer: one place for auth, football data, news, and gameplay — without exposing keys in the frontend bundle.
The engine: Django, PostgreSQL, and Redis
The Sportra Core API is Django on PostgreSQL, with Redis for the fast stuff — especially live matchday, where today’s fixtures need to refresh often and stay consistent when multiple updates arrive at once.
Behind the API, Celery jobs ingest fixtures, stats, and odds on schedules that match real football: live matches, daily coverage, backfill, transfers. Data lands in normalized models; Sportra Intelligence adds derived match and team insights on top of raw feeds — the layer that makes browsing feel smarter than a scoreboard alone.
Shipping and caring for it
We run with Docker, tests (Vitest on the web, pytest on the API), and the usual production hygiene: health checks, rate limits, observability, and room to grow. None of that is exciting copy — it’s what lets a matchday stay up when everyone opens the app at kickoff.
Two halves, one product
Sportra is the example we point to: Next.js for match centres, hubs, news, gameplay, and SEO; Django for ingestion, intelligence, and long-lived domain logic. Same philosophy on TwinsLegacy at a smaller scale — typed content in git today, structured so we can plug in a CMS tomorrow without a rewrite.
We’re not married to buzzwords. We’re married to fast experiences in the browser and trustworthy data on the server. The stack is how we get both.