June 16, 2025
Looks like I may have shipped too soon... I was not aware of this, but Prisma doesn't allow a Number type, and rather only accepts Int, BigInt, and Decimal. To combat this, I had to make a few adjustments to the db.js code so that it converts to Number respectively.
They really need to fix this... very frustrating.
The project is now ship certified! Since then, I fixed the script tag structure and moved the disableKeys to the window so they're accessible in other files. Also, I noticed a small bug which allowed users to click the enter key and create new lines in the terminal when bash files are running (thanks ship certification video 😉).
These have now been fixed!
There was a bug involving the deletion of presets, where if the preset tag (the name of the preset) was a number, the interaction event would believe it's a cached interaction ID, and caused some issues. I have fixed it by adding a simple t_ string in front which is removed when handling it.
I just finished creating a simple README.md for the website and uploading the LICENSE file.
The website is almost ready! Uploading to GitHub and setting up GitHub Pages :)
(apologies for the laggy screen recording... snipping tool sucks)
It's looking like the website is now mostly done! Still working on modifying each page a little, including meta tags, etc.
Welcome! During this time I've worked on building the whiptail-js library, which is used for this website. I actually have a separate project for it which you can find here: https://summer.hackclub.com/projects/10034
I'm working on building the interactive terminal, and making a few small adjustments to the website layout.
Hello! This project features my personal website, where you can get to learn a bit more about me! I originally created this website a few months ago, featuring a terminal-styled interface, but I'd like to work on it this week! <br>I wanted to make my website user-friendly for the longest time (since the Linux terminal may be confusing for some people), so I've decided on creating a Whiptail-themed interface running in the terminal, which will allow a user to choose between a UI to navigate through the website, or the bash terminal.
whiptail-js has been published to npm and the repository is live! I'm planning on potentially adding more features in the near future. Check it out on npm here: https://www.npmjs.com/package/whiptail-js
Just finished writing to README, being published to npm!
It's been a while! What started as a simple personal website turned into a full-on Whiptail UI class in JavaScript, which mimics the look and feel of a terminal-based dialog. It's now complete with keyboard navigation and touch support.
I'm calling it whiptail-js: a lightweight terminal-style dialog library for the web, which is used through the WhiptailJS class. Currently writing a short README to get it published on npmjs :)
I have added touch support and removed the viewport meta tag to keep the UI consistent across desktop and mobile.
I've made the UI responsive by listening to arrow key clicks! I'll be adding support for mobile next by allowing users to select by clicking the items with touch.
I've been working on a terminal-like GUI interface written w/ HTML + CSS. I used the raspi-config terminal GUI as my starting point because it's a good representation of what I'll want my website to look like.
Working on detecting arrow keys and allowing the user to select an item.
whiptail-js is a lightweight terminal-style dialog library for the web, inspired by the classic Linux whiptail tool, featuring keyboard navigation and touch support for mobile devices. <br> This originally started out as an idea for a personal portfolio website of mine, but I figured why not publish it for others to use!
Finally, I added an optional parameter in the /timer, /alarm, /reminder, and /preset run command to specify a custom channel where the notification will be sent in. By default, leaving out this parameter will send the notification in the same channel the command was run (as it was earlier)
I've been looking over the code a bit and have implemented a /export command, which allows users to export all events at ONCE as an ICS or JSON file.
Also, it came to my attention that the rate limit for active events was only one... that was 100% a mistake and I must've skipped over it as I was testing on the development server. It was fixed to 15 events now!
I've been working on a few bug fixed behind the scenes, including an issue reported on GitHub where Bitwarden users without a full name set weren't being displayed.
I've been working on adding a simple backups tab to view your backed up vaults, as well as extra error handling!
I've mostly finished with rewriting the code, and I worked on designing the home page UI!
Previously, the application was only able to create automatic backups for one single account when logged into Bitwarden Desktop. I've been working on revamping the UI to match the new Bitwarden style, and implementing multi-account backup systems! Also, I've been working on restructuring the code and libraries.
<b><a href="https://bitwarden.com/download/#downloads-desktop">IMPORTANT, PLEASE READ: To use Bitwarden Auto-Backup Manager, you need to make sure the Bitwarden Desktop application is already installed and you're logged into a Bitwarden account.</a></b> <br> Welcome! My project features Bitwarden Auto-Backup Manager, a user-friendly application that creates local, encrypted auto-backups for your Bitwarden vault (without your master password). <br> For the longest time now, Bitwarden (the password manager) has refused to implement backup functionality into their applications, more specifically the cloud-hosted solution. This left us users without an easy way to securely back up our vault data in the event of a server shutdown or other emergency. This Electronjs-based application fixes this very problem by providing reliable, automatic backups you control. <br> The best part? Bitwarden Auto-Backup Manager is powered by the official Bitwarden clients library (found on GitHub) for backup file generation, as well as CryptoJS for PBKDF2 encryption/decryption methods, allowing you to decrypt your backups at any time! Your vault is synced with the help of the Bitwarden Desktop app (for credentials) and the Bitwarden API. <br> I built this application back in July of 2024, but I noticed that it lacks many expected features and nice-to-haves. Also, the code could definitely be much improved, which is why I decided to revamp this project during this Summer!
Here's a quick little demonstration video!
Some of my written libraries (like the PayPal integration) need access to a client in order to send a confirmation message to users. Problem is these libraries are imported in the parent process since running them in each shard would just cause a bunch of conflicts (hence why I've implemented IPC communication from shard -> main process). After overthinking about it for 10 minutes I just figured the simplest solution was to treat shard 0 as a default singleton client and create a message listener in the shards. So that's what I did!
After about an hour of debugging DiscordAPIError[10062]: Unknown interaction bugs, I finally realized my own stupidity. I completely forgot about the Docker container running on my other server that was connected with the same bot token...
Glad to say everything works as it should now haha.
So, I may have gotten a little carried away with writing all the commands and didn't consider the fact that the ShardingManager also means I was spawning multiple instances of my database... working on making an IPC communication method now haha.
Also completely forgot that each user may have their own timezone, so I've been working on adding timezone compatibility for alarms and reminders.
Welcome! My project features a bot for Discord communities to create detailed timers, alarms, and reminders in their Discord server. This project is very special to me because it was actually my very first coding project back in 2020! A project so small also happened to be the project that helped me discover my true passion for coding, and helped me start my journey with Node.js development. For years now, Discord has lacked a native way to create timers, alarms, and reminders in Discord servers (a rather simple feature that many large communities have asked for). This bot is my attempt to finally solve that problem once and for all! <br> I started developing this bot back in middle school, but over time, it became too overwhelming with the constant changes to Discord's API. With factors outside of my reach like rising server costs and busy study nights throughout the week, I eventually decided to shut down the project. Well, my goal this week is to try and bring it back to life, and rebuild the entire thing from the ground up! <br> I'll be honest, being my first ever coding project, Timer Bot was definitely the sloppiest code I've ever written (nowhere near being production-ready). So I figured why not spend this Summer rewriting the entire thing from scratch. I recently picked up some new equipment to help keep my personal projects running (like websites and Immich servers), so this is my attempt of reviving it and giving it another life :) <br> Features: - (⏱️) Create precise timer countdowns with hours, minutes, and seconds. - (⏰) Schedule alerts for specific dates and times in your local time zone. - (📝) Add titles and descriptions to your alarms to be notified of your upcoming events, goals, and more! - (💾) Save timer configurations with custom names for quick access anytime. - (📋) Manage all your running timers, alarms, and reminders in one place. - (🌐) Set your local time zone for accurate alarm scheduling. - (🔔) Choose users or roles to notify when an event ends.
This was widely regarded as a great move by everyone.