Just finished building my custom Slack bot for the Stardance Challenge!
Tech Stack: Node.js, @slack/bolt, Axios, and Render for hosting.
Features: Added 6 slash commands (/jer-ping, /jer-help, /jer-catfact, /jer-roll, /jer-coinflip, /jer-joke). It uses external APIs for cat facts and jokes.
Challenges: Faced an invalid_auth error on Render due to a typo in the environment variables. Fixed it by correcting the tokens. Got a 404 error during submission because the GitHub repo was private. Made it public to fix it.
Result: The bot is now live 24/7 on Render and responds to commands instantly. GitHub repo is public and the project is submitted!
added a few more things. prev or next day buttons so i can jump between images without the date picker every time. also keyboard navigation with left or right arrows.
added a share button that copies the url with the date so sending someone a link shows the same image. took a bit to figure out URL SearchParams for reading the date back.
also added my contact details (github, email, instagram) to the footer and readme.
had a timezone bug with prev or next , they were jumping 2 days back because toISOString() uses UTC and im in IST. fixed it with a local date helper and noon time.
tried a download button but CORS blocked it. removed it instead of shipping something broken.
its completed now
I worked on the css today, I decided to go with a black background and purple accents since the site’s theme is space. I went with color names such as mediumpurple and gold for the accents instead of hex codes, easier to remember.
I spent a lot of time working on the starfield, in the end, i decide to use sevral radial gradients to simulate stars and a twinkle animation.
used google fonts for the space vibe ,orbitron for titles and space grotesk for body.
made it responsive too, buttons stack on mobile. also had to add maxheight and objectfit ,contain on the image because some nasa pics are larg and would break the layout
I have started the mission today. Vite setup was complicated because I have never used anything other than raw HTML, but I managed to configure it according to the documentation. I chose the vanilla plus javascript option.
The .env file configuration was confusing and took me forever to complete. First, I tried putting the API key in main.js, but then I realized that it has to be a .env file that has to have VITE_ at the beginning of the variable name, or it will not work. It took me around 20 minutes to realize that I was putting the file in the wrong directory, so it always said undefined. api works now. just console logged the data to check
Many new WebOS 2 apps have been added. With its brush, eraser, line, rectangle, circle, fill, spray, undo/redo, and the ability to scale the canvas in accordance with the window, the paint program was the largest and took me the longest. A browser with quick site connections, a clock with a timer, stopwatch, and world time, a music player with built-in tracks and device upload, and weather that determines your exact position and displays your city have all been included. These days, you can set any video as your backdrop, and it loads automatically. This is known as live wallpaper
The annoying parts were mostly the paint canvas (it kept drawing in a tiny corner), the music (kept playing after closing the window), and the live wallpaper (video loaded but didn’t show up because of some CSS display issue). Weather also kept hanging on the geolocation prompt so I switched to a different API and added a fallback. Also did window snapping, macOS style window buttons, 8 direction resize, and cleaned up some old stuff like the lightning logo. Still have some issues with drawings vanishing on resize and volume being fake, but overall way better than version 1.
Worked on JerOS today. Calculator history moved to sidebar, now shows full expression. Fixed duplicate heading bug. File manager now shows actual files when clicking folders. Terminal prompt switches between green and dark gray based on theme. Desktop icons bigger with better text visibility. System tray functional network, battery, volume all working. Taskbar right click menu opens task manager and settings properly. Added wallpaper upload, keyboard shortcuts, font size options. Light mode fully fixed. Feels more polished now.
finally added calculator and file manager today.
calculator works properly now ,basic operations and grid layout fixed. file manager shows folders and files, clicking them triggers notifications.
also fixed some other stuff ,taskbar apps scroll when there are too many, added resize handle on windows so you can drag them bigger or smaller, dark mode works properly now windows, taskbar, menus, and text all switch.
terminal prompt is at the top now, drawing canvas pointer is fixed, right-click on desktop gives wallpaper options and refresh.
getting closer to being done.
windows are working now . draggable, minimizable, maximizable, closable. taskbar shows running apps. terminal has commands (help, clear, date, time, neofetch, echo). notes save to localStorage. drawing pad works with colors and clear. settings has dark mode toggle.
made the ui look better too glass effect, new wallpapers, smoother animations.
this is just the beginning. more features coming.
just started building my web os.
so far i’ve got the desktop, taskbar, start menu, clock, and 3 wallpapers that save to localStorage. icons are from font awesome, and i added Alt+M shortcut and double-click to open the menu.
still a long way to go. planning to add windows, terminal, notes, drawing pad, settings, and a file manager next.
this is just the beginning. more features coming.
#Devlog 5 alright, final devlog for this project.
if you saw my earlier devlogs, you might notice the site looks completely different now. yeah, i basically rewrote everything from scratch.
stardance reviewer pointed out that the earlier version looked too generic / ai-generated, so i took that feedback seriously. i scrapped all the boxes, gradients, and dark-mode stuff. replaced it with a clean, flat design — no boxes, no shadows, just text, borders, and a simple layout. also added some custom js features like a random quote generator and a click counter.
this is the version that got approved by the reviewer (they called it “awesome project” ). so if you’re checking out the live site, this is what you’ll see now.
thanks to whoever rates this. feedback is always welcome. 🙌
Devlog #4 I eventually made time to address the minor issues that were bothering me. spent some time adjusting the light mode; I had to go through CSS to update the skill tags that were previously practically invisible in light mode. Furthermore, it included a floating back-to-top button that only appears when you scroll down a little (far more helpful than I anticipated, lol). Now that the certificate zoom feature is operational, clicking on any certificate causes it to appear large on the screen. Moreover, it made the entire thing responsive so that it no longer appears strange on phones. I’m generally pleased with the outcome. feels much more refined than it did before. I’ll deploy it somewhere and ship it shortly. ✌️
Devlog 3—finally some progress lol. * * So today I kind of wrapped up the portfolio thing. Added my certificates finally—got 4 of them up (WHO long covid, UNICEF AI & Chat, and another one on digital health). It took me a while to get the screenshots cropped properly, but they’re there now. also added a zoom thingy for the certs—click on any certificate and it pops up big on the screen. Honestly, I spent way too much time trying to get the lightbox modal working, but it’s fine now, I guess. Light mode was giving me a headache, though. Everything looked great in dark mode, but the moment I switched to light mode The certificate texts just vanished into thin air lmao. had to mess around with CSS for a bit but finally fixed it. Anyways, I pushed everything to GitHub. Tomorrow I’ll probably deploy it somewhere and ship it on Stardance.
Today was a productive day! I completed the core functionality of my personal site and made it more interactive.
Fixed CSS Animation Bug:
Corrected the fade-in effect for the cards. Now the page loads smoothly with a nice fadeIn animation.
Custom Modal Box (No Browser Alert!):
Built a beautiful dark-themed modal pop-up using HTML, CSS, and JavaScript.
Now when you click on About, Projects, or Contact, a stylish box opens with detailed information instead of a boring alert.
Clickable Contact Links:
Added live links to my GitHub and Email directly on the Contact card.
GitHub: @jermybiju
Email: [email protected]
Dynamic Year in Footer:
Used JavaScript to automatically update the copyright year. No more manual updates!
Example: © 2026 → changes automatically.
Day 1 - Personal Site Progress 🚀 What I did today:Set up VS Code, Git, and Hackatime for time tracking.Created the full HTML structure with 3 main sections: About Me, My Projects, and Contact.Styled the site with a dark theme, custom gradient colors, and smooth hover effects on the cards.Added a fade-in animation so the cards appear smoothly when the page loads.Added a new “My Interests” section (Space, Robotics, Web Dev, Gaming) to make it more personal.Fixed a CSS warning (background-clip) to keep the code clean.Pushed all the code to GitHub (Public repository). What I will do tomorrow (Next Steps): Deploy the website to Vercel to make it live on the internet.Add a live digital clock using JavaScript.Submit (Ship) the project on Stardance after deployment!Screenshot attached: My personal site homepage with all sections visible.
“From Practice to Project” Finally touched the actual project file for WildfireWatch today 😅 Up until now I’d just been messing around in the day2, day3… practice files — today’s the first time I added something to the real main.py.
Right now it’s pretty simple — it prints the project name, confirms it’s going to run on NASA FIRMS fire data, and a “Status: Starting…” line so I can track where the program is in its startup flow.
Basic stuff, but it felt like a real shift going from practice files to actual project code. Next up — trying to pull live data from the NASA FIRMS API, then figuring out how to parse it so I can start on the distance calculation from a user’s location.