An overview of my software projects
This is just a small list of projects that I have worked on. For more, head over to my GitHub profile.
My main website (this one), is a static website that is generated using Hugo and deployed on Cloudflare Pages. This is my third iteration, and I am probably going to keep this as the final version.
I have separated my blog to an independent WordPress instance. Using Markdown is good for things that I want to have full control over. However, in order to write consistently, I wanted something more accessible. WordPress was the final choice because I can write from my phone as well.
I have self-hosted a few more things:
- A Gitea instance for managing my source code independently of GitHub and GitLab.
- (Deprecated: Gitea now has Gitea Actions)
A Woodpecker CI CI/CD server that integrates with my Gitea instance for really fast testing and iterations.
Several Projects for V Language
I joined the V Language Discord Server in 2020. I have been fairly active as a contributor and have been involved with the following projects:
- The performant XML module written in pure V in encoding.xml.
- Reworking the
- Completely overhauling the
- Adding a pure V implementation of BigInteger in
- Contributed to the context-free grammar for V by modifying the tree-sitter-parser grammar.
I intend to continue contributing to V for the forseeable future. I will update my list of contributions accordingly.
It is inspired by Mustache but is more stable, robust and predictable. It is a fast template engine for V with a simple syntax.
I wrote a blog post detailing why I created whisker on my blog: Announcing whisker.
A phonetic play on the phrase “clone all”. It is a CLI tool written in V to clone all repositories belonging to you (or the authenticated user).
It was borne out of the need to backup all my repositories from GitHub and Gitea. I wanted to have a local copy of all my repositories, and I wanted to automate the process. This was one of my first useful projects in V.
Another notable fact is that this repository received a source code contribution to replace credential management using environment variables with a configuration file in TOML. The UX improved a lot and I am thankful to the contributor A1ex-N for that.
Confluence = Contact + Influence
I divided this project into two parts: the front-end and the back-end.
The Contact Form Front-End
It is a static website hosted on Cloudflare pages at contact.hungrybluedev.in.
There are several features that I added to this page:
- Support for dark mode and light mode.
- Responsive design for mobile and desktop.
- Spam prevention using hCaptcha.
The NodeJS Back-End
I deployed my contact form backend on Render’s free tier. It makes use of the following technologies:
- TypeScript - I prefer having static typing in my projects. Helps to prevent a lot of errors from reaching production.
- Node.js - Render supports Node.js and I wanted to try it out.
- Express - I liked the simplicity of the framework and the ease-of-use when adding custom middleware.
- MongoDB - My application needs to keep track of who sent what message, and when it was sent. Additionally, people who are banned should not be able to send me messages.
- hCaptcha - Server-side validation of the client response.
- Additional honeypot field - Just for peace of mind.
- Sendinblue - For relaying the message to me (and the sender) via email.