This project is a quick db-backend-frontend project for organizing maths conferences. It handles past events, speakers, conference scripts, participants, and prospects for future conferences and their status, so the organizing team can effiently manage potential speakers and the status of making the event actually happen.
- Manage past events with speakers and participants
- Manage prospective future speakers
- Download past event scripts if any
- Seed finished
- Backend GET routes
- Simple frontend for listing tables
- Add / update / delete participant (no photo)
- Add / update / delete event with script file management
- Seed prospects
- Add / update / delete prospects
- Add photos to participants
Frontend beautification:
- Select color background and font
- Make a start page where we can select one of the 4 pages
- Make a prettier table for the Participants, still with the ability to edit stuff and add new people
- Beautify add form
- Beautify edit form
- Ability to upload a picture from the add form
- Make a prettier Speakers page where each speaker is a bubble and the title is the name, pseudonym and laboratory expand when hovering?
- update picture to speakers
- seed with all the pictures.
- Uploaded pictures should maybe go in the data with a name that's parsable by the seed.py instead of a uuid so the data folder is movable as-is to a new server
- Make a prettier Events page where each event is a bubble with a picture
- On click, each event is a separate page with more information, prettier download buttons for the script files, upload button for the script file, edit button
- Prettier edit form
- Seeding of photos previously uploaded
- "nuit du" instead of juste la date
- prettify Add Event in its own modal, that also creates a speaker, with a picture
- Display events for participants, display participants for event
- Add participants UX during event creation
- Simple but themed prospects table where all the information is visible at once
- Add prospect should have its own button + modal
- sort speakers and participants by name, (done) events by number
-
Add authentication
-
Remove hardcoded DB URL
-
Clean repo (venv, node_modules)
-
Manage passwords/users via env vars (not docker-compose)
-
Input files (participants, photos, etc.) not in repo; uploaded once at server setup
-
Server setup
- The sorting of speakers by last name with a single name field is good for now but brittle: split speaker name into first_name and last_name would be better
- Title centering on Speakers/Events pages?
- Beautify form button and Edit/delete buttons
- In order to merge the two build photo index functions in seed.py, we should switch to all normalized names first-name_last-name for photos on disk first by sweeping the photos-trombi at the beginning of seed.py. Then we can treat photo names as normalized correctly afterwards
- static image background when I have it
- switch back speaker routes to speakers plural for consistency
- display latex in story
- display and download all script files
- add possibility of creating a new event by uploading a standardized .zip with all the info following a documented format, to avoid having to spend time clicking on the interface
- downloadable story and notes in markdown for easier editing later
- common table design between Participants and Prospects table in a separate file
Inputs:
- This repo (git clone)
- The data folder given as project input (not in the repo):
data/
├── descentes/
│ ├── 01-xxx/
│ │ ├── info # text file with event metadata
│ │ └── script/
│ │ ├── script-final.pdf
│ │ └── script-final.tex
│ └── 02-yyy/
│ └── ...
│
├── photos-trombi/
│ ├── prenom-nom.jpg
│ ├── prenom-nom.png
│ └── ...
│
├── orateurs-oratrices-potentiels.csv
└── participants-participantes.csv
Depending on whether you want to run it in dev mode locally or in prod mode with a proxy managing routing, use either:
- docker-compose-dev.yml
- docker-compose-prod.yml
- Build containers :
docker compose -f docker-compose-[ENV].yml up -d --build - Reset database if needed :
docker compose exec backend python reset_db.py - Seed database :
docker compose exec backend python seed.py - Go to
localhost:8000/api/helloand/orlocalhost:8000/api/db-checkto test the API
- DB: PostgreSQL 15
- Backend:
- API server: FastAPI
- ASGI server: Uvcorn
- ORM: SQLAlchemy
- Frontend:
- dev server/bundler: Vite 5
- UI framework: React 18
- Orchestration: docker with docker compose