Giter VIP home page Giter VIP logo

tusky's Introduction

Tusky

Real-time web quiz application

(Work in progress; Tusky certainly isn't ready to scale to 10,000 users)

Specification

Functional

  • Two workflows, dubbed teacher and student. A user is both a student and a teacher, depending on if they have teacher permissions in a room.
  • A user creates a room (and begins the teacher workflow) The room is the core part of user interaction
  • From the room, the teacher can create / edit / administer quizzes
  • Students can enter a teacher's room and take a quiz that is being administered.
  • Teachers can edit a quiz while it is being administered. This is done in a way that is guaranteed not to harm students by both making it clear to the student that the question has changed and barring the teacher from including the particular result in the final grade.
  • The teacher has several views of a quizzes responses
    • A real time, room specific aggregate view
    • A view of a specific student's responses
    • An all-time view of aggregate responses
    • Future: Class (as in a collection of students) based view.

Design

Backend

  • Tech stack: Linux / ... / Postgres / Python (FastAPI)
  • Easy to build using Docker

There are 4 important parts of a FastAPI application:

  • scheams Pydantic schemas
  • models Database models (SQL Alchemy)
  • crud (create / read / update / delete)
  • routes The actual API Endpoints.

Frontend

  • VueJS (With Axios)

Misc

The frontend contains low quality code. I am not a JavaScript developer, and I just needed a minimum-viable-product. Hiring an actual front-end dev would go a long way for this project.

The backend contains maintainable, mostly idiomatic Python.

Exceptions are a work in progress. Initially, an attempt was made to treat errors like values (in a similar vain to Go and Rust). Although forcing the caller of a function to deal with the error made the code very explicit, the code felt extremely un-pythonic.

tusky's People

Contributors

snappervibes avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.