
Webserver
I recently finished what I would consider to be my biggest programming-related project yet! A friend of my family reached out and asked if I would be interested in building a server-based calendar app for their company. I essentially had zero experience with serverside programming before this, so I was pretty worried, but I decided to take on the project anyways just to see what would happen.
Luckily my father had some past experience with building websites, so I wasn't going in completely blind. I followed some tutorials that he suggested about hosting a webserver using the Flask python library. I realized pretty quickly that I was going to be working with a lot of different languages - the project structure involves the usual HTML, CSS, and JavaScript for webpages, but also SQL for data storage and Python to tie everything together so the server can run. The tutorials also introduced me to Jinja, which is something called a "templating engine." I don't fully understand what it is, but it had a few very important uses within the project. It lets you insert blocks of webpage code from other files, which is a handy way to save space when you have multiple pages with the same things (eg. code for a navigation bar). Jinja also allows for more connection between the Python and webpage files, which is crucial when you're working with data that is stored on the server. I learned some new things about coding a frontend as well: Bootstrap is a CSS library that makes it a lot easier to make webpages look presentable (at the cost of feeling somewhat like cheating). The final product included an interactable calendar made in JavaScript that stored its data on the server using an SQL database, all hosted by an online server provider which made it accessible from anywhere on the internet.
My understanding of all these tools is still very surface-level (there was a lot of copy-and-pasting from example code in order to get things to work), but I was pretty happy with the final result and it felt nice knowing that what I was making was going to have a use in the real world. I might also return to Flask in the future to experiment for some projects of my own!