Debate Case Manager Part 1

Intro

If you look at my GitHub profile you will see this repo called debate-case-manager. It is a python application that is intended to help people manage debate cases. There are a couple of problems: the first is that it is not done; the second problem is that even if it was done, it would suck. To fix this, I am going to reimagine the program entirely and rewrite it so that it is actually useful (At least for me). I am going to document this process in a series of posts. Hopefully by the end I will have a debate case manager that doesn’t suck and I will have learned valuable skills along the way.

What Went Wrong

When I began building the debate-case-manager, I had two goals in mind: learn to build python gui apps with PyQt5 and learn SQL. The problem is that the way I implemented the SQL wasn’t the best choice for a project like this and the way I imagined my debate case manager simply didn’t make sense for a usable application. Instead of being able to directly add and remove text from markdown files the debate case manager simply gave you a few small text boxes to allow you to add and remove text from SQL files. The idea was that python would then take the SQL data and export it to a PDF file. Like I said earlier, this method makes no sense. Without being able to read and directly edit what they have written debaters would be left confused and disorganized. A truly useful debate case manager would simply allow debaters to organize their cases in folders and directly edit markdown files, while also giving them the option to export to PDF. An additional bonus would be cloud syncing and encryption, but those aren’t requirements.

What We’ll Build

I decided that I just want this program to be useful for me, not anyone else. Therefore, I will make the program to be as useful to me as possible, even if that means designing it in a way that is awkward for most people. For me, I prefer to use my computer from the CLI rather than the GUI because I think the GUI is really slow and annoying. If I have to use a GUI, I never want to touch a mouse, ever. Granted, it isn’t always possible to avoid a mouse, I still have one because I use a web browser and I’m not about to install a bunch of random extensions to get vi keybindings or something. With that in mind, I will design the app to be a CLI tool that manages debate cases. I will write it in Rust so that it is BLAZINGLY FAST. Once I’ve built the CLI tool, I might build a GUI version so it is usable for other people, but this is not a promise.

Conclusion

In the next post, I will outline my design for the app and how to use it. I’ll also write step by step instructions to create your own version of the app, although these instructions will be more for me to learn Rust than to help someone else recreate the app.