You are browsing as a guest. Sign up (or log in) to start making projects!

harshit

@harshit

Joined June 1st, 2026

  • 3Devlogs
  • 3Projects
  • 2Ships
  • 15Votes
Ship

The combination of glassmorphism and the mouse spotlight was the most difficult aspect. Although each element on its own is simple — involving a backdrop-filter with blur() and a radial-gradient that follows the cursor — putting them together led to actual bugs.

I had to deal with z-index issues; after I added the ambient particle canvas behind all the other elements, it ended up on the same stacking layer as the spotlight glow and so it was silently overwriting it. I therefore carefully went through the stacking context to work out that the particles should be placed behind the spotlight, not next to it.
The way the cursor glow appeared was robotic; in the first version I had simply set the CSS position directly in response to every mousemove event, which caused the light to jump instantly to the cursor rather than seeming natural. I solved this by using a requestAnimationFrame loop that gradually moves the glow towards the cursor position each frame rather than teleporting it — it’s a small improvement, but that’s what makes the difference between a tech demo and something that actually feels smooth.
Mobile performance: backdrops with a blur effect are costly and the mousemove event doesn’t trigger on touch screens at all, so I needed to specifically detect (hover: hover) and reduce the blur radius and the number of particles for phones rather than assuming that desktop behaviour should apply in all cases.
It wasn’t merely a matter of swapping colours. For every glass effect—such as spotlight colour, glow intensity, and blur opacity—separate light and dark values had to be defined using CSS custom properties, or else the effect would appear washed out in one them and too strong in the other.
Animations and the switching of single-page sections don’t replay automatically. As the sections are simply switched on and off using display: none/active, the scroll-triggered fade-in animations (using IntersectionObserver) are set to fire only once per element by default, so I had to manually reset and re-observe the elements each time a navigation tab was clicked if the cards were to animate in again rather than just show up.

Nothing by itself was difficult—rather, it was the fact that visual polish fails to appear in areas you only realize when you actually test the design across different themes, devices, and real interactions, not just by looking at a static screenshot.

Try project → See source code →
Ship Changes requested

I built Vozo Bot, a custom Slack bot using Node.js, Slack Bolt, and Socket Mode. The bot responds to custom slash commands and is hosted on Hack Club Nest so it stays online 24/7.

Features:

  • /vozo-ping — Check bot latency
  • /vozo-help — View available commands
  • /vozo-joke — Get a random joke
  • /vozo-catfact — Get a random cat fact

The most challenging part was setting up the Slack app, configuring the tokens securely, connecting the bot with Socket Mode, and deploying it to Nest. I also had to learn how to use GitHub, SSH into a Linux server, and run the bot as a systemd service.

I’m proud that the bot is fully deployed and continues running even when my laptop is turned off.

To test the project, use any of the slash commands:
/vozo-ping
/vozo-help
/vozo-joke
/vozo-catfact

Source code is available on GitHub, and the bot is hosted on Hack Club Nest.

Try project → See source code →
Open comments for this post

21m 36s logged

Building Vozo Bot

Today I created my first Slack bot called Vozo Bot using Node.js and Slack Bolt.

What I worked on:

  • Set up a Slack App and enabled Socket Mode

  • Created custom slash commands:

    • /vozo-ping
    • /vozo-help
    • /vozo-joke
    • /vozo-catfact
  • Tested all commands in Slack

  • Uploaded the project to GitHub

  • Applied for and received a Nest container

  • Deployed the bot to Nest and configured it with systemd so it runs 24/7

Next steps:

  • Add more features and improve responses
  • Continue testing and polishing the bot
0
0
6

Followers

Loading…