Skip to content

Repository files navigation

EPFL Rocket Team Dashboard

Authentication

This dashboard uses email-only magic link authentication powered by the Resend API.

  • Dashboard browsing remains open for guests.
  • Users can request a magic link by email.
  • The magic link is reusable until it expires.
  • Clicking a valid link sets a signed HTTP-only session cookie.
  • No password is stored in this app.

Environment variables:

  • RESEND_API_KEY
  • RESEND_FROM_EMAIL
  • MAGIC_LINK_TOKEN_SECRET
  • MAGIC_LINK_BASE_URL (for example https://dash.epfl-rocket-team.ch)
  • Optional: MAGIC_LINK_TOKEN_TTL_MINUTES (default 20)
  • Optional: MAGIC_SESSION_TTL_DAYS (default 14)

Development

Install dependencies and run locally:

npm install
npm run dev

Type check:

npm run check

Build and run production server:

npm run build
npm run start

Docker Compose Deployment

This project uses Docker Compose with a single dashboard service.

Files

  • Dockerfile: multi-stage Node image that runs SvelteKit server output
  • docker-compose.yml: runs the dashboard service
  • .env.example: template for required variables

Local Run

  1. Create your env file:
cp .env.example .env
  1. Generate and set a secure token secret in .env:
openssl rand -hex 32
  1. Start the service:
docker compose up -d --build

Open http://localhost:4500.

Stop:

docker compose down

Production Notes

  • Set MAGIC_LINK_BASE_URL to your public HTTPS dashboard URL.
  • Keep MAGIC_LINK_TOKEN_SECRET stable across restarts.
  • Because session cookies are configured as secure, run behind HTTPS in production.

About

EPFL Rocket Team - Internal dashboard for managing users

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages