Skip to content
All work
  • #web
  • #discord
  • #bots
  • #realtime
  • #roblox

Arise Crossover Tools

Live dungeon and event timers for the Roblox game Arise Crossover, fed in real time by a multi-server Discord bot that reads the official announcements and relays them to the site over WebSockets.

Role
Solo developer of the website and the bot, plus partnerships with content creators and guild leaders.
Outcome
1,000+ dungeons and events tracked live, 60+ players at a time during peak events. When bigger tools crowded the space, I joined the RankBreakers server as one of its developers.
Year
2025
Status
retired
Stack
  • React
  • TypeScript
  • Node.js
  • WebSockets
  • Discord.js v14
  • Tailwind
  • Vercel

Discord: the game’s announcement

# dungeon-alerts

Waiting for the next spawn…

My bot: parsed and relayed

{  "type": "dungeon"}

The website: live card

Current Event

Dungeon Gate

Rank
Unknown
Location
Unknown
Map
Unknown
Rooms
Unknown
Ends in: --:--

Next Events

  • Dungeon GateStarts at --:--
  • Dedu Island RaidStarts at --:--

A recreation with sample spawns based on a real announcement. The 15-minute schedule is real, shown in your time.

  1. The start

    A game run by the clock

    Arise Crossover is a Roblox game by CL Games built around timed content. A dungeon gate opens every 15 minutes, raids and world bosses keep their own schedules, and every gate rolls a rank, an island, a map and modifiers such as Red Gates and Double Dungeons. The details were announced by the game's own bot in its Discord, as text, and buried by the next message minutes later. Planning a run meant watching the channel.

  2. The goal

    A page you could simply leave open

    I wanted the community to stay informed and plan ahead without babysitting Discord: live timers for every dungeon and event, cards that fill in the moment an announcement lands, and tools for the in-game economy. On a phone first, because that's where players check things mid-game.

  3. The adventure

    From a Discord message to a live card

    I built two halves that work as one. A Discord bot sits in the official server, parses each announcement into structured data and relays it over WebSockets. A React and TypeScript site receives it and renders live event cards, timers and a weapon price calculator. Guild servers wanted the alerts too, so the bot became multi-server, with ping roles and announcement channels per server. Along the way I partnered with content creators and guild leaders, who brought players and shaped what I built next.

    Desktop: a helpful header and the whole schedule at a glance.
  4. The difficulties

    Free text, live traffic, many servers

    The announcements were free text with emoji, and their format varied, so parsing had to be robust and fail loudly instead of showing a wrong card. Every open browser had to get updates instantly, even during peak events, and stay current after hours open. And running in many servers meant different configurations and permissions everywhere, plus Discord's strict rate limits when creating hundreds of roles.

  5. The end

    Knowing when to pivot

    The platform tracked more than 1,000 dungeons and events live and served more than 60 players at once at peak, and it became a hub for the community. Then bigger, better-funded tools arrived and the space got crowded. Rather than compete in a saturated market, I joined the RankBreakers server and became one of its developers. It was my first multi-server bot and my first real-time pipeline, and it taught me as much about choosing when to pivot or collaborate as about WebSockets.

Dungeons and events tracked while it ran
1,000+
Dungeons and events tracked while it ran
Players at once at its peak
60+
Players at once at its peak
Visitors using the site at launch
100+
Visitors using the site at launch
  • Live event tracking

    Timers for every dungeon and event, with details that arrive over WebSockets the moment they're announced.

  • Straight from the official announcements

    The bot reads the game's own Discord announcements and relays them to the site in real time.

  • Weapon price calculator

    Works out what weapons are worth and how many you need to upgrade.

  • Phone first

    Designed for the phone you check mid-game, and just as complete on a desktop.

  • Alerts in your own server

    Guild servers pick a channel for dungeon alerts and get ping roles by rank, island and special gate.

  • Built with the community

    Partnerships with content creators and guild leaders, and other bot developers in servers with 1,000+ players.

The site

React and TypeScript on Vercel, styled with Tailwind and built mobile first: one column on phones, two on tablets, the full multi-column layout on desktops, and roomier spacing on large screens.

Desktop: a helpful header and the whole schedule at a glance.
Phone: stacked cards and touch-sized controls.

Special gates had to stand out at a glance, so each modifier changes the card's colour and badges:

Red Gate.
Double Dungeon.
Both at once, still waiting for the announcement.

The weapon price calculator

The calculator helped players price their weapons and plan upgrades: it estimates a weapon's value, works out how many weapons an upgrade needs, and warns when you have more than you need. Inputs are validated and results update instantly.

The bot in other servers

Guild servers wanted the alerts in their own channels, so the bot runs in many servers, each with its own configuration.

  • /announce-dungeon

    Admins

    Picks the text channel where dungeon alerts are posted.

  • /deannounce-dungeon

    Admins

    Removes it, and the alerts stop for that server.

  • /create-dungeon-roles

    Admins

    Creates every ping role in one go, by rank, by island and for special gates, with names and colours you can change.

  • /delete-dungeon-roles

    Admins

    Removes them all, for a clean reset.

Every command answers with a private summary of what was created or removed, and what failed, so admins always know where they stand.

/create-dungeon-roles
/delete-dungeon-roles

From a Discord message to a live card

The real thing: the game's announcement (bottom left) and the card my site built from it.
  1. Listen

    The bot sits in the official server and watches the announcement channel.
  2. Parse

    Regular expressions, with fallbacks, pull the rank, island, map, boss and the Red and Double flags out of free text with emoji.
  3. Relay

    The structured event goes to a WebSocket server, which pushes it to every open browser.
  4. Render

    The card already exists, since the site knows when each gate opens; its "Unknown" fields fill in the moment the data arrives.

The room count arrives in a separate message and is matched to its gate. Anything that doesn't parse raises an alert to me instead of producing a wrong card.

Architecture

  • Discord bot

    Node.js, discord.js v14, TypeScript

    Monitors the official channels, turns unstructured announcements into structured events, handles edge cases and message variations, and relays everything in real time.

  • WebSocket server

    Node.js, ws

    Keeps a persistent connection with every client and pushes new events and timer updates instantly, with no manual refresh.

  • Frontend

    React, TypeScript, Tailwind

    State management and conditional rendering for the live cards, the timers and the calculator, on a responsive design system.

  • Deployment

    Vercel

    Fast global delivery, with automated deploys for quick iteration.

The bot, server by server

  • Multi-server architecture

    Modular design

    Slash commands are registered for each server, and each server keeps its own configuration in JSON.

  • Role management

    Rate limits

    Discord allows 250 role creations every 48 hours, so creation is rate-limited, retried with exponential backoff, and skips roles that already exist. Separator, rank and island roles keep the list organised.

  • Real-time link

    WebSockets

    Messages to the site are parsed, errors handled, and the connection re-established automatically.

  • Logging

    Winston

    Every server gets its own log directory, with colour-coded console output and separate error logs, which made debugging other people's setups bearable.

Challenges

Problem

Parsing unstructured data

Official announcements varied in format and content, which made reliable parsing hard.

Solution

Regex-based parsing with fallbacks for each variation, error handling, and an admin alert for edge cases instead of a wrong card.

Problem

Real-time reliability

Every user had to get updates instantly, even during high-traffic events.

Solution

Persistent WebSocket connections, heartbeats and automatic client reconnection, with messages queued while a connection is down.

Problem

Many servers, many setups

Each server had its own configuration and permission structure.

Solution

Per-server configuration files, per-server command registration and permission checks that adapt to each server.

Problem

A fast-growing community

The platform had to keep up with the needs of a rapidly growing player base.

Solution

Feedback channels, quick iterations, and partnerships with guild leaders and content creators for outreach.

Skills I gained

  • React and TypeScript

    Web app architecture

    A maintainable real-time front end with type-safe code throughout.

  • Node.js and WebSockets

    Real-time backend

    Live event delivery with persistent connections, heartbeats and reconnection.

  • Discord bots at scale

    discord.js v14

    Multi-server design, slash commands, event handling and role management within Discord's rate limits.

  • Data transformation

    Parsing and mapping

    Turning unstructured Discord messages into reliable structured events.

  • Algorithm design

    Price calculation

    The logic behind weapon values and upgrade costs.

  • Community and collaboration

    Partnerships

    Working with creators, guild leaders and other bot developers, and knowing when to join forces.

What is Arise Crossover?

A Roblox game by CL Games built around timed content: dungeon gates every 15 minutes, raids, world bosses, and a system of weapons, shadows and relics. Its constantly changing schedule is what made tracking tools so useful.

Where did the event data come from?

From the game's official Discord announcements. My bot read them as they were posted, turned them into structured events and pushed them to the site over WebSockets.

Why WebSockets?

Because a dungeon announcement is only useful for a few minutes. With a persistent connection the server pushes each event the moment it's parsed, so every open page updates instantly without anyone refreshing.

Could other servers use the bot?

Yes. It ran in many servers, each with its own announcement channel, ping roles and configuration, set up with a few admin commands.

Is the project still active?

No. When bigger tools crowded the space, I chose to collaborate instead of compete: I joined the RankBreakers server as one of its developers.

Need something like this?

Tell me what it should do, where it runs and when you need it.

Get in touch