Skip to content
Moeijiro
← All projects

Project · Discord tournaments

EventForge

Runs tournaments inside Discord: sign-ups, fair brackets or leagues, and score reporting.

Seeded brackets with fair byes; the opponent confirms scores and staff resolve disputes.

Discord SystemsFull-Stack Apps
Type
Personal open-source project
Automated tests
14 (pytest)
Built with
Python · discord.py · FastAPI
Live demo
Runs locally — not hosted
Single-elimination bracket

Overview

What it does

EventForge takes sign-ups in Discord, then seeds a single-elimination bracket with fair byes or a round-robin league. Players report their own scores: the opponent confirms, and disputes go to staff.

Screenshots

From the running application

  • Single-elimination bracket
    Single-elimination bracket
  • Round-robin standings
    Round-robin standings
  • Match with reported score awaiting confirmation
    Match with reported score awaiting confirmation
  • Bracket on a phone
    Bracket on a phone

Captured from the app running locally with its seeded demo data. Select an image to open it full size.

Core features

What's in it

  • Brackets

    Seeded single elimination with byes placed fairly.

  • Leagues

    Round-robin schedules with standings.

  • Score reporting

    Player-reported, opponent-confirmed, staff-resolved disputes.

  • Dashboard

    Live bracket and every match that needs a decision.

Stack & skills

Built with

Technology

  • Python
  • discord.py
  • FastAPI
  • SQLAlchemy (async)
  • Next.js
  • TypeScript

What this project demonstrates

  • Discord bots
  • Algorithms (seeding)
  • State machines

Repository & demo

Run it yourself

Seeded with a fictional server and tournaments.

No public live demo is hosted. Everything below runs locally with Python 3.12+ and Node 20+.

$ git clone https://github.com/Moeijiro/eventforge.git
$ cd eventforge
$ make install
$ make seed
$ make api
$ make web

Have a project in mind?

I build APIs, automation systems, Discord integrations and full-stack applications. Tell me what it should do and I'll tell you how I'd build it.