30th July 2025
Part of having your own IT Support business is trying to onboard new customers. At Delfino Training, we're pretty good at plastering our website absolutely everywhere. It's on our advertising material, branded hoodies, business cards, email signatures, social media... So of course, we have a form on our website.
We specifically kept our website very clean. It's actually handwritten HTML (unlike how I use Pico CMS on my personal website), which means it's extremely quick and easy to secure. Adding on a form actually added a lot of complexity. I'm also not all that good at PHP but very comfortable with Python. I wanted to keep the handwritten HTML for the benefits it provides, then keep the form logic and data as seperate as possible.
My time with Simplepush goes back many years, having used it for one of the first projects I ever uploaded online, Gmail-Notify, which I started way back in 2013. You'd think I would actually be good at programming by now. How it works is you install an app, get a key which you can push data to, which causes a push notification on your phone. Very handy.
The flow of the data goes HTML form -> basic PHP form -> Python application where the magic happens -> Database & Simplepush.
The HTML form does basic clientside validation (which can be easily bypassed), then sends the data to a basic PHP form. The PHP form then captures the data from the form submission as well as some simple details such as the time/date of the form submission as well as the IP address it was submitted from. All of this data gets sent (through Tailscale) to the Python application which then does proper heavy duty data validation. We look at what IP the submission came from, geolocate the IP and once all the checks are finished and passed, we log the submission in our database and use simplepush to let us know there's a new submission to look at.
This feels a lot better than having to run a Wordpress website (with all of the security concerns), then use plugins to handle the form submissions (with all of the security concerns) and have to run a MySQL database (with all of the security hardware requirement concerns).
If the Python application fails, the website itself will still stay up. We can easily write a script that can submit form submissions and confirm if it was successful or not, then send that result through Simplepush if there's any issues. If Simplepush has any issues... I guess we'd just have to accept that maybe it's been too quiet and remember to check.
When our user successfully submits a form, we do ensure there is a call to action to see some kittens. Getting good IT Support doesn't have to be stressful, especially when there's kittens to look at.
TL;DR: Dan sucks at PHP but is pretty good at Python, so we have a basic PHP form which submits to a Python application on a different device (connected through Tailscale) which then does all the validation and security checks, before submitting the final data to both a sqlite database (which can be monitored through a basic web dashboard) and Simplepush (which provides push notifications).