Some not-so-brief history...

One of the things I have written over the past couple of years has been my job application tracker. If you have ever had the misfortune of being unemployed, a situation with which far too many software developers and software engineers are familiar, you know your state requires keeping track of where you apply to each week, and be able to supply that information upon demand, if they don't already require you to submit it with your weekly filing. Traditionally, I have either entered this into a plain text file, or in recent years, a spreadsheet, often up on Google. And when I was laid off from Monkey Knife Fight (yes, that really was the company name) when Bally Interactive shut us down, this is what I started doing. A typical spreadsheet, with a frozen header row, and columns for the date, a 1/0 column for tracking if it was still active (e.g. I had not gotten the usual "we decided not to move forward" email), a column for notes, one for the company name, and one to try to link to the email confirmation I would get when applying. And after a couple of weeks, I quickly added a column for saving the link to the specific job posting, and as things dragged out, later the position title. Those last two things I found to be helpful for when I was applying to a second or subsequent position at the same company.. But the spreadsheet grew more and more tedious to deal with.  While you can type Ctrl-F to find a company by its name, that takes you away from the bottom of the spreadsheet, you have to continue to search for the later occurrences, and then you finally have to skip to the last row of the spreadsheet. Then there are the tricks you have to learn, such as Ctrl-Shift-V to paste text without formatting, or as I just learned out of curiosity for scrolling to the last row, Ctrl-DownArrow to go to where you want to enter the next record. All in all, it was about as pleasant as having a burr stuck inside the back of your shirt, and not being able to take the shirt off. So I did what any developer/engineer does... I customized things by writing a simple little program

What I created initially was far from ideal, but I was after quick and dirty... and got very quick and very dirty. I had a custom django-admin command  command to read the Google spreadsheet to load it into the database. Then, I was rendering the page with the list of job applications with all the data from the database in the table which used  DataTables to look pretty. And while it had an Edit/View functionality, the form it displayed was very crude to say the least. But to add records, I had to use the Django Admin interfaces. I even had to run the browser on the development VM rather than on my laptop which I use to connect to the world. Then there was the fact that all the JavaScript/CSS packages which I was using were committed to the repository. That was Version 0.1 if you will. I did not even think to add a version to it, I just wanted something better than the spreadsheet.

I didn't mess with things much over the holidays, but once the first of the year hit, I was starting to deal with entering more applications. After a half dozen times of having to enter new records through the admin interface, and having to use a browser running on the development VM, which can be sluggish at times, I once again opened the IDE to start coding. 
And so things sat for over a year, with a copy running on my internal docker server. And lots of applications were entered over that time. No more having to remember to do Ctrl-Alt-V when copying and pasting from a job post on LinkedIn or similar sites, no having to go into the Django admin interface to add entries, and no having to run the browser locally.

Where we are today, with me "doing a thing"...

As it exists in both my internal production and external demo sites, there is no authentication on entering/editing the data. Since the only data which matters is that which is accessed by my internal site, and the demo site is regularly refreshed from that, it was not a "huge deal", and was just a matter of convenience. But, for a real application, this would be done behind a login, and the records would have a user ID associated with them. So, the first step was to add a really crude login page. I actually have that working now, but it needs major styling work. Right now, I am going through the Django Admin pages, looking at their Light/Dark theming, how they do their styling, and more.  As a result, I adjusted my Webpack configuration and moved my static assets to follow the same pattern that the packages do. And I am totally reworking the theming, as well as the master page template as a result. And once that is done, I will work on the controllers to use the logged in user ID in the database and controllers. And once that is done, I will tweak the database cloning script to modify my login record to remove things like admin privileges, reset the password, and make the account accessible to folks viewing the site. Add a change to the homepage to tell folks to "log in" as me, with the demo password, and I will have something really nice to show off.

In the meantime, bed, since it is now almost 2:30 in the morning...