Stats

8
Projects
111
Devlogs
256
Votes
7
Ships

Coding Time

All Time: 146h 41m
Today: 0h 0m

Member Since

June 16, 2025

Badges

2
🚢
Maiden Voyage
you shipped your first project! the journey begins...
Ballot Stuffer
vote 100 times.

Projects

8
Dispatch
16 devlogs 19 days ago
echoMail

echoMail

Shipped
25 devlogs 25 days ago
Stockbin

Stockbin

Shipped
18 devlogs about 1 month ago
Bitwarden Duplicate Checker
6 devlogs about 1 month ago
Personal Website
5 devlogs about 2 months ago
whiptail-js
8 devlogs about 2 months ago
Bitwarden Auto-Backup Manager
8 devlogs 3 months ago
Timer Bot

Timer Bot

Shipped
22 devlogs 3 months ago

Activity

Earned sticker
Brian
Brian worked on Dispatch
3h 17m 2 days ago

I've added a few more options, including permanent conversation deletion (rather than moving it to closed).

Update attachment
Earned sticker
Brian
Brian worked on Dispatch
2h 6m 3 days ago

I'm adding API endpoints that can handle both agents and visitors (ie. creating a new message).

Update attachment
Brian
Brian worked on Dispatch
1h 51m 4 days ago

I've been making amazing progress with the backend APIs and the UI! Super excited :D

Update attachment
Earned sticker
Brian
Brian worked on Dispatch
4h 17m 4 days ago

Hello! I apologize for the delay in updates, school has been eating up my time. I've been working more on implementing the chat system for agents.

Update attachment
Earned sticker
Brian
Brian worked on Dispatch
2h 3m 12 days ago

I'm currently working on the inbox system and finishing up Websockets.

Update attachment
Earned sticker
Brian
Brian worked on Dispatch
1h 58m 13 days ago

I'm currently working on Websocket implementation for the inbox page!

Update attachment
Brian
Brian worked on Dispatch
6h 31m 14 days ago

Wow, nearly 6 hours with no devlog! We're making great progress on the dashboard and the page system behind it! I'm trying to take my time on this part since it's the core of the app and I want to make it as intuitive as possible :)

Update attachment
Brian
Brian worked on Dispatch
3h 13m 16 days ago

I've added an account create flow page, implemented adding new workspaces in the API, and I'm now working on the user dashboard! Since I'm still learning Tailwind, I'm really just using this time to experiment with the classes so I can perfect this dashboard :)

Brian
Brian worked on Dispatch
1h 6m 17 days ago

I've done a few updates while at school! I've finally migrated to stored tokens for authentication (with an expiration option). Authentication tokens expire in 7 days, while password reset tokens expire within 15 minutes of non-use (otherwise they can only be used once and are permanently deleted after the request is processed).

Update attachment

All done with password reset implementation on the client-side as well! The next step will be migrating away from JWT and saving sessions in memory OR the database (probably a better idea).

Update attachment

I just finished adding implementation on the backend for password resets! However during this I noticed that JWT may not be the best method for sessions since that means we won't be able to revoke sessions (in the event of a password change, hijack, etc). Gonna work on alternative authentication.

Update attachment

I have finally finished with the sign in page, sign up page, and the password reset page! I'll need to add implementation for the password reset but I'll probably handle this later.

Update attachment
Brian
Brian worked on Dispatch
1h 37m 17 days ago

I'm currently working on the website itself! Adding the login page, reset password page, and signup pages.

Update attachment
Brian
Brian worked on Dispatch
2h 7m 17 days ago

I've been working on structuring all the components, and this is what I came up with:

/client -> The React app for the agent dashboard
/static -> Home page for Dispatch (what we were working on)
/ -> The Express.js server for API + WS handling (also serves the /client build)

Update attachment
Brian
Brian worked on Dispatch
1h 48m 18 days ago

All done with the README.md and the homepage! That took way long than I wanted it to :(

I decided to copy an existing one of my React apps and modify the CSS + Tailwind classes to get the promo page done faster. I'd like to focus my time on developing the back end systems!

Brian
Brian worked on Dispatch
1h 19m 18 days ago

I've been working on installing all the dependencies, structuring the project, and creating the Prisma database models. I'm currently debating if I should create the frontend or backend first...

Update attachment
Brian
Brian created a project
18d ago

Dispatch

A professional real-time live chat platform that lets businesses communicate instantly with website visitors - all through a simple embeddable widget.<br> <b>Note:</b> the homepage was a MODIFIED fork of my existing project, echoMail (hence why I've marked this project as used AI). You can find it <b><a href="https://summer.hackclub.com/projects/12784">here</a></b>.<br> Believe it or not, this has been a project I've been wanting to work on for a few years. I'm tired by all the AI garbage in existing workflow tools, and the expensive seat pricing, so I figured why not make my own!<br> Features: - (💬) Chat with website visitors in real-time. Each team can handle multiple sessions simultaneously. - (👥) Invite multiple members to your team so everyone can respond to chats and keep conversations organized. - (⚡) Add Dispatch to your website with a single JavaScript snippet - set up live chat instantly. - (🖥️) Optimized web interface for desktop devices. - (👤) Open-source under Apache 2.0 license - contribute or view it anytime.

Dispatch
16 devlogs 0 followers

Fixed an issue with the margin on the subheader, and I added a little label to remind the user when their inbox expires!

Update attachment

Finally finished with the implementation and revamped the UI!

I've added compatibility so users can have a custom duration with the API. Currently working on improvements for the mail UI.

Update attachment

I finally finished creating the API documentation! I took some time to make sure it looks clean and made it easy-to-use.

Update attachment

Second iteration is finally ready to ship! Here's a quick demo for anybody interested in how it looks now :)

Update attachment

I managed to upgrade my setup to a good Hetzner server! I also shortened the length of the emails since it previously used UUID (which was super long).

Update attachment

After some final commits, the website is finally ready for production! Updating the server right now.

Update attachment
Brian
Brian worked on echoMail
1h 8m 21 days ago

We're down to the final stretch before the project is ready to ship! I created a MailViewer component to load emails and display them neatly, as long as any additional HTML.

Update attachment

Still working on some minor page changes. I had to fix a bug present in the toast and dialog which caused the opacity animations to work only half the time. This was solved using requestAnimationFrame which basically tells your device hey, i need to display an animation, update the frame and render the initial state before i do it.

Update attachment

I've created one unified session function which will handle all API requests. Decided to do this to clean up the code a bit (lots of repetition...).

Update attachment
Brian
Brian worked on echoMail
2h 53m 21 days ago

Similarly for the toast, I created a dialog component to warn users before continuing with certain danger-zone actions. The component HTML is using a modified version of the code here (bleh Tailwind for putting all the other themes/icons behind a paywall): https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/modal-dialogs

Update attachment

Had to fix a quick bug because index.html wasn't being served automatically for all routes (since this is a React app it's necessary).

Update attachment
Brian
Brian worked on echoMail
1h 45m 22 days ago

I've been working on the overall design for the Mail page, and created a simple Toast component that I can use to display user messages. The component HTML is using a modified version of the code here (thank you Flowbite!): https://flowbite.com/docs/components/toast/

Update attachment
Brian
Brian worked on echoMail
1h 5m 22 days ago

Currently working on designing the mailbox page! API is all done and ready-for-use (ignore the longgggg email, oh and the localhost...)

Update attachment

I've fixed a few bugs and also added session tokens when new disposable mailboxes are created. These are to prevent attackers from viewing your messages or deleting your inbox, because the token is required for access.

Update attachment

I've updated the code to save a message if one is caught! This means the API should now be fully operable and I can create, destroy, and view messages of disposable emails.

Update attachment
Brian
Brian worked on echoMail
1h 14m 23 days ago

I've finished creating the SMTP server, setting up the Prisma database, and included rate limiting for API commands too!

Update attachment

Updated the server to install dependencies and serve the compiled React website if found.

Update attachment

I moved around some of the CSS properties, modified the page glow colors, and added a 404 not found page!

Update attachment

I've moved the custom cursor to its own component and added a pointer checker to remove it for mobile devices!

Update attachment
Anirudh
Anirudh Shipwright gave you feedback
23d ago

echoMail

Nice UI, it's really clean also the cursor looks awesome the buttons also look pretty goood, though if the mail service gets activated ti would be way better

from Anirudh

During this time, I finished working on the README, setup the domain + GitHub Pages, and patched a few bugs (including one which caused the How it Works, Features, and FAQ buttons to not function properly on locations other than /).
<br>
I also fixed the scroll margin top for each section, and create a ScrollToTop component to force the page to start at the top when the location is changed.

I've finished building the website and setting up my React + Vite project! I'm currently working on creating a README.

Brian
Brian worked on echoMail
1h 16m 24 days ago

More progress on the website! I added a features section, finished the navbar, and added a custom cursor :)

Update attachment
Brian
Brian worked on echoMail
1h 41m 25 days ago

I've created a simple page and setup my React Router!

Update attachment

First devlog! I'm learning how to setup Vite + React for the first time, and installing Tailwind CSS :D

Update attachment
Brian
Brian created a project
24d ago

echoMail

A private email service allowing you to create disposable emails for free.<br> Features: - (📧) Create disposable, secure emails instantly - no signup required. - (🔗) Use our free API to integrate disposable emails into your apps/libraries. - (🛡️) Stay anonymous by using disposable emails instead of your real one. - (📂) Your emails are never stored once your session ends. Your privacy is guaranteed. - (🖥️) Optimized web interface for both desktop and mobile devices. - (👤) Open-source under Apache 2.0 license - contribute or view it anytime.<br> This is my first ever project using Vite + React! I'm also attempting to learn how to use Tailwind CSS better.

echoMail
25 devlogs 0 followers Shipped

Looks like the Summer of Making website was down! :(

During that time I finished adding the commands, updated the README, and also added an optional width/height parameter in the config.

Update attachment
Brian
Brian worked on whiptail-js
2h 18m 26 days ago

I'm currently adding support for the existing box options, just like in the original whiptail library.

Update attachment

Just pushed the changes and re-created the Docker container. Stockbin is live and ready to ship!

Update attachment

I've added a search + filtering option for tags to find items easily! I also improved the query parameter formatting since it was previously messy.

Update attachment

Had to push a quick update because it was selecting the front camera on mobile devices...

Update attachment

Using the html5-qrcode library, I added a built-in QR code scanner!

Update attachment

I've added a simple way to view and print a QR code for a specific item.

Update attachment

I've added expiring items to be displayed on the user dashboard.

Update attachment
Brian
Brian worked on Stockbin
1h 4m 28 days ago

I've added an expiration date option for perishable goods, with the option of configuring your time zone in settings. If a time zone isn't configured at the time of creating/updating items with expiration dates, it will attempt to pull their local time zone from their browser and update their account automatically!

Update attachment

I've created some Docker files for easy deployment. I'm ready to ship!

Update attachment

I added a view button to all items and a list of their parameters! I've also finished with the README.

Update attachment

Using the existing creation ejs template, I updated it to support editing an existing ID as well! The backend now accepts both new items and existing ones.

Update attachment

I've been working on improving the code structure and creating the pagination system to view your inventory!

Update attachment

I've been working on adding error handling to the database, main server, and creating simple user middleware.

Update attachment

All done with the settings page! Working on the backend APIs next.

Update attachment

I've finished with creating a simple home-screen and I'm almost done with the settings menu!

Update attachment

I've finished with the backend creation API, setting up the database, and the create menu!

I've finished the backend login API implementation, and added email support with Nodemailer!

Update attachment

I've finished creating a basic login system, and I'm working on the create page next!

Update attachment

Welcome! I'm currently working on implementing a passwordless login system to access the dashboard.

Update attachment
Brian
Brian created a project
33d ago

Stockbin

A smart inventory management system, allowing you to you organize, track, and locate your inventory with ease.

Stockbin
18 devlogs 0 followers Shipped

I added a note for the old version which mentions an issue related to PDK iteration checks. Basically the application was using the bitwarden.com API to find the user PDK iteration instead of checking what region they're in.

This could really only be a problem if the user was using bitwarden.eu and had configured their PDK iteration count in their Bitwarden settings to something that isn't the default value (which is obviously experimental and not recommended by Bitwarden).

Still worth mentioning though in-case users have issues.

Update attachment

I was having issues with the system tray not showing up in the compiled exe installation. Turns out I forgot to include extraResources in my package.json, so it wasn't downloading my icon properly. All fixed now and the system tray is shown!

Update attachment

Just added support for self-hosted Bitwarden servers (as per issue #3 on GitHub). Works great now!

Update attachment

Good evening! Today, I worked on adding a system tray, allowing users to easily view their backup status and manage the app. I also worked on restructuring the restore flow (instead of using a file HTML input, I'm processing the JSON file on the server side).

Update attachment

Just finished creating the README documentation, pushed to GitHub now!

Update attachment

The CLI tool is all done (sorry for laggy demo, Snipping Tool sucks...)!

I've added some advanced features that users can toggle when running the program!

Update attachment

I've been able to build an algorithm that checks matching subdomains and usernames. The next step will be to add apex-level domain checking as an optional, advanced feature!

Update attachment

I'm currently working on restructuring the code since this is a project I worked on a long time ago and it's full of bugs...

Update attachment

Welcome! I'm currently working on creating the user selection for the CLI.

Update attachment
Brian
Brian created a project
41d ago

Bitwarden Duplicate Checker

Welcome! This project is called Bitwarden Duplicate Checker, a user-friendly CLI tool designed to scan for duplicate password entries in your decrypted Bitwarden vault (JSON supported). <br> When moving to Bitwarden (the password manager), many users import passwords from multiple sources (their Apple Passwords, Google Passwords, personal password manager, etc), which can lead to a bunch of duplicate entries in your vault. This tool helps identify those duplicates quickly, and makes it easier to clean up your vault and ensure you don't have any duplicate entries!

Bitwarden Duplicate Checker
6 devlogs 0 followers Shipped

I've created a Prisma database migration, and updated the logo/banner to have a gradient theme.

Update attachment

It's been a week! I've been working on a few bug fixes, including enabling UserInstall (this will allow users to use Timer Bot anywhere). Unfortunately due to Discord API restrictions, however, event reminders need to be sent to the users DMs since the bot won't have permission to send messages in the channel it was run. Regardless, everything works great!

Update attachment

I've created a simple Loki database migration script, and have successfully merged the databases! Timer Bot is now live on version 3.1.0!

Update attachment

I've updated the README, Dockerfile, and docker-compose.yml to include the updated changes and caution users. I'll be working on a helper script to migrate the old Lokijs database easily next!

Update attachment

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.

Update attachment

Working on the Prisma schema.

Update attachment

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!

Update attachment

I'm currently working on merging my LokiJS databases to Prisma, an open source database management library. I'll be using SQLite for my database since it's more commonly used and lightweight.

Update attachment

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.

Update attachment

I just finished creating a simple README.md for the website and uploading the LICENSE file.

Update attachment

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.

Update attachment
Brian
Brian created a project
52d ago

Personal Website

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.

Personal Website
5 devlogs 0 followers Shipped

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

Update attachment

Just finished writing to README, being published to npm!

Update attachment

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 :)

Update attachment

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.

Update attachment
Brian
Brian created a project
54d ago

whiptail-js

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!

whiptail-js
8 devlogs 0 followers Shipped

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)

Update attachment

I've noticed that many users are in different regions across the world, so I added a simple /convert command which will allow you to convert a date and time for a certain region to your local time zone.

Update attachment

Just finished working on an import command allowing users to import multiple events in one go!

Update attachment

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!

Update attachment

It's been a while! I'm currently working on a handful of small improvements, including an Add to Calendar feature allowing you to generate an ICS file for easy Google Calendar / Apple Calendar implementation.

Update attachment
Brian
Brian worked on Timer Bot
3h 27m 2 months ago

I'm working on a few admin commands, including an eval command (which may or may not be a smart idea...)

Update attachment

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.

Update attachment

I've been working on adding a simple backups tab to view your backed up vaults, as well as extra error handling!

Update attachment

I've mostly finished with rewriting the code, and I worked on designing the home page UI!

Update attachment

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.

Update attachment
Brian
Brian created a project
87d ago

Bitwarden Auto-Backup Manager

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!

Bitwarden Auto-Backup Manager
8 devlogs 0 followers Shipped
Brian
Brian worked on Timer Bot
1h 3m 3 months ago

I added a simple command to view the status of the server, and the bot is now live!

Update attachment
Brian
Brian worked on Timer Bot
1h 11m 3 months ago

Making some finishing touches! Ready to move over to Docker.

Update attachment

Working on small imperfections, fixing Docker configurations, added check for environment variables.

Update attachment

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!

Update attachment

Currently working on implementation with the PayPal Business API for tips! My original plan was to make some quick implementation with Ko-Fi and Discord roles, but they take a 5% cut, so I setup a webhook directly to PayPal.

Update attachment
Brian
Brian worked on Timer Bot
1h 32m 3 months ago

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.

Update attachment
Brian
Brian worked on Timer Bot
1h 19m 3 months ago

Working on rebuilding all my libraries and database functions to work thru IPC!

Update attachment
Brian
Brian worked on Timer Bot
4h 36m 3 months ago

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.

Update attachment
Brian
Brian created a project
102d ago

Timer Bot

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.

Timer Bot
22 devlogs 2 followers Shipped
Brian
Brian joined Summer of Making
102d ago

This was widely regarded as a great move by everyone.