An exploration of persistent storage in R Shiny via a SQLite database.
Last semester I had a hard time managing my internship applications, and these troubles discouraged me from applying to internships at all (not good). I realised that maybe if I created my own mini application to address this, I would actually apply to internships (as I should be doing) and stay on top of the status of each.
There are four tabs:
- Create entries: enter information about each internship you've applied for
- Track Updates: track the internships you've heard back from
- Filter Entries: use SQL commands to filter or alter tables (in case you make a mistake when entering information about an application). Ideally not something I will keep in updated versions of the app; just here temporarily for convenience.
- To Check Out: record and track internships that you plan to apply to (entries can be removed once they have been addressed)
- Resources: statistics (that can be filtered by application cycle) and resources to guide you during the application cycle
- Potentially transfer to streamlit and Python over RShiny and R. I assume this will fix the weird line break issues, and possibly helps w editability and customizability
- Make everything less manual and more editable:
- Combine the Create Entries and Track Updates tables - it'd be useful if you didn't have to manually add an ID in. I think it'd be cool to make it so that there is a dropdown where you can select, say, "rejected" or "first round interview"
- Make entries actually editable after they are confirmed, because at the moment I have to delete the entry and redo it if I want to make changes. If I want to add more notes for example, I want to actually be able to edit it directly.
- Consider doing this using the
rhandsontable
package - would require changing a good amount of things (https://jrowen.github.io/rhandsontable/#Shiny) - There is also an
editable = TRUE
parameter inDT::datatable
; if this works it'd be great but so far I have not seen success.
- Consider doing this using the
- Figure out how to make Enter count as a line break. For now, I've had to use
<br/>
which is obviously not ideal. - Ultimate aim is to be able to actually publish this as an app that more people can use. This would require user authentication for sure. I will also have to figure out how to create/initialize a new database for each new user.
- Remove the Edit Entries tab once datatables are editable. It isn't user-friendly (was only really for me to edit the tables since I couldn't do so directly) and it makes it far too easy to simply delete important info by mistake.
- IDEALLY, if everything above is resolved, it would be very cool to deploy this so that anyone can create their own database. Right now my SQLite database is stored locally and there isn'y any way to just go to a link and access my stuff, and if someone were to run the app it would only show my stuff. User authentication would be nice. But not too fancy bc for me personally that's a turn off, keep it simple. Just a name, email, password and such.