Skip to content

Aleks-Tacconi/HackBridge

Repository files navigation

HackBridge

./assets/1.png

About

HackBridge is a hackathon website builder and manager for university events. It uses Discord announcements as the source of truth so organisers can keep the website, FAQs, sponsors, schedules, and team tools in sync with less manual work.

Features

  • public hackathon website with configurable homepage sections
  • admin editor with live preview
  • Discord-powered FAQ, sponsor, and announcement updates
  • automatic schedule changes from Discord messages
  • public Discord sign-in for attendees
  • team formation and social profiles
  • admin AI chat for updating site content
  • Devpost import, sponsor enrichment, and gallery uploads
  • optional Discord bot and MongoDB sync layer

Project parts

  • frontend/ - public site and admin UI
  • backend/ - API, admin auth, Discord login
  • discord-bot/ - optional bot that syncs Discord messages into MongoDB

Quick start

  1. Create env files:
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
cp discord-bot/.env.example discord-bot/.env
  1. In backend/.env, set:
  • ADMIN_PASSWORD
  • ADMIN_SESSION_SECRET
  • DISCORD_CLIENT_ID
  • DISCORD_CLIENT_SECRET
  • GEMINI_API_KEY if you want AI features
  1. In frontend/.env, keep this for local use:
VITE_API_BASE_URL=http://localhost:3001
  1. If you want the bot, set these in discord-bot/.env:
  • DISCORD_TOKEN
  • DISCORD_FAQ_CHANNEL_ID
  • DISCORD_ANNOUNCEMENTS_CHANNEL_ID
  • DISCORD_GENERAL_CHANNEL_ID
  1. If you want website Discord login, add this redirect URL in the Discord Developer Portal:
http://localhost:3001/api/auth/discord/callback
  1. Start everything:
make run

Useful commands:

make build
make reset-db

Local Docker now uses docker-compose.local.yml. VPS hosting uses docker-compose.yml.

Open the app

  • public site: http://localhost:5173/
  • teams: http://localhost:5173/teams
  • social: http://localhost:5173/social
  • admin login: http://localhost:5173/admin/login
  • admin uses ADMIN_PASSWORD

Ubuntu VPS hosting

This is the quickest way to make the app reachable by IP.

  1. SSH into the server:
ssh youruser@YOUR_IP
  1. Install tools:
sudo apt update
sudo apt install -y git docker.io docker-compose-plugin ufw
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Then log out and SSH back in.

  1. Clone the repo, copy your env files, and update:
  • backend/.env -> FRONTEND_ORIGINS=http://YOUR_IP
  • backend/.env -> set real ADMIN_PASSWORD and ADMIN_SESSION_SECRET
  • if using Discord login, set DISCORD_FRONTEND_REDIRECT_ORIGIN=http://YOUR_IP
  • if using Discord login, set DISCORD_REDIRECT_URI=http://YOUR_IP/api/auth/discord/callback
  1. Open the firewall:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw enable
  1. Start the app:
docker compose up -d --build

Add the bot if you want it too:

docker compose --profile bot up -d --build
  1. Check it:
docker compose ps
docker compose logs --tail=100 frontend backend
  1. Open:
  • http://YOUR_IP
  • http://YOUR_IP/health

Production note

  • Bare IP + HTTP is fine for simple public access.
  • For admin auth and Discord login, a domain + HTTPS is better.
  • For a proper production setup, use NODE_ENV=production and update FRONTEND_ORIGINS, DISCORD_FRONTEND_REDIRECT_ORIGIN, and DISCORD_REDIRECT_URI to your real HTTPS domain.

About

Submission to the SotonHack 2026 hackathon - Agentic hackathon website builder and manager that maintains autonomous state consistency, using Discord announcements as the database source of truth.

Resources

Stars

Watchers

Forks

Contributors