Designing the application
The following is my personal and slightly erratic take on how to go about designing a tiny app with only a few options for user interaction. I don’t follow a standard template for design, rather I seem to have encountered so many througout my career that I’ve made my own amalgamation of quite a few.
Initial though process
The first steps are just ruminations and internal visualisations in my own head of what I would like a given piece of software to do. Many ideas are turned over, some practical (it needs to accept all maners of characters and respect a line break), others are more impractical (any chance of linking it up with the coffee machine in order to have the coffee ready by the time I reach the kitchen).
Once I’ve mentally played with the ideas for a few days I do prefer to put an old fashioned pencil to paper and start to write my ideas down. This is the phase where my eraser is in frequent use, and I constantly tell myself that I should do this on the computer, but I have yet to find a piece of software that is as flexible as three sheets of pristinly white A4 paper and a really sharp pencil. You can doodle with a pencil while trying to find the perfect way to expres your thoughts, you can’t really do that with a keyboard.
Actual pen(cil) to paper
For this project I ended up with a list with two columns. The first details the user interaction, the second what is then happening in the program in order to make it happen. These were then divided into a version 1 and a version 2+, so basic functionality is in one list, and more elaborate functions are kept separate. All of this is before thinking about any sort of interface, for now the whole project is a thing run either in jupyter notebook or directly from the command line.
Python Side | Postgres Side |
---|---|
v.1 | v.1 |
connect to ChatGPT connect to the database create question -send to ChatGPT -capture and send to db get answer back -capture as variable -send to db |
store questions store answers capture user data generate a Q&A ID based on the userID |
v.2 | v.2 |
web front end -login option -pick either new question or archive share QAs with other users |
identify QA by user option to share QA with other named user(s)/public |