|
551
|
CH32V003 DevBoard by @Abean | Stardance
|
Abean
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: CH32V003 DevBoard by @Abean | Stardance
|
1792738456.1213045
|
1793343256.1213045
|
|
552
|
My awesome macropad! by @PysiaQV | Stardance
|
PysiaQV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @PysiaQV | Stardanc Title: My awesome macropad! by @PysiaQV | Stardance...
|
1792637345.3490603
|
1793242145.3490603
|
|
553
|
My awesome macropad! by @betanya2023 | Stardance
|
betanya2023
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @betanya2023 | Star Title: My awesome macropad! by @betanya2023 | Stardance...
|
1792608777.2741096
|
1793213577.2741096
|
|
554
|
My awesome macropad! by @jadyn | Stardance
|
jadyn
|
0
|
0.56
|
0
|
[]
|
[{"post_id": 2563, "ts": "2026 [{"post_id": 2563, "ts": "2026-06-05T03:59:47Z", "hours": 0.5639, "text": "1st Devlog I started creating the schematic yesterday based on the tutorial. Goals for this project: Macropad will have 9 keys, 1 knob and an OLED screen The keys function will include copying, pasting and cutting text, opening a new tab on Google, saving, Ctrl Z, opening snipping tool for screenshots, VS Code Pull + Push The knob will control my computer’s volume (I got the ideas for the functions by doing research on uses for macropads) Purpose: I want to create the macropad to be used by my left hand to reduce my tendency to use my right hand when typing."}]...
|
Title: My awesome macropad! by @jadyn | Stardance
Title: My awesome macropad! by @jadyn | Stardance
Devlogs:
1st Devlog I started creating the schematic yesterday based on the tutorial. Goals for this project: Macropad will have 9 keys, 1 knob and an OLED screen The keys function will include copying, pasting and cutting text, opening a new tab on Google, saving, Ctrl Z, opening snipping tool for screenshots, VS Code Pull + Push The knob will control my computer’s volume (I got the ideas for the functions by doing research on uses for macropads) Purpose: I want to create the macropad to be used by my left hand to reduce my tendency to use my right hand when typing....
|
1792590633.175841
|
1793195433.175841
|
|
555
|
Explosions by @esther | Stardance
|
esther
|
0
|
1.72
|
0
|
[]
|
[{"post_id": 105, "ts": "2026- [{"post_id": 105, "ts": "2026-05-31T19:05:02Z", "hours": 1.7161, "text": "So basically i explodes and gets my stream deck working declarartively and waste my day doing that"}]...
|
Title: Explosions by @esther | Stardance
Devlogs: Title: Explosions by @esther | Stardance
Devlogs:
So basically i explodes and gets my stream deck working declarartively and waste my day doing that...
|
1792554860.301264
|
1793159660.301264
|
|
556
|
amethystOS by @Keyboard1000n17 | Stardance
|
Keyboard1000n17
|
0
|
9.23
|
0
|
[]
|
[{"post_id": 4851, "ts": "2026 [{"post_id": 4851, "ts": "2026-06-08T11:53:11Z", "hours": 1.4258, "text": "whoops, forgot to do the devlog yesterday! well im too lazy to write stuff so here’s the gist of it: i made a (terrible) wallpaper in krita (and inkscape, i wasn’t able to do it properly ) i added swaybg to the package list swaybg autostarts with labwc branding gets copied to /usr/share/ every time i run the script to generate an iso that’s about it, i spent a while on that wallpaper for some reason (i just remembered i added the autostart thing in the vm and didn’t add it in the actual repo)"}, {"post_id": 3795, "ts": "2026-06-06T20:59:15Z", "hours": 1.38, "text": "woah woah woah! check this out! i customized waybar and got submenus working! well that doesn’t sound all that impressive, until you realize i had to plan it out. the thing is, much of this time didn’t get logged because i was testing configs in the virtual machine, which is a live usb without persistence. i just typed one line at a time and looked at how it changed and what could be improved. for the waybar , you might be wondering what happened to the colorful stuff. well, once i started my own styles, it stopped using the default config. it does look pretty cool tho! as for the right click menu in the background, you can see that it is showing a submenu too. the main menu has six things: firefox, a libreoffice submenu, a separator, a teminal, shutdown and reboot. the submenu has options to open the main libreoffice window, a libreoffice writer window, a libreoffice impress window and a libreoffice calc window. also, i took that icon out the full logo to make a colorful and white icon ! now just the wallpapers, which i installed krita for. that’s about it for today, and see you guys tomorrow!"}, {"post_id": 2976, "ts": "2026-06-05T22:00:53Z", "hours": 2.4594, "text": "hey hey hey! today was mostly creating a logo you can find it on github, but you wouldn’t open it, so here it is!: anyways, besides that, today i was able to get waybar to autostart so tomorrow, i’ve gotta do these: separate the icon out of the logo start with wallpapers get a proper config, this is nothing anyways, bye!"}, {"post_id": 2378, "ts": "2026-06-04T20:40:07Z", "hours": 1.1411, "text": "poof! there is now a gui!!! as you might have guessed, there’s still no artwork however, there is now some gui! in the screenshot, i am running waybar manually from a terminal. the terminal in question is called foot ( - also, there is 0 config of anything at all the login works perfectly! i don’t have a screenshot and i don’t want to boot up the vm again for this speaking of vms, i finally figured out why everything was so slow and sluggish—it was because qemu was using TCG (tiny code generator) (software emulation) instead of KVM acceleration (kernel-based virtual machine). i turned on kvm and it started up in SECONDS. that’s about it, and see you all tomorrow!"}, {"post_id": 1689, "ts": "2026-06-03T20:50:57Z", "hours": 0.9672, "text": "aaaa i found out lxdm can’t launch wayland sessions so i have to use something else. i settled on greetd for the backend login manager and greetd-regreet for the frontend. i chose regreet because apparently it’s written in rust, uses gtk4 and can easily be styled with css! will be great! anyways, as for the actual stuff, i put labwc in the package list even though its not configured. also, i still haven’t started with the artwork. so far, this is what i have that works ( )"}, {"post_id": 1035, "ts": "2026-06-02T20:29:35Z", "hours": 0.9464, "text": "amethystOS: you can’t tell its arch without the terminal! today, i tried to get a lightweight login manager working. first, i thought of sddm , but when i saw it, i felt it was too ugly. then i thought of wlgreeter , but it wasn’t in the repos. eventually, i settled on lxdm . it looks good and seems to work well. now you see, the problem is i need to auto-login into labwc , the compositor. remember that you don’t need a full desktop environment to ship a distro. the compositor can work well standalone. you just have to install a few things to be able to actually use it, and that’s what i plan on doing. also, i need make some artwork for this. i’ve already come up with a few designs for logos and wallpapers, i just have to actually make them in inkscape! i feel like my 4 wallpapers and final logo are pretty good! hoping to get stuff actually working tomorrow ✌️ i need to: configure autologin for live cd configure lxdm auto-start the calamares installer when the user boots the disk make a custom boot animation of course, make the boot animation"}, {"post_id": 432, "ts": "2026-06-01T20:44:07Z", "hours": 0.9092, "text": "its arch but it has a gui installer but its not manjaro or endeavor!!! amethystOS is arch but you can actually use it without being a wizard in the terminal. why install a gui yourself and spend hours (trying to) configure your setup when you can have the distro decide for you? and not only that, it comes with a bunch of pre-installed applications! libreoffice, the fox on fire, and more! at least, that’s the goal. i can’t even make an arch iso rn because whatever happened to the repo. anyways, you might see that the initial commit is from january, but that’s because i started this and never really started it. so as for what i actually did, i tried to get calamares working, but no, it kaboomed. well i’ll have to fix that, obviously, but i will work on the logo and artwork in the meanwhile! hoping for a great result by the end of this!✌️"}]...
|
Title: amethystOS by @Keyboard1000n17 | Stardance
Title: amethystOS by @Keyboard1000n17 | Stardance
Devlogs:
its arch but it has a gui installer but its not manjaro or endeavor!!! amethystOS is arch but you can actually use it without being a wizard in the terminal. why install a gui yourself and spend hours (trying to) configure your setup when you can have the distro decide for you? and not only that, it comes with a bunch of pre-installed applications! libreoffice, the fox on fire, and more! at least, that’s the goal. i can’t even make an arch iso rn because whatever happened to the repo. anyways, you might see that the initial commit is from january, but that’s because i started this and never really started it. so as for what i actually did, i tried to get calamares working, but no, it kaboomed. well i’ll have to fix that, obviously, but i will work on the logo and artwork in the meanwhile! hoping for a great result by the end of this!✌️
amethystOS: you can’t tell its arch without the terminal! today, i tried to get a lightweight login manager working. first, i thought of sddm , but when i saw it, i felt it was too ugly. then i thought of wlgreeter , but it wasn’t in the repos. eventually, i settled on lxdm . it looks good and seems to work well. now you see, the problem is i need to auto-login into labwc , the compositor. remember that you don’t need a full desktop environment to ship a distro. the compositor can work well standalone. you just have to install a few things to be able to actually use it, and that’s what i plan on doing. also, i need make some artwork for this. i’ve already come up with a few designs for logos and wallpapers, i just have to actually make them in inkscape! i feel like my 4 wallpapers and final logo are pretty good! hoping to get stuff actually working tomorrow ✌️ i need to: configure autologin for live cd configure lxdm auto-start the calamares installer when the user boots the disk make a custom boot animation of course, make the boot animation
aaaa i found out lxdm can’t launch wayland sessions so i have to use something else. i settled on greetd for the backend login manager and greetd-regreet for the frontend. i chose regreet because apparently it’s written in rust, uses gtk4 and can easily be styled with css! will be great! anyways, as for the actual stuff, i put labwc in the package list even though its not configured. also, i still haven’t started with the artwork. so far, this is what i have that works ( )
poof! there is now a gui!!! as you might have guessed, there’s still no artwork however, there is now some gui! in the screenshot, i am running waybar manually from a terminal. the terminal in question is called foot ( - also, there is 0 config of anything at all the login works perfectly! i don’t have a screenshot and i don’t want to boot up the vm again for this speaking of vms, i finally figured out why everything was so slow and sluggish—it was because qemu was using TCG (tiny code generator) (software emulation) instead of KVM acceleration (kernel-based virtual machine). i turned on kvm and it started up in SECONDS. that’s about it, and see you all tomorrow!
hey hey hey! today was mostly creating a logo you can find it on github, but you wouldn’t open it, so here it is!: anyways, besides that, today i was able to get waybar to autostart so tomorrow, i’ve gotta do these: separate the icon out of the logo start with wallpapers get a proper config, this is nothing anyways, bye!
woah woah woah! check this out! i customized waybar and got submenus working! well that doesn’t sound all that impressive, until you realize i had to plan it out. the thing is, much of this time didn’t get logged because i was testing configs in the virtual machine, which is a live usb without persistence. i just typed one line at a time and looked at how it changed and what could be improved. for the waybar , you might be wondering what happened to the colorful stuff. well, once i started my own styles, it stopped using the default config. it does look pretty cool tho! as for the right click menu in the background, you can see that it is showing a submenu too. the main menu has six things: firefox, a libreoffice submenu, a separator, a teminal, shutdown and reboot. the submenu has options to open the main libreoffice window, a libreoffice writer window, a libreoffice impress window and a libreoffice calc window. also, i took that icon out the full logo to make a colorful and white icon ! now just the wallpapers, which i installed krita for. that’s about it for today, and see you guys tomorrow!
whoops, forgot to do the devlog yesterday! well im too lazy to write stuff so here’s the gist of it: i made a (terrible) wallpaper in krita (and inkscape, i wasn’t able to do it properly ) i added swaybg to the package list swaybg autostarts with labwc branding gets copied to /usr/share/ every time i run the script to generate an iso that’s about it, i spent a while on that wallpaper for some reason (i just remembered i added the autostart thing in the vm and didn’t add it in the actual repo)...
|
1792734869.1976612
|
1793339669.1976612
|
|
557
|
MatchRatingCalculator by @Allen | Stardance
|
Allen
|
4
|
118.0
|
488
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T23:22:10Z", "hours": 57.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Veyro, a React-based sports rating website that lets players enter match stats, calculate a live performance score, save matches to a vault, compare progress, and use role-based features like Coach, Premium, and Video AI. The hardest part was converting the old HTML version into a full React app while keeping the same original graphics, layout, and feel, because the design and logic had to stay consistent across every page. I am proud that the project now has stronger account persistence, saving, navigation, monetization gates, Firebase/Firestore security, CI/CD, and automated tests with all tests passing. To test it, people should sign in or use guest mode, try the soccer calculator, save a match, open the vault, check graph/compare pages, and test locked features like team tools or Video AI depending on the user plan.", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com"}, {"ship_num": 2, "ts": "2026-07-10T17:15:40Z", "hours": 28.0, "multiplier": 7.97, "payout": 225, "blessing": "neutral", "text": "I made Veyro, a React-based sports rating website that lets players enter match stats, calculate a live performance score, save matches to a vault, compare progress, and use role-based features like Coach, Premium, and Video AI. The hardest part was converting the old HTML version into a full React app while keeping the same original graphics, layout, and feel, because the design and logic had to stay consistent across every page. I am proud that the project now has stronger account persistence, saving, navigation, monetization gates, Firebase/Firestore security, CI/CD, and automated tests with all tests passing. To test it, people should sign in or use guest mode, try the soccer calculator, save a match, open the vault, check graph/compare pages, and test locked features like team tools or Video AI depending on the user plan.", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com"}, {"ship_num": 3, "ts": "2026-07-01T19:24:22Z", "hours": 30.0, "multiplier": 7.92, "payout": 236, "blessing": "neutral", "text": "This looks like a Ship post on Replit or a similar platform. Here's something you can paste in: I built Veyro, a multi-sport player performance rating app for soccer, basketball, and football. Players enter their match stats and get a rating out of 100 using a position-specific formula — so a goalkeeper is judged on saves and clean sheets, not goals, and a quarterback is judged on touchdowns and interceptions, not tackles. Matches save to a personal vault so players can track their development over time. The most challenging part was building a clean React codebase that could handle three completely different sports with separate calculators, vaults, graphs, and coach pages for each — while keeping the architecture maintainable and the bundle size small. I also built a full coach onboarding flow with shareable team invite links, a three-tier monetization system with Stripe integration, and a CI/CD pipeline with 87 passing tests. I'm most proud of the billing and entitlements system — it handles free tier limits, Coach plan features, and Premium Video AI access cleanly across both the server and the React UI. The app scores 94 for performance, 100 for accessibility, and 96 for best practices on PageSpeed Insights. To test it: go to the calculator, pick your sport and position, enter some match stats, and hit calculate. Free accounts can save up to 5 matches to the vault. If you're a coach, hit Setup in the sidebar to create a team and get a shareable invite link for your players.", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com"}, {"ship_num": 4, "ts": "2026-06-06T19:21:42Z", "hours": 3.0, "multiplier": 8.58, "payout": 27, "blessing": "neutral", "text": "I made Match Rating, a soccer performance app that helps players turn their match stats into a clear rating out of 100. I can calculate a live score, save games, track my progress in a vault, view graphs, analyze strengths and weaknesses, compare games, join coach teams, and test an experimental AI video-analysis tool. The most challenging part was making everything work together: the calculator, Firebase sign-in, saved stats, graphs, analysis, coach/player roles, team codes, privacy settings, mobile design, and the AI backend. It was also hard to make the app remember each player’s name, age, position, team, saved games, and detailed stats without breaking the user experience. I am proud that this became more than just a simple calculator. I built a full player-development platform with accounts, saved match history, team features, analytics, exports, scorecards, and a mobile-friendly design. I’m also proud that I improved it through feedback and kept making it cleaner, faster, and easier to use. People testing my product should know that they should sign up as a player or coach, enter their profile information, use the calculator first, and then save the match in the Vault. After saving games, they can check the Graph, Analysis, Compare Games, Profile, and Team pages. Coaches can create a team code and invite players. The Video AI feature is still experimental, so users should double-check the stats it gives.", "repo": "https://github.com/awang03-crypto/Veyrov2.6", "demo": "https://darksalmon-lark-983637.hostingersite.com"}]...
|
[{"post_id": 34256, "ts": "202 [{"post_id": 34256, "ts": "2026-07-24T19:58:49Z", "hours": 9.0, "text": "I improved the security and I improved and rewrote the firebase rules to make it easier to login and stuff."}, {"post_id": 33518, "ts": "2026-07-23T15:13:44Z", "hours": 9.0, "text": "I debugged the whole site"}, {"post_id": 32555, "ts": "2026-07-21T20:15:21Z", "hours": 9.0, "text": "I worked on the pricing of everything. I also made the video ai better and also worked on the pricing of the ai."}, {"post_id": 29287, "ts": "2026-07-16T03:09:38Z", "hours": 8.0, "text": "Making Veyro blogs on the site to improve backlinks along with SEO along with improving how to explain how this works."}, {"post_id": 28462, "ts": "2026-07-14T18:31:32Z", "hours": 9.0, "text": "I just focused on making it more suitable for coaches and trying to add more sports"}, {"post_id": 27717, "ts": "2026-07-13T14:51:07Z", "hours": 9.0, "text": "I worked on running tests on my website and making sure that there were no significant bugs."}, {"post_id": 26008, "ts": "2026-07-10T15:58:23Z", "hours": 8.0, "text": "I worked on the privacy and security."}, {"post_id": 24927, "ts": "2026-07-08T20:04:41Z", "hours": 8.0, "text": "I worked on just improving minor bugs and minor fixes. I also tried to make a lot of guides in the site to help coaches and parents."}, {"post_id": 24196, "ts": "2026-07-07T16:43:22Z", "hours": 8.0, "text": "I improved the calculator logic and scoring system along with the SEO"}, {"post_id": 23461, "ts": "2026-07-06T13:30:42Z", "hours": 2.0, "text": "I just improved the security"}, {"post_id": 20205, "ts": "2026-07-01T19:09:11Z", "hours": 2.0, "text": "I built out the coach onboarding flow, which walks coaches through creating an account, setting their role, generating a team, and sharing a unique invite link so players can request to join at veyro.com/join/TEAMCODE. I also wrote five long-form SEO blog posts targeting high-intent keywords — how to rate soccer players, a youth coach playbook, player performance analytics, a basketball rating system guide, and a football rating system guide — each with JSON-LD schema markup for Google rich results. Alongside the content work, I updated the sitemap to include all sixteen pages, fixed a missing meta description that PageSpeed Insights had flagged, and added SoftwareApplication and FAQPage structured data to the calculator homepage to improve search visibility."}, {"post_id": 19501, "ts": "2026-06-30T20:34:01Z", "hours": 5.0, "text": "I just improved the SEO"}, {"post_id": 18021, "ts": "2026-06-29T00:09:19Z", "hours": 2.0, "text": "I migrated the website into a unified React application while preserving its original graphics and layout, restored the calculator’s complete rating logic, improved account persistence, fixed saving and navigation, added Free, Coach, and Premium feature gates, strengthened Firebase and Firestore security, configured Stripe billing support, expanded automated backend and React tests, and updated CI/CD until all 87 tests passed."}, {"post_id": 13978, "ts": "2026-06-22T22:57:55Z", "hours": 2.0, "text": "I fixed the calculator format by implementing the iframe-based architecture from the zip, added the missing /calculator route to resolve the blank page issue, updated the navigation to use React Router’s navigate instead of window.location.href, implemented authentication bridging between React and legacy HTML pages, configured legacy page loaders for all routes, set up basketball and football subdirectories with their own calculators, added proper CSS module imports for all pages, integrated the sidebar, mobile nav, and toast components, and established the services for ratings and monetization."}, {"post_id": 11625, "ts": "2026-06-18T22:50:05Z", "hours": 1.0, "text": "I worked on turning the website from a mixed old HTML project into a React-based Veyro app while trying to keep the original graphics and page style the same. I added infrastructure like tests, build checks, linting, coverage, CI-style safety work, monetization plan logic, Video AI entitlement checks, and Hostinger deployment support. I also rebuilt the deployment output, fixed the Save & Benchmark flow, fixed the Vault save error caused by about:srcdoc, rewired old .html routes into React routes, added Hostinger .htaccess fallback support, and added basketball/football redirect files so those sections could still open after the old HTML files were removed."}, {"post_id": 10822, "ts": "2026-06-17T19:23:33Z", "hours": 2.0, "text": "I added coverage reporting and enforced a minimum threshold in CI, expanded unit and integration tests (including Firestore rules and critical server endpoints), implemented a billing integration with secure webhook handling to update plan fields, incrementally migrated legacy HTML pages into React components—prioritizing high‑traffic and complex pages and retiring the static files after verifying parity and tests—added linting, dependency and secret scanning to CI, and hardened operations with health/metrics checks and deployment documentation."}, {"post_id": 9941, "ts": "2026-06-16T13:51:54Z", "hours": 1.0, "text": "I polished Veyro from a rougher soccer rating site into a more professional product: I improved the homepage branding, spacing, mobile layout, CTA clarity, guest flow, rating preview, and overall visual quality; fixed the bad unfinished React placeholder that was accidentally showing instead of the real site; moved the React build safely under /app; rebuilt and tested the project; removed the mini pitch that I didn’t like."}, {"post_id": 9247, "ts": "2026-06-15T15:07:49Z", "hours": 4.0, "text": "I changed the website to feel much more like a polished Veyro landing/app entry page: the homepage now has a branded hero, clearer soccer performance messaging, feature pills for the live calculator, saved vault, and coach insights, a rating preview card showing an example match score, improved signup/sign-in/profile entry states, and expanded SEO sections explaining how Veyro works for players, parents, and coaches. I also added basic ESLint config for cleaner JavaScript going forward. Finally, I also changed the whole website to be running with React instead of HTML only so that the whole app should be faster."}, {"post_id": 6335, "ts": "2026-06-10T17:45:54Z", "hours": 2.0, "text": "In the last couple hours, we tightened up Veyro across auth, SEO, sharing, and polish: we fixed Firebase/Google auth issues by changing the server popup header, switching Google auth to popup-first, improving stale service-worker caching, and adding clearer email/password errors plus email verification reminders; upgraded the public recruiting profile with copy-link, save-PDF, and coach-style sections; improved SEO with a new soccer performance guide, better metadata, sitemap/robots cleanup, breadcrumb/FAQ schema validation, noindexing the experimental Video AI page, and backlink outreach copy; rewrote the README into a cleaner project overview; scanned the whole site for bugs without changing anything; and discussed advertising strategy plus the best next product improvements like demo data, coach setup, invite links, and better empty states."}, {"post_id": 5879, "ts": "2026-06-09T20:46:35Z", "hours": 1.0, "text": "I changed the website name to Veyro and I also made the firebase security more secure and way faster. I made the sidebar again look better and improved the UI of all the pages."}, {"post_id": 5149, "ts": "2026-06-08T20:44:04Z", "hours": 1.0, "text": "I worked on making the sidebar for the whole website look better. I also added a privacy page where users can request their data and object to any preferences they don’t want. I also made it so that the styles of different pages are more or less the same so that users feel like there aren’t big changes when going to the next page."}, {"post_id": 4941, "ts": "2026-06-08T15:47:49Z", "hours": 1.0, "text": "I added a cleaner coach page and made reports easier to share and cleaner to share. I also made the vault cleaner and less clogged. I also tightened the whole security of the whole website."}, {"post_id": 4455, "ts": "2026-06-07T19:36:33Z", "hours": 1.0, "text": "Improving the SEO and getting it ready for Google Search Console."}, {"post_id": 3704, "ts": "2026-06-06T19:12:57Z", "hours": 3.0, "text": "I made the whole website faster and cleaner. I also made it so that you can download this website as a app now."}]...
|
Title: MatchRatingCalculator by @Allen | Stardance Title: MatchRatingCalculator by @Allen | Stardance
Devlogs:
I made the whole website faster and cleaner. I also made it so that you can download this website as a app now.
Improving the SEO and getting it ready for Google Search Console.
I added a cleaner coach page and made reports easier to share and cleaner to share. I also made the vault cleaner and less clogged. I also tightened the whole security of the whole website.
I worked on making the sidebar for the whole website look better. I also added a privacy page where users can request their data and object to any preferences they don’t want. I also made it so that the styles of different pages are more or less the same so that users feel like there aren’t big changes when going to the next page.
I changed the website name to Veyro and I also made the firebase security more secure and way faster. I made the sidebar again look better and improved the UI of all the pages.
In the last couple hours, we tightened up Veyro across auth, SEO, sharing, and polish: we fixed Firebase/Google auth issues by changing the server popup header, switching Google auth to popup-first, improving stale service-worker caching, and adding clearer email/password errors plus email verification reminders; upgraded the public recruiting profile with copy-link, save-PDF, and coach-style sections; improved SEO with a new soccer performance guide, better metadata, sitemap/robots cleanup, breadcrumb/FAQ schema validation, noindexing the experimental Video AI page, and backlink outreach copy; rewrote the README into a cleaner project overview; scanned the whole site for bugs without changing anything; and discussed advertising strategy plus the best next product improvements like demo data, coach setup, invite links, and better empty states.
I changed the website to feel much more like a polished Veyro landing/app entry page: the homepage now has a branded hero, clearer soccer performance messaging, feature pills for the live calculator, saved vault, and coach insights, a rating preview card showing an example match score, improved signup/sign-in/profile entry states, and expanded SEO sections explaining how Veyro works for players, parents, and coaches. I also added basic ESLint config for cleaner JavaScript going forward. Finally, I also changed the whole website to be running with React instead of HTML only so that the whole app should be faster.
I polished Veyro from a rougher soccer rating site into a more professional product: I improved the homepage branding, spacing, mobile layout, CTA clarity, guest flow, rating preview, and overall visual quality; fixed the bad unfinished React placeholder that was accidentally showing instead of the real site; moved the React build safely under /app; rebuilt and tested the project; removed the mini pitch that I didn’t like.
I added coverage reporting and enforced a minimum threshold in CI, expanded unit and integration tests (including Firestore rules and critical server endpoints), implemented a billing integration with secure webhook handling to update plan fields, incrementally migrated legacy HTML pages into React components—prioritizing high‑traffic and complex pages and retiring the static files after verifying parity and tests—added linting, dependency and secret scanning to CI, and hardened operations with health/metrics checks and deployment documentation.
I worked on turning the website from a mixed old HTML project into a React-based Veyro app while trying to keep the original graphics and page style the same. I added infrastructure like tests, build checks, linting, coverage, CI-style safety work, monetization plan logic, Video AI entitlement checks, and Hostinger deployment support. I also rebuilt the deployment output, fixed the Save & Benchmark flow, fixed the Vault save error caused by about:srcdoc, rewired old .html routes into React routes, added Hostinger .htaccess fallback support, and added basketball/football redirect files so those sections could still open after the old HTML files were removed.
I fixed the calculator format by implementing the iframe-based architecture from the zip, added the missing /calculator route to resolve the blank page issue, updated the navigation to use React Router’s navigate instead of window.location.href, implemented authentication bridging between React and legacy HTML pages, configured legacy page loaders for all routes, set up basketball and football subdirectories with their own calculators, added proper CSS module imports for all pages, integrated the sidebar, mobile nav, and toast components, and established the services for ratings and monetization.
I migrated the website into a unified React application while preserving its original graphics and layout, restored the calculator’s complete rating logic, improved account persistence, fixed saving and navigation, added Free, Coach, and Premium feature gates, strengthened Firebase and Firestore security, configured Stripe billing support, expanded automated backend and React tests, and updated CI/CD until all 87 tests passed.
I just improved the SEO
I built out the coach onboarding flow, which walks coaches through creating an account, setting their role, generating a team, and sharing a unique invite link so players can request to join at veyro.com/join/TEAMCODE. I also wrote five long-form SEO blog posts targeting high-intent keywords — how to rate soccer players, a youth coach playbook, player performance analytics, a basketball rating system guide, and a football rating system guide — each with JSON-LD schema markup for Google rich results. Alongside the content work, I updated the sitemap to include all sixteen pages, fixed a missing meta description that PageSpeed Insights had flagged, and added SoftwareApplication and FAQPage structured data to the calculator homepage to improve search visibility.
I just improved the security
I improved the calculator logic and scoring system along with the SEO
I worked on just improving minor bugs and minor fixes. I also tried to make a lot of guides in the site to help coaches and parents.
I worked on the privacy and security.
I worked on running tests on my website and making sure that there were no significant bugs.
I just focused on making it more suitable for coaches and trying to add more sports
Making Veyro blogs on the site to improve backlinks along with SEO along with improving how to explain how this works.
I worked on the pricing of everything. I also made the video ai better and also worked on the pricing of the ai.
I debugged the whole site
I improved the security and I improved and rewrote the firebase rules to make it easier to login and stuff.
Ships:
I made Match Rating, a soccer performance app that helps players turn their match stats into a clear rating out of 100. I can calculate a live score, save games, track my progress in a vault, view graphs, analyze strengths and weaknesses, compare games, join coach teams, and test an experimental AI video-analysis tool. The most challenging part was making everything work together: the calculator, Firebase sign-in, saved stats, graphs, analysis, coach/player roles, team codes, privacy settings, mobile design, and the AI backend. It was also hard to make the app remember each player’s name, age, position, team, saved games, and detailed stats without breaking the user experience. I am proud that this became more than just a simple calculator. I built a full player-development platform with accounts, saved match history, team features, analytics, exports, scorecards, and a mobile-friendly design. I’m also proud that I improved it through feedback and kept making it cleaner, faster, and easier to use. People testing my product should know that they should sign up as a player or coach, enter their profile information, use the calculator first, and then save the match in the Vault. After saving games, they can check the Graph, Analysis, Compare Games, Profile, and Team pages. Coaches can create a team code and invite players. The Video AI feature is still experimental, so users should double-check the stats it gives.
This looks like a Ship post on Replit or a similar platform. Here's something you can paste in: I built Veyro, a multi-sport player performance rating app for soccer, basketball, and football. Players enter their match stats and get a rating out of 100 using a position-specific formula — so a goalkeeper is judged on saves and clean sheets, not goals, and a quarterback is judged on touchdowns and interceptions, not tackles. Matches save to a personal vault so players can track their development over time. The most challenging part was building a clean React codebase that could handle three completely different sports with separate calculators, vaults, graphs, and coach pages for each — while keeping the architecture maintainable and the bundle size small. I also built a full coach onboarding flow with shareable team invite links, a three-tier monetization system with Stripe integration, and a CI/CD pipeline with 87 passing tests. I'm most proud of the billing and entitlements system — it handles free tier limits, Coach plan features, and Premium Video AI access cleanly across both the server and the React UI. The app scores 94 for performance, 100 for accessibility, and 96 for best practices on PageSpeed Insights. To test it: go to the calculator, pick your sport and position, enter some match stats, and hit calculate. Free accounts can save up to 5 matches to the vault. If you're a coach, hit Setup in the sidebar to create a team and get a shareable invite link for your players.
I made Veyro, a React-based sports rating website that lets players enter match stats, calculate a live performance score, save matches to a vault, compare progress, and use role-based features like Coach, Premium, and Video AI. The hardest part was converting the old HTML version into a full React app while keeping the same original graphics, layout, and feel, because the design and logic had to stay consistent across every page. I am proud that the project now has stronger account persistence, saving, navigation, monetization gates, Firebase/Firestore security, CI/CD, and automated tests with all tests passing. To test it, people should sign in or use guest mode, try the soccer calculator, save a match, open the vault, check graph/compare pages, and test locked features like team tools or Video AI depending on the user plan.
I made Veyro, a React-based sports rating website that lets players enter match stats, calculate a live performance score, save matches to a vault, compare progress, and use role-based features like Coach, Premium, and Video AI. The hardest part was converting the old HTML version into a full React app while keeping the same original graphics, layout, and feel, because the design and logic had to stay consistent across every page. I am proud that the project now has stronger account persistence, saving, navigation, monetization gates, Firebase/Firestore security, CI/CD, and automated tests with all tests passing. To test it, people should sign in or use guest mode, try the soccer calculator, save a match, open the vault, check graph/compare pages, and test locked features like team tools or Video AI depending on the user plan....
|
1792882070.3901622
|
1793746070.3901622
|
|
558
|
3D Printed Planetary Gearbox Editor by @preston_me 3D Printed Planetary Gearbox Editor by @preston_messina | Stardance...
|
preston_messina
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3D Printed Planetary Gearbox Editor by @pre Title: 3D Printed Planetary Gearbox Editor by @preston_messina | Stardance...
|
1792562019.688978
|
1793166819.688978
|
|
559
|
Starry Night by @Kiki | Stardance
|
Kiki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Starry Night by @Kiki | Stardance
|
1791826621.356081
|
1792690621.356081
|
|
560
|
My first slack bot! by @orangetreefrog4 | Stardanc My first slack bot! by @orangetreefrog4 | Stardance...
|
orangetreefrog4
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @orangetreefrog4 | S Title: My first slack bot! by @orangetreefrog4 | Stardance...
|
1792576060.2300115
|
1793180860.2300115
|
|
561
|
My awesome macropad! by @MicahO | Stardance
|
MicahO
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @MicahO | Stardance
|
1792612520.6661658
|
1793217320.6661658
|
|
562
|
Chess in Python Turtle 🐢 by @Mehmet | Stardance
|
Mehmet
|
1
|
7.0
|
80
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T21:01:01Z", "hours": 7.0, "multiplier": 12.05, "payout": 80, "blessing": "neutral", "text": "I built pure chess inside Python Turtle. The entire idea of making a fully fledged game in Python’s Turtle seemed absurd, but there is tangible proof now. I’m proud of how I handled the piece moving and square highlighting code snippets; those were really fun to work on. Here are some tests you can do to see if my project holds up: Try clicking outside the board to move a piece, and you’ll see that it doesn’t. Try moving a piece outside the board. Try moving kings to squares that opposing pieces see. Try double pushing pawns. Right now, I haven’t added en passant or castling, but a 99% fledged chess game inside Python Turtle is ready for you to play.", "repo": "https://github.com/SameRainbows/Python-Turtle-Chess", "demo": "https://github.com/SameRainbows/Python-Turtle-Chess/releases/tag/V1"}]...
|
[{"post_id": 8112, "ts": "2026 [{"post_id": 8112, "ts": "2026-06-13T15:19:39Z", "hours": 1.8964, "text": "Finally, I can say that I’ve built chess—fully fledged chess—in Python Turtle. I added check, checks, checkmates, and all the logic that makes them up. I also created a new function called has_legal_moves, which takes one parameter to see if the attacker is white. In total, I defined 11 functions back to back in the Python file. It seems funny, but that’s what was needed. Thank you, every1!"}, {"post_id": 7080, "ts": "2026-06-11T21:14:12Z", "hours": 0.5017, "text": "Added basic promotions when the pawns go to the opposite side (for now they default to only queen promotions, more coming soon) and right now started working on the final boss of chess programming… Checks and checkmates. Wish me luck!"}, {"post_id": 5677, "ts": "2026-06-09T15:40:24Z", "hours": 0.9253, "text": "Welcome back to my pit of inevitable doom, where I’m trying to build fully fledged chess inside pure Python turtle. This devlog is because I finally managed to get a glimpse of the sunlight and add the special moves and captures for pawns. Before right now, pawns could only move one step forward no matter the place, and they actually captured by going forward into the enemy. If you play chess, you know it’s not like that. I have now implemented the following: Two-step support for pawns going on their first move. Logic so that pawns cannot capture pieces directly in front of them. Support for pawns capturing pieces only on their front diagonals. Follow along if you want to see if I ever get out of this!!! :D"}, {"post_id": 2915, "ts": "2026-06-05T20:22:29Z", "hours": 0.9917, "text": "Added legal moves and support for the knight, king, rook and pawn. The bishop is on the way"}, {"post_id": 2776, "ts": "2026-06-05T16:03:50Z", "hours": 0.7839, "text": "Added coordinates for the chessboard with a new function called print_coordinates. I also added a bouncer function to check if a piece is trying to move to a square that has a piece of the same color. If it’s trying to capture its own piece, it doesn’t allow the move. I implemented this by creating a new function called is_legal_move."}, {"post_id": 2264, "ts": "2026-06-04T17:37:49Z", "hours": 1.1539, "text": "Created functions for repeated tasks."}, {"post_id": 980, "ts": "2026-06-02T19:18:29Z", "hours": 0.47, "text": "Making fully fledged chess inside Python Turtle."}]...
|
Title: Chess in Python Turtle 🐢 by @Mehmet | Stard Title: Chess in Python Turtle 🐢 by @Mehmet | Stardance
Devlogs:
Making fully fledged chess inside Python Turtle.
Created functions for repeated tasks.
Added coordinates for the chessboard with a new function called print_coordinates. I also added a bouncer function to check if a piece is trying to move to a square that has a piece of the same color. If it’s trying to capture its own piece, it doesn’t allow the move. I implemented this by creating a new function called is_legal_move.
Added legal moves and support for the knight, king, rook and pawn. The bishop is on the way
Welcome back to my pit of inevitable doom, where I’m trying to build fully fledged chess inside pure Python turtle. This devlog is because I finally managed to get a glimpse of the sunlight and add the special moves and captures for pawns. Before right now, pawns could only move one step forward no matter the place, and they actually captured by going forward into the enemy. If you play chess, you know it’s not like that. I have now implemented the following: Two-step support for pawns going on their first move. Logic so that pawns cannot capture pieces directly in front of them. Support for pawns capturing pieces only on their front diagonals. Follow along if you want to see if I ever get out of this!!! :D
Added basic promotions when the pawns go to the opposite side (for now they default to only queen promotions, more coming soon) and right now started working on the final boss of chess programming… Checks and checkmates. Wish me luck!
Finally, I can say that I’ve built chess—fully fledged chess—in Python Turtle. I added check, checks, checkmates, and all the logic that makes them up. I also created a new function called has_legal_moves, which takes one parameter to see if the attacker is white. In total, I defined 11 functions back to back in the Python file. It seems funny, but that’s what was needed. Thank you, every1!
Ships:
I built pure chess inside Python Turtle. The entire idea of making a fully fledged game in Python’s Turtle seemed absurd, but there is tangible proof now. I’m proud of how I handled the piece moving and square highlighting code snippets; those were really fun to work on. Here are some tests you can do to see if my project holds up: Try clicking outside the board to move a piece, and you’ll see that it doesn’t. Try moving a piece outside the board. Try moving kings to squares that opposing pieces see. Try double pushing pawns. Right now, I haven’t added en passant or castling, but a 99% fledged chess game inside Python Turtle is ready for you to play....
|
1792846203.5605648
|
1792932603.5605648
|
|
563
|
Untitled by @kuratus | Stardance
|
kuratus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @kuratus | Stardance
|
1792684354.8401766
|
1793289154.8401766
|
|
564
|
My awesome macropad! by @andrea_zambolin09 | Stard My awesome macropad! by @andrea_zambolin09 | Stardance...
|
andrea_zambolin09
|
0
|
0.57
|
0
|
[]
|
[{"post_id": 28914, "ts": "202 [{"post_id": 28914, "ts": "2026-07-15T14:53:09Z", "hours": 0.5669, "text": "done both the pcb and the case (I kinda forgot to record the first time so I speedrun the whole project again)"}]...
|
Title: My awesome macropad! by @andrea_zambolin09 Title: My awesome macropad! by @andrea_zambolin09 | Stardance
Devlogs:
done both the pcb and the case (I kinda forgot to record the first time so I speedrun the whole project again)...
|
1792633820.1228766
|
1793238620.1228766
|
|
565
|
Untitled by @olive | Stardance
|
olive
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @olive | Stardance
|
1792659297.6087897
|
1793264097.6087897
|
|
566
|
Personal Website by @stoinkety | Stardance
|
stoinkety
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal Website by @stoinkety | Stardance
|
1792586967.1582623
|
1793191767.1582623
|
|
567
|
Personal Website by @eli | Stardance
|
eli
|
0
|
0.67
|
0
|
[]
|
[{"post_id": 409, "ts": "2026- [{"post_id": 409, "ts": "2026-06-01T20:15:13Z", "hours": 0.6728, "text": "Made the base for my personal website! I used Gemini to help me build some example components I used to build my own!"}]...
|
Title: Personal Website by @eli | Stardance
Devlo Title: Personal Website by @eli | Stardance
Devlogs:
Made the base for my personal website! I used Gemini to help me build some example components I used to build my own!...
|
1791823717.4680443
|
1792687717.4680443
|
|
568
|
My awesome macropad! by @Sushmita | Stardance
|
Sushmita
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Sushmita | Stardan Title: My awesome macropad! by @Sushmita | Stardance...
|
1792925247.9542224
|
1793789247.9542224
|
|
569
|
Lore by @gameminder | Stardance
|
gameminder
|
0
|
2.48
|
0
|
[]
|
[{"post_id": 718, "ts": "2026- [{"post_id": 718, "ts": "2026-06-02T09:36:40Z", "hours": 2.4764, "text": "currently building a memory layer for ai agents that is context aware using knowledge graphs with entity relations. any more ides on this?"}]...
|
Title: Lore by @gameminder | Stardance
Devlogs:
c Title: Lore by @gameminder | Stardance
Devlogs:
currently building a memory layer for ai agents that is context aware using knowledge graphs with entity relations. any more ides on this?...
|
1792583393.6572468
|
1793188193.6572468
|
|
570
|
Mira by @Joker | Stardance
|
Joker
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mira by @Joker | Stardance
|
1792727249.8490574
|
1793332049.8490574
|
|
571
|
test project ? by @qcoral | Stardance
|
qcoral
|
1
|
27.1
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T14:46:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "testing ship", "repo": "https://github.com/hackclub/hackpad", "demo": ""}]...
|
[{"post_id": 38280, "ts": "202 [{"post_id": 38280, "ts": "2026-07-31T16:21:53Z", "hours": 25.0969, "text": "hihihih"}, {"post_id": 270, "ts": "2026-06-01T14:20:58Z", "hours": 2.0525, "text": "testing"}]...
|
Title: test project ? by @qcoral | Stardance
Devl Title: test project ? by @qcoral | Stardance
Devlogs:
testing
hihihih
Ships:
testing ship...
|
1792828620.260118
|
1792915020.260118
|
|
572
|
My awesome macropad! by @zerooneshift | Stardance
|
zerooneshift
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @zerooneshift | Sta Title: My awesome macropad! by @zerooneshift | Stardance...
|
1792702427.891896
|
1793307227.891896
|
|
573
|
My awesome macropad! by @tengenrusei | Stardance
|
tengenrusei
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @tengenrusei | Star Title: My awesome macropad! by @tengenrusei | Stardance...
|
1792918176.5484447
|
1793782176.5484447
|
|
574
|
Untitled by @tengenrusei | Stardance
|
tengenrusei
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @tengenrusei | Stardance
|
1792918077.0374317
|
1793782077.0374317
|
|
575
|
KeyGenius by @Eugenius74 | Stardance
|
Eugenius74
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: KeyGenius by @Eugenius74 | Stardance
|
1792673302.7045476
|
1793278102.7045476
|
|
576
|
Ghost Proxy by @MH | Stardance
|
MH
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T18:08:58Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a proxy hub and game site.", "repo": "https://github.com/amazingcoder132/Ghost-Proxy", "demo": "https://amazingcoder132.github.io/Ghost-Proxy/"}]...
|
[{"post_id": 140, "ts": "2026- [{"post_id": 140, "ts": "2026-05-31T22:36:26Z", "hours": 0.3214, "text": "A Website that allows people to find games and proxies"}]...
|
Title: Ghost Proxy by @MH | Stardance
Devlogs:
A Title: Ghost Proxy by @MH | Stardance
Devlogs:
A Website that allows people to find games and proxies
Ships:
I made a proxy hub and game site....
|
1792824811.1367135
|
1792911211.1367135
|
|
577
|
My first slack bot! by @SB | Stardance
|
SB
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @SB | Stardance
|
1792547462.133024
|
1793152262.133024
|
|
578
|
Cara Website by @SB | Stardance
|
SB
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cara Website by @SB | Stardance
|
1792529273.0967221
|
1793134073.0967221
|
|
579
|
Runik - Just Run It by @uv | Stardance
|
uv
|
0
|
44.74
|
0
|
[]
|
[{"post_id": 67688, "ts": "202 [{"post_id": 67688, "ts": "2026-09-13T21:17:48Z", "hours": 1.0225, "text": "Finished proxy - but I can’t use it I finished writing the proxy. I had to: Retrieve the provided containers internal IP Generate a random IPv6 address within the given prefix and add it using netlink Start a proxy, listening at the generated IPv6 for each port, and proxying it to the containers IP. This works, but unfortunately I can’t use it! My server provider, datalix, gives a /64 subnet for each VPS, but what they don’t tell you is that you can only have 10 routed IPv6 addresses! This is not enough, and I have to manually add the addresses anyways. This means that I can’t listen on the generated IP address, and also that I can’t give each container an IP. This is a big problem, because some applications (like a minecraft server) require a plain TCP connection, which does not work behind a reverse proxy since there is no hostname passed. My only option is to rent a dedicated server, which I can’t afford right now. So now I will continue work on other parts of the project, like making it viable and easy to deploy different services, offer one click apps/database and potentially work on a way provision servers from the cloud. Commits: Retrieve container IPv4 address on expose command Finish proxy"}, {"post_id": 66762, "ts": "2026-09-12T17:28:10Z", "hours": 1.2539, "text": "Finished proxy communication Wrote a library to make receiving and sending messages really simple. Uses unix sockets so they are pretty fast. The server is started in the background, then different commands are received through channels. On the client, the connection is started in the background but c.Start() waits for the connection to change to connected. Then messages can be sent, but the connection has to be sustained using c.Wait() which waits until the server disconnects. Now I can start work on querying the docker container for its internal ip address and proxying it. Commit"}, {"post_id": 66189, "ts": "2026-09-11T21:06:12Z", "hours": 0.3208, "text": "Started work on the proxy API Not much to show, but I started writing code to create a unix socket to listen for messages. I’ll need to pass a container name, and array of ports to publish. I’ll also have to figure out how to pick new ipv6 addresses"}, {"post_id": 65549, "ts": "2026-09-10T19:14:29Z", "hours": 5.9189, "text": "long time no see I kinda hit a roadblock and waiting till I got past it until posting a devlog, but that never happened. That roadblock was trying to give each container a public ipv6 address. I was trying to get docker to expose ports on a specific ipv6 address on each container, but no matter what I did there still ended up being port conflicts. I found a better alternative now though, which is writing a proxy service that binds to an ipv6 address, and forwards the traffic to the containers internal ipv4 address. This works, but now I need to write an API so my virtual server can specify a container name and ports to forward to a public address, and dynamically create these addresses I still worked on other stuff though, so here’s what I have changed: (Sorry for massive devlog) The docker virtual server now syncs products automatically to the platform. Before it had to be done through a cURL command. Add a default postgres url to configuration Add a Key-Value input (UI library) Add support support for Key Value inputs to platform Allow users to configure volumes Simplify virtual server configuration by removing suboptions Allow regex validation for text inputs Fixes for KV Input: 1 , 2 Add a README Disable email verification by default Style scrollbar on chrome Make error message more detailed Allow users to specify port protocol with regex validation Add a database utility to makefile"}, {"post_id": 41559, "ts": "2026-08-05T21:05:59Z", "hours": 2.9108, "text": "Lotta Features!: Toasts, Container Recreation, and Ability to reconfigure services Added toast messages - needed a better way to show error messages so I implemented toasts. These were implemented using a MutationObserver, which watches an element for changes, in this case for new nodes being added to it. This lets me automatically remove toasts after a certain time and fade them out. Using a MutationObserver allows toasts to be added using HATEOS (HTMX) instead of only being able to create toasts from JavaScript. Added the ability to reconfigure services. Before only the value was shown, but now you can update configuration and save it. Added an API endpoint so virtual servers could request new service configuration. Also reworked code to use toasts, and generally improved code quality by moving code into separate functions Added the option to recreate containers. This is needed to update the container image, and/or refresh configuration, for example new ports or even a different image. This depended on the changes in 2. Toasts Reconfigure services Recreate containers"}, {"post_id": 40014, "ts": "2026-08-03T11:17:27Z", "hours": 2.4128, "text": "Feature: Service Actions Virtual servers can now list actions for the user. This is fully programmatic, so when the virtual server sends statistics and links, it also responds with a list of actions like: { \"label\" : \"Stop\" , \"code\" : \"stop_container\" , \"type\" : ui.ButtonTypeDanger , \"confirm\" : { \"title\" : \"Are you sure you want to stop this container?\" , \"description\" : \"Application data may be lost.\" , \"button_label\" : \"Confirm\" } } Each action has an optional and configurable confirmation dialog. Doing it like this allows the virtual server to have different actions based on the status of the container for example, like start if its stopped and stop/restart if its running. I also added a loading indicator to all buttons, which shows whenever a HTMX request is being made. Sort links by name (to prevent them shuffling) Add service actions"}, {"post_id": 37176, "ts": "2026-07-29T18:01:06Z", "hours": 1.7853, "text": "Feature: Service overview page Shows the status and utilisation of the container, and also the links. The links are found by parsing the containers labels and extracting the traefik rules. Fixed a few issues with the docker manager: Only one manager was started but the channel width was 5, meaning only one service was handled at a time. Now I start 5 managers, so 5 containers are handled at once. Made it so loading services at start runs in the background as well, so the API is available a lot quicker Each port uses a different service name in traefik, not sure if this was an issue but could of potentially caused problems when a service has multiple ports Also added loading indicator and status dot components. Next I’ll implement manual start/stop of containers (general action buttons), then service deletion and then volumes Service overview page Loading indicator/status dot"}, {"post_id": 36815, "ts": "2026-07-29T03:18:36Z", "hours": 1.5131, "text": "Feature: Fully automatic reverse proxy I added support for configuring ports, then implemented the Traefik reverse proxy giving each port a unique (non random - based on service id and port) subdomain. The service is given automatic TLS (error due to self signed cert - when I deploy I will have a domain and use letsencrypt) Next I need to add a better display, so the link shows in app Commit"}, {"post_id": 36772, "ts": "2026-07-29T01:20:38Z", "hours": 0.4367, "text": "Feature: Parse and store multi-input values I allowed configuration of multi inputs, to set the min and max values/length of number/text inputs I parsed and stored the values on the backend, so they are now available to the virtual server I need to: Allow updating configuration after creation Figure out how to implement a reverse proxy with variable subdomains to expose ports Configure multiinputs Add parsing + storage"}, {"post_id": 36755, "ts": "2026-07-29T00:50:03Z", "hours": 1.14, "text": "Feature: Multi-Inputs I added an input to my ui library that lets you add infinite entries. Supports text/number types. Also fixed an issue where modals could overflow the screen. Built this so I can have better configuration for my docker service, i.e to set ports and volumes. Haven’t implemented the backend storage for these but the components work Commit"}, {"post_id": 36544, "ts": "2026-07-28T18:47:35Z", "hours": 0.5611, "text": "Feature: Tabs The service page looked pretty bad so I added tabs to my UI library. Commit"}, {"post_id": 36526, "ts": "2026-07-28T18:11:50Z", "hours": 0.6992, "text": "Feature: View all your services Doesn’t show much rn Had a nightmare figuring out why the service list was overflowing the page. Solution was somehow to but min-width: 0 on the container 😭 Commit"}, {"post_id": 34029, "ts": "2026-07-24T13:28:14Z", "hours": 1.3494, "text": "Feature: Load existing on services on start + async container manager I added an endpoint to the platform API ( GET /api/services ) that returns all of the clients services. On start, the virtual server will request services to run, and start them one concurrently using golangs channel features (containers to run are added to a queue where up to five containers are handled at a time) Add async container manager Add API endpoint and start containers on virtual server start"}, {"post_id": 33744, "ts": "2026-07-23T22:00:55Z", "hours": 1.2117, "text": "Feature: Run docker images I implemented the very basics of running a docker container, and added a logs endpoint Definitely need to improve the UI for the service page, and make a tabs component. Also need to make stuff async so I don’t wait for the image to pull Commit"}, {"post_id": 33681, "ts": "2026-07-23T20:00:50Z", "hours": 0.7214, "text": "Feature: Configuration groups I added the ability to set configuration groups. These are purely visual. A virtual server may set whether the options are visible by default. For example to hide addons or advanced config options Commit"}, {"post_id": 33660, "ts": "2026-07-23T19:12:56Z", "hours": 3.5064, "text": "Feature: Order services I implemented the backend for ordering a service. Diagram explaining flow Text scored with red has not been implemented yet It works by Storing the service and configuration in a database Sending a request to the virtual server to run the service (signing the message so the virtual server can trust it) This setup is pretty complicated but it allows for virtual servers to run virtually anything and have configuration options for all of it. I have yet to implement: Per addon pricing (e.g +1 credit for +1 GB RAM) Configuration groups, which would allow for sections of configuration (e.g simple, advanced, and addons) Advanced options (required, selects etc) A proper virtual server that actually runs stuff A good service page Implement service orders Disable spinners on number inputs"}, {"post_id": 32519, "ts": "2026-07-21T19:08:31Z", "hours": 0.7511, "text": "WIP Feature: Get service modal I implemented a modal that loads on click, and has all the addons/options of the service. I need to style number inputs better, and make it so servers can set min/max values and lengths Commit"}, {"post_id": 32420, "ts": "2026-07-21T16:24:31Z", "hours": 2.4522, "text": "Feature: Programmatic services You can now add services through an API, using a generated client id and secret. A server would call the API, passing a list of products to sync. You pass a name, description, unique code, a price and a pricing schedule (per hour, day, or month). You can also add addons with options, currently only text or numbers (e.g for additional RAM). I also added a page to view all available services. Next I’ll implement “getting” the service Add services API + page Show credit price"}, {"post_id": 30182, "ts": "2026-07-17T15:30:18Z", "hours": 0.6244, "text": "Feature: Disable email verification Added an env variable ( MAIL_ENABLE ) that will disable any email sending and functions like verification. With this enabled, signing up will automatically mark the account as verified and sign them in, skipping the verify step. Did this so I can develop entirely locally and without internet, I’m on holiday in the Outer Hebrides where internet isn’t great. Writing this on a 7 hour ferry Also changed the flags field from bigint -> integer to save space, I won’t need 64 bits) Disable Email Verification Fix silliness"}, {"post_id": 24406, "ts": "2026-07-07T22:51:56Z", "hours": 0.4258, "text": "Feature: API client secret regeneration You can now regenerate the client secret. Mostly copied code from the confirm deletion, tweaked to show the new secret after. Also improved error handling so now it should show an error message if something fails instead of sending the error into the void Commit"}, {"post_id": 24382, "ts": "2026-07-07T22:06:34Z", "hours": 0.6533, "text": "Feature: Delete API clients + Danger button I added a delete action to API clients, with a confirmation modal. This needed a new button type, danger. Next I will add a regenerate action, and then I guess I will have to work on a products API Danger button API client deletion"}, {"post_id": 24250, "ts": "2026-07-07T18:06:29Z", "hours": 0.8303, "text": "Feature: API Client creation + Copy Button I added a page to view, manage and create API clients. This is what the past couple of devlogs have been leading up to, there was a lot of interactivity required for this. These will be used to programmatically set up “virtual servers”, which will be able to register “products” to the platform, and receive services to deploy, and they manage where to deploy them, for example on the current server, or provision a VPS, or to GKE, or a docker swarm. I’m designing it to be as flexible as possible. I also added a copy button component Need to implement actions next, probably just delete Copy button Fix issue where close modal buttons would submit form Add copy button to kitchen sink (UI demo) Add API clients"}, {"post_id": 24208, "ts": "2026-07-07T16:55:24Z", "hours": 1.7847, "text": "Feature: Tables + Modals I added tables and modals to my UI library. I needed these for my next platform update. Tables were more annoying to implement than you’d expect, the browser makes them pretty hard to style. Modals on the other hand were pretty quick to implement, I just used my existing card component. My UI library is coming together pretty quickly, I’ve now implemented most of the components you’d need for a interactive website! Tables Modals"}, {"post_id": 23647, "ts": "2026-07-06T18:46:04Z", "hours": 0.9703, "text": "Feature: Sign Out + Alerts I added the ability to sign out, added a favicon, created a standard layout component. I also added four types of alerts to my UI library, and the associated colours. I’ve designed everything to be themeable. I needed this for my next update Add Sign Out Disable logging of read config Add layout component and favicon Added alerts and colours Disable text wrapping in sidebar"}, {"post_id": 23143, "ts": "2026-07-05T22:25:33Z", "hours": 0.4675, "text": "Feature: Account page I added the account page that shows after sign in/up. Sign out is not implemented yet. I also updated the sidebar styling, adding a gap between links and differentiating between active and inactive links. Commit"}, {"post_id": 23115, "ts": "2026-07-05T21:27:55Z", "hours": 0.7358, "text": "Feature: Sign In I added a sign in page, implemented session tokens, and fixed a few bugs I also made it so you are automatically signed in after verifying your account. This is secure because a verification session is only made after signing in or creating an account. Honestly I thought this would take longer to implement, but I have done this a million times before. Next I’ll implement the account page. Implement sign in and sessions Make the code input required Fix error message when entering wrong code Make verification sign you in Cleanup/remove verification session after use"}, {"post_id": 23053, "ts": "2026-07-05T19:49:29Z", "hours": 1.7281, "text": "Feature: Verification emails When you create an account, an email with the verification code gets sent. You are redirected to a verification page, where you can enter the code, submit and your account gets marked as verified. The page after verification is not implemented. To do this, I: Added a hidden input to the code input that contains the actual value Set up mail sending using AWS SES (over SMTP) Added a flags column to users, and created a flagset with a verified and admin flag Created verification sessions, which store the code, an expiry date and a unique identifier Next, I’ll implement signing in (with sessions) Commit 1 - hidden input Commit 2 - verification sessions, emails and flags"}, {"post_id": 22447, "ts": "2026-07-04T22:23:38Z", "hours": 1.1489, "text": "Feature: Code input + Verify Page I built a verification page (server side stuff not implemented yet) and to do this I build a custom code input. It automatically focusses the next input when typing, or the previous when backspacing. I also added support for pasting codes. In the video demo, after pasting the focus doesn’t go to the last input but I have since fixed this. Next up, I’ll set up SMTP with AWS SES and get verification working on the server side. Commit 1 - Code input and verify page Commit 2 - Handle backspace and focus to next input when pasting"}, {"post_id": 21830, "ts": "2026-07-03T23:24:41Z", "hours": 1.2767, "text": "Feature: Sign up! There a fair bit of set up involved with this. I had to: Add config with environment variables Set up postgres database (automatic schema migration) Restructure again So now you can create an account. You can’t do anything yet, and I need to implement the next step of the flow, which is to verify your email. Commit 1 - Setup config, database and pretty logging Commit 2 - Slight restructure Commit 3 - Implement sign up (with HTMX)"}, {"post_id": 21782, "ts": "2026-07-03T21:44:10Z", "hours": 0.3444, "text": "Feature: Ghost buttons Also fixed an issue where link buttons got displayed differently due to left over styles from the browser on buttons. Commit"}, {"post_id": 21761, "ts": "2026-07-03T21:07:57Z", "hours": 0.7631, "text": "Inputs I added inputs to my UI library and added fields to my sign up form Probably won’t keep the background but its fun. Second attachment is one of my mockups from a long time ago that I might try make the UI look like. Commit"}, {"post_id": 21719, "ts": "2026-07-03T20:14:06Z", "hours": 0.6161, "text": "Start work on platform I’m starting work on the Runik platform interface. To do this I restructured the code, added a “Full Page Card” component and created a basic sign up page"}, {"post_id": 20967, "ts": "2026-07-02T18:15:56Z", "hours": 0.8025, "text": "Minimise sidebar I implemented the minimise button on the sidebar! It backs to local storage so works through refreshes and different pages. Also provides a way to display difference things based on if the sidebar is maximised or not Commit"}, {"post_id": 20892, "ts": "2026-07-02T16:52:25Z", "hours": 1.0878, "text": "Sidebar and icons support! Currently the minimise sidebar button doesn’t work. I also need to add a section for bottom links. Forgot to mention in my previous devlog, some time wasn’t tracked because I was experimenting with the helix editor. Also, this project is only using CSS, not tailwindcss. Although tailwindcss is nice, I miss CSS selectors and I find it a bit silly to have a build step for CSS. Commit"}, {"post_id": 20836, "ts": "2026-07-02T15:26:34Z", "hours": 0.515, "text": "UI Library I started working on a UI library. For my other projects I wrote the UI from scratch, where I was repeating a lot of code, or used Daisyui, which I never really liked the look of. So instead, I’m writing my own UI library for templ (a templating language for golang) so I can get it right this time. So far I’ve added buttons, button rows and cards, and a “kitchen sink” demo. There are three types of buttons, primary, secondary and accent, with nice animations. Button rows can also be aligned left, right, or center."}]...
|
Title: Runik - Just Run It by @uv | Stardance
Dev Title: Runik - Just Run It by @uv | Stardance
Devlogs:
UI Library I started working on a UI library. For my other projects I wrote the UI from scratch, where I was repeating a lot of code, or used Daisyui, which I never really liked the look of. So instead, I’m writing my own UI library for templ (a templating language for golang) so I can get it right this time. So far I’ve added buttons, button rows and cards, and a “kitchen sink” demo. There are three types of buttons, primary, secondary and accent, with nice animations. Button rows can also be aligned left, right, or center.
Sidebar and icons support! Currently the minimise sidebar button doesn’t work. I also need to add a section for bottom links. Forgot to mention in my previous devlog, some time wasn’t tracked because I was experimenting with the helix editor. Also, this project is only using CSS, not tailwindcss. Although tailwindcss is nice, I miss CSS selectors and I find it a bit silly to have a build step for CSS. Commit
Minimise sidebar I implemented the minimise button on the sidebar! It backs to local storage so works through refreshes and different pages. Also provides a way to display difference things based on if the sidebar is maximised or not Commit
Start work on platform I’m starting work on the Runik platform interface. To do this I restructured the code, added a “Full Page Card” component and created a basic sign up page
Inputs I added inputs to my UI library and added fields to my sign up form Probably won’t keep the background but its fun. Second attachment is one of my mockups from a long time ago that I might try make the UI look like. Commit
Feature: Ghost buttons Also fixed an issue where link buttons got displayed differently due to left over styles from the browser on buttons. Commit
Feature: Sign up! There a fair bit of set up involved with this. I had to: Add config with environment variables Set up postgres database (automatic schema migration) Restructure again So now you can create an account. You can’t do anything yet, and I need to implement the next step of the flow, which is to verify your email. Commit 1 - Setup config, database and pretty logging Commit 2 - Slight restructure Commit 3 - Implement sign up (with HTMX)
Feature: Code input + Verify Page I built a verification page (server side stuff not implemented yet) and to do this I build a custom code input. It automatically focusses the next input when typing, or the previous when backspacing. I also added support for pasting codes. In the video demo, after pasting the focus doesn’t go to the last input but I have since fixed this. Next up, I’ll set up SMTP with AWS SES and get verification working on the server side. Commit 1 - Code input and verify page Commit 2 - Handle backspace and focus to next input when pasting
Feature: Verification emails When you create an account, an email with the verification code gets sent. You are redirected to a verification page, where you can enter the code, submit and your account gets marked as verified. The page after verification is not implemented. To do this, I: Added a hidden input to the code input that contains the actual value Set up mail sending using AWS SES (over SMTP) Added a flags column to users, and created a flagset with a verified and admin flag Created verification sessions, which store the code, an expiry date and a unique identifier Next, I’ll implement signing in (with sessions) Commit 1 - hidden input Commit 2 - verification sessions, emails and flags
Feature: Sign In I added a sign in page, implemented session tokens, and fixed a few bugs I also made it so you are automatically signed in after verifying your account. This is secure because a verification session is only made after signing in or creating an account. Honestly I thought this would take longer to implement, but I have done this a million times before. Next I’ll implement the account page. Implement sign in and sessions Make the code input required Fix error message when entering wrong code Make verification sign you in Cleanup/remove verification session after use
Feature: Account page I added the account page that shows after sign in/up. Sign out is not implemented yet. I also updated the sidebar styling, adding a gap between links and differentiating between active and inactive links. Commit
Feature: Sign Out + Alerts I added the ability to sign out, added a favicon, created a standard layout component. I also added four types of alerts to my UI library, and the associated colours. I’ve designed everything to be themeable. I needed this for my next update Add Sign Out Disable logging of read config Add layout component and favicon Added alerts and colours Disable text wrapping in sidebar
Feature: Tables + Modals I added tables and modals to my UI library. I needed these for my next platform update. Tables were more annoying to implement than you’d expect, the browser makes them pretty hard to style. Modals on the other hand were pretty quick to implement, I just used my existing card component. My UI library is coming together pretty quickly, I’ve now implemented most of the components you’d need for a interactive website! Tables Modals
Feature: API Client creation + Copy Button I added a page to view, manage and create API clients. This is what the past couple of devlogs have been leading up to, there was a lot of interactivity required for this. These will be used to programmatically set up “virtual servers”, which will be able to register “products” to the platform, and receive services to deploy, and they manage where to deploy them, for example on the current server, or provision a VPS, or to GKE, or a docker swarm. I’m designing it to be as flexible as possible. I also added a copy button component Need to implement actions next, probably just delete Copy button Fix issue where close modal buttons would submit form Add copy button to kitchen sink (UI demo) Add API clients
Feature: Delete API clients + Danger button I added a delete action to API clients, with a confirmation modal. This needed a new button type, danger. Next I will add a regenerate action, and then I guess I will have to work on a products API Danger button API client deletion
Feature: API client secret regeneration You can now regenerate the client secret. Mostly copied code from the confirm deletion, tweaked to show the new secret after. Also improved error handling so now it should show an error message if something fails instead of sending the error into the void Commit
Feature: Disable email verification Added an env variable ( MAIL_ENABLE ) that will disable any email sending and functions like verification. With this enabled, signing up will automatically mark the account as verified and sign them in, skipping the verify step. Did this so I can develop entirely locally and without internet, I’m on holiday in the Outer Hebrides where internet isn’t great. Writing this on a 7 hour ferry Also changed the flags field from bigint -> integer to save space, I won’t need 64 bits) Disable Email Verification Fix silliness
Feature: Programmatic services You can now add services through an API, using a generated client id and secret. A server would call the API, passing a list of products to sync. You pass a name, description, unique code, a price and a pricing schedule (per hour, day, or month). You can also add addons with options, currently only text or numbers (e.g for additional RAM). I also added a page to view all available services. Next I’ll implement “getting” the service Add services API + page Show credit price
WIP Feature: Get service modal I implemented a modal that loads on click, and has all the addons/options of the service. I need to style number inputs better, and make it so servers can set min/max values and lengths Commit
Feature: Order services I implemented the backend for ordering a service. Diagram explaining flow Text scored with red has not been implemented yet It works by Storing the service and configuration in a database Sending a request to the virtual server to run the service (signing the message so the virtual server can trust it) This setup is pretty complicated but it allows for virtual servers to run virtually anything and have configuration options for all of it. I have yet to implement: Per addon pricing (e.g +1 credit for +1 GB RAM) Configuration groups, which would allow for sections of configuration (e.g simple, advanced, and addons) Advanced options (required, selects etc) A proper virtual server that actually runs stuff A good service page Implement service orders Disable spinners on number inputs
Feature: Configuration groups I added the ability to set configuration groups. These are purely visual. A virtual server may set whether the options are visible by default. For example to hide addons or advanced config options Commit
Feature: Run docker images I implemented the very basics of running a docker container, and added a logs endpoint Definitely need to improve the UI for the service page, and make a tabs component. Also need to make stuff async so I don’t wait for the image to pull Commit
Feature: Load existing on services on start + async container manager I added an endpoint to the platform API ( GET /api/services ) that returns all of the clients services. On start, the virtual server will request services to run, and start them one concurrently using golangs channel features (containers to run are added to a queue where up to five containers are handled at a time) Add async container manager Add API endpoint and start containers on virtual server start
Feature: View all your services Doesn’t show much rn Had a nightmare figuring out why the service list was overflowing the page. Solution was somehow to but min-width: 0 on the container 😭 Commit
Feature: Tabs The service page looked pretty bad so I added tabs to my UI library. Commit
Feature: Multi-Inputs I added an input to my ui library that lets you add infinite entries. Supports text/number types. Also fixed an issue where modals could overflow the screen. Built this so I can have better configuration for my docker service, i.e to set ports and volumes. Haven’t implemented the backend storage for these but the components work Commit
Feature: Parse and store multi-input values I allowed configuration of multi inputs, to set the min and max values/length of number/text inputs I parsed and stored the values on the backend, so they are now available to the virtual server I need to: Allow updating configuration after creation Figure out how to implement a reverse proxy with variable subdomains to expose ports Configure multiinputs Add parsing + storage
Feature: Fully automatic reverse proxy I added support for configuring ports, then implemented the Traefik reverse proxy giving each port a unique (non random - based on service id and port) subdomain. The service is given automatic TLS (error due to self signed cert - when I deploy I will have a domain and use letsencrypt) Next I need to add a better display, so the link shows in app Commit
Feature: Service overview page Shows the status and utilisation of the container, and also the links. The links are found by parsing the containers labels and extracting the traefik rules. Fixed a few issues with the docker manager: Only one manager was started but the channel width was 5, meaning only one service was handled at a time. Now I start 5 managers, so 5 containers are handled at once. Made it so loading services at start runs in the background as well, so the API is available a lot quicker Each port uses a different service name in traefik, not sure if this was an issue but could of potentially caused problems when a service has multiple ports Also added loading indicator and status dot components. Next I’ll implement manual start/stop of containers (general action buttons), then service deletion and then volumes Service overview page Loading indicator/status dot
Feature: Service Actions Virtual servers can now list actions for the user. This is fully programmatic, so when the virtual server sends statistics and links, it also responds with a list of actions like: { "label" : "Stop" , "code" : "stop_container" , "type" : ui.ButtonTypeDanger , "confirm" : { "title" : "Are you sure you want to stop this container?" , "description" : "Application data may be lost." , "button_label" : "Confirm" } } Each action has an optional and configurable confirmation dialog. Doing it like this allows the virtual server to have different actions based on the status of the container for example, like start if its stopped and stop/restart if its running. I also added a loading indicator to all buttons, which shows whenever a HTMX request is being made. Sort links by name (to prevent them shuffling) Add service actions
Lotta Features!: Toasts, Container Recreation, and Ability to reconfigure services Added toast messages - needed a better way to show error messages so I implemented toasts. These were implemented using a MutationObserver, which watches an element for changes, in this case for new nodes being added to it. This lets me automatically remove toasts after a certain time and fade them out. Using a MutationObserver allows toasts to be added using HATEOS (HTMX) instead of only being able to create toasts from JavaScript. Added the ability to reconfigure services. Before only the value was shown, but now you can update configuration and save it. Added an API endpoint so virtual servers could request new service configuration. Also reworked code to use toasts, and generally improved code quality by moving code into separate functions Added the option to recreate containers. This is needed to update the container image, and/or refresh configuration, for example new ports or even a different image. This depended on the changes in 2. Toasts Reconfigure services Recreate containers
long time no see I kinda hit a roadblock and waiting till I got past it until posting a devlog, but that never happened. That roadblock was trying to give each container a public ipv6 address. I was trying to get docker to expose ports on a specific ipv6 address on each container, but no matter what I did there still ended up being port conflicts. I found a better alternative now though, which is writing a proxy service that binds to an ipv6 address, and forwards the traffic to the containers internal ipv4 address. This works, but now I need to write an API so my virtual server can specify a container name and ports to forward to a public address, and dynamically create these addresses I still worked on other stuff though, so here’s what I have changed: (Sorry for massive devlog) The docker virtual server now syncs products automatically to the platform. Before it had to be done through a cURL command. Add a default postgres url to configuration Add a Key-Value input (UI library) Add support support for Key Value inputs to platform Allow users to configure volumes Simplify virtual server configuration by removing suboptions Allow regex validation for text inputs Fixes for KV Input: 1 , 2 Add a README Disable email verification by default Style scrollbar on chrome Make error message more detailed Allow users to specify port protocol with regex validation Add a database utility to makefile
Started work on the proxy API Not much to show, but I started writing code to create a unix socket to listen for messages. I’ll need to pass a container name, and array of ports to publish. I’ll also have to figure out how to pick new ipv6 addresses
Finished proxy communication Wrote a library to make receiving and sending messages really simple. Uses unix sockets so they are pretty fast. The server is started in the background, then different commands are received through channels. On the client, the connection is started in the background but c.Start() waits for the connection to change to connected. Then messages can be sent, but the connection has to be sustained using c.Wait() which waits until the server disconnects. Now I can start work on querying the docker container for its internal ip address and proxying it. Commit
Finished proxy - but I can’t use it I finished writing the proxy. I had to: Retrieve the provided containers internal IP Generate a random IPv6 address within the given prefix and add it using netlink Start a proxy, listening at the generated IPv6 for each port, and proxying it to the containers IP. This works, but unfortunately I can’t use it! My server provider, datalix, gives a /64 subnet for each VPS, but what they don’t tell you is that you can only have 10 routed IPv6 addresses! This is not enough, and I have to manually add the addresses anyways. This means that I can’t listen on the generated IP address, and also that I can’t give each container an IP. This is a big problem, because some applications (like a minecraft server) require a plain TCP connection, which does not work behind a reverse proxy since there is no hostname passed. My only option is to rent a dedicated server, which I can’t afford right now. So now I will continue work on other parts of the project, like making it viable and easy to deploy different services, offer one click apps/database and potentially work on a way provision servers from the cloud. Commits: Retrieve container IPv4 address on expose command Finish proxy...
|
1792511693.9472222
|
1793116493.9472222
|
|
580
|
Personal portfolio by @janosch | Stardance
|
janosch
|
0
|
5.65
|
0
|
[]
|
[{"post_id": 52256, "ts": "202 [{"post_id": 52256, "ts": "2026-08-22T11:04:55Z", "hours": 4.1989, "text": "Sorry for this long time between updates. But I had to go back to the drawing board, the very reason I’m designing this was to stand out be unique and creative. I think I finally found a direction to go into just some refining left. As you can see the colour scheme has changed dramatically, in addition to the typography and layout. I’m really curious for any feedback, so do let me know what your thinking."}, {"post_id": 4814, "ts": "2026-06-08T10:00:43Z", "hours": 1.1589, "text": "After getting the fundamental code files set up, I moved to Figma to design my website. Because without planning, how will I catch errors and make improvements and iterations quickly? It also allows me to actually see the website from my mind in real life."}, {"post_id": 239, "ts": "2026-06-01T11:19:49Z", "hours": 0.29, "text": "Hello World! I’m just getting started building my new portfolio. I need something that actually represents what I do. I’m really looking forward to this project and where it will go."}]...
|
Title: Personal portfolio by @janosch | Stardance
Title: Personal portfolio by @janosch | Stardance
Devlogs:
Hello World! I’m just getting started building my new portfolio. I need something that actually represents what I do. I’m really looking forward to this project and where it will go.
After getting the fundamental code files set up, I moved to Figma to design my website. Because without planning, how will I catch errors and make improvements and iterations quickly? It also allows me to actually see the website from my mind in real life.
Sorry for this long time between updates. But I had to go back to the drawing board, the very reason I’m designing this was to stand out be unique and creative. I think I finally found a direction to go into just some refining left. As you can see the colour scheme has changed dramatically, in addition to the typography and layout. I’m really curious for any feedback, so do let me know what your thinking....
|
1792558430.6130595
|
1793163230.6130595
|
|
581
|
My awesome macropad! by @janosch | Stardance
|
janosch
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @janosch | Stardanc Title: My awesome macropad! by @janosch | Stardance...
|
1792774241.1738765
|
1793379041.1738765
|
|
582
|
Q*Bert on FPGA by @MicahO | Stardance
|
MicahO
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Q*Bert on FPGA by @MicahO | Stardance
|
1792781558.7324657
|
1793386358.7324657
|
|
583
|
My first slack bot! by @zach | Stardance
|
zach
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @zach | Stardance
|
1792662805.0152173
|
1793267605.0152173
|
|
584
|
stardance! by @m | Stardance
|
m
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: stardance! by @m | Stardance
|
1792497195.011085
|
1793101995.011085
|
|
585
|
Lumicore-Pro by @Ved | Stardance
|
Ved
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Lumicore-Pro by @Ved | Stardance
|
1792788645.3686128
|
1793393445.3686128
|
|
586
|
My awesome macropad! by @Samma | Stardance
|
Samma
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Samma | Stardance
|
1792550889.6190448
|
1793155689.6190448
|
|
587
|
Untitled project by @Maxolotl | Stardance
|
Maxolotl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Maxolotl | Stardance
|
1792486348.6408176
|
1793091148.6408176
|
|
588
|
Untitled by @olive | Stardance
|
olive
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @olive | Stardance
|
1792670082.3278148
|
1793274882.3278148
|
|
589
|
My awesome macropad! by @Taha | Stardance
|
Taha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Taha | Stardance
|
1792637670.0266798
|
1793242470.0266798
|
|
590
|
My first slack bot! by @pwinkler72 | Stardance
|
pwinkler72
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @pwinkler72 | Starda Title: My first slack bot! by @pwinkler72 | Stardance...
|
1792702076.7812324
|
1793306876.7812324
|
|
591
|
Epically awesome macropad by @Myotixx | Stardance
|
Myotixx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Epically awesome macropad by @Myotixx | Sta Title: Epically awesome macropad by @Myotixx | Stardance...
|
1792759677.0963626
|
1793364477.0963626
|
|
592
|
Nand2SpaceSuperComputer by @SpaceRanger | Stardanc Nand2SpaceSuperComputer by @SpaceRanger | Stardance...
|
SpaceRanger
|
0
|
9.0
|
0
|
[]
|
[{"post_id": 39506, "ts": "202 [{"post_id": 39506, "ts": "2026-08-02T14:39:15Z", "hours": 6.0, "text": "I was Banned from Stardance for a while, cause i turned 19, So i really couldn’t Devlog at all, But i Did a few things. Gate visualizations in Logism, Built an ALU, Full and Half Adders, and All of that. For some Reason, I can’t add more than 4 Images, So it’s not a Very fair reflection of my work."}, {"post_id": 27653, "ts": "2026-07-13T12:46:46Z", "hours": 2.0, "text": "Completed the rest of the HDL coding for the Various logic Gates, and Project 1."}, {"post_id": 21825, "ts": "2026-07-03T23:18:48Z", "hours": 1.0, "text": "Just Started the Build, Completed a few Logic Gates(Like the AND, and XOR Gates) wiring with HDL"}]...
|
Title: Nand2SpaceSuperComputer by @SpaceRanger | S Title: Nand2SpaceSuperComputer by @SpaceRanger | Stardance
Devlogs:
Just Started the Build, Completed a few Logic Gates(Like the AND, and XOR Gates) wiring with HDL
Completed the rest of the HDL coding for the Various logic Gates, and Project 1.
I was Banned from Stardance for a while, cause i turned 19, So i really couldn’t Devlog at all, But i Did a few things. Gate visualizations in Logism, Built an ALU, Full and Half Adders, and All of that. For some Reason, I can’t add more than 4 Images, So it’s not a Very fair reflection of my work....
|
1792904064.867885
|
1793768064.867885
|
|
593
|
Minecraft Statistics Browser by @ElectricSteve | S Minecraft Statistics Browser by @ElectricSteve | Stardance...
|
ElectricSteve
|
0
|
11.55
|
0
|
[]
|
[{"post_id": 51980, "ts": "202 [{"post_id": 51980, "ts": "2026-08-21T23:49:10Z", "hours": 7.8958, "text": "What I did I made a mockup UI in gimp, and with some help from copilot for css (FUCK CSS) made this mockup ui. It’s not functional yet, but to make it functional I have added some api’s, including one to get the player head (this one is actually used in the ui rn), one to get the player list, with an option to load stats from offline players and add them to the player list, and a filled out statistics endpoint so all statistics have a value, even if it’s 0. What I’m now gonna do Now it is time to make the frontend actually functional, starting with the player list, then the player info at the top, and the statistics in the middle."}, {"post_id": 35478, "ts": "2026-07-26T22:53:02Z", "hours": 1.4081, "text": "I now have a fully functioning rest api that serves statistics data for all players online! This is the most basic test to get it working, I’ll probably have to rewrite it for offline player support and live websocket updates."}, {"post_id": 16951, "ts": "2026-06-27T14:58:21Z", "hours": 2.2453, "text": "I got the project set up and working! The template vue vite page is hosted by the minecraft server, which also hosts an api that works. I also tested it on both neoforge and fabric and they both seem to work perfectly."}]...
|
Title: Minecraft Statistics Browser by @ElectricSt Title: Minecraft Statistics Browser by @ElectricSteve | Stardance
Devlogs:
I got the project set up and working! The template vue vite page is hosted by the minecraft server, which also hosts an api that works. I also tested it on both neoforge and fabric and they both seem to work perfectly.
I now have a fully functioning rest api that serves statistics data for all players online! This is the most basic test to get it working, I’ll probably have to rewrite it for offline player support and live websocket updates.
What I did I made a mockup UI in gimp, and with some help from copilot for css (FUCK CSS) made this mockup ui. It’s not functional yet, but to make it functional I have added some api’s, including one to get the player head (this one is actually used in the ui rn), one to get the player list, with an option to load stats from offline players and add them to the player list, and a filled out statistics endpoint so all statistics have a value, even if it’s 0. What I’m now gonna do Now it is time to make the frontend actually functional, starting with the player list, then the player info at the top, and the statistics in the middle....
|
1792594371.2478387
|
1793199171.2478387
|
|
594
|
man by @not-willem | Stardance
|
not-willem
|
1
|
2.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T01:53:07Z", "hours": 2.0, "multiplier": 1.83, "payout": 4, "blessing": "neutral", "text": "i made a silly game about a man kinda just testing this rn but yeah kinda fun game idk", "repo": "https://github.com/not-willem/man", "demo": "https://not-willem.github.io/man/"}]...
|
[{"post_id": 153, "ts": "2026- [{"post_id": 153, "ts": "2026-05-31T23:55:12Z", "hours": 0.8272, "text": "added picle falvoured water"}, {"post_id": 143, "ts": "2026-05-31T22:58:16Z", "hours": 0.2833, "text": "horray! now you can put down eggs but i still need to make it so you can stack them :/"}, {"post_id": 138, "ts": "2026-05-31T22:29:47Z", "hours": 0.6928, "text": "wowo he can move now :3"}, {"post_id": 129, "ts": "2026-05-31T21:35:32Z", "hours": 0.3486, "text": "gameplay peak"}]...
|
Title: man by @not-willem | Stardance
Devlogs:
ga Title: man by @not-willem | Stardance
Devlogs:
gameplay peak
wowo he can move now :3
horray! now you can put down eggs but i still need to make it so you can stack them :/
added picle falvoured water
Ships:
i made a silly game about a man kinda just testing this rn but yeah kinda fun game idk...
|
1792842941.391203
|
1792929341.391203
|
|
595
|
Car driving game by @GoldMonke | Stardance
|
GoldMonke
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Car driving game by @GoldMonke | Stardance
|
1792594299.1742716
|
1793199099.1742716
|
|
596
|
ai without ai by @lazerkat | Stardance
|
lazerkat
|
1
|
6.73
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-02T23:05:02Z", "hours": 6.0, "multiplier": 15.16, "payout": 93, "blessing": "neutral", "text": "I made an “ai” which can respond to simple questions using pre-written answers. I am proud of the time I spent writing it. I might update it more.", "repo": "https://github.com/betelguesestudios/coolrepoforstardance", "demo": "https://betelguesestudios.github.io/coolrepoforstardance/"}]...
|
[{"post_id": 1910, "ts": "2026 [{"post_id": 1910, "ts": "2026-06-04T04:12:43Z", "hours": 0.4253, "text": "268 q&a’s… people have asked it some… interesting things…"}, {"post_id": 1860, "ts": "2026-06-04T02:13:21Z", "hours": 0.3033, "text": "adding someone’s inputs :)"}, {"post_id": 1085, "ts": "2026-06-02T22:01:25Z", "hours": 0.4047, "text": "207 q&a’s….. very cool"}, {"post_id": 497, "ts": "2026-06-01T23:39:41Z", "hours": 0.3811, "text": "there are now 196 answers and questions. also miracle musical reference"}, {"post_id": 486, "ts": "2026-06-01T23:08:56Z", "hours": 0.4564, "text": "server has been set up for messages i haven’t made responses for"}, {"post_id": 466, "ts": "2026-06-01T22:29:37Z", "hours": 0.6047, "text": "more (many more) inputs :)"}, {"post_id": 167, "ts": "2026-06-01T02:26:13Z", "hours": 0.3389, "text": "added bro variants"}, {"post_id": 164, "ts": "2026-06-01T01:54:33Z", "hours": 1.0786, "text": "jumpscare part :3"}, {"post_id": 160, "ts": "2026-06-01T00:43:51Z", "hours": 0.3953, "text": "august 12 2036 the heat death of the universe (added lore)"}, {"post_id": 156, "ts": "2026-06-01T00:14:26Z", "hours": 0.5928, "text": "secret things you can say to it"}, {"post_id": 147, "ts": "2026-05-31T23:10:02Z", "hours": 0.3008, "text": "styling the page ( https://betelguesestudios.github.io/coolrepoforstardance/ )"}, {"post_id": 142, "ts": "2026-05-31T22:47:09Z", "hours": 0.5422, "text": "more answers to questions! there are now 67 answers :)"}, {"post_id": 133, "ts": "2026-05-31T22:02:33Z", "hours": 1.0258, "text": "adding tons of responses :)"}]...
|
Title: ai without ai by @lazerkat | Stardance
Dev Title: ai without ai by @lazerkat | Stardance
Devlogs:
adding tons of responses :)
more answers to questions! there are now 67 answers :)
styling the page ( https://betelguesestudios.github.io/coolrepoforstardance/ )
secret things you can say to it
august 12 2036 the heat death of the universe (added lore)
jumpscare part :3
added bro variants
more (many more) inputs :)
server has been set up for messages i haven’t made responses for
there are now 196 answers and questions. also miracle musical reference
207 q&a’s….. very cool
adding someone’s inputs :)
268 q&a’s… people have asked it some… interesting things…
Ships:
I made an “ai” which can respond to simple questions using pre-written answers. I am proud of the time I spent writing it. I might update it more....
|
1792842488.0807848
|
1792928888.0807848
|
|
597
|
Untitled project by @SophiaS | Stardance
|
SophiaS
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @SophiaS | Stardance
|
1792709254.845347
|
1793314054.845347
|
|
598
|
My awesome macropad! by @alexren_67 | Stardance
|
alexren_67
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @alexren_67 | Stard Title: My awesome macropad! by @alexren_67 | Stardance...
|
1792540504.0523458
|
1793145304.0523458
|
|
599
|
Untitled project by @Alisha | Stardance
|
Alisha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Alisha | Stardance
|
1792687960.3386457
|
1793292760.3386457
|
|
600
|
BambuCast by @PianoMan0 | Stardance
|
PianoMan0
|
0
|
1.41
|
0
|
[]
|
[{"post_id": 24997, "ts": "202 [{"post_id": 24997, "ts": "2026-07-08T22:01:36Z", "hours": 1.4097, "text": "Just posting this to get my payout"}]...
|
Title: BambuCast by @PianoMan0 | Stardance
Devlog Title: BambuCast by @PianoMan0 | Stardance
Devlogs:
Just posting this to get my payout...
|
1792561890.852581
|
1793166690.852581
|