stardance has been extended another month! the new deadline is october 31 :)

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

Tennis-Legend

@Tennis-Legend

Joined September 3rd, 2026

  • 14Devlogs
  • 5Projects
  • 5Ships
  • 22Votes
Ship

I made a Python Slack bot with three commands: /clock, /remindme, and /whatstheweather. The hardest part was getting each command to work properly and making sure the bot could respond to users through DMs. I also had to work out how to keep the bot running when my laptop isn’t on, which meant setting it up on a cloud host.

I’m most proud of having three different useful commands working together in one bot. I also added error handling for things like missing commands, invalid reminder times and weather requests that don’t work.

To test it, use /clock, /remindme 1 test reminder, or /whatstheweather Sydney in Slack. The bot will respond through DMs, which can be found under Activities.

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

53m 28s logged

Devlog 2

Once /clock was working, I started adding the other two commands. I wanted each command to do something different so the bot would meet the requirement of having at least three functions rather than having three commands that were basically the same.

The first one I added was /remindme. The command takes a number of minutes followed by some text, for example /remindme 5 Finish my homework. I used split(maxsplit=1) so that the first part can be treated as the time while everything after it stays as the reminder message.

For the actual delay, I used Python’s threading.Timer. This lets the bot continue running normally while it waits for the reminder. When the timer finishes, the bot sends a DM to the person who created the reminder.

I then added /weather. Instead of using an API that needs an account/API key, I used the free wttr.in service. The city is taken directly from what the user types after the command and the response is sent back to the person as a DM.

After adding both commands, I tested different inputs, including leaving out the city for the weather command and entering something that wasn’t a number for the reminder. This helped me add some basic messages for incorrect input instead of letting the program crash.

0
0
20
Open comments for this post

51m 49s logged

Devlog 1

I started by getting the basic Slack Bolt app running through Socket Mode. I chose Socket Mode because I wanted to be able to test the bot directly from my computer without having to set up a public server first.

For my first actual command, I made /clock. I wanted this to be slightly more useful than just displaying the computer’s time, so I used Slack’s user information to find the timezone of whoever ran the command. This means the command doesn’t need a timezone written into the code and should work for different users.

I had to use users_info to get the user’s profile and then use the tz value from it. After getting the timezone, Python’s zoneinfo module can convert the current time to the correct local time.

I tested the command in Slack and checked that the time it returned matched my timezone.

The ‘hard’ part was getting the bot to actually give the time, but it turns out it was giving it to me after all, I was just looking in the wrong spot 😆.

0
0
17
Open comments for this post

17m 3s logged

Just wanted to address some feedback a shipwright gave me: some of the buttons not working on the site is an INTENTIONAL choice.

Let me explain: me and two other friends made an original site where we ‘advertised’ our games as one bundle, but I have only included the pages that I made entirely myself. So the only two pages that should load is the Leaderboard page (https://tennislegend.pythonanywhere.com/leaderboard) and the Original i guess ‘general’ CyberMatch page (https://tennislegend.pythonanywhere.cm/cybermatch). I decided to keep the buttons, and make them seem like clickable by having the cursor change to a pointer, yet lead nowhere, as you can see in an examples pictured below. Every other functionality like entering a value in the leaderboard, the Easter Eggs (like the cat), etc, should work perfectly.

0
0
13
Ship Changes requested

I made a leaderboard system for CyberMatch using HTML, CSS, Python and Flask. The project allows users to submit their details and time, then view the results on a separate leaderboard page that can be sorted in different ways. Along the way I added a dedicated leaderboard layout, a dark theme, hover effects, responsive design for phones and laptops, and links between the original page and the leaderboard page.

One of the bigger challenges was getting the sorting system to work properly. At one point names with capital letters would sort differently to names with lowercase letters, which caused some entries to appear in the wrong order. I also had to make sure users could only enter appropriate values into each field so that invalid data wouldn’t affect the leaderboard. After making a few backend changes, the sorting became much more reliable and the input fields behaved as expected.

I’m most proud of how the leaderboard ended up looking. The dark theme, green accents and rank highlighting make it feel much better than a plain table. When hovering over an entry, the row changes to a grey background and the text colour changes depending on position, with gold for first, silver for second, bronze for third and green for everyone else.

To see the project, click the “Try project” button or go to https://cybermatch.onrender.com/leaderboard. To test it out, try adding a few entries with different names and times, then use the sorting options to make sure everything updates correctly. It is also worth testing on both a laptop and a phone, as the layout was adjusted to work properly on different screen sizes.

  • 3 devlogs
  • 7h
Try project → See source code →
Open comments for this post

3h 2m 52s logged

Since exams picked up, I got the chance to add to this throughout the last few weeks, but didn’t get a chance to write a devlog as consistently as I wanted to, so I have decided to make one big one with each devlog that I would’ve liked to make below:

Devlog 3 - 9/9/2026

I mainly worked on the CSS for the Leaderboard page. I gave it a dark theme, added a box around the table and added hover effects for each entry. When hovering over a row, the background changes from black to grey, and the text becomes gold for first place, silver for second, bronze for third and green for all other positions. One thing I had to watch out for was making sure the silver text was still easy to read against the grey background. I also made sure that the new styling didn’t interfere with any of the styling on the Original page.

Devlog 4 - 10/9/2026 to 14/9/2026

I finished off most of the Leaderboard page. I added a background, more borders and boxes, and adjusted the styling so it matched the Original page more closely. I also improved the sorting system by stopping users from entering numbers into the name fields and letters into the time field. Another thing I fixed was the sorting of names, because capital letters were being sorted differently to lowercase ones, which meant names were sometimes appearing in the wrong order. After adjusting the backend code, names would sort properly regardless of how they were entered. I also added a link to the Leaderboard page from the Original page, removed old links that were no longer used, and made sure both pages displayed properly on phones as well as laptops.

0
0
30
Ship

I made a personal website using HTML and CSS with four main sections: Home, About, Skills and Hobbies. The site uses a blue, red and black colour scheme, animated elements and interactive flip cards to give it a retro feel while still keeping it simple to navigate.

The biggest challenge was getting the flip cards, animations and layout to work consistently across different screen sizes. It took a bit of tweaking to make sure everything looked right on mobile, tablet and desktop without breaking the design.

I’m most proud of how the overall theme came together. The colour scheme, floating icons, animations and flip cards all work together to make the site feel more engaging.

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

1h 25m 12s logged

This website is my personal site built using HTML and CSS. It includes four main sections: Home, About, Skills and Hobbies. The Skills and Hobbies sections use flip cards to make the content a bit more interactive, while animations and a few floating icons help bring the site to life whilst keeping it sort of minimalistic.

I’m particularly happy with how the overall design came together. The blue, red and black colour scheme gives the site a clean look, the flip cards make the content more engaging, and the animations add some movement without being distracting.

0
0
11
Open comments for this post

50m 19s logged

Since my first ship got feedback that it used too much AI in the styling, I went back and changed some of the CSS so that it was mostly mine and less AI.
I have made it much simpler using only my knowledge, and have managed to learn some stuff and keep it still looking good.

0
0
10
Ship

StellarOS is my web‑based desktop environment built with plain HTML, CSS and JavaScript. It has draggable windows, a start menu, a taskbar, built‑in apps and a full theme system. Everything runs client‑side, so it loads instantly and feels like a mini operating system inside the browser. I added multiple apps including a Terminal, Notes, Calculator, Browser and Settings, plus four themes you can switch between. There are keyboard shortcuts, a Konami Code easter egg and even draggable desktop icons to make it feel more like a real OS.

The main challenge was definitely the browser app. Most major sites like Google, Yahoo and Bing block embedding inside an iframe, so they refused to load in the little browser window. I had to work around that by using sites that actually allow iframe embedding, like Wikipedia. Once I figured out how iframe permissions work, the browser became a proper working app instead of just a blank box.

I’m proud of how smooth the window system feels. Dragging, resizing, minimising and switching between windows all works without any weird glitches. The theme system also turned out nicer than I expected, and the whole OS stays lightweight and fast even with multiple windows open.

To test StellarOS, just download the folder, move it somewhere safe, open index.html and start clicking around. Double‑click icons to open apps, use the Start menu to launch things, drag windows around and try switching themes.

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

2h 13m 45s logged

StellarOS ended up becoming a full little web desktop that runs completely in the browser. I kept everything in plain HTML, CSS and JavaScript, and somehow it all came together into a proper OS‑style setup with draggable windows, a start menu, a taskbar and a bunch of built‑in apps. The window manager does most of the heavy lifting, handling movement, resizing and keeping the active window on top. The app manager just launches whatever you click, whether it’s an icon or something from the start menu. Themes were fun to add too, and switching between Light, Dark, Starry Night and Sunset feels surprisingly smooth.

Each app has its own little personality. The Terminal has basic commands and a tiny secret message. Notes is just a simple textarea for quick writing. The Calculator handles basic maths without any drama. The Browser loads pages through an iframe, and Settings lets you switch themes. I also added keyboard shortcuts because it makes the whole thing feel more like a real OS, and the Konami Code easter egg is just there for fun.

Testing it is pretty straightforward. You download the folder, move it somewhere safe, open index.html and start clicking around. Windows drag smoothly, apps open instantly, themes switch without delay and shortcuts work right away. It’s meant to feel simple, clean and a bit playful; just a lightweight web OS you can have fun with.

0
0
14
Ship

Quick Tab is a simple, lightweight new tab page built with plain HTML, CSS and JavaScript. It includes a live clock and date, a Google search bar, quick links, a small todo list and a weather section. Everything runs client‑side, which keeps it fast and easy to use. The main challenge was keeping the layout clean while fitting in the core features without making the page feel crowded.

To test the project, download the folder, move it somewhere safe so it doesn’t get deleted, open the index.html file and set it as your new tab page in your browser. Once it’s set, the page should load instantly and all features should work straight away.

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

1h 6m 50s logged

Quick Tab is made to be a clean and fast new tab page without any extra clutter. The structure stays simple by using plain HTML, CSS and JavaScript, which keeps everything easy to read and adjust.

The page includes a live clock and date, a Google search bar, quick links, a small todo list saved locally and a weather section. Everything runs on the client side so it loads instantly and stays lightweight.

Setup is simple. Download the folder, move it somewhere safe so it doesn’t get deleted, open the index.html file and set it as your new tab page in your browser. No installation or configuration is needed.

The aim is to keep the experience minimal, clean and straightforward for anyone who wants a simple new tab layout.

0
0
27
Open comments for this post

3h 10m 30s logged

Took me ages to combine the CSS into one file without any errors, but I finally did it :) [took like 1 1/2 hrs btw 😭]
Oh, I added a sort function to it, as seen below in the image, and when you hover over an entry it changes the background colour to a bit more grey. Also the leaderboard is finally a table! :)

0
0
32
Open comments for this post

1h 4m logged

I started the Leaderboard’s back- and front-end, with the footer from my Original page added to the Leaderboard page. I also added a first and last name function, with placeholder text in the boxes too.
Looking a bit dull right now, but will improve soon enough!

0
0
9

Followers

Loading…