Skip to content
Multi-player online quiz bowl (trivia) game.
C# PowerShell Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
GameBackend
QbPackParser
QbQuestionsAPI.UnitTests
QbQuestionsAPI
scripts
.gitignore
LICENSE
README.md

README.md

Extriviaganza

A (big) work in progress.

Introduction

Extriviaganza is a project inspired by Protobowl, an online quizbowl game that I have enjoyed playing in the past. Credit goes to the creators of Protobowl for the game idea but all source code and design choices here are my own work. The goal is to create a high-performance and reliable application using a new combination of tools and frameworks. This will be the largest personal project I've ever done so I'm excited for the challenges ahead.

Project Details

There are 5 different components to this project, with 3 of them being currently worked on. More detailed documentation can be found in each component's README. The components are kept in a single repo for organization purposes but most are actually deployable units on their own.

Scripts

Questions are obtained from packets found at the packet archive, which are in .pdf formats. The first step is to convert .pdf files into .txt files using a Python command line tool provided by PDFMiner (pdf2txt.py). I have created a simple PowerShell script that calls the PDFMiner tool and organizes output files. The other script in the folder is a harness for the console app that parses and loads .txt files containing questions into a database.

QbPackParser Console App

This C# console app may soon be renamed to QbPackParserAndDbLoader, as it functions to parse quizbowl questions into JSON objects like the one below (which represents a single question) and load them into a SQL database using a simple REST API that accepts bulk POST requests. As mentioned above, a PowerShell script calls this console app and uses it to parse and load a single .txt file or a directory of files.

{
    "level": "string",
    "tournament": "string",
    "year": 2019,
    "power": "string",
    "body": "string",
    "answer": "string",
    "notes": "string"
}

QbQuestions REST API

This is a .NET Core REST API supporting CRUD operations that interacts with a SQL Server database storing all quizbowl questions to be used in the game. Entity Framework Core is used as the ORM to map models to the database schema. The main purpose of this API is to add questions to the database and to provide questions to the game backend. This API is containerized with Docker and is currently deployed to Azure App Services.

Game Backend

The game backend will likely be created using SignalR or WebSockets, which will allow multiple players to interact in real-time when playing the game. If using SignalR, then this component will also be built with .NET Core. WebSockets will allow some other language/framework choices.

Game Frontend

The frontend will likely be done using Angular or React.

Updates to this README will be made as I work out more details to this project.

You can’t perform that action at this time.