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.
- 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
frontend/- public site and admin UIbackend/- API, admin auth, Discord logindiscord-bot/- optional bot that syncs Discord messages into MongoDB
- Create env files:
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
cp discord-bot/.env.example discord-bot/.env- In
backend/.env, set:
ADMIN_PASSWORDADMIN_SESSION_SECRETDISCORD_CLIENT_IDDISCORD_CLIENT_SECRETGEMINI_API_KEYif you want AI features
- In
frontend/.env, keep this for local use:
VITE_API_BASE_URL=http://localhost:3001- If you want the bot, set these in
discord-bot/.env:
DISCORD_TOKENDISCORD_FAQ_CHANNEL_IDDISCORD_ANNOUNCEMENTS_CHANNEL_IDDISCORD_GENERAL_CHANNEL_ID
- If you want website Discord login, add this redirect URL in the Discord Developer Portal:
http://localhost:3001/api/auth/discord/callback
- Start everything:
make runUseful commands:
make build
make reset-dbLocal Docker now uses docker-compose.local.yml. VPS hosting uses docker-compose.yml.
- 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
This is the quickest way to make the app reachable by IP.
- SSH into the server:
ssh youruser@YOUR_IP- 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 $USERThen log out and SSH back in.
- Clone the repo, copy your env files, and update:
backend/.env->FRONTEND_ORIGINS=http://YOUR_IPbackend/.env-> set realADMIN_PASSWORDandADMIN_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
- Open the firewall:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw enable- Start the app:
docker compose up -d --buildAdd the bot if you want it too:
docker compose --profile bot up -d --build- Check it:
docker compose ps
docker compose logs --tail=100 frontend backend- Open:
http://YOUR_IPhttp://YOUR_IP/health
- 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=productionand updateFRONTEND_ORIGINS,DISCORD_FRONTEND_REDIRECT_ORIGIN, andDISCORD_REDIRECT_URIto your real HTTPS domain.
