Documentation

Complete guide to running events with Ribat — registration, teams, check-in, judging, and broadcasts.

Overview

Ribat is an end-to-end hackathon management platform. As an organizer you create events, build registration forms, manage participants, run check-in on the day, set up judging, and send broadcasts — all from one dashboard. Participants get their own portal to form teams, submit projects, and read announcements. Judges get a focused scoring interface.

What Ribat handles

  • — Custom registration forms with waitlists
  • — QR code check-in (email + live scanner)
  • — Team formation with invite codes and skill matchmaking
  • — Project submissions with media uploads
  • — Conflict-free judge assignment and normalized leaderboard
  • — Multi-channel broadcast: in-app, email, Discord, Telegram

Roles & access

A single Ribat account can hold different roles across different events. There is no need to create separate accounts.

RoleURLWhat they do
Organizer/eventsFull event management
Participant/p/[eventId]Team, submission, announcements
Judge/j/[eventId]Score assigned submissions
Public/h/[slug]View event page, register

Sign in

Go to ribat.site/login and enter your email and password. After login, organizers land on /events. Participants and judges follow the direct event link shared by the organizer.

New accounts are created at ribat.site/signup. An email confirmation is required before first login.

Events dashboard

The home screen at /events lists all events you own.

Stats row

Once you have at least one event, four cards appear at the top: Total events, Registrations (summed across all events), Upcoming (future, non-archived), and Live now.

Events grid

Each event card shows the name, status badge, tagline, and start date. Click any card to go to that event's overview page.

Sidebar

The sidebar has two sections. Organizer contains Events and Settings links. Quick actions has a New event button and a link to this documentation. The bottom of the sidebar has your user menu — click it to access Profile, Settings, or Sign out.

Creating an event

Click + New event in the sidebar or on the events page. Enter the event name and click Create. The event is created in Draft status and you land on its settings page.

When your event is ready to accept registrations, toggle Public event page on and set Registration open to on in Settings. To go fully live (visible as "Live" in lists), publish the event from the Settings danger zone.

Event settings

Found at /e/[eventId]/settings.

Event details

Name (required), tagline, description, venue, timezone, and two toggles: Online event (hides venue, shows "Online" on the public page) and Public event page (controls visibility at /h/[slug]).

Tracks

Optional named categories (e.g. "AI", "Sustainability"). Participants can tag their team and submission with a track. Used for filtering in the leaderboard and analytics.

Team rules

Set minimum and maximum team size. Toggle Registration open to open or close the public registration form.

Registration form builder

Add custom fields that appear below the email field on the public registration form. Each field has a label, type, optional placeholder, required toggle, and — for dropdowns — a list of options (one per line).

TypeRenders as
Short textSingle-line text input
Long textMulti-line textarea
DropdownSelect from your defined options
CheckboxBoolean yes/no

Drag the grip handle to reorder fields. Required fields show an asterisk on the public form. Answers are stored per registration and visible in the People table.

People

Found at /e/[eventId]/people. Every person registered for your event.

Table columns

Name/email, Team, Track, Check-in status, Role, Registration status, and Registration date. Use the search box to filter by name, email, or team. Use the status dropdown to filter by Pending / Confirmed / Waitlisted / Cancelled.

Bulk actions

Select rows with the checkboxes, then use the toolbar to Confirm, Send to waitlist, or Export CSV. The CSV includes: name, email, team, track, checked_in, role, status, registered_at.

Adding people directly

Click Add people to import registrants without the public form. Three modes:

  • Single — type one email address.
  • Bulk paste — paste multiple emails separated by newline, comma, or semicolon. A live counter shows how many valid emails were detected.
  • CSV upload — upload a .csv file. The first column must be the email address; a header row is auto-detected and skipped.

Choose an initial status (Confirmed or Pending) before importing. Duplicate emails are skipped automatically.

Teams

Found at /e/[eventId]/teams.

Teams board

All teams shown as cards. Each card shows the team name, status badge (FormingBuildingSubmitted), tagline, member count, invite code, and any skill needs. The lead member is tagged. Click the trash icon to delete a team (requires confirmation).

Creating a team as organizer

Click + Create team, enter a name, and optionally search and assign members from your registrant list. Only registrants with a Ribat account will be added at creation time.

Skill matchmaking

If there are solo participants (no team) and open teams with skill needs, a Match solo participants card appears. Each open team lists its best-matching solo participant by skill overlap. Click Match to open a ranked list and add someone to the team with one click.

Check-in

Found at /e/[eventId]/checkin. A live counter in the header shows checked-in vs total at all times.

QR scanner

Click Start scanner to activate the device camera. Attendees present the QR code from their registration confirmation email. A successful scan shows a "Checked in" toast; scanning the same code again shows "Already checked in".

Offline support: If the device loses connectivity, scans are queued locally and sync automatically when the connection is restored. The queue count is shown above the camera view.

Projection QR code

The large QR code on the left is a deep link for staff devices to jump straight into the scanner. It is not the same code attendees use — attendees scan their personal QR from their confirmation email.

Manual check-in

Search by name or email and check someone in without a QR code. Useful for participants who lost their confirmation email.

Judging

Found at /e/[eventId]/judging. Three parts: criteria, judge management, and leaderboard.

1. Define judging criteria

Add criteria with a name, description, weight, and max score. Judges see each criterion and its description while scoring. Weights determine how much each criterion contributes to the final score.

2. Invite judges

Enter a judge's email and click Invite. They must already have a Ribat account. An invitation email is sent with a link to their judging dashboard.

3. Auto-assign submissions

Enter a round number and how many submissions each judge should review. Click Auto-assign to distribute projects across judges with conflict-free, load-balanced allocation.

Leaderboard

Live results table ranked by normalized score. Normalization computes a z-score per judge before averaging, reducing the effect of harsh or lenient raters. Raw average is shown alongside for reference. Results are grouped by track if tracks are defined.

Broadcast

Found at /e/[eventId]/broadcast. Send announcements to participants across multiple channels at once.

Composing a message

Write your message in the textarea (up to 5,000 characters). A live counter shows how many characters remain. Select one or more channels, then click Send broadcast.

Channels

ChannelWhat it does
In-app announcementReal-time toast + appears in participants' Announcements feed instantly
Email (Resend)Sent to all confirmed registrants via email
Discord webhookPosted to the configured Discord channel
Telegram channelPosted to the @RibatHQ Telegram channel

Broadcast history

All previous broadcasts are listed below the composer with the message body, channel badges, time sent, and recipient count for email sends.

Schedule

Found at /e/[eventId]/schedule. Build the run-of-show for your event.

Each item has a title, start time, and kind (Talk, Workshop, Break, Meal, Ceremony, Hacking, Other). Items are sorted by start time. Participants see the next 5 upcoming items on their home dashboard.

Analytics

Found at /e/[eventId]/analytics.

Four summary cards: Registered, Checked in (count + percentage), Submitted, and Judging done (scored/total + percentage). Two charts: Registrations over time (line chart by day) and Submissions by track (bar chart).

Public event page

Located at ribat.site/h/[slug]. Visible when Public event page is toggled on in Settings.

What's shown

Event name, tagline, description, date/time, venue (or "Online"), track badges, and the upcoming schedule. A View submissions button links to the gallery once projects are submitted.

Registration form

Shown when Registration open is on. The email field is always present. Custom fields defined in the Form Builder appear below it. Required fields are marked with *. On success, the page shows: "You're in — check your email for confirmation and your check-in QR code."

Rate limit: 5 registrations per 60 seconds per IP address.

Gallery

At /h/[slug]/gallery. Public list of submitted projects showing title, summary, tech stack (up to 5 badges), and a demo link where provided.

Participant portal

At ribat.site/p/[eventId]. Four sections via top navigation.

Home

Dashboard with four cards: team status, submission status, announcements preview (3 most recent, unread highlighted), and schedule preview (next 5 items).

Team

If you're on a team, shows team name, status, invite code, member list, and a Looking for field (team lead only). Options if you have no team:

  • Create a team — name (required, max 80 chars), tagline (optional, max 160 chars), optional track.
  • Join via invite code — enter the 6-character code a teammate shares with you.
  • Browse open teams — list of teams accepting new members, with skill needs shown. Join with one click.

Submit

You must be on a team to submit. Fields:

FieldLimitRequired
Project title120 charsYes
One-line summary280 charsNo
Description (Markdown)20,000 charsNo
TrackNo
Repository URLNo
Live demo URLNo
Video URLNo
Tech stackComma-separatedNo
Media / screenshotsImages, MP4, WebMNo

Use Save draft to save progress. Use Submit for judging to enter the judging queue. You can re-submit and edit until the organizer closes submissions.

Announcements

Full feed of organizer broadcasts, newest first (up to 50). New announcements appear instantly as a toast notification and in the feed without a page refresh. Unread items have a highlighted background.

Judge portal

At ribat.site/j/[eventId]. Only accessible to users invited as judges by the organizer.

The left sidebar lists your assigned submissions, each marked complete or in-progress. Select a submission to view the full project details — title, summary, description, links, and tech stack — then score each judging criterion with a slider (0 to max score). Add an optional comment per criterion (up to 1,000 characters). Scores autosave on every change. Progress is shown as X of N submissions scored.

If the organizer has not yet set up judging criteria or assigned submissions, a message prompts you to check back later.

Account settings

At ribat.site/settings. Access from the sidebar or user menu.

Profile card: your email (read-only), full name, and bio. Full name is displayed in the sidebar. Click Save to update.

Change password card: enter a new password (minimum 8 characters) and confirm it. Click Save to update.

Email notifications

All emails are sent from hello@ribat.site on behalf of your event.

Registration confirmation

Trigger: Automatic — sent when someone registers via the public form

Subject: You're registered for [Event Name]

Includes event date/time, venue, and the participant's personal QR code for check-in.

Event reminder

Trigger: Manual — organizer clicks Send 24h reminder or Send 1h reminder on the Overview page

Subject: [Event Name] starts tomorrow / in 1 hour

Same QR code and fallback check-in link. Sent to all confirmed registrants.

Judge invite

Trigger: Automatic — sent when organizer invites a judge from the Judging page

Subject: You're invited to judge [Event Name]

Includes event details and a direct link to the judging dashboard.

Results / thank you

Trigger: Manual — sent by the organizer after judging, with an optional custom message

Subject: Results from [Event Name]

Personalised with the participant's name and submission title.

Limits reference

ItemLimit
Broadcast message5,000 characters
Project title120 characters
Project one-liner summary280 characters
Project description20,000 characters (Markdown supported)
Team name80 characters
Team tagline160 characters
Judge comment per criterion1,000 characters
Tech stack badges in gallery5 shown (more stored, not displayed)
Announcements preview on home3 most recent
Schedule preview on home5 next upcoming
Announcements feed50 most recent
Broadcast history shown50 most recent
Media upload typesImages (any format), MP4, WebM
Registration rate limit5 per 60 seconds per IP
Broadcast rate limit10 per 60 seconds per event
Email batch size100 per API call (auto-chunked)
Minimum password length8 characters