StormBatch is a simple local MVP for bulk-registering people from a spreadsheet into one or more Livestorm sessions.
- Frontend: Vue 3 + Vite
- Backend: FastAPI
- Spreadsheet parsing: pandas + openpyxl
- Livestorm HTTP client: httpx
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reloadUse python -m uvicorn instead of plain uvicorn so the server runs with the active virtualenv Python.
cd frontend
npm install
npm run devOpen http://localhost:5173.
- The app accepts
.xlsxand.csvuploads and re-reads the file when you submit, so there is no database or server-side persistence. - The frontend polls
/api/job-statusevery 2.5 seconds after the jobs are created. - Job polling uses Livestorm's documented endpoints:
GET /v1/jobs/{id}andGET /v1/jobs/{id}/tasks. - Email is the only mandatory field for Livestorm API registrations. Extra mapped fields are optional prefill data; attendees can complete other required event fields later before joining.
StormBatch can run as one Docker Web Service. The Docker image builds the Vue app, copies the static files into the runtime image, and serves both the frontend and FastAPI API from one process.
Use the included render.yaml Blueprint or create a Render Web Service manually with:
Dockerfile path: ./Dockerfile
Health check path: /healthRender provides the PORT environment variable automatically.