SCANHIVE Community

Run it on your machine

Local Setup

Uses a fake inbox instead of a real mail provider, so you can try registration and invite flows without owning a domain.

1

Get the code and create your environment file

# clone and enter the repo
git clone https://github.com/pentestguy/scanhive-dashboard.git
cd scanhive-dashboard

# create the backend environment file
cp backend/.env.example backend/.env

No secrets to fill in. DATABASE_URL already points at the postgres service, and SECRET_KEY is generated and persisted automatically on first boot.

2

Start the stack with the local mail catcher

Mailpit catches every outgoing email locally so nothing ever reaches a real address.

docker compose --profile mail-testing up -d --build

Verify everything is healthy:

docker compose ps
curl http://localhost:8000/health
→ {"database":"Connected","status":"Healthy"}
i

Don't want email at all? Leave SMTP_HOST blank in backend/.env. Invitations still work — an admin copies the link straight from Settings → Users and shares it manually.

3

First run

Open http://localhost in a browser.

  • Click Create one to register your organization — the account you sign up with becomes its first administrator, and you're signed in immediately.
  • Go to Settings → Users → Invite member to invite a teammate. Each invite creates a link at /accept-invite/:token, valid for 7 days.
  • Read the caught invite email at http://localhost:8025 — no login needed. The invite API response also includes "email_sent": true, so you know instantly it fired.

Troubleshooting

Port 80 is already in use. Something else on your machine is bound to it. Change the frontend's host-side mapping in docker-compose.yml, e.g. "8080:80", then open http://localhost:8080 instead.

Mailpit's inbox stays empty. Confirm the stack was started with --profile mail-testing, and that SMTP_HOST is exactly mailpit — that's the service name on the Compose network, not localhost or host.docker.internal.