- Provides a UI for user to edit their quiz questions
- Provides a way for users to start their quiz bank from scratch
- Allows users to import quizzes from csv (or sheets)
- Allows users to download quiz into csv
- Renders questions for users
- Renders questions in a kahoot type quiz game
- Collect results and export them into csv
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
user--csv-->qfe--POST /edit csv-->qbe
qbe--form-->qfe--form-->user
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
gSheet[google sheet]
user--googleSheetURL-->qfe-- POST /edit googleSheetURL-->qbe --> gSheet
gSheet-->qbe--form-->qfe--form-->user
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
user--form-->qfe--form-->qbe
qbe--csv-->user
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
cache[redis]
user --form--> qfe --form--> qbe --"{{key}}: quizObject"--> cache
qbe --"REDIRECT quiz/{{key}}/preview"--> qfe --> user
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
cache[redis]
gSheet[google sheet]
user --> qfe --"GET quiz/{{key}}"-->qbe --"{{key}}"--> cache
cache --quizObject--> qbe
qbe --form--> qfe --form--> user
qbe .-> gSheet
flowchart LR
user((user))
qbe[quizzical backend]
qfe[quizzical frontend]
gSheet[google sheet]
user --> qfe --"POST quiz/{{key}}/{{question}}"-->qbe .-> gSheet
Current status: a static page rendered using go templates
- Comes included with Go standard lib
- UI can be customised easily by embedding css from others
- Minimal UI FE work required
- Currently seems enough to pass data back and forth
- Not able to do cool front end stuff like the games interface in Kahoot
- Perhaps can explore using HTMX or something
- Still basic HTML looking pages, nothing like cool modern pages
Current status: Basic go server, no frameworks
- Lightweight and simple
- Builds and works nicely with render.com
- Nice testing ecosystem
- Lots of code to write
Current status: Google sheet + Redis cache + user submits CSV
- Less infrastructure to take care of
- No one is going to use this anyways
- Data can be easily seen
- Caching helps with latency issues
- Most people are comfortable with sheets
- Communication with google sheets is slow (latency issues v.s. db)
- Not sure how much data can we store in gSheets
- Inconsistencies in data structure read in from gSheets
- Brittle data: 1 wrong format can throw everything off