|
14351
|
YTS by @omarelasfar_31510 | Stardance
|
omarelasfar_31510
|
0
|
31.63
|
0
|
[]
|
[{"post_id": 79017, "ts": "202 [{"post_id": 79017, "ts": "2026-10-12T11:31:46Z", "hours": 22.7389, "text": "I’m working on the mechanism by which I can insert, connect, and retrieve data from several tables in the fewest number of queries."}, {"post_id": 10250, "ts": "2026-06-16T21:46:30Z", "hours": 8.8892, "text": "I’m making a YouTube scraper that can access videos in any channel and gather data about these videos for further analyzing"}]...
|
Title: YTS by @omarelasfar_31510 | Stardance
Devl Title: YTS by @omarelasfar_31510 | Stardance
Devlogs:
I’m making a YouTube scraper that can access videos in any channel and gather data about these videos for further analyzing
I’m working on the mechanism by which I can insert, connect, and retrieve data from several tables in the fewest number of queries....
|
1793537578.5287628
|
1794142378.5287628
|
|
14352
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792889479.7923887
|
1793753479.7923887
|
|
14353
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792882463.2268736
|
1793746463.2268736
|
|
14354
|
Webux by @jabong | Stardance
|
jabong
|
0
|
0.73
|
0
|
[]
|
[{"post_id": 5809, "ts": "2026 [{"post_id": 5809, "ts": "2026-06-09T18:56:13Z", "hours": 0.7258, "text": "started the thingy"}]...
|
Title: Webux by @jabong | Stardance
Devlogs:
star Title: Webux by @jabong | Stardance
Devlogs:
started the thingy...
|
1793141671.3461554
|
1793746471.3461554
|
|
14355
|
My awesome macropad! by @shreyayadav | Stardance
|
shreyayadav
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shreyayadav | Star Title: My awesome macropad! by @shreyayadav | Stardance...
|
1792932860.2884731
|
1793796860.2884731
|
|
14356
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792947253.7646804
|
1793811253.7646804
|
|
14357
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792943559.5843105
|
1793807559.5843105
|
|
14358
|
My very own WebOS by @Caidence | Stardance
|
Caidence
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Caidence | Stardance
|
1793361411.1145213
|
1793966211.1145213
|
|
14359
|
AuraCare CRM by @AuraZod | Stardance
|
AuraZod
|
1
|
55.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T13:45:13Z", "hours": 55.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built AuraCare CRM — a fast, lightweight healthcare and clinic management system. Most hospital software is clunky, slow, and painful to look at, so I wanted to make something modern that actually feels good to use for daily clinic rounds. It’s split into an Express.js REST API hosted on a Linux VPS behind a Cloudflare tunnel, a React 18 + Vite dashboard with Tailwind CSS and Radix UI primitives, and packaged as an Electron desktop app for clinic workstations. It covers the complete clinical flow across 6 roles (Super Admin, Admin, Doctor, Receptionist, Pharmacy, and Diagnostics) — from patient check-in and live queues to digital prescriptions, lab orders, inventory management, and PDF invoices. The most challenging part was session management and granular RBAC. In real clinics, doctors get interrupted constantly; standard 15-minute JWT timeouts were kicking them out mid-consultation. I built a 30-day extended session architecture with rolling token renewals and inactivity tracking, while ensuring cross-department data (like an Rx immediately updating pharmacy stock and billing) flows seamlessly. I’m most proud of the UI responsiveness — it switches views instantly and feels smooth, even with dark mode and live charts. To test it out: Open the live web app: https://auracare-gamma.vercel.app On the login page, click the “Sandbox Demo Login” button — you can pick any role (Doctor, Receptionist, Admin, etc.) to jump straight in without signing up! Windows desktop installer is also available in the GitHub releases: https://github.com/AuraZod/AuraCare-CRM/releases", "repo": "https://github.com/AuraZod/AuraCare-CRM", "demo": "https://auracare-gamma.vercel.app"}]...
|
[{"post_id": 66544, "ts": "202 [{"post_id": 66544, "ts": "2026-09-12T12:00:34Z", "hours": 22.8506, "text": "I had medical issues and couldn’t post more devlogs moving forward, neither I was able to finish the entire project to be supported in multiple platforms, but i’ve still made the web and desktop version of this project…….."}, {"post_id": 8123, "ts": "2026-06-13T15:48:23Z", "hours": 6.5056, "text": "Devlog 9 finally done. literally coding until my fingers are numb. completed the entire crm frontend and the desktop wrapper is fully functional. no more mock gaps or missing files. here is the breakdown of what happened: frontend modules (crmfrontend): finished the pharmacy inventory page (pharmacyinventory.tsx). it handles full batch tracking, manufacturing/expiry dates, cost/selling price margins, gst calculation (5%, 12%, 18%), and hsn codes. also threw in reorder level alerts when stock drops below threshold. built out pharmacybilling.tsx from scratch. doctors write rx, pharmacist pulls it, builds the bill with automatic gst and prints receipt. made pharmacycustomers.tsx to track loyalty points, lifetime spend, and outstanding balances. has a quick reminder trigger. wrote pharmacyprescriptions.tsx to handle the incoming doctor prescription queues. pharmacists can do complete or partial dispensing if we are short on stock. added pharmacypurchase.tsx for restock orders and supplier inventory ingestion. built pharmacyreports.tsx for tracking medicine usage patterns and monthly sales dashboards. all routes are auth-locked in app.tsx using role-based routing policies (doctor, pharmacist, receptionist, admin, super-admin). styling is built using vanilla tailwind classes alongside shadcn UI components like dialogs, tables, and dropdown menus for layout consistency. data fetching is managed using tanstack react-query to cache active lists and handles state mutators for adding/editing items. toast notifications via sonner trigger real-time updates for pharmacy sales completions and out of stock warnings. integrated standard currency formatters to display indian rupee values properly in all tables. desktop wrapper (auracaredesktop): spun up electron setup. main.js manages window dimensions (1400x900 min, resizable) and ipc communication channels. preload.js sets up contextbridge and ipcrenderer exposing window controls safely without opening nodeintegration. connection strategy: in dev, package.json uses concurrently and wait-on to launch the frontend dev server on port 8080 and then point the electron browser window loadurl to localhost:8080. for prod, we run electron-builder which bundles our assets. npm build script builds the react frontend, copies dist to desktop/frontend-dist, and main.js loads it locally via loadfile. configured cross-platform packaging target options for windows (nsis installer, portable executables), mac (dmg, zip), and linux (appimage, deb) in package.json. added native OS window hooks for minimized, maximized, and close events so client-side buttons in the custom titlebar work. added shell handler for opening external web links in native browser instead of electron window. assets folder holds local icons configured for specific OS packing rules (ico, icns, png). how it connects: the desktop shell is just a container running our react client, which talks to the node/express backend via api client calls to VITE_API_URL. ipc communication checks the app version and process platform. window actions (minimize, maximize, close) are wired back to the ipcMain handler. if backend is unreachable, the API services default to local mock fallback data so the app does not freeze. auth tokens are saved in localstorage inside the web view which carries over across app launches. took way too long to align the dist copy paths in the build script. had a dumb bug where frontend-dist was missing and loading a blank screen, but fixed the cp target path. compilation is completely green now. going to collapse."}, {"post_id": 7129, "ts": "2026-06-11T22:13:59Z", "hours": 9.46, "text": "Devlog 8 coded for 10 hours straight. brain is absolutely fried but got most of the core pages done. the lopsided progress is finally balancing out. frontend is starting to talk to the backend client. made some serious headway: user-management.tsx: admin controls, user activity graphs, and session tracking. shows average response times and role badges. billing-finance.tsx: invoice lists, revenue breakdowns (upi, cash, card), stats, and mock trends. pharmacy/pharmacy-customers.tsx: mapped patients to pharmacy profiles. tracked loyalty points and total amount spent, plus warning badges for outstanding dues. app.tsx: wired up all the protected routes and role permissions. admins, doctors, pharmacists all see different stuff now. what’s left: pharmacy-inventory.tsx is half-baked. literally stopped at line 65 state declaration because i needed a break. need to add medicine batch dialogs, GST calculations, and stock levels. missing pharmacy-prescriptions.tsx, pharmacy-purchase.tsx, and pharmacy-reports.tsx files completely. they’re imported in app.tsx but the files don’t exist on disk yet. build will crash if i try to compile right now. actual integrations testing with the express backend. right now it falls back to mock data if the local server isn’t running. need to build the electron wrapper for desktop and expo for mobile later. everything is coming together. the app finally feels like a real crm instead of just a bunch of empty files. going to sleep now. Project Screenshot The attached screenshot is ai generated as the final devlog will contain demo link to try website yourselves."}, {"post_id": 6673, "ts": "2026-06-11T05:40:01Z", "hours": 4.5169, "text": "Devlog 7 Worked a lot more on it and progress so far : Chart Checkbox Collapsible Command Context menu Dialog Drawer Dropdown Menu Form Hover Card Input otp Input Label Menubar Navigation Menu Pagination Popover Progress Radio Group Resizable Scroll Area Select Separator Sheet Sidebar, Skeleton, Slider, Sonnar, Switch, Table Tabs, Text Area, Toast, Toaster, Toggle-Group, toggle, Tooltip Use toast, Roles, auth context, use mobile, use toasts, use debounce Api, utils, Analytics, appointments billing, billing finances, compliance security."}, {"post_id": 6172, "ts": "2026-06-10T11:41:12Z", "hours": 1.4475, "text": "Devlog 6 So far so good, made a whole lot of progress : Overall Dashboard Layout completed Header, Sidebar, Accordion created Alert Dialog, Alerts & Aspect ratio completed. Avatar, Badge, Breadcrumbs Buttons Calendar Cards Carousel. around 20% frontend work finished."}, {"post_id": 6138, "ts": "2026-06-10T10:13:18Z", "hours": 1.2061, "text": "Devlog 5 Progress so far : Finished Doctor Dashboard Pharmacy Dashboard Receptionist Dashboard SuperAdmin Dashboard (In progress)"}, {"post_id": 6115, "ts": "2026-06-10T09:00:37Z", "hours": 1.4219, "text": "Devlog 4 Okay so progress so far : Built the login system flow. Defined the different variations of dashboard based on role. Admin Dashboard menu. Controls for each role seperately divided. Functionalities : added search patients functionality. Appointments list design and function. Modules overview Quick Actions Revenue Charts StatsCard Upcoming reminders Admin Dashboard Diagnostic Dashboard Doctor Dashboard For now everything is just plain frontend that contains mock data and no actual working. will take more work to finish this."}, {"post_id": 6091, "ts": "2026-06-10T07:36:38Z", "hours": 1.64, "text": "Devlog 3 Looking so far so good. worked for about 1 & half hour now and it’s looking promising. worked on login page and menu design and style (will improve more with theme customization). Worked on role management and how each role will be handled differently. Found out bugs here and there, will fix after i’m done with creating the dashboard menu and style. It still needs about 10-15hrs of code based on the speed i’m working with (not sure if it’s less or more). Debugging and implementing new features will also require time."}, {"post_id": 6059, "ts": "2026-06-10T05:44:12Z", "hours": 4.1136, "text": "Devlog 2 Been Working for whole night with backend. I have made quite a lot of progress, so far so good. Almost everything that backend will need to operate is done and what’s left of it is to actually test it out. Now after a few more checks i’ll get ahead to code the actual frontend and the design of site. After the frontend is entirely created, i’ll test out all the backend functions and see if those works or not & if needed I might’ve to work on backend too as I go along this road……….."}, {"post_id": 5758, "ts": "2026-06-09T17:36:17Z", "hours": 1.6689, "text": "Devlog 1 Needed a crm that actually works for hospitals without the usual bloat. decided to split it into clean micro-services: node/express backend, react front, electron for desktop, and expo for mobile. most of the core structure is there but progress is pretty lopsided. spent a bit of time spinning up the backend and database routes, barely touched the actual frontend pages. focus is to get all the backend api endpoints and role validations completely solid before moving on to the ui. cross-device communication is just going to be rest calls to the centralized node server."}]...
|
Title: AuraCare CRM by @AuraZod | Stardance
Devlo Title: AuraCare CRM by @AuraZod | Stardance
Devlogs:
Devlog 1 Needed a crm that actually works for hospitals without the usual bloat. decided to split it into clean micro-services: node/express backend, react front, electron for desktop, and expo for mobile. most of the core structure is there but progress is pretty lopsided. spent a bit of time spinning up the backend and database routes, barely touched the actual frontend pages. focus is to get all the backend api endpoints and role validations completely solid before moving on to the ui. cross-device communication is just going to be rest calls to the centralized node server.
Devlog 2 Been Working for whole night with backend. I have made quite a lot of progress, so far so good. Almost everything that backend will need to operate is done and what’s left of it is to actually test it out. Now after a few more checks i’ll get ahead to code the actual frontend and the design of site. After the frontend is entirely created, i’ll test out all the backend functions and see if those works or not & if needed I might’ve to work on backend too as I go along this road………..
Devlog 3 Looking so far so good. worked for about 1 & half hour now and it’s looking promising. worked on login page and menu design and style (will improve more with theme customization). Worked on role management and how each role will be handled differently. Found out bugs here and there, will fix after i’m done with creating the dashboard menu and style. It still needs about 10-15hrs of code based on the speed i’m working with (not sure if it’s less or more). Debugging and implementing new features will also require time.
Devlog 4 Okay so progress so far : Built the login system flow. Defined the different variations of dashboard based on role. Admin Dashboard menu. Controls for each role seperately divided. Functionalities : added search patients functionality. Appointments list design and function. Modules overview Quick Actions Revenue Charts StatsCard Upcoming reminders Admin Dashboard Diagnostic Dashboard Doctor Dashboard For now everything is just plain frontend that contains mock data and no actual working. will take more work to finish this.
Devlog 5 Progress so far : Finished Doctor Dashboard Pharmacy Dashboard Receptionist Dashboard SuperAdmin Dashboard (In progress)
Devlog 6 So far so good, made a whole lot of progress : Overall Dashboard Layout completed Header, Sidebar, Accordion created Alert Dialog, Alerts & Aspect ratio completed. Avatar, Badge, Breadcrumbs Buttons Calendar Cards Carousel. around 20% frontend work finished.
Devlog 7 Worked a lot more on it and progress so far : Chart Checkbox Collapsible Command Context menu Dialog Drawer Dropdown Menu Form Hover Card Input otp Input Label Menubar Navigation Menu Pagination Popover Progress Radio Group Resizable Scroll Area Select Separator Sheet Sidebar, Skeleton, Slider, Sonnar, Switch, Table Tabs, Text Area, Toast, Toaster, Toggle-Group, toggle, Tooltip Use toast, Roles, auth context, use mobile, use toasts, use debounce Api, utils, Analytics, appointments billing, billing finances, compliance security.
Devlog 8 coded for 10 hours straight. brain is absolutely fried but got most of the core pages done. the lopsided progress is finally balancing out. frontend is starting to talk to the backend client. made some serious headway: user-management.tsx: admin controls, user activity graphs, and session tracking. shows average response times and role badges. billing-finance.tsx: invoice lists, revenue breakdowns (upi, cash, card), stats, and mock trends. pharmacy/pharmacy-customers.tsx: mapped patients to pharmacy profiles. tracked loyalty points and total amount spent, plus warning badges for outstanding dues. app.tsx: wired up all the protected routes and role permissions. admins, doctors, pharmacists all see different stuff now. what’s left: pharmacy-inventory.tsx is half-baked. literally stopped at line 65 state declaration because i needed a break. need to add medicine batch dialogs, GST calculations, and stock levels. missing pharmacy-prescriptions.tsx, pharmacy-purchase.tsx, and pharmacy-reports.tsx files completely. they’re imported in app.tsx but the files don’t exist on disk yet. build will crash if i try to compile right now. actual integrations testing with the express backend. right now it falls back to mock data if the local server isn’t running. need to build the electron wrapper for desktop and expo for mobile later. everything is coming together. the app finally feels like a real crm instead of just a bunch of empty files. going to sleep now. Project Screenshot The attached screenshot is ai generated as the final devlog will contain demo link to try website yourselves.
Devlog 9 finally done. literally coding until my fingers are numb. completed the entire crm frontend and the desktop wrapper is fully functional. no more mock gaps or missing files. here is the breakdown of what happened: frontend modules (crmfrontend): finished the pharmacy inventory page (pharmacyinventory.tsx). it handles full batch tracking, manufacturing/expiry dates, cost/selling price margins, gst calculation (5%, 12%, 18%), and hsn codes. also threw in reorder level alerts when stock drops below threshold. built out pharmacybilling.tsx from scratch. doctors write rx, pharmacist pulls it, builds the bill with automatic gst and prints receipt. made pharmacycustomers.tsx to track loyalty points, lifetime spend, and outstanding balances. has a quick reminder trigger. wrote pharmacyprescriptions.tsx to handle the incoming doctor prescription queues. pharmacists can do complete or partial dispensing if we are short on stock. added pharmacypurchase.tsx for restock orders and supplier inventory ingestion. built pharmacyreports.tsx for tracking medicine usage patterns and monthly sales dashboards. all routes are auth-locked in app.tsx using role-based routing policies (doctor, pharmacist, receptionist, admin, super-admin). styling is built using vanilla tailwind classes alongside shadcn UI components like dialogs, tables, and dropdown menus for layout consistency. data fetching is managed using tanstack react-query to cache active lists and handles state mutators for adding/editing items. toast notifications via sonner trigger real-time updates for pharmacy sales completions and out of stock warnings. integrated standard currency formatters to display indian rupee values properly in all tables. desktop wrapper (auracaredesktop): spun up electron setup. main.js manages window dimensions (1400x900 min, resizable) and ipc communication channels. preload.js sets up contextbridge and ipcrenderer exposing window controls safely without opening nodeintegration. connection strategy: in dev, package.json uses concurrently and wait-on to launch the frontend dev server on port 8080 and then point the electron browser window loadurl to localhost:8080. for prod, we run electron-builder which bundles our assets. npm build script builds the react frontend, copies dist to desktop/frontend-dist, and main.js loads it locally via loadfile. configured cross-platform packaging target options for windows (nsis installer, portable executables), mac (dmg, zip), and linux (appimage, deb) in package.json. added native OS window hooks for minimized, maximized, and close events so client-side buttons in the custom titlebar work. added shell handler for opening external web links in native browser instead of electron window. assets folder holds local icons configured for specific OS packing rules (ico, icns, png). how it connects: the desktop shell is just a container running our react client, which talks to the node/express backend via api client calls to VITE_API_URL. ipc communication checks the app version and process platform. window actions (minimize, maximize, close) are wired back to the ipcMain handler. if backend is unreachable, the API services default to local mock fallback data so the app does not freeze. auth tokens are saved in localstorage inside the web view which carries over across app launches. took way too long to align the dist copy paths in the build script. had a dumb bug where frontend-dist was missing and loading a blank screen, but fixed the cp target path. compilation is completely green now. going to collapse.
I had medical issues and couldn’t post more devlogs moving forward, neither I was able to finish the entire project to be supported in multiple platforms, but i’ve still made the web and desktop version of this project……..
Ships:
I built AuraCare CRM — a fast, lightweight healthcare and clinic management system. Most hospital software is clunky, slow, and painful to look at, so I wanted to make something modern that actually feels good to use for daily clinic rounds. It’s split into an Express.js REST API hosted on a Linux VPS behind a Cloudflare tunnel, a React 18 + Vite dashboard with Tailwind CSS and Radix UI primitives, and packaged as an Electron desktop app for clinic workstations. It covers the complete clinical flow across 6 roles (Super Admin, Admin, Doctor, Receptionist, Pharmacy, and Diagnostics) — from patient check-in and live queues to digital prescriptions, lab orders, inventory management, and PDF invoices. The most challenging part was session management and granular RBAC. In real clinics, doctors get interrupted constantly; standard 15-minute JWT timeouts were kicking them out mid-consultation. I built a 30-day extended session architecture with rolling token renewals and inactivity tracking, while ensuring cross-department data (like an Rx immediately updating pharmacy stock and billing) flows seamlessly. I’m most proud of the UI responsiveness — it switches views instantly and feels smooth, even with dark mode and live charts. To test it out: Open the live web app: https://auracare-gamma.vercel.app On the login page, click the “Sandbox Demo Login” button — you can pick any role (Doctor, Receptionist, Admin, etc.) to jump straight in without signing up! Windows desktop installer is also available in the GitHub releases: https://github.com/AuraZod/AuraCare-CRM/releases...
|
1793580931.56539
|
1793667331.56539
|
|
14360
|
My very own WebOS by @747elias | Stardance
|
747elias
|
0
|
3.39
|
0
|
[]
|
[{"post_id": 6415, "ts": "2026 [{"post_id": 6415, "ts": "2026-06-10T19:53:04Z", "hours": 1.0617, "text": "Devlog 3: Draggable Windows -Code Split: Moved JS to script.js to clean up the HTML. -Window Dragging: Added mouse events to smoothly drag the window via a top header. -Open/Close: Used JS to toggle display none and flex using click event listeners. -CSS Classes: Replaced inline styles with reusable classes for easy future apps. Next up: Building my first actual app inside the window!"}, {"post_id": 6193, "ts": "2026-06-10T12:22:00Z", "hours": 1.4497, "text": "I Builded Flexboxes. And I added a Wallpaper and a top bar. It looks amazing! There is even the live time and date in the top bar thanks to javascript."}, {"post_id": 5864, "ts": "2026-06-09T20:17:05Z", "hours": 0.8792, "text": "I build the entry page of my selfmade web os."}]...
|
Title: My very own WebOS by @747elias | Stardance
Title: My very own WebOS by @747elias | Stardance
Devlogs:
I build the entry page of my selfmade web os.
I Builded Flexboxes. And I added a Wallpaper and a top bar. It looks amazing! There is even the live time and date in the top bar thanks to javascript.
Devlog 3: Draggable Windows -Code Split: Moved JS to script.js to clean up the HTML. -Window Dragging: Added mouse events to smoothly drag the window via a top header. -Open/Close: Used JS to toggle display none and flex using click event listeners. -CSS Classes: Replaced inline styles with reusable classes for easy future apps. Next up: Building my first actual app inside the window!...
|
1793285267.0685349
|
1793890067.0685349
|
|
14361
|
My awesome macropad! by @Ismini_is_lost | Stardanc My awesome macropad! by @Ismini_is_lost | Stardance...
|
Ismini_is_lost
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ismini_is_lost | S Title: My awesome macropad! by @Ismini_is_lost | Stardance...
|
1793494167.7857199
|
1794098967.7857199
|
|
14362
|
BeachBunnyOS by @Sabrina | Stardance
|
Sabrina
|
2
|
12.58
|
86
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T01:10:33Z", "hours": 6.0, "multiplier": 11.35, "payout": 86, "blessing": "neutral", "text": "I added 3 new apps to my website!! 1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it 2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀) 3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org Also along the way I applied and was accepted into many webrings. At this moment im in the following: transing the internet hotline webring html energy webring cd ring vocaloid webring the no ai webring wii ring I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!", "repo": "https://github.com/BoomBoomMushroom/BeachBunnyWebOS", "demo": "https://sabrinaa.page"}, {"ship_num": 2, "ts": "2026-06-11T20:07:14Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "BeachBunnyOS!! This was just gonna be a website that looks like an OS but I’ve turned it into my personal website and am gonna use it as I websurf (you should try it, it’s really fun. Surf via the webrings on my website as a good starting point) My most favorite part is the net neighbors window. I like how I can scroll in it and my neighbors’ badges make it truely feel like a website I would find when surfing The most challenging part was the little buttons at the top because they would not cooperate for a while. they for some reason each wanted a certain size in their div, and it would cause the clock to go to 2 line and expand the top bar making it ugly, but I figured if i just constrain the text overflow making it only 1 line then it works out fine. This is truely the website of the #1 beach bunny fan. okay byeeee", "repo": "https://github.com/BoomBoomMushroom/BeachBunnyWebOS", "demo": "https://sabrinaa.page"}]...
|
[{"post_id": 44890, "ts": "202 [{"post_id": 44890, "ts": "2026-08-10T22:50:36Z", "hours": 1.5836, "text": "Hate messages/speech Over the past few days ive been waking up to some transphobic messages left in my guestbook and so Ive have decided to go on and add a filter to my guestbook. If I detect a black listed word (currently the 2 trans slurs and the f slur) it will auto sort it into the filtered webhook and makes sure it never saved that message to my server. Also I have created a honeypot webhook as well so it will put any honeypot messages into there and the reason for it. Hopefully it’ll help me understand what some spammed messages would look like Still, if I receive any hateful, bigoted, transphobic, queerphobic, and other fucked up messages I WILL be deleting them!! (so please dont send them) How my guestbook works Also since I saw someone ask in my voting response about how the guestbook works and if its a static website I have answers for you! I made a server hosted on nest (so free for us hackclubbers) that receives POST requests when you fill out the form and does all the checks and stuff, then saves it to a json file. When you load my website it will automatically ask the same server for the contents of the json file and display all the messages! (Now with 100% less bigotry) Ok love you guys stay safe out there"}, {"post_id": 37364, "ts": "2026-07-30T01:02:18Z", "hours": 0.5917, "text": "I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once Thats about it for right now, hopefully ill add some more cool information later, byeeee"}, {"post_id": 31599, "ts": "2026-07-20T04:05:22Z", "hours": 3.2508, "text": "I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring I also created a guestbook completely from scratch! Source code at /guestbook I had to add 2 antibot measures #1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it #2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected"}, {"post_id": 31391, "ts": "2026-07-19T18:34:09Z", "hours": 1.705, "text": "I finally made a button! I added a robotx.txt and ai.txt to block web scrapers for LLMs I also applied to all the webrings i had previously, and added new webrings i found! Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors Next I want to make a guest book (from scratch?) The new webrings i added were: hotline webring DS Ring DroidRing IndieRing Computering Webring HTML Energy Webring Webmaster Webring"}, {"post_id": 7107, "ts": "2026-06-11T21:35:30Z", "hours": 0.8867, "text": "I fixed the webring app from spawning super high up to where you cant drag it. still an issue if the tab is like 100px tall, but like dont do that Also the domain after “free buttons” is really slow but it works for me I have also updated the readme to be better"}, {"post_id": 7033, "ts": "2026-06-11T19:52:36Z", "hours": 2.4344, "text": "I added 2 new apps. An about me and a net neighbors section. I added a bunch of image buttons to my top bar, they show stuff about me, like pc gamer, cat owner, etc. I added a font for the windows. I have 3 net neighbors, which is so cool! I need to later make a button of my own and get a domain so i can join webrings and so I can finish my link section and allow people to link to me and have me as their net neighbor My 2 custom features not in the tutorial is that everytime you open playlist.bb it changes it’s icon. the other one is that if you click a window it becomes the top window instead now, instead of needing to reopen it to be on top."}, {"post_id": 6561, "ts": "2026-06-11T00:47:46Z", "hours": 0.3036, "text": "I added webrings to my site, when i eventually finish it fully ill apply to join them!!"}, {"post_id": 6527, "ts": "2026-06-10T23:41:14Z", "hours": 0.9408, "text": "I added the first app. I created a framework for adding apps and you can drag them around, select them, double click to open them, and they open windows (and possivly do anything since it just calls a function)"}, {"post_id": 5902, "ts": "2026-06-09T21:31:35Z", "hours": 1.4717, "text": "Made a window, a wallpaper, and a top bar that displays the time Next up im going to work on adding apps, and hopefully later ill add a boot screen!"}]...
|
Title: BeachBunnyOS by @Sabrina | Stardance
Devlo Title: BeachBunnyOS by @Sabrina | Stardance
Devlogs:
Made a window, a wallpaper, and a top bar that displays the time Next up im going to work on adding apps, and hopefully later ill add a boot screen!
I added the first app. I created a framework for adding apps and you can drag them around, select them, double click to open them, and they open windows (and possivly do anything since it just calls a function)
I added webrings to my site, when i eventually finish it fully ill apply to join them!!
I added 2 new apps. An about me and a net neighbors section. I added a bunch of image buttons to my top bar, they show stuff about me, like pc gamer, cat owner, etc. I added a font for the windows. I have 3 net neighbors, which is so cool! I need to later make a button of my own and get a domain so i can join webrings and so I can finish my link section and allow people to link to me and have me as their net neighbor My 2 custom features not in the tutorial is that everytime you open playlist.bb it changes it’s icon. the other one is that if you click a window it becomes the top window instead now, instead of needing to reopen it to be on top.
I fixed the webring app from spawning super high up to where you cant drag it. still an issue if the tab is like 100px tall, but like dont do that Also the domain after “free buttons” is really slow but it works for me I have also updated the readme to be better
I finally made a button! I added a robotx.txt and ai.txt to block web scrapers for LLMs I also applied to all the webrings i had previously, and added new webrings i found! Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors Next I want to make a guest book (from scratch?) The new webrings i added were: hotline webring DS Ring DroidRing IndieRing Computering Webring HTML Energy Webring Webmaster Webring
I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring I also created a guestbook completely from scratch! Source code at /guestbook I had to add 2 antibot measures #1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it #2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected
I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once Thats about it for right now, hopefully ill add some more cool information later, byeeee
Hate messages/speech Over the past few days ive been waking up to some transphobic messages left in my guestbook and so Ive have decided to go on and add a filter to my guestbook. If I detect a black listed word (currently the 2 trans slurs and the f slur) it will auto sort it into the filtered webhook and makes sure it never saved that message to my server. Also I have created a honeypot webhook as well so it will put any honeypot messages into there and the reason for it. Hopefully it’ll help me understand what some spammed messages would look like Still, if I receive any hateful, bigoted, transphobic, queerphobic, and other fucked up messages I WILL be deleting them!! (so please dont send them) How my guestbook works Also since I saw someone ask in my voting response about how the guestbook works and if its a static website I have answers for you! I made a server hosted on nest (so free for us hackclubbers) that receives POST requests when you fill out the form and does all the checks and stuff, then saves it to a json file. When you load my website it will automatically ask the same server for the contents of the json file and display all the messages! (Now with 100% less bigotry) Ok love you guys stay safe out there
Ships:
BeachBunnyOS!! This was just gonna be a website that looks like an OS but I’ve turned it into my personal website and am gonna use it as I websurf (you should try it, it’s really fun. Surf via the webrings on my website as a good starting point) My most favorite part is the net neighbors window. I like how I can scroll in it and my neighbors’ badges make it truely feel like a website I would find when surfing The most challenging part was the little buttons at the top because they would not cooperate for a while. they for some reason each wanted a certain size in their div, and it would cause the clock to go to 2 line and expand the top bar making it ugly, but I figured if i just constrain the text overflow making it only 1 line then it works out fine. This is truely the website of the #1 beach bunny fan. okay byeeee
I added 3 new apps to my website!! 1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it 2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀) 3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org Also along the way I applied and was accepted into many webrings. At this moment im in the following: transing the internet hotline webring html energy webring cd ring vocaloid webring the no ai webring wii ring I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!...
|
1793602372.7663069
|
1793688772.7663069
|
|
14363
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792950804.3487456
|
1793814804.3487456
|
|
14364
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792939918.8315485
|
1793803918.8315485
|
|
14365
|
My very own WebOS by @Kus | Stardance
|
Kus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Kus | Stardance
|
1793282213.1981084
|
1793887013.1981084
|
|
14366
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792929218.7258704
|
1793793218.7258704
|
|
14367
|
Untitled by @shreyayadav | Stardance
|
shreyayadav
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @shreyayadav | Stardance
|
1792950618.9364111
|
1793814618.9364111
|
|
14368
|
My first code! by @Simona | Stardance
|
Simona
|
0
|
0.4
|
0
|
[]
|
[{"post_id": 12943, "ts": "202 [{"post_id": 12943, "ts": "2026-06-21T05:42:42Z", "hours": 0.3953, "text": "This is my first code ever! Feel free to give me advice for ways I can improve!!"}]...
|
Title: My first code! by @Simona | Stardance
Devl Title: My first code! by @Simona | Stardance
Devlogs:
This is my first code ever! Feel free to give me advice for ways I can improve!!...
|
1793156003.5646338
|
1793760803.5646338
|
|
14369
|
paper games by @momoben | Stardance
|
momoben
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: paper games by @momoben | Stardance
|
1793339780.2059324
|
1793944580.2059324
|
|
14370
|
Maze Solver by @ThePilotBear | Stardance
|
ThePilotBear
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Maze Solver by @ThePilotBear | Stardance
|
1793227960.6525137
|
1793832760.6525137
|
|
14371
|
Archimedes Cube by @ncHammer | Stardance
|
ncHammer
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T18:40:08Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The Archimedes Cube is a modular, 3D-printable mechanical puzzle that merges the core mechanics of a traditional Rubik’s cube with an interactive marble maze. The internal mechanism utilizes a custom-designed core and six interlocking center swivels, while the outer layer consists of eight corner and twelve side pieces that slide together in a precise sequence. Rather than using traditional screws for tension, the parts rely on mechanical clasps to lock into place. Once fully assembled, a marble can travel continuously across all six faces of the outer shell via interconnected pathways and custom corner tunnels. Each face of the cube houses a separate maze track panel, and these paths connect at the seams through secondary edge framing pieces, which route the marble around the turning axes without interrupting the rotation of the cube layers.For customization, the center swivels feature interchangeable design slots, allowing builders to color-code faces in green, blue, orange, and red, or slide in personalized tile geometries. The yellow center segment acts as a dedicated marble garage, utilizing concealed internal magnets and a custom maze plug to hold the tracking marble in place when the puzzle is being solved or transported.Developing this project highlighted several mechanical constraints, particularly regarding friction and tolerances. Because fused deposition modeling (FDM) 3D printing layers introduce too much surface friction for a functional rotational mechanism, every single internal contact face requires manual sanding prior to assembly to prevent binding. Additionally, the assembly sequence must be exact; forcing a corner or edge piece into the final assembly slot easily shears the internal alignment channels. Instead, the mechanical loop must be completed by installing a center swivel piece last to properly distribute tension across the tracks. Finally, attaching the maze panels requires precise application of liquid superglue directly to the center swivels, ensuring no adhesive bleeds into the rotational seams, which would permanently lock the moving layers.", "repo": "https://github.com/noahcraig029-code/ArchimedesCube", "demo": "https://www.thingiverse.com/thing:7411782"}]...
|
[{"post_id": 70757, "ts": "202 [{"post_id": 70757, "ts": "2026-09-19T18:23:48Z", "hours": 2.4667, "text": "I’m finally finished! It’s 100% printed, assembled, and fully functional! I mainly used superglue to put it all together, and I’ve been messing around with it for hours. I hope y’all give it a chance and enjoy it! Happy cubing!"}, {"post_id": 46539, "ts": "2026-08-13T20:44:34Z", "hours": 2.6453, "text": "I’ve revamped the edge design for the marble maze, making a smoother tunnel that lines up perfectly with the panels fitting along the main cube pieces. The originals were a straight 90 degree angle, and the marble got stuck. The new model is a 45 degree curve that lets the marble flow from one face to another!"}, {"post_id": 37193, "ts": "2026-07-29T18:43:57Z", "hours": 5.0642, "text": "Bored of a regular Rubik’s Cube? I have a monstrosity for you then! The Archimedes Cube is a 5 cubed inch Rubik’s cube with a marble maze engraved onto the face. It has over 50 individually designed parts created on Onshape. I just finished designing and piecing a final assembly together that can be used to see what the project will look like when it’s fully completed! I’m planning on shipping it soon, so make sure you check it out when it’s done!"}, {"post_id": 29126, "ts": "2026-07-15T19:54:21Z", "hours": 0.8961, "text": "If you like puzzles check this project out! I’ve finally managed to create a cohesive printing guide, as well as a construction README that’s available once the Onshape doc is opened. I’m working on creating a 3D reference model inside the project so you don’t get lost during assembly. I’m also working on my own physical assembly, magnets and all! My next step is to complete building the cube in real life, as well as on Onshape."}, {"post_id": 28946, "ts": "2026-07-15T15:45:27Z", "hours": 1.1611, "text": "I’ve finally finished modeling all pieces for the cube and mazes! The last step I need to complete is to write and include a printing and construction guide. Shown below is the assembly PRINTING COLLECTION, which has everything you need to create your own Archimedes Cube at home, provided you have a 3D printer. Colors are not required, but heavily recommended. The Onshape link is included in the project, I hope you guys enjoy it! Any suggestions for cubit designs or alternate maze creations are welcome!"}]...
|
Title: Archimedes Cube by @ncHammer | Stardance
D Title: Archimedes Cube by @ncHammer | Stardance
Devlogs:
I’ve finally finished modeling all pieces for the cube and mazes! The last step I need to complete is to write and include a printing and construction guide. Shown below is the assembly PRINTING COLLECTION, which has everything you need to create your own Archimedes Cube at home, provided you have a 3D printer. Colors are not required, but heavily recommended. The Onshape link is included in the project, I hope you guys enjoy it! Any suggestions for cubit designs or alternate maze creations are welcome!
If you like puzzles check this project out! I’ve finally managed to create a cohesive printing guide, as well as a construction README that’s available once the Onshape doc is opened. I’m working on creating a 3D reference model inside the project so you don’t get lost during assembly. I’m also working on my own physical assembly, magnets and all! My next step is to complete building the cube in real life, as well as on Onshape.
Bored of a regular Rubik’s Cube? I have a monstrosity for you then! The Archimedes Cube is a 5 cubed inch Rubik’s cube with a marble maze engraved onto the face. It has over 50 individually designed parts created on Onshape. I just finished designing and piecing a final assembly together that can be used to see what the project will look like when it’s fully completed! I’m planning on shipping it soon, so make sure you check it out when it’s done!
I’ve revamped the edge design for the marble maze, making a smoother tunnel that lines up perfectly with the panels fitting along the main cube pieces. The originals were a straight 90 degree angle, and the marble got stuck. The new model is a 45 degree curve that lets the marble flow from one face to another!
I’m finally finished! It’s 100% printed, assembled, and fully functional! I mainly used superglue to put it all together, and I’ve been messing around with it for hours. I hope y’all give it a chance and enjoy it! Happy cubing!
Ships:
The Archimedes Cube is a modular, 3D-printable mechanical puzzle that merges the core mechanics of a traditional Rubik’s cube with an interactive marble maze. The internal mechanism utilizes a custom-designed core and six interlocking center swivels, while the outer layer consists of eight corner and twelve side pieces that slide together in a precise sequence. Rather than using traditional screws for tension, the parts rely on mechanical clasps to lock into place. Once fully assembled, a marble can travel continuously across all six faces of the outer shell via interconnected pathways and custom corner tunnels. Each face of the cube houses a separate maze track panel, and these paths connect at the seams through secondary edge framing pieces, which route the marble around the turning axes without interrupting the rotation of the cube layers.For customization, the center swivels feature interchangeable design slots, allowing builders to color-code faces in green, blue, orange, and red, or slide in personalized tile geometries. The yellow center segment acts as a dedicated marble garage, utilizing concealed internal magnets and a custom maze plug to hold the tracking marble in place when the puzzle is being solved or transported.Developing this project highlighted several mechanical constraints, particularly regarding friction and tolerances. Because fused deposition modeling (FDM) 3D printing layers introduce too much surface friction for a functional rotational mechanism, every single internal contact face requires manual sanding prior to assembly to prevent binding. Additionally, the assembly sequence must be exact; forcing a corner or edge piece into the final assembly slot easily shears the internal alignment channels. Instead, the mechanical loop must be completed by installing a center swivel piece last to properly distribute tension across the tracks. Finally, attaching the maze panels requires precise application of liquid superglue directly to the center swivels, ensuring no adhesive bleeds into the rotational seams, which would permanently lock the moving layers....
|
1793580981.7066476
|
1793667381.7066476
|
|
14372
|
My awesome macropad! by @lamichhbis | Stardance
|
lamichhbis
|
0
|
2.98
|
0
|
[]
|
[{"post_id": 25701, "ts": "202 [{"post_id": 25701, "ts": "2026-07-10T03:53:08Z", "hours": 1.2428, "text": "Completed the PCB 3d model after changing my PBC design. Changes: Moved the diodes all to the bottom for ease of reach and less interference with other components Bade the head smaller for porportation."}, {"post_id": 25661, "ts": "2026-07-10T02:17:57Z", "hours": 1.45, "text": "Found online models and add them to my keyboard. Need to change something from the pcb layer. Make the top border a little smaller Drop the diodes a little lower"}, {"post_id": 24537, "ts": "2026-07-08T05:02:54Z", "hours": 0.2889, "text": "I have uploaded to cad. After hours of of tweeking and changing the board to fit my vision and getting the wiring correct I have uploaded it to cad and will start creating a case."}]...
|
Title: My awesome macropad! by @lamichhbis | Stard Title: My awesome macropad! by @lamichhbis | Stardance
Devlogs:
I have uploaded to cad. After hours of of tweeking and changing the board to fit my vision and getting the wiring correct I have uploaded it to cad and will start creating a case.
Found online models and add them to my keyboard. Need to change something from the pcb layer. Make the top border a little smaller Drop the diodes a little lower
Completed the PCB 3d model after changing my PBC design. Changes: Moved the diodes all to the bottom for ease of reach and less interference with other components Bade the head smaller for porportation....
|
1793310955.6427794
|
1793915755.6427794
|
|
14373
|
First steps into GameDev by @mikus_willow | Starda First steps into GameDev by @mikus_willow | Stardance...
|
mikus_willow
|
0
|
1.66
|
0
|
[]
|
[{"post_id": 6215, "ts": "2026 [{"post_id": 6215, "ts": "2026-06-10T13:16:58Z", "hours": 1.6567, "text": "Made a 1st game menu, working pause menu and a player with a ability of movement"}]...
|
Title: First steps into GameDev by @mikus_willow | Title: First steps into GameDev by @mikus_willow | Stardance
Devlogs:
Made a 1st game menu, working pause menu and a player with a ability of movement...
|
1793199039.2617674
|
1793803839.2617674
|
|
14374
|
Test_1 by @blizzard3_9 | Stardance
|
blizzard3_9
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Test_1 by @blizzard3_9 | Stardance
|
1793199049.321543
|
1793803849.321543
|
|
14375
|
IDLE Fishing by @alyona | Stardance
|
alyona
|
0
|
8.75
|
0
|
[]
|
[{"post_id": 31377, "ts": "202 [{"post_id": 31377, "ts": "2026-07-19T18:18:45Z", "hours": 8.7483, "text": "Dev log #1 hello, Im making a IDLE fishing game that runs in the background while you study its pretty rough because Im trying to learn new things while i code and clean up when I can. right now i have the basic ui all set up, some basic visuals, the timer for studying and taking breaks and the fishing collection all ready. i need to start working on the visuals and making upgrades, settings, and making the window transparent my goal is to make a game like Ropuka’s Idle Island but fishing and made for me while Im in school"}]...
|
Title: IDLE Fishing by @alyona | Stardance
Devlog Title: IDLE Fishing by @alyona | Stardance
Devlogs:
Dev log #1 hello, Im making a IDLE fishing game that runs in the background while you study its pretty rough because Im trying to learn new things while i code and clean up when I can. right now i have the basic ui all set up, some basic visuals, the timer for studying and taking breaks and the fishing collection all ready. i need to start working on the visuals and making upgrades, settings, and making the window transparent my goal is to make a game like Ropuka’s Idle Island but fishing and made for me while Im in school...
|
1793541328.414753
|
1794146128.414753
|
|
14376
|
My very own WebOS by @maruscarebecca | Stardance
|
maruscarebecca
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @maruscarebecca | Star Title: My very own WebOS by @maruscarebecca | Stardance...
|
1793390128.3529835
|
1793994928.3529835
|
|
14377
|
Untitled by @Ibo | Stardance
|
Ibo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Ibo | Stardance
|
1792932789.5408924
|
1793796789.5408924
|
|
14378
|
jpokemon by @miles_s_aguilar | Stardance
|
|
0
|
0.66
|
0
|
[]
|
[{"post_id": 5800, "ts": "2026 [{"post_id": 5800, "ts": "2026-06-09T18:40:48Z", "hours": 0.6578, "text": "Got the text system to work! I needed to rip assets from another open-source decomp of pokemon emerald (which uses many languages). For now, though, this is still a walking simulator. In terms of what I want to work on next… It’s either make pokemon catchable (a huge huge goal that needs backend work to even begin) or allow Brendan to jump down ledges (smaller task thats just dealing with animations, spritesheets, and cameras)"}]...
|
Title: jpokemon by @miles_s_aguilar | Stardance
D Title: jpokemon by @miles_s_aguilar | Stardance
Devlogs:
Got the text system to work! I needed to rip assets from another open-source decomp of pokemon emerald (which uses many languages). For now, though, this is still a walking simulator. In terms of what I want to work on next… It’s either make pokemon catchable (a huge huge goal that needs backend work to even begin) or allow Brendan to jump down ledges (smaller task thats just dealing with animations, spritesheets, and cameras)...
|
1793253023.9792092
|
1793857823.9792092
|
|
14379
|
My awesome macropad! by @leviryanfairchild | Stard My awesome macropad! by @leviryanfairchild | Stardance...
|
leviryanfairchild
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @leviryanfairchild Title: My awesome macropad! by @leviryanfairchild | Stardance...
|
1793386194.1657898
|
1793990994.1657898
|
|
14380
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792946947.3827906
|
1793810947.3827906
|
|
14381
|
Macropad V1 by @Wraith | Stardance
|
Wraith
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Macropad V1 by @Wraith | Stardance
|
1793429259.850233
|
1794034059.850233
|
|
14382
|
Morse code TV by @Max_ | Stardance
|
Max_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Morse code TV by @Max_ | Stardance
|
1793184460.8547888
|
1793789260.8547888
|
|
14383
|
My awesome macropad! by @GoshoBobcho | Stardance
|
GoshoBobcho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @GoshoBobcho | Star Title: My awesome macropad! by @GoshoBobcho | Stardance...
|
1793361044.465678
|
1793965844.465678
|
|
14384
|
My awesome macropad! by @epiclyepic | Stardance
|
epiclyepic
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @epiclyepic | Stard Title: My awesome macropad! by @epiclyepic | Stardance...
|
1793299849.4598956
|
1793904649.4598956
|
|
14385
|
Artemis by @Asynchronite | Stardance
|
Asynchronite
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Artemis by @Asynchronite | Stardance
|
1793342931.7646012
|
1793947731.7646012
|
|
14386
|
My awesome macropad! by @ncHammer | Stardance
|
ncHammer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ncHammer | Stardan Title: My awesome macropad! by @ncHammer | Stardance...
|
1793422229.5244775
|
1794027029.5244775
|
|
14387
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792936350.915194
|
1793800350.915194
|
|
14388
|
My WebOS by @ncHammer | Stardance
|
ncHammer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My WebOS by @ncHammer | Stardance
|
1793465471.3422403
|
1794070271.3422403
|
|
14389
|
LaunchOS by @asher_bana | Stardance
|
asher_bana
|
0
|
1.39
|
0
|
[]
|
[{"post_id": 6022, "ts": "2026 [{"post_id": 6022, "ts": "2026-06-10T03:05:51Z", "hours": 1.3897, "text": "dev log #1 I built LaunchOS using HTML, CSS, and JavaScript as part of the WebOS tutorial. It has a desktop-style background, a centered main window for the content, and a top bar with the system name and a live clock that updates every second using JavaScript."}]...
|
Title: LaunchOS by @asher_bana | Stardance
Devlog Title: LaunchOS by @asher_bana | Stardance
Devlogs:
dev log #1 I built LaunchOS using HTML, CSS, and JavaScript as part of the WebOS tutorial. It has a desktop-style background, a centered main window for the content, and a top bar with the system name and a live clock that updates every second using JavaScript....
|
1793299993.4328086
|
1793904793.4328086
|
|
14390
|
Pygame Platformer by @nishchaybhudia | Stardance
|
nishchaybhudia
|
1
|
94.0
|
850
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T14:16:32Z", "hours": 94.0, "multiplier": 9.02, "payout": 850, "blessing": "neutral", "text": "What I made: an “impossible” platformer in Python/pygame — 4 characters each with their own move (dash, wall cling, ground pound, frog leap), 2 player mode, 5 levels, and traps like saws, a sliding rock head and a swinging spiked ball. Packaged it so it also runs in a browser through GitHub Pages, not just as a local script. What was challenging: making the abilities feel actually different from each other but still fair took a lot of back and forth, and the web version being randomly laggy took a while to actually track down instead of just guessing. Turned out it was checking collisions against every object in the whole level every single frame instead of just the stuff near the player, plus redrawing the background from scratch 238 times a frame. What I’m proud of: getting it running properly in a browser instead of just as a local file makes it feel like an actual finished thing rather than a script sitting on my laptop. It’s still a bit laggy on the GitHub Pages version, but running it locally on my own machine there’s no lag at all, so the game itself is solid — it’s specifically the web packaging that still needs work.", "repo": "https://github.com/Hidden-Ghost-123/Impossible-Platformer", "demo": "https://hidden-ghost-123.github.io/Impossible-Platformer/"}]...
|
[{"post_id": 30143, "ts": "202 [{"post_id": 30143, "ts": "2026-07-17T14:12:03Z", "hours": 0.0, "text": "i worked on switching from itch.io to the github web to host my game"}, {"post_id": 30081, "ts": "2026-07-17T11:48:40Z", "hours": 2.0, "text": "i turned my code into a format that can be uploaded onto itch.io so i can begin getting ready for shipping this project … i then lowered the spiked swinging balls so its possible to jump across the gap in level 5 when finsihing the level … have a look !!"}, {"post_id": 29748, "ts": "2026-07-16T20:49:48Z", "hours": 2.0, "text": "i fixed placement of traps and enemies to make the levels dooable and also make the levels harder … im also planning to add and have started to add different level screens , so each level takes you to a different screen each time you complete it … also i made it so that you have to collect 40% of the coins available in each level to move onto the next level so dont be skipping coins … i also made all the characters have double jump because i felt bad for all you guys that will be playing the game …"}, {"post_id": 29437, "ts": "2026-07-16T11:48:28Z", "hours": 6.0, "text": "i have nearly finished the game !!! We’re getting really close to finishing the game now! This session was focused on adding the final gameplay features before polishing everything up.The biggest addition was the 2-player system, which is now fully implemented. It still needs a few tweaks and bug fixes, but the core mechanics are working well and make the game much more enjoyable.I also added a sprite selection screen, allowing players to choose their character before starting. Each sprite now has its own unique special ability, making every character feel different and encouraging players to experiment with different playstyles.Content-wise, I created two brand new levels, giving players more challenges to complete. To make these levels more interesting, I also introduced two new trap types along with another enemy variant, adding more variety and requiring players to think more carefully about how they progress through each stage.At this point, the game is almost complete. The remaining work is mainly polishing, balancing gameplay, fixing bugs, and making sure everything feels smooth before the final release."}, {"post_id": 29080, "ts": "2026-07-15T18:49:01Z", "hours": 1.0, "text": "i have fully gone over each level refining the placement of each and every object … i then played the game multiple times just to make sure it is actually possible …. i set up the code so that i can begin adding the abilities for each new characer … i then made sure there are no bugs so that when the second player is added nothing silly happens because there will be more inputs and more possibility of things going pear shaped … i know this is a boring devlog but it is neccesary … please come back for the next one it will be good .. i promise …"}, {"post_id": 28971, "ts": "2026-07-15T16:19:35Z", "hours": 4.0, "text": "ok … lets get this going … today i done a full code run thru as i could not find out why the player was still being immune to the spikes when double jumping .. but its now fixed .. not suprising for a genuis like me lol …. anyways - then i added yet ANOTHER level … making it the hardest one yet which includes all the traps and enemies and hard to reach coins .. i then implemented a theash hold which makes it so you have to get a certain amount of coins befroet the checkpoint activates … then i added a sprite selector to make it so that the player can choose the sprite and each sprite has a special move … still not yet fully decided the moves but they will be decided soon - hopefully next devloog … then i went ahead and tried to add a 2 player mode where 2 players can play on the same keyboard (player 1 : up , left , right ) (player 2 : w, a ,d) … there are a total of 6 enemies to face throughout … lets get this going .. we are nearly there at he end …. woooooooooooooooohooooo"}, {"post_id": 28530, "ts": "2026-07-14T20:49:52Z", "hours": 1.0, "text": "i finished working on the level i was working on in the previous devlog . i then came across a major issue … if i spam doublejump on spikes - i dont die … like i become superman - not good at all … i had to fix this , and i fixed it to have a longer cooldown when using you double jump so , basically you have enough time for your sprite to hit the trap …"}, {"post_id": 28441, "ts": "2026-07-14T18:04:24Z", "hours": 3.0, "text": "i feel like a real dev that spends hours in the cave and comes out with 2-3 new features lol … today i worked on yet another level and added some new respawning and eliminating animations … i also animated the coins and added some secret special easter eggs within the game … you will need to wait for the game to be fully developed before finding out … again - any other features be sure to comment below on what features to add ."}, {"post_id": 27784, "ts": "2026-07-13T17:18:47Z", "hours": 1.0, "text": "i worked on implementing the new traps i mensioned in the previous devlog … i then continued adding a new level … this then led me to an idea of a level selector so you can replay levels if you wanted to . - genuis …. which i started to implement … thanks ;)"}, {"post_id": 27621, "ts": "2026-07-13T11:24:44Z", "hours": 6.0, "text": "i worked on creating a token/coin that you collect while trying to complete the level , i am debating wether to have a coin threthhold . so if you dont collect x amount of coints in the level you cannot activate the checkpoint … i also worked on a reset character reset game , resume interface where you can click esc to pause then you have the 3 options … i then created more sprites for the user to select what chatacter they want to play as … i am looking at adding different powers for each character in the next devlog … i added another level and i added smarter and more enemies that come to delete you off the game … lol … let me know what else i should add !!!….also i almost forgot , i added some new traps that i havnt put in the game yet but i have added the backend logic for - cant wait … thanks again!!"}, {"post_id": 27061, "ts": "2026-07-12T08:34:30Z", "hours": 4.0, "text": "Another long session finished. This time it was all about the little details that make a game actually feel good to play. I spent most of the time polishing existing features rather than adding new ones. I adjusted movement, tweaked animations, cleaned up the UI, and made small improvements throughout the game that most players probably won’t even notice—but together they make a huge difference.I also tracked down a few more bugs that somehow managed to sneak in. There were some visual glitches, a couple of edge cases where objects weren’t behaving correctly, and a few issues with level transitions. After a lot of testing (and breaking the game several times), everything is now much more stable.It’s funny because I barely added any “new” content today, but the game honestly feels so much smoother than it did this morning. I guess this is what real game development is like—hours of polishing for improvements that are hard to see but easy to feel.Anyway… that’s another 5 hours gone. Time to call it a day. Thanks for watching, and I’ll see you in the next devlog!"}, {"post_id": 26162, "ts": "2026-07-10T19:59:54Z", "hours": 5.0, "text": "i5 hours later … and this devlog is mainly focused on polishing, fixing bugs and making the game feel much smoother. First, I spent a lot of time going through the code and cleaning up some problems that were starting to appear as the game got bigger. I improved the overall efficiency of the game by removing unnecessary checks, optimising some of the update loops and making sure objects were not being processed when they did not need to be. This should help the game run better, especially when more enemies and level elements are added later. …. Next, I worked on fixing a bunch of smaller bugs that were affecting gameplay. I fixed some collision issues where the player could sometimes get stuck inside blocks, improved the respawn system so the player resets properly every time, and fixed some problems with the enemy behaviour after the player dies. There were also some annoying issues with jumping and movement that caused inconsistent results, so I spent time making the controls feel more reliable. …. WOW , i feel like a real game dev working ovetime lol …. Thank you , see you in the next one . that was a mouthful …"}, {"post_id": 25962, "ts": "2026-07-10T14:24:35Z", "hours": 6.0, "text": "wow this is going to be a big devlog ! …. first i created a homescreen that players can log in / sign up for future scoreboard featuers …. and possible 2 player or singleplayer selector ….. next i began adding sound effects to the game - like when you die and respawn and jump - there is a delay but i will fix that in the next devlog …. then i made the enemy smarter and i decided to allow it to pass through block like a ghost …. the only block it doesnt pass through is you so it can elimiate you when its hitbox crosses your hitbox …. i then fixed some major respawning and hit box bugs that come about after double jumping which took FOREVER ….i finished completing level 2 which i have to say , well done to the creator of the game lol because this game is going to be epic !!! , see you in the next one !"}, {"post_id": 25467, "ts": "2026-07-09T19:06:53Z", "hours": 1.0, "text": "i worked on improving the self moving enemy … im still deciding wether to give it the ability ro move through objects or if i should have it move like a nomral player … i managed to get it to float so it can easily move terrain and it has got immunity to traps so it can even follow you through traps … but (theres always a but) you can easily get rid of the enemy by jumping over it from left to right a few times …. i want to fix this in the next devlog …"}, {"post_id": 25409, "ts": "2026-07-09T17:46:48Z", "hours": 4.0, "text": "i worked on creating the program that works in the background … it is a program that powers and gives the enemy its own brain… it follows the enemy (YOU!) , i am working on making it smarter and faster - its a bit dopey at the moment :( ….. the enemy kills you just by you touching it or it touching you - still working on that (give it some time !!) ….. i then worked on making the second level (i made it hard for you , yes YOU) …. hopefully we have a little enemy running around next devlog ?!"}, {"post_id": 25212, "ts": "2026-07-09T10:19:56Z", "hours": 1.0, "text": "i fully fixed the trampoline bug that gives you immunity to traps after jumping on it [i actually did now :) ] …. i then had some trouble with making more objects with the new layout of the code …. i then got around that and began tweaking the first level and planning the second level . i then began addind a enemy block - the green one in the image , and a new spikey enemy which follows you like a mario bloomba . i havnt added the logic for this but i will hope to add it in the next devlog :-)"}, {"post_id": 24783, "ts": "2026-07-08T16:08:59Z", "hours": 2.0, "text": "i worked on fixing the oop problem i had in the previous devlog … i then changed the whole structure of the code to make it easy to read and add changes in future devlogs …. i then added the animation for the trampolines and tested them … they change your gravity when you jump on them making it like a trampoline u jump on … there is a image attached of me testing one over a floor of spikes … the animation works perfectly now …. and before u would survive afrer falling on spikes when coming off the trampoline for some reason , i have that fixed now …… i hope ;D"}, {"post_id": 24663, "ts": "2026-07-08T12:11:27Z", "hours": 1.0, "text": "i finished creating the first level … and the checkpoint actually works !!!, . i then had a problem with the creation of the objects , i decided to change the way the objects are created from lists into OOP , so classed and objects , this then broke my entire game :( …. i began fixing this and will hopefully be finished by the next devlog …. ;)"}, {"post_id": 24318, "ts": "2026-07-07T20:28:29Z", "hours": 2.0, "text": "i worked on adding more the very first level , i made it decently simple with a hint* double jump involved … i fixed the saw animation as it looked like it was a glitchy looped gif but now a smooth continuos animation …. i added a wall of blocks so you cannot go the other way …. i am hoping to replace this with a wall of invisible blocks which you cannot pass instead of visible blocks …. i also want the platform to extend on for many more blocks which i added which allows me to create more levels in sequence . next i hope to finish level 2 so i have 2 fully working levels to play . the end goal is “impossible” levels which are close to impossible to complete and keep sane while playing them"}, {"post_id": 24014, "ts": "2026-07-07T09:24:56Z", "hours": 1.0, "text": "i worked on fixing major respawning bugs , the character respawns back where it is supposed to respawn but the character sprite disppears , this was really hard and long to debug . i also created the animation for the saw trap which allows the saw blade to spin which makes the game more realsitic and enjoyable to play"}, {"post_id": 23671, "ts": "2026-07-06T19:40:44Z", "hours": 4.0, "text": "i continued creating the level … i added 2 paths , a harder bottom path with required speed and accuracy or a easier top path which is easier but requires patience …. i am yet to finish the top layer on the level as i need to code the logic and animation for the trampoline which will be the core for most of the game … it gives you a jump boost + float which allows you to travel quite some distance when jumping off of it . the flame of the fire wasnt dealing damage so i fixed that by updating its hitbox . i then added a standing player animation so it moves up and down as if its breathing when idle …."}, {"post_id": 23498, "ts": "2026-07-06T14:52:42Z", "hours": 8.0, "text": "i worked on a log in / sign up screen which authenticates users before they play the game to allow for future add ons such as leaderboards etc etc … i then added trap logic and a checkpoint flag which i didnt quite get to work … hopefully i get it to work in the next devlog , this will allow me to create lots of levels … i also added spikes with spike logic .. so if the player touches any part of the spikes the spirte detects it and the character respawns to the latest touches checkpoint … i later want to add lives so if u fail more than 3 times you respawn right back to the very beginning …. i also added 2 more traps that are spinning saws and a fire … which opperate the same way spikes do but are of different dimentions - the fire is smaller and the saw is bigger and wider … a mixture of these will hopefully begin to create a really hard level to completre … i also added double jump for the character / fixed double jump …. to stop players from abbusing double jump there is a small cooldown for double jump so its not exploited …. for the next devlog i would like to create a working level with a checkpoit that works on the other end ."}, {"post_id": 12434, "ts": "2026-06-20T09:23:44Z", "hours": 1.0, "text": "I started by creating a new object type called Checkpoint. Unlike blocks and traps, checkpoints don’t damage the player. Instead they: Detect collision with the player Store a respawn location Become “activated” when touched This is the first non-hazard interactive object in the game. Added Respawn Position Variable Previously the player always returned to:"}, {"post_id": 11898, "ts": "2026-06-19T12:00:48Z", "hours": 1.0, "text": "Added Collision-Based Damage System Until now, traps were purely visual. The player could walk through fire without consequence. I extended the collision system so that objects can now affect the player based on their name property. This is the first time the game starts behaving like an actual platformer. Introduced make_hit() Logic Instead of instantly killing the player, I added a hit state system: Player gets flagged as hit Small delay before respawn logic runs Allows future animation / sound integration This also prepares the system for: spikes saws lava checkpoints First Basic Death/Respawn Logic At this stage, respawning is still very simple: If player touches hazard → reset position No checkpoint system yet No lives system yet But this is the foundation for it. Problems Encountered Problem 1: Player kept dying multiple times per frame Cause Collision was being detected continuously every loop tick. Fix Added a simple hit lock"}, {"post_id": 11842, "ts": "2026-06-19T08:41:11Z", "hours": 1.0, "text": "Now that the level system is working, the next logical feature would be the first hazard. At this point in development, most students don’t immediately build fire, saws, spikes, trampolines, checkpoints, menus, sounds, etc. Instead, they usually start by experimenting with one animated trap to learn how animated world objects work. The fire trap is the most likely candidate because it uses the same sprite-sheet system you’ve already built for the player."}, {"post_id": 10676, "ts": "2026-06-17T15:13:38Z", "hours": 1.0, "text": "After implementing the camera system, I noticed that the level still looked very basic because platforms were being drawn as plain black rectangles. During this development session I focused on creating a more professional level system using actual game assets. I created a general-purpose Object class that could be used as the foundation for future game elements such as blocks, traps, checkpoints, and interactive objects. This significantly improved the organisation of the project and reduced code duplication. I then created a Block class which inherits from the Object class. Instead of drawing rectangles, blocks now load an image from the terrain sprite sheet. This made the level look much closer to the final game. To support this, I also created a helper function called get_block() which extracts a specific terrain tile from the terrain sprite sheet and scales it appropriately."}, {"post_id": 10569, "ts": "2026-06-17T11:30:01Z", "hours": 1.0, "text": "up until this point the game world was effectively limited to a single screen. While the player could move and jump on platforms, the entire level was always visible at once. To fix this and move closer to a real platformer, I implemented a camera system using an offset value (offset_x). This allows the player to move through a much larger world while the screen follows them smoothly. Instead of drawing everything at fixed positions, all objects are now rendered relative to the camera position. This is one of the most important structural changes in the entire project, because it transforms the game from a “static scene” into a scrolling level. Problems Encountered Problem 1: Everything moved incorrectly after adding camera After introducing offset_x, all objects appeared shifted or misaligned. Cause: Objects were still being drawn using absolute coordinates. Fix: Updated draw calls to subtract camera offset:"}, {"post_id": 10064, "ts": "2026-06-16T17:20:33Z", "hours": 2.0, "text": "focused on expanding the system into a full animation framework. Instead of using one image, I implemented a sprite sheet loader that splits images into multiple frames. This allows the character to animate smoothly while running, jumping, and idling. A major improvement in this session was introducing direction-based sprite flipping, which means the same animation can be reused for left and right movement without duplicating assets. I also started restructuring the Player class so that animation is handled separately from movement logic. This makes the code much more scalable for future additions like enemies and traps. Problems Encountered Problem 1: Sprite sheets not splitting correctly At first, animations were broken because frames were not being sliced properly. Cause: Incorrect calculation of sprite width division."}, {"post_id": 9840, "ts": "2026-06-16T09:28:01Z", "hours": 1.0, "text": "I spent this development session researching sprite sheets and learning how animations are typically handled in platformer games. I downloaded the character assets and experimented with loading images into Pygame. To avoid repeating code for every animation, I created a function that loads images from a folder and stores them in a dictionary. This will eventually become the foundation of the final load_sprite_sheets() function used throughout the project. I also replaced the rectangle with a single idle sprite. At this stage there are no animations yet—the player simply displays one image. Problems Encountered Problem 1: Images not loading When first attempting to load the sprite, Pygame returned a file path error. Cause The image folder was not in the same location as the Python file. Fix Used the os.path.join() function to create file paths more reliably."}, {"post_id": 9481, "ts": "2026-06-15T20:42:32Z", "hours": 1.0, "text": "introducing platform objects. Instead of relying only on the bottom of the screen as a floor, I created a simple Block system. Each block represents a solid object in the world that the player can stand on. This required restructuring collision logic so that the player is no longer only interacting with the screen boundary, but with multiple objects. I also started separating the world into a list of objects, which is an important step toward building full levels later. Key Improvements Made …: Added Block System A simple block class was introduced to represent platforms. Object List System Instead of hardcoding collisions, all blocks are stored in a list so the level can be expanded easily. Basic Collision Detection A simple collision check was added to stop the player falling through platforms. Problems Encountered … Problem : Player clipping through platforms When first adding blocks, the player would sometimes fall through them or “stick” inside them. Cause: Collision was only being checked after movement, not corrected properly. Fix: Added positional correction after detecting collision:"}, {"post_id": 9250, "ts": "2026-06-15T15:11:22Z", "hours": 1.0, "text": "started turning the simple movement demo into a real platformer by adding physics. The first majour feature added was gravity. Instead of the player staying in the air after a jump or falling instantly at a fixed speed, I introduced a vertical velocity system. This allows the player to accelerate downwards over time, making movement feel more natural. After implementing gravity, i added a jump system. When the player presses the space bar or up arrow key, an upward velocity is applied. Gravity then gradually pulls the player back down. However, after adding jumping and gravity, the player was able to fall infinitely off the screen. To fix this, I implemented a basic floor collision system using the bottom of the screen as a temporary ground. This ensured the player always lands correctly and resets vertical velocity when touching the ground."}, {"post_id": 9204, "ts": "2026-06-15T13:33:17Z", "hours": 1.0, "text": "focused on making the game interactive by allowing the player to move around the screen. I first created a player velocity constant which controls the movement speed of the player. Using a constant means the speed can easily be adjusted later without modifying multiple parts of the code. I then implemented keyboard input detection using pygame.key.get_pressed(). This allowed the left and right arrow keys to move the player across the screen. To improve code organisation I added movement methods inside the Player class rather than directly modifying the player’s position inside the main game loop. This makes the program easier to maintain as more functionality is added later."}, {"post_id": 6761, "ts": "2026-06-11T10:15:09Z", "hours": 1.0, "text": "Objectives : Add FPS control Create project constants Improve game loop structure Add a background colour Prepare the codebase for future player development Progress. After successfully creating the game window, (after a long long time) I focused on improving the structure of the program. A frame rate limit was added using “ pygame.time.Clock() “to ensure the game runs consistently on different computers. I created constants for the screen width, screen height and fps rather than hard coding values throughout the program. This will make future changes easier. I also replaced the plain black screen with a temporary sky blue background. This makes the project feel more like a game environment and provides a better foundation for testing future features. Although no player has been added yet, the game loop is now stable and organised enough to begin implementing movement systems. Problems Encountered Initially the game was running as fast as the computer would allow, causing unnecessary CPU usage. Adding FPS control fixed this issue and ensures consistent performance. Testing Performed Verified the game window opens correctly. Verified the frame rate remains stable at 60 fps. Confirmed the window closes without errors. Next Steps Create the player object. Draw the player on screen. Begin implementing horizontal movement using keyboard controls."}, {"post_id": 6405, "ts": "2026-06-10T19:33:44Z", "hours": 0.0, "text": "I started the project by setting up the basic Pygame environment. The first goal was simply to get a window appearing on screen. After importing Pygame and initialising it, I created a 1000×800 game window and added a title to the window. I then created a basic game loop which keeps the program running until the player closes the window. At this stage there are no graphics, characters or levels. The project currently only displays a blank screen. Problems Encountered No major issues were encountered during this stage. The main focus was confirming that Pygame was installed correctly and that the game window could be opened and closed safely."}]...
|
Title: Pygame Platformer by @nishchaybhudia | Star Title: Pygame Platformer by @nishchaybhudia | Stardance
Devlogs:
I started the project by setting up the basic Pygame environment. The first goal was simply to get a window appearing on screen. After importing Pygame and initialising it, I created a 1000×800 game window and added a title to the window. I then created a basic game loop which keeps the program running until the player closes the window. At this stage there are no graphics, characters or levels. The project currently only displays a blank screen. Problems Encountered No major issues were encountered during this stage. The main focus was confirming that Pygame was installed correctly and that the game window could be opened and closed safely.
Objectives : Add FPS control Create project constants Improve game loop structure Add a background colour Prepare the codebase for future player development Progress. After successfully creating the game window, (after a long long time) I focused on improving the structure of the program. A frame rate limit was added using “ pygame.time.Clock() “to ensure the game runs consistently on different computers. I created constants for the screen width, screen height and fps rather than hard coding values throughout the program. This will make future changes easier. I also replaced the plain black screen with a temporary sky blue background. This makes the project feel more like a game environment and provides a better foundation for testing future features. Although no player has been added yet, the game loop is now stable and organised enough to begin implementing movement systems. Problems Encountered Initially the game was running as fast as the computer would allow, causing unnecessary CPU usage. Adding FPS control fixed this issue and ensures consistent performance. Testing Performed Verified the game window opens correctly. Verified the frame rate remains stable at 60 fps. Confirmed the window closes without errors. Next Steps Create the player object. Draw the player on screen. Begin implementing horizontal movement using keyboard controls.
focused on making the game interactive by allowing the player to move around the screen. I first created a player velocity constant which controls the movement speed of the player. Using a constant means the speed can easily be adjusted later without modifying multiple parts of the code. I then implemented keyboard input detection using pygame.key.get_pressed(). This allowed the left and right arrow keys to move the player across the screen. To improve code organisation I added movement methods inside the Player class rather than directly modifying the player’s position inside the main game loop. This makes the program easier to maintain as more functionality is added later.
started turning the simple movement demo into a real platformer by adding physics. The first majour feature added was gravity. Instead of the player staying in the air after a jump or falling instantly at a fixed speed, I introduced a vertical velocity system. This allows the player to accelerate downwards over time, making movement feel more natural. After implementing gravity, i added a jump system. When the player presses the space bar or up arrow key, an upward velocity is applied. Gravity then gradually pulls the player back down. However, after adding jumping and gravity, the player was able to fall infinitely off the screen. To fix this, I implemented a basic floor collision system using the bottom of the screen as a temporary ground. This ensured the player always lands correctly and resets vertical velocity when touching the ground.
introducing platform objects. Instead of relying only on the bottom of the screen as a floor, I created a simple Block system. Each block represents a solid object in the world that the player can stand on. This required restructuring collision logic so that the player is no longer only interacting with the screen boundary, but with multiple objects. I also started separating the world into a list of objects, which is an important step toward building full levels later. Key Improvements Made …: Added Block System A simple block class was introduced to represent platforms. Object List System Instead of hardcoding collisions, all blocks are stored in a list so the level can be expanded easily. Basic Collision Detection A simple collision check was added to stop the player falling through platforms. Problems Encountered … Problem : Player clipping through platforms When first adding blocks, the player would sometimes fall through them or “stick” inside them. Cause: Collision was only being checked after movement, not corrected properly. Fix: Added positional correction after detecting collision:
I spent this development session researching sprite sheets and learning how animations are typically handled in platformer games. I downloaded the character assets and experimented with loading images into Pygame. To avoid repeating code for every animation, I created a function that loads images from a folder and stores them in a dictionary. This will eventually become the foundation of the final load_sprite_sheets() function used throughout the project. I also replaced the rectangle with a single idle sprite. At this stage there are no animations yet—the player simply displays one image. Problems Encountered Problem 1: Images not loading When first attempting to load the sprite, Pygame returned a file path error. Cause The image folder was not in the same location as the Python file. Fix Used the os.path.join() function to create file paths more reliably.
focused on expanding the system into a full animation framework. Instead of using one image, I implemented a sprite sheet loader that splits images into multiple frames. This allows the character to animate smoothly while running, jumping, and idling. A major improvement in this session was introducing direction-based sprite flipping, which means the same animation can be reused for left and right movement without duplicating assets. I also started restructuring the Player class so that animation is handled separately from movement logic. This makes the code much more scalable for future additions like enemies and traps. Problems Encountered Problem 1: Sprite sheets not splitting correctly At first, animations were broken because frames were not being sliced properly. Cause: Incorrect calculation of sprite width division.
up until this point the game world was effectively limited to a single screen. While the player could move and jump on platforms, the entire level was always visible at once. To fix this and move closer to a real platformer, I implemented a camera system using an offset value (offset_x). This allows the player to move through a much larger world while the screen follows them smoothly. Instead of drawing everything at fixed positions, all objects are now rendered relative to the camera position. This is one of the most important structural changes in the entire project, because it transforms the game from a “static scene” into a scrolling level. Problems Encountered Problem 1: Everything moved incorrectly after adding camera After introducing offset_x, all objects appeared shifted or misaligned. Cause: Objects were still being drawn using absolute coordinates. Fix: Updated draw calls to subtract camera offset:
After implementing the camera system, I noticed that the level still looked very basic because platforms were being drawn as plain black rectangles. During this development session I focused on creating a more professional level system using actual game assets. I created a general-purpose Object class that could be used as the foundation for future game elements such as blocks, traps, checkpoints, and interactive objects. This significantly improved the organisation of the project and reduced code duplication. I then created a Block class which inherits from the Object class. Instead of drawing rectangles, blocks now load an image from the terrain sprite sheet. This made the level look much closer to the final game. To support this, I also created a helper function called get_block() which extracts a specific terrain tile from the terrain sprite sheet and scales it appropriately.
Now that the level system is working, the next logical feature would be the first hazard. At this point in development, most students don’t immediately build fire, saws, spikes, trampolines, checkpoints, menus, sounds, etc. Instead, they usually start by experimenting with one animated trap to learn how animated world objects work. The fire trap is the most likely candidate because it uses the same sprite-sheet system you’ve already built for the player.
Added Collision-Based Damage System Until now, traps were purely visual. The player could walk through fire without consequence. I extended the collision system so that objects can now affect the player based on their name property. This is the first time the game starts behaving like an actual platformer. Introduced make_hit() Logic Instead of instantly killing the player, I added a hit state system: Player gets flagged as hit Small delay before respawn logic runs Allows future animation / sound integration This also prepares the system for: spikes saws lava checkpoints First Basic Death/Respawn Logic At this stage, respawning is still very simple: If player touches hazard → reset position No checkpoint system yet No lives system yet But this is the foundation for it. Problems Encountered Problem 1: Player kept dying multiple times per frame Cause Collision was being detected continuously every loop tick. Fix Added a simple hit lock
I started by creating a new object type called Checkpoint. Unlike blocks and traps, checkpoints don’t damage the player. Instead they: Detect collision with the player Store a respawn location Become “activated” when touched This is the first non-hazard interactive object in the game. Added Respawn Position Variable Previously the player always returned to:
i worked on a log in / sign up screen which authenticates users before they play the game to allow for future add ons such as leaderboards etc etc … i then added trap logic and a checkpoint flag which i didnt quite get to work … hopefully i get it to work in the next devlog , this will allow me to create lots of levels … i also added spikes with spike logic .. so if the player touches any part of the spikes the spirte detects it and the character respawns to the latest touches checkpoint … i later want to add lives so if u fail more than 3 times you respawn right back to the very beginning …. i also added 2 more traps that are spinning saws and a fire … which opperate the same way spikes do but are of different dimentions - the fire is smaller and the saw is bigger and wider … a mixture of these will hopefully begin to create a really hard level to completre … i also added double jump for the character / fixed double jump …. to stop players from abbusing double jump there is a small cooldown for double jump so its not exploited …. for the next devlog i would like to create a working level with a checkpoit that works on the other end .
i continued creating the level … i added 2 paths , a harder bottom path with required speed and accuracy or a easier top path which is easier but requires patience …. i am yet to finish the top layer on the level as i need to code the logic and animation for the trampoline which will be the core for most of the game … it gives you a jump boost + float which allows you to travel quite some distance when jumping off of it . the flame of the fire wasnt dealing damage so i fixed that by updating its hitbox . i then added a standing player animation so it moves up and down as if its breathing when idle ….
i worked on fixing major respawning bugs , the character respawns back where it is supposed to respawn but the character sprite disppears , this was really hard and long to debug . i also created the animation for the saw trap which allows the saw blade to spin which makes the game more realsitic and enjoyable to play
i worked on adding more the very first level , i made it decently simple with a hint* double jump involved … i fixed the saw animation as it looked like it was a glitchy looped gif but now a smooth continuos animation …. i added a wall of blocks so you cannot go the other way …. i am hoping to replace this with a wall of invisible blocks which you cannot pass instead of visible blocks …. i also want the platform to extend on for many more blocks which i added which allows me to create more levels in sequence . next i hope to finish level 2 so i have 2 fully working levels to play . the end goal is “impossible” levels which are close to impossible to complete and keep sane while playing them
i finished creating the first level … and the checkpoint actually works !!!, . i then had a problem with the creation of the objects , i decided to change the way the objects are created from lists into OOP , so classed and objects , this then broke my entire game :( …. i began fixing this and will hopefully be finished by the next devlog …. ;)
i worked on fixing the oop problem i had in the previous devlog … i then changed the whole structure of the code to make it easy to read and add changes in future devlogs …. i then added the animation for the trampolines and tested them … they change your gravity when you jump on them making it like a trampoline u jump on … there is a image attached of me testing one over a floor of spikes … the animation works perfectly now …. and before u would survive afrer falling on spikes when coming off the trampoline for some reason , i have that fixed now …… i hope ;D
i fully fixed the trampoline bug that gives you immunity to traps after jumping on it [i actually did now :) ] …. i then had some trouble with making more objects with the new layout of the code …. i then got around that and began tweaking the first level and planning the second level . i then began addind a enemy block - the green one in the image , and a new spikey enemy which follows you like a mario bloomba . i havnt added the logic for this but i will hope to add it in the next devlog :-)
i worked on creating the program that works in the background … it is a program that powers and gives the enemy its own brain… it follows the enemy (YOU!) , i am working on making it smarter and faster - its a bit dopey at the moment :( ….. the enemy kills you just by you touching it or it touching you - still working on that (give it some time !!) ….. i then worked on making the second level (i made it hard for you , yes YOU) …. hopefully we have a little enemy running around next devlog ?!
i worked on improving the self moving enemy … im still deciding wether to give it the ability ro move through objects or if i should have it move like a nomral player … i managed to get it to float so it can easily move terrain and it has got immunity to traps so it can even follow you through traps … but (theres always a but) you can easily get rid of the enemy by jumping over it from left to right a few times …. i want to fix this in the next devlog …
wow this is going to be a big devlog ! …. first i created a homescreen that players can log in / sign up for future scoreboard featuers …. and possible 2 player or singleplayer selector ….. next i began adding sound effects to the game - like when you die and respawn and jump - there is a delay but i will fix that in the next devlog …. then i made the enemy smarter and i decided to allow it to pass through block like a ghost …. the only block it doesnt pass through is you so it can elimiate you when its hitbox crosses your hitbox …. i then fixed some major respawning and hit box bugs that come about after double jumping which took FOREVER ….i finished completing level 2 which i have to say , well done to the creator of the game lol because this game is going to be epic !!! , see you in the next one !
i5 hours later … and this devlog is mainly focused on polishing, fixing bugs and making the game feel much smoother. First, I spent a lot of time going through the code and cleaning up some problems that were starting to appear as the game got bigger. I improved the overall efficiency of the game by removing unnecessary checks, optimising some of the update loops and making sure objects were not being processed when they did not need to be. This should help the game run better, especially when more enemies and level elements are added later. …. Next, I worked on fixing a bunch of smaller bugs that were affecting gameplay. I fixed some collision issues where the player could sometimes get stuck inside blocks, improved the respawn system so the player resets properly every time, and fixed some problems with the enemy behaviour after the player dies. There were also some annoying issues with jumping and movement that caused inconsistent results, so I spent time making the controls feel more reliable. …. WOW , i feel like a real game dev working ovetime lol …. Thank you , see you in the next one . that was a mouthful …
Another long session finished. This time it was all about the little details that make a game actually feel good to play. I spent most of the time polishing existing features rather than adding new ones. I adjusted movement, tweaked animations, cleaned up the UI, and made small improvements throughout the game that most players probably won’t even notice—but together they make a huge difference.I also tracked down a few more bugs that somehow managed to sneak in. There were some visual glitches, a couple of edge cases where objects weren’t behaving correctly, and a few issues with level transitions. After a lot of testing (and breaking the game several times), everything is now much more stable.It’s funny because I barely added any “new” content today, but the game honestly feels so much smoother than it did this morning. I guess this is what real game development is like—hours of polishing for improvements that are hard to see but easy to feel.Anyway… that’s another 5 hours gone. Time to call it a day. Thanks for watching, and I’ll see you in the next devlog!
i worked on creating a token/coin that you collect while trying to complete the level , i am debating wether to have a coin threthhold . so if you dont collect x amount of coints in the level you cannot activate the checkpoint … i also worked on a reset character reset game , resume interface where you can click esc to pause then you have the 3 options … i then created more sprites for the user to select what chatacter they want to play as … i am looking at adding different powers for each character in the next devlog … i added another level and i added smarter and more enemies that come to delete you off the game … lol … let me know what else i should add !!!….also i almost forgot , i added some new traps that i havnt put in the game yet but i have added the backend logic for - cant wait … thanks again!!
i worked on implementing the new traps i mensioned in the previous devlog … i then continued adding a new level … this then led me to an idea of a level selector so you can replay levels if you wanted to . - genuis …. which i started to implement … thanks ;)
i feel like a real dev that spends hours in the cave and comes out with 2-3 new features lol … today i worked on yet another level and added some new respawning and eliminating animations … i also animated the coins and added some secret special easter eggs within the game … you will need to wait for the game to be fully developed before finding out … again - any other features be sure to comment below on what features to add .
i finished working on the level i was working on in the previous devlog . i then came across a major issue … if i spam doublejump on spikes - i dont die … like i become superman - not good at all … i had to fix this , and i fixed it to have a longer cooldown when using you double jump so , basically you have enough time for your sprite to hit the trap …
ok … lets get this going … today i done a full code run thru as i could not find out why the player was still being immune to the spikes when double jumping .. but its now fixed .. not suprising for a genuis like me lol …. anyways - then i added yet ANOTHER level … making it the hardest one yet which includes all the traps and enemies and hard to reach coins .. i then implemented a theash hold which makes it so you have to get a certain amount of coins befroet the checkpoint activates … then i added a sprite selector to make it so that the player can choose the sprite and each sprite has a special move … still not yet fully decided the moves but they will be decided soon - hopefully next devloog … then i went ahead and tried to add a 2 player mode where 2 players can play on the same keyboard (player 1 : up , left , right ) (player 2 : w, a ,d) … there are a total of 6 enemies to face throughout … lets get this going .. we are nearly there at he end …. woooooooooooooooohooooo
i have fully gone over each level refining the placement of each and every object … i then played the game multiple times just to make sure it is actually possible …. i set up the code so that i can begin adding the abilities for each new characer … i then made sure there are no bugs so that when the second player is added nothing silly happens because there will be more inputs and more possibility of things going pear shaped … i know this is a boring devlog but it is neccesary … please come back for the next one it will be good .. i promise …
i have nearly finished the game !!! We’re getting really close to finishing the game now! This session was focused on adding the final gameplay features before polishing everything up.The biggest addition was the 2-player system, which is now fully implemented. It still needs a few tweaks and bug fixes, but the core mechanics are working well and make the game much more enjoyable.I also added a sprite selection screen, allowing players to choose their character before starting. Each sprite now has its own unique special ability, making every character feel different and encouraging players to experiment with different playstyles.Content-wise, I created two brand new levels, giving players more challenges to complete. To make these levels more interesting, I also introduced two new trap types along with another enemy variant, adding more variety and requiring players to think more carefully about how they progress through each stage.At this point, the game is almost complete. The remaining work is mainly polishing, balancing gameplay, fixing bugs, and making sure everything feels smooth before the final release.
i fixed placement of traps and enemies to make the levels dooable and also make the levels harder … im also planning to add and have started to add different level screens , so each level takes you to a different screen each time you complete it … also i made it so that you have to collect 40% of the coins available in each level to move onto the next level so dont be skipping coins … i also made all the characters have double jump because i felt bad for all you guys that will be playing the game …
i turned my code into a format that can be uploaded onto itch.io so i can begin getting ready for shipping this project … i then lowered the spiked swinging balls so its possible to jump across the gap in level 5 when finsihing the level … have a look !!
i worked on switching from itch.io to the github web to host my game
Ships:
What I made: an “impossible” platformer in Python/pygame — 4 characters each with their own move (dash, wall cling, ground pound, frog leap), 2 player mode, 5 levels, and traps like saws, a sliding rock head and a swinging spiked ball. Packaged it so it also runs in a browser through GitHub Pages, not just as a local script. What was challenging: making the abilities feel actually different from each other but still fair took a lot of back and forth, and the web version being randomly laggy took a while to actually track down instead of just guessing. Turned out it was checking collisions against every object in the whole level every single frame instead of just the stuff near the player, plus redrawing the background from scratch 238 times a frame. What I’m proud of: getting it running properly in a browser instead of just as a local file makes it feel like an actual finished thing rather than a script sitting on my laptop. It’s still a bit laggy on the GitHub Pages version, but running it locally on my own machine there’s no lag at all, so the game itself is solid — it’s specifically the web packaging that still needs work....
|
1792878778.141592
|
1793742778.141592
|
|
14391
|
StarOS by @Ved | Stardance
|
Ved
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T17:59:22Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "StarOS StarOS is a browser-based desktop environment built using vanilla HTML, CSS, and JavaScript. The project recreates the feel of a desktop operating system inside a web browser, complete with draggable windows, desktop icons, a live clock, and built-in applications. Current apps include: ⭐ Star Notes 📖 Wikipedia 📇 Contacts 🌤️ Weather One of the biggest challenges was building a reusable window system that supports dragging, opening, and closing multiple applications. Along the way I learned more about DOM manipulation, event handling, UI design, and organizing larger JavaScript projects. StarOS is still growing, and I plan to add more applications such as a calculator, settings app, file explorer, and music player. GitHub: https://github.com/VedDevs/StarOS Built with: HTML CSS JavaScript This was a fun project that taught me a lot about building interactive web applications from scratch.", "repo": "https://github.com/VedDevs/StarOS", "demo": "https://staros-web.netlify.app/"}]...
|
[{"post_id": 8770, "ts": "2026 [{"post_id": 8770, "ts": "2026-06-14T16:09:58Z", "hours": 1.0372, "text": "Weather App I added The a Weather App (without API!!)"}, {"post_id": 8017, "ts": "2026-06-13T11:43:45Z", "hours": 0.6644, "text": "Added Contacts app I added a Contacts App which allows users to contact me I also Refined the UI and Code"}, {"post_id": 7544, "ts": "2026-06-12T16:25:11Z", "hours": 1.3358, "text": "Created Wikipedia and updated the UI i finally added the wikipedia functionality, Updated The UI and made a logo for the OS also I used added the favicon to the StarOS"}, {"post_id": 6270, "ts": "2026-06-10T15:15:49Z", "hours": 2.2425, "text": "Completed the Tutorial I have Finally Completed the tutorial for WebOS and made the most basic OS for the future"}]...
|
Title: StarOS by @Ved | Stardance
Devlogs:
Comple Title: StarOS by @Ved | Stardance
Devlogs:
Completed the Tutorial I have Finally Completed the tutorial for WebOS and made the most basic OS for the future
Created Wikipedia and updated the UI i finally added the wikipedia functionality, Updated The UI and made a logo for the OS also I used added the favicon to the StarOS
Added Contacts app I added a Contacts App which allows users to contact me I also Refined the UI and Code
Weather App I added The a Weather App (without API!!)
Ships:
StarOS StarOS is a browser-based desktop environment built using vanilla HTML, CSS, and JavaScript. The project recreates the feel of a desktop operating system inside a web browser, complete with draggable windows, desktop icons, a live clock, and built-in applications. Current apps include: ⭐ Star Notes 📖 Wikipedia 📇 Contacts 🌤️ Weather One of the biggest challenges was building a reusable window system that supports dragging, opening, and closing multiple applications. Along the way I learned more about DOM manipulation, event handling, UI design, and organizing larger JavaScript projects. StarOS is still growing, and I plan to add more applications such as a calculator, settings app, file explorer, and music player. GitHub: https://github.com/VedDevs/StarOS Built with: HTML CSS JavaScript This was a fun project that taught me a lot about building interactive web applications from scratch....
|
1793599023.5461729
|
1793685423.5461729
|
|
14392
|
My very own WebOS by @daiddaid887 | Stardance
|
daiddaid887
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @daiddaid887 | Stardan Title: My very own WebOS by @daiddaid887 | Stardance...
|
1793566159.7229834
|
1794170959.7229834
|
|
14393
|
ISO-CORE Mod Launcher by @KeyScatter | Stardance
|
KeyScatter
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ISO-CORE Mod Launcher by @KeyScatter | Star Title: ISO-CORE Mod Launcher by @KeyScatter | Stardance...
|
1793368276.314562
|
1793973076.314562
|
|
14394
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792929154.9424248
|
1793793154.9424248
|
|
14395
|
4 axis robot arm by @brax10lleicht | Stardance
|
brax10lleicht
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 4 axis robot arm by @brax10lleicht | Starda Title: 4 axis robot arm by @brax10lleicht | Stardance...
|
1793184611.1922646
|
1793789411.1922646
|
|
14396
|
3d printed drone by @Akash | Stardance
|
Akash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3d printed drone by @Akash | Stardance
|
1793570175.9330964
|
1794174975.9330964
|
|
14397
|
My very own WebOS by @Firewolf | Stardance
|
Firewolf
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Firewolf | Stardance
|
1793220598.148028
|
1793825398.148028
|
|
14398
|
My awesome macropad! by @samot | Stardance
|
samot
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @samot | Stardance
|
1793354132.3186622
|
1793958932.3186622
|
|
14399
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792932488.5967817
|
1793796488.5967817
|
|
14400
|
My very own WebOS by @Nonkululeko | Stardance
|
Nonkululeko
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Nonkululeko | Stardan Title: My very own WebOS by @Nonkululeko | Stardance...
|
1793202824.995316
|
1793807624.995316
|