|
52711
|
anor by @v3raa | Stardance
|
v3raa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: anor by @v3raa | Stardance
|
1793454562.5007625
|
1794059362.5007625
|
|
59896
|
My own site! by @v3nus_ | Stardance
|
v3nus_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @v3nus_ | Stardance
|
1793029966.7395
|
1793634766.7395
|
|
55745
|
one piece by @v3n5590 | Stardance
|
v3n5590
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: one piece by @v3n5590 | Stardance
|
1792918235.7839506
|
1793782235.7839506
|
|
55756
|
demon slayer by @v3n5590 | Stardance
|
v3n5590
|
0
|
19.46
|
0
|
[]
|
[{"post_id": 81236, "ts": "202 [{"post_id": 81236, "ts": "2026-10-20T12:11:38Z", "hours": 0.8269, "text": "muichro page done"}, {"post_id": 81185, "ts": "2026-10-20T07:04:03Z", "hours": 1.0678, "text": "hashira page done"}, {"post_id": 80104, "ts": "2026-10-16T07:27:02Z", "hours": 1.4686, "text": "rengoku page doneee"}, {"post_id": 73690, "ts": "2026-09-25T18:14:47Z", "hours": 0.6964, "text": "done nezuko page"}, {"post_id": 72868, "ts": "2026-09-23T21:56:34Z", "hours": 2.3903, "text": "working on nezuko page cause i forgot some characters done some css pages duhhšššš"}, {"post_id": 72131, "ts": "2026-09-22T07:56:40Z", "hours": 0.8083, "text": "akaza page is done gone for 2 min to feed my cat"}, {"post_id": 71907, "ts": "2026-09-21T19:04:30Z", "hours": 0.7094, "text": "working on some pages"}, {"post_id": 71886, "ts": "2026-09-21T18:12:14Z", "hours": 1.1517, "text": "done demon page bruhhhhhš«š«š«š«š«š«š«š«"}, {"post_id": 71814, "ts": "2026-09-21T16:23:17Z", "hours": 0.8333, "text": "done douma page"}, {"post_id": 71673, "ts": "2026-09-21T08:58:20Z", "hours": 0.9708, "text": "completed entry page and enmu page total 2 pages"}, {"post_id": 71654, "ts": "2026-09-21T07:49:46Z", "hours": 1.8494, "text": "working on genya complete"}, {"post_id": 66459, "ts": "2026-09-12T09:33:31Z", "hours": 1.0531, "text": "sanemi sub page"}, {"post_id": 59092, "ts": "2026-08-31T18:28:09Z", "hours": 0.9992, "text": "completed a page"}, {"post_id": 58331, "ts": "2026-08-30T18:28:20Z", "hours": 0.8597, "text": "completed swords page"}, {"post_id": 58229, "ts": "2026-08-30T16:14:13Z", "hours": 0.8333, "text": "page about tanjiro has been completed"}, {"post_id": 57504, "ts": "2026-08-29T17:50:36Z", "hours": 0.8175, "text": "5th page done"}, {"post_id": 57454, "ts": "2026-08-29T16:31:26Z", "hours": 1.6061, "text": "after searching for the content created third page"}, {"post_id": 57346, "ts": "2026-08-29T13:55:00Z", "hours": 0.5147, "text": "created two pages about.html and index.html"}]...
|
Title: demon slayer by @v3n5590 | Stardance
Devlo Title: demon slayer by @v3n5590 | Stardance
Devlogs:
created two pages about.html and index.html
after searching for the content created third page
5th page done
page about tanjiro has been completed
completed swords page
completed a page
sanemi sub page
working on genya complete
completed entry page and enmu page total 2 pages
done douma page
done demon page bruhhhhhš«š«š«š«š«š«š«š«
working on some pages
akaza page is done gone for 2 min to feed my cat
working on nezuko page cause i forgot some characters done some css pages duhhšššš
done nezuko page
rengoku page doneee
hashira page done
muichro page done...
|
1793350070.3142157
|
1793954870.3142157
|
|
19602
|
Frictionless by @v314 | Stardance
|
v314
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @v314 | Stardance
|
1793480240.5038984
|
1794085040.5038984
|
|
71515
|
AN Arduino Radar by @v0kx5t | Stardance
|
v0kx5t
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AN Arduino Radar by @v0kx5t | Stardance
|
1793047646.4989579
|
1793652446.4989579
|
|
15386
|
sleepy runner by @uzunemir778 | Stardance
|
uzunemir778
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: sleepy runner by @uzunemir778 | Stardance
|
1793447390.058709
|
1794052190.058709
|
|
15395
|
My very own WebOS by @uzunemir778 | Stardance
|
uzunemir778
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @uzunemir778 | Stardan Title: My very own WebOS by @uzunemir778 | Stardance...
|
1793437004.687159
|
1794041804.687159
|
|
43951
|
Ecowise by @uzoqovislom2468_com | Stardance
|
uzoqovislom2468_com
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ecowise by @uzoqovislom2468_com | Stardance
|
1793246179.2020392
|
1793850979.2020392
|
|
47011
|
My awesome macropad! by @uzoqboyeva | Stardance
|
uzoqboyeva
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @uzoqboyeva | Stard Title: My awesome macropad! by @uzoqboyeva | Stardance...
|
1793163291.494525
|
1793768091.494525
|
|
60705
|
Projects Kevin by @uzairfrancke10 | Stardance
|
uzairfrancke10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Projects Kevin by @uzairfrancke10 | Stardan Title: Projects Kevin by @uzairfrancke10 | Stardance...
|
1793036964.0340328
|
1793641764.0340328
|
|
68473
|
mini cyberdeck by @uzair | Stardance
|
uzair
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mini cyberdeck by @uzair | Stardance
|
1793123272.8000066
|
1793728072.8000066
|
|
33643
|
Frictionless by @uz7 | Stardance
|
uz7
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 32237, "ts": "202 [{"post_id": 32237, "ts": "2026-07-21T08:42:02Z", "hours": 0.3236, "text": "now we made an app!!!!"}, {"post_id": 30639, "ts": "2026-07-18T11:29:33Z", "hours": 0.3519, "text": "Im Getting Sucked into This"}]...
|
Title: Frictionless by @uz7 | Stardance
Devlogs:
Title: Frictionless by @uz7 | Stardance
Devlogs:
Im Getting Sucked into This
now we made an app!!!!...
|
1793455015.2622302
|
1794059815.2622302
|
|
37906
|
Untitled by @uz7 | Stardance
|
uz7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @uz7 | Stardance
|
1792795977.6805418
|
1793400777.6805418
|
|
103
|
cosmis! by @uy3yud | Stardance
|
uy3yud
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cosmis! by @uy3yud | Stardance
|
1793408202.7296224
|
1794013002.7296224
|
|
33857
|
asda by @uwu | Stardance
|
uwu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: asda by @uwu | Stardance
|
1793188529.7264
|
1793793329.7264
|
|
17098
|
galaxy desk by @uvraj | Stardance
|
uvraj
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: galaxy desk by @uvraj | Stardance
|
1793224094.57125
|
1793828894.57125
|
|
46518
|
My awesome macropad! by @uvo_prod | Stardance
|
uvo_prod
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @uvo_prod | Stardan Title: My awesome macropad! by @uvo_prod | Stardance...
|
1793389709.4922953
|
1793994509.4922953
|
|
31422
|
ControlEye by @uvanillee | Stardance
|
uvanillee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ControlEye by @uvanillee | Stardance
|
1793461825.2686133
|
1794066625.2686133
|
|
15551
|
My very own WebOS by @uva_1009 | Stardance
|
uva_1009
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @uva_1009 | Stardance
|
1793152464.3807113
|
1793757264.3807113
|
|
440
|
Warehouse - Storage System by @uv | Stardance
|
uv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Warehouse - Storage System by @uv | Stardan Title: Warehouse - Storage System by @uv | Stardance...
|
1793170300.866705
|
1793775100.866705
|
|
547
|
Watchtower by @uv | Stardance
|
uv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Watchtower by @uv | Stardance
|
1793227927.758113
|
1793832727.758113
|
|
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...
|
1793180914.1209767
|
1793785714.1209767
|
|
2919
|
BeepBoop by @uv | Stardance
|
uv
|
1
|
7.0
|
85
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T13:24:50Z", "hours": 7.0, "multiplier": 11.76, "payout": 85, "blessing": "neutral", "text": "I built an alternative to #flavortown-feed for stardance! This means that it tracks projects for new devlogs and sends them to slack. Iād say it improves the original in a few ways, like proper support for markdown and displaying attachments. It also has more features, like commands for listing a users projects, getting projects and their devlogs, and a golang library for scraping stardance. This was a fun project :)", "repo": "https://tangled.org/did:plc:d5jrs5wulhmeintiheql6c57", "demo": "https://hackclub.slack.com/archives/C0BAR80SFLJ/p1781550544278579"}]...
|
[{"post_id": 16895, "ts": "202 [{"post_id": 16895, "ts": "2026-06-27T13:03:52Z", "hours": 0.9431, "text": "Features and bug fixes! Added a āview fullā button to the /project [id] command - show the same message as /watch-project [id] , but I added a new function to my scraping library to get a single devlog Better error messages, e.g āUNIQUE constraint failedā now says āProject already trackedā Trim characters _*- from command inputs, to ignore markdown formatting (caused by copying formatted text) Deduplicate attachments - seems a stardance update caused attachments to appear multiple times in the DOM, fixed by using a map Ideally these would have all been separate devlogs, but a lot of changes where less than the minimum 15minute devlog time 1 0a2877ca 2-3 7f2b5bbf 4 6d953659"}, {"post_id": 15290, "ts": "2026-06-24T20:40:11Z", "hours": 0.8339, "text": "Feature: Attachments are shown in devlogs Devlogs from /watch-project [id] now display the image attachments, and link to videos because slack doesnāt have video blocks Moved videos outside the carousel because they donāt have thumbnails, and are now more compact Also added a LICENSE and README Commit"}, {"post_id": 8958, "ts": "2026-06-14T22:13:37Z", "hours": 1.0764, "text": "Feature: /watch-project command I added a command to watch a project for new devlogs. Its a job that runs every minute (for now), scraping each tracked project for devlogs that havenāt been tracked yet. btw I hate slack, they donāt support full markdown so formatting can be a bit weird Commit"}, {"post_id": 8911, "ts": "2026-06-14T20:42:13Z", "hours": 0.5561, "text": "View project in slack Before, projects in the /user-project command had a view button that took you to the page in stardance. Now, it sends a message in slack The most annoying part of this was of course the slack API. I was trying to ack the response with a message, for whatever reason that did not work. Instead i sent a new message. Commit"}, {"post_id": 5178, "ts": "2026-06-08T21:27:39Z", "hours": 2.1414, "text": "Feature: View a project You can now view a project and its devlogs using the /project [id] command. It shows all the attachment of a devlog, including videos - which kind of work, its just a link to the file. The most annoying part was again the slack message format, I had to use packages to convert the HTML into markdown, and then convert the the markdown into a slack compatible markdown format. I also had to truncate the devlogs to 199 characters, trying to fix a cryptic error message. Next Iāll add the ability to view devlogs, images and videos in full from slack, using modals Commit"}, {"post_id": 5061, "ts": "2026-06-08T18:44:36Z", "hours": 1.325, "text": "Feature: List a users projects I added a command /user-projects [username] ! Most annoying part was figuring out Slacks message format. Scraping was by far the easiest part, thanks to Stardanceās CSS class format. Started working on a Stardance scraping library in go. Commit"}, {"post_id": 482, "ts": "2026-06-01T22:56:22Z", "hours": 0.4092, "text": "Beep? Boop! Setup my first slack bot with golang, added a slash command /beep I will make a /track command to pull from stardance devlogs automatically next"}]...
|
Title: BeepBoop by @uv | Stardance
Devlogs:
Beep? Title: BeepBoop by @uv | Stardance
Devlogs:
Beep? Boop! Setup my first slack bot with golang, added a slash command /beep I will make a /track command to pull from stardance devlogs automatically next
Feature: List a users projects I added a command /user-projects [username] ! Most annoying part was figuring out Slacks message format. Scraping was by far the easiest part, thanks to Stardanceās CSS class format. Started working on a Stardance scraping library in go. Commit
Feature: View a project You can now view a project and its devlogs using the /project [id] command. It shows all the attachment of a devlog, including videos - which kind of work, its just a link to the file. The most annoying part was again the slack message format, I had to use packages to convert the HTML into markdown, and then convert the the markdown into a slack compatible markdown format. I also had to truncate the devlogs to 199 characters, trying to fix a cryptic error message. Next Iāll add the ability to view devlogs, images and videos in full from slack, using modals Commit
View project in slack Before, projects in the /user-project command had a view button that took you to the page in stardance. Now, it sends a message in slack The most annoying part of this was of course the slack API. I was trying to ack the response with a message, for whatever reason that did not work. Instead i sent a new message. Commit
Feature: /watch-project command I added a command to watch a project for new devlogs. Its a job that runs every minute (for now), scraping each tracked project for devlogs that havenāt been tracked yet. btw I hate slack, they donāt support full markdown so formatting can be a bit weird Commit
Feature: Attachments are shown in devlogs Devlogs from /watch-project [id] now display the image attachments, and link to videos because slack doesnāt have video blocks Moved videos outside the carousel because they donāt have thumbnails, and are now more compact Also added a LICENSE and README Commit
Features and bug fixes! Added a āview fullā button to the /project [id] command - show the same message as /watch-project [id] , but I added a new function to my scraping library to get a single devlog Better error messages, e.g āUNIQUE constraint failedā now says āProject already trackedā Trim characters _*- from command inputs, to ignore markdown formatting (caused by copying formatted text) Deduplicate attachments - seems a stardance update caused attachments to appear multiple times in the DOM, fixed by using a map Ideally these would have all been separate devlogs, but a lot of changes where less than the minimum 15minute devlog time 1 0a2877ca 2-3 7f2b5bbf 4 6d953659
Ships:
I built an alternative to #flavortown-feed for stardance! This means that it tracks projects for new devlogs and sends them to slack. Iād say it improves the original in a few ways, like proper support for markdown and displaying attachments. It also has more features, like commands for listing a users projects, getting projects and their devlogs, and a golang library for scraping stardance. This was a fun project :)...
|
1793498102.5368888
|
1793584502.5368888
|
|
5674
|
Stardance by @uv | Stardance
|
uv
|
0
|
0.87
|
0
|
[]
|
[{"post_id": 1164, "ts": "2026 [{"post_id": 1164, "ts": "2026-06-03T00:34:07Z", "hours": 0.2817, "text": "Improving UI/UX Fixing issues from Stardance Scouts bug tracker! Fix wrong colour icon Make the entire link a hackatime project clickable Attachments: First shows the behaviour difference between Stardance and my updated version Second shows the icon before, Third shows the icon after"}, {"post_id": 1112, "ts": "2026-06-02T22:51:25Z", "hours": 0.5917, "text": "User projects page redesign I got annoyed by how my banners were being displayed differently in different pages, so I redesigned the projects page to be more consistent! Now the projects are listed in two columns on larger devices, with banners above and a fixed aspect ratio of 3 First screenshot is the new design, Second is the mobile view, Last screenshot is the old"}]...
|
Title: Stardance by @uv | Stardance
Devlogs:
User Title: Stardance by @uv | Stardance
Devlogs:
User projects page redesign I got annoyed by how my banners were being displayed differently in different pages, so I redesigned the projects page to be more consistent! Now the projects are listed in two columns on larger devices, with banners above and a fixed aspect ratio of 3 First screenshot is the new design, Second is the mobile view, Last screenshot is the old
Improving UI/UX Fixing issues from Stardance Scouts bug tracker! Fix wrong colour icon Make the entire link a hackatime project clickable Attachments: First shows the behaviour difference between Stardance and my updated version Second shows the icon before, Third shows the icon after...
|
1793346766.8370862
|
1793951566.8370862
|
|
69827
|
nindra rakshak by @uttkarsh | Stardance
|
uttkarsh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: nindra rakshak by @uttkarsh | Stardance
|
1792860499.2013192
|
1793465299.2013192
|
|
51011
|
My very own WebOS by @uttamsharma1218 | Stardance
|
uttamsharma1218
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @uttamsharma1218 | Sta Title: My very own WebOS by @uttamsharma1218 | Stardance...
|
1793371834.4665172
|
1793976634.4665172
|
|
31825
|
My own site! by @utsav07 | Stardance
|
utsav07
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @utsav07 | Stardance
|
1793156094.5195138
|
1793760894.5195138
|
|
54948
|
BLARE by @utsabzz | Stardance
|
utsabzz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @utsabzz | Stardance
|
1793029639.491942
|
1793634439.491942
|
|
54959
|
Astra OS by @utsabzz | Stardance
|
utsabzz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Astra OS by @utsabzz | Stardance
|
1793134039.4619396
|
1793738839.4619396
|
|
61699
|
My own site! by @utsab_Sapkota | Stardance
|
utsab_Sapkota
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T17:51:13Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "built a personal portfolio website to introduce myself and show my projects and skills. I built the site with HTML, CSS and JavaScript and deployed it online. One of the challenging parts was getting the layout and styling to work properly across different screen sizes. Iām most proud of the final design and how I organized the different sections. People can test it by opening the demo and going through the navigation and project sections.", "repo": "https://github.com/kiranSharma121/personal-website", "demo": "https://personal-website-frontend-iota.vercel.app/"}]...
|
[{"post_id": 68166, "ts": "202 [{"post_id": 68166, "ts": "2026-09-14T17:10:39Z", "hours": 2.7753, "text": "Learning to build a website and started with portfolio website .Review it and give me some feedback too"}]...
|
Title: My own site! by @utsab_Sapkota | Stardance
Title: My own site! by @utsab_Sapkota | Stardance
Devlogs:
Learning to build a website and started with portfolio website .Review it and give me some feedback too
Ships:
built a personal portfolio website to introduce myself and show my projects and skills. I built the site with HTML, CSS and JavaScript and deployed it online. One of the challenging parts was getting the layout and styling to work properly across different screen sizes. Iām most proud of the final design and how I organized the different sections. People can test it by opening the demo and going through the navigation and project sections....
|
1793415076.736033
|
1793501476.736033
|
|
67508
|
DevTab by @utsab_Sapkota | Stardance
|
utsab_Sapkota
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: DevTab by @utsab_Sapkota | Stardance
|
1793112534.396088
|
1793717334.396088
|
|
54410
|
My awesome macropad! by @utkarshthakur77102 | Star My awesome macropad! by @utkarshthakur77102 | Stardance...
|
utkarshthakur77102
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @utkarshthakur77102 Title: My awesome macropad! by @utkarshthakur77102 | Stardance...
|
1792788869.113481
|
1793393669.113481
|
|
1686
|
My first slack bot! by @utkarshaggarwal | Stardanc My first slack bot! by @utkarshaggarwal | Stardance...
|
utkarshaggarwal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @utkarshaggarwal | S Title: My first slack bot! by @utkarshaggarwal | Stardance...
|
1793451238.1461623
|
1794056038.1461623
|
|
8976
|
Affordable MyoElectric Prosthetic by @utkarsh_tewa Affordable MyoElectric Prosthetic by @utkarsh_tewari | Stardance...
|
utkarsh_tewari
|
0
|
28.44
|
0
|
[]
|
[{"post_id": 47271, "ts": "202 [{"post_id": 47271, "ts": "2026-08-15T02:57:01Z", "hours": 0.35, "text": "finished the arduino code :D"}, {"post_id": 46186, "ts": "2026-08-13T07:12:44Z", "hours": 11.4317, "text": "v2 done! I took a photo of it in my schoollās lightbox and the design is much better, the piece at the end is velcro for it to attach. v3 im thinking some sort of compliant gripper. this is meant to replace hooks and stuff like that after all which can go upwards of 2000$ (at a minimum) and some sort of compliant gripper would be good here. perhaps even a true hands or tri-claw. coding it now :D"}, {"post_id": 29647, "ts": "2026-07-16T18:31:31Z", "hours": 11.1842, "text": "v1 done and 3d printed and coded, pretty bad tbh but its just a POC"}, {"post_id": 11134, "ts": "2026-06-18T06:38:46Z", "hours": 5.4703, "text": "worked on code and tuning myoware values to have a working smoothing algorithm when i 3d print the prototype. also soldered the wires onto the myoware, planning on doing 3 prototypes before finalizing a design for a cheaper prosthetic. this is my first time soldering is it good lol i had to solder 2 wires onto the back bc when they were on the front it wasnt goodā¦"}]...
|
Title: Affordable MyoElectric Prosthetic by @utkar Title: Affordable MyoElectric Prosthetic by @utkarsh_tewari | Stardance
Devlogs:
worked on code and tuning myoware values to have a working smoothing algorithm when i 3d print the prototype. also soldered the wires onto the myoware, planning on doing 3 prototypes before finalizing a design for a cheaper prosthetic. this is my first time soldering is it good lol i had to solder 2 wires onto the back bc when they were on the front it wasnt goodā¦
v1 done and 3d printed and coded, pretty bad tbh but its just a POC
v2 done! I took a photo of it in my schoollās lightbox and the design is much better, the piece at the end is velcro for it to attach. v3 im thinking some sort of compliant gripper. this is meant to replace hooks and stuff like that after all which can go upwards of 2000$ (at a minimum) and some sort of compliant gripper would be good here. perhaps even a true hands or tri-claw. coding it now :D
finished the arduino code :D...
|
1792669742.8020742
|
1793533742.8020742
|
|
47701
|
Scanning Tunneling Microscope by @utkarsh_tewari | Scanning Tunneling Microscope by @utkarsh_tewari | Stardance...
|
utkarsh_tewari
|
0
|
20.31
|
0
|
[]
|
[{"post_id": 47283, "ts": "202 [{"post_id": 47283, "ts": "2026-08-15T04:20:07Z", "hours": 20.3094, "text": "I have completed the coding of the PYTHON SERVER LOOP :D using dan berardās firmware as inspiration i have completed part of the code, all i have to do now software-wise is the teensy part which will be significantly less work as all i have to do is create a PID loop and USB serial protocol :D (still gonna be like 1500 lines but much easier for me to learn than whatever the heck i had to learn rn"}]...
|
Title: Scanning Tunneling Microscope by @utkarsh_t Title: Scanning Tunneling Microscope by @utkarsh_tewari | Stardance
Devlogs:
I have completed the coding of the PYTHON SERVER LOOP :D using dan berardās firmware as inspiration i have completed part of the code, all i have to do now software-wise is the teensy part which will be significantly less work as all i have to do is create a PID loop and USB serial protocol :D (still gonna be like 1500 lines but much easier for me to learn than whatever the heck i had to learn rn...
|
1793192100.1323664
|
1794056100.1323664
|
|
57025
|
Personal Site! by @utkarsh_tewari | Stardance
|
utkarsh_tewari
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T00:28:12Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site! pretty basic project but i still think its rlly cool", "repo": "https://github.com/UtkarshTewari24/stardance-personal-site", "demo": "https://utkarshtewari24.github.io/stardance-personal-site/#robotics"}]...
|
[{"post_id": 59939, "ts": "202 [{"post_id": 59939, "ts": "2026-09-02T00:21:42Z", "hours": 0.39, "text": "Personal Site Finished! it doesnāt look like its that much because it looks like its from the 2000ās and in the era of vibe-coding anyone can whip up a 3d website in minutes, but i am really proud of it because i coded it myself! (admittedly using templates, google, and a lot of debugging pain) but i still think its a really nice one page site"}]...
|
Title: Personal Site! by @utkarsh_tewari | Stardan Title: Personal Site! by @utkarsh_tewari | Stardance
Devlogs:
Personal Site Finished! it doesnāt look like its that much because it looks like its from the 2000ās and in the era of vibe-coding anyone can whip up a 3d website in minutes, but i am really proud of it because i coded it myself! (admittedly using templates, google, and a lot of debugging pain) but i still think its a really nice one page site
Ships:
I made a personal site! pretty basic project but i still think its rlly cool...
|
1792824488.0254698
|
1793688488.0254698
|
|
57397
|
webos by @utkarsh_tewari | Stardance
|
utkarsh_tewari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: webos by @utkarsh_tewari | Stardance
|
1792702501.5164905
|
1793566501.5164905
|
|
58922
|
hackpad :D by @utkarsh_tewari | Stardance
|
utkarsh_tewari
|
0
|
1.22
|
0
|
[]
|
[{"post_id": 63228, "ts": "202 [{"post_id": 63228, "ts": "2026-09-06T22:25:07Z", "hours": 1.2167, "text": "Just finished pcb! after a lot of pain and talking in the slack i managed to do it, i decided to basically copy orpheuspads pcb in the fundamentals and use the drawings too (i thought it was cool) its my first time making a pcb so i tried to just copy as closely as i could and feel like i learned a lot!"}]...
|
Title: hackpad :D by @utkarsh_tewari | Stardance
Title: hackpad :D by @utkarsh_tewari | Stardance
Devlogs:
Just finished pcb! after a lot of pain and talking in the slack i managed to do it, i decided to basically copy orpheuspads pcb in the fundamentals and use the drawings too (i thought it was cool) its my first time making a pcb so i tried to just copy as closely as i could and feel like i learned a lot!...
|
1792774334.8308697
|
1793638334.8308697
|
|
61373
|
Scanning Tunneling Microscope by @utkarsh_tewari | Scanning Tunneling Microscope by @utkarsh_tewari | Stardance...
|
utkarsh_tewari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Scanning Tunneling Microscope by @utkarsh_t Title: Scanning Tunneling Microscope by @utkarsh_tewari | Stardance...
|
1793040573.686343
|
1793904573.686343
|
|
71710
|
Scanning Tunneling Microscope by @utkarsh_tewari | Scanning Tunneling Microscope by @utkarsh_tewari | Stardance...
|
utkarsh_tewari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Scanning Tunneling Microscope by @utkarsh_t Title: Scanning Tunneling Microscope by @utkarsh_tewari | Stardance...
|
1793170034.8226874
|
1793774834.8226874
|
|
70779
|
playground by @utkarsh_priyadarshi8 | Stardance
|
utkarsh_priyadarshi8
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: playground by @utkarsh_priyadarshi8 | Stard Title: playground by @utkarsh_priyadarshi8 | Stardance...
|
1793267573.330102
|
1793872373.330102
|
|
15875
|
fun discord bot by @utkarsh1 | Stardance
|
utkarsh1
|
0
|
1.01
|
0
|
[]
|
[{"post_id": 6460, "ts": "2026 [{"post_id": 6460, "ts": "2026-06-10T21:25:13Z", "hours": 1.0081, "text": "did basic bot setup and made commands like guess the number, hint, etc."}]...
|
Title: fun discord bot by @utkarsh1 | Stardance
D Title: fun discord bot by @utkarsh1 | Stardance
Devlogs:
did basic bot setup and made commands like guess the number, hint, etc....
|
1793303266.5526152
|
1793908066.5526152
|
|
30137
|
Frictionless by @utk | Stardance
|
utk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @utk | Stardance
|
1793181003.901698
|
1793785803.901698
|
|
14237
|
a chess AI based on the alphaZero architecture by a chess AI based on the alphaZero architecture by @utilisateur_richard | Stardance...
|
utilisateur_richard
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: a chess AI based on the alphaZero architect Title: a chess AI based on the alphaZero architecture by @utilisateur_richard | Stardance...
|
1793497936.869198
|
1794102736.869198
|
|
14263
|
My very own WebOS by @utilisateur_richard | Starda My very own WebOS by @utilisateur_richard | Stardance...
|
utilisateur_richard
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @utilisateur_richard | Title: My very own WebOS by @utilisateur_richard | Stardance...
|
1793382807.8824093
|
1793987607.8824093
|
|
17474
|
flex-ai by @utilisateur_richard | Stardance
|
utilisateur_richard
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T15:27:00Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made an LLM agregator that is supposed to have a smart selection (but because i donāt have the models, i cannot train anything on them) due to the cost of the API, I donāt have enough fundings to continue it I think it was a good training in for the frontend and even if i canāt continue it, i zm proud of what I have done ! some text might be in french, some api might work (I have found some free API) and the plan arenāt real (if you try to create an account with a paid plan, an error will appear)", "repo": "https://github.com/utilisateursrichard/flex.ai", "demo": "https://flex-ai.duckdns.org/"}]...
|
[{"post_id": 26612, "ts": "202 [{"post_id": 26612, "ts": "2026-07-11T15:19:49Z", "hours": 4.7381, "text": "Today is the day when the flex.ai project is discontinuated because of the API pricing that are too high and the fact that without any user-base, the project canāt continue feel free to use the code if you want"}, {"post_id": 7732, "ts": "2026-06-12T22:04:19Z", "hours": 0.925, "text": "Log: flex.ai is officially deployed to the internet! Ran into a classic cloud networking headache during the setup. Every time I launched the Caddy Docker container, the logs showed a connection timeout while trying to provision the SSL certificate. At first, I was convinced my subnet security rules were the issue. But after digging through OCIās notoriously confusing interface, I finally found the real culprit: a hidden option to āConnect public subnet to internet.ā It turns out the subnet wasnāt properly routed to the internet gateway. Once that was enabled, everything clicked instantly. Letās Encrypt passed, Caddy secured the domain, and the API is now fully live over HTTPS."}, {"post_id": 7637, "ts": "2026-06-12T19:15:45Z", "hours": 0.6914, "text": "beginning of the project ! for now i just created the auth functionality (I tried my best to make it as secure as possible) for now, I didnāt started the LLM part but I will soon ! (for now it is in french but I will make all the translation when I will publish the project on my servers)"}]...
|
Title: flex-ai by @utilisateur_richard | Stardance Title: flex-ai by @utilisateur_richard | Stardance
Devlogs:
beginning of the project ! for now i just created the auth functionality (I tried my best to make it as secure as possible) for now, I didnāt started the LLM part but I will soon ! (for now it is in french but I will make all the translation when I will publish the project on my servers)
Log: flex.ai is officially deployed to the internet! Ran into a classic cloud networking headache during the setup. Every time I launched the Caddy Docker container, the logs showed a connection timeout while trying to provision the SSL certificate. At first, I was convinced my subnet security rules were the issue. But after digging through OCIās notoriously confusing interface, I finally found the real culprit: a hidden option to āConnect public subnet to internet.ā It turns out the subnet wasnāt properly routed to the internet gateway. Once that was enabled, everything clicked instantly. Letās Encrypt passed, Caddy secured the domain, and the API is now fully live over HTTPS.
Today is the day when the flex.ai project is discontinuated because of the API pricing that are too high and the fact that without any user-base, the project canāt continue feel free to use the code if you want
Ships:
I have made an LLM agregator that is supposed to have a smart selection (but because i donāt have the models, i cannot train anything on them) due to the cost of the API, I donāt have enough fundings to continue it I think it was a good training in for the frontend and even if i canāt continue it, i zm proud of what I have done ! some text might be in french, some api might work (I have found some free API) and the plan arenāt real (if you try to create an account with a paid plan, an error will appear)...
|
1793498037.7499611
|
1793584437.7499611
|
|
30003
|
PokƩmon MuZero by @utilisateur_richard | Stardance
|
utilisateur_richard
|
1
|
37.54
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T19:59:00Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is an AI (neural network, please do not think it is like ChatGPT) designed to reach superhuman / master level in PTCG (the PokĆ©mon Trading Card Game). Unfortunately, due to its nature and due to the fact that the game engine is proprietary, I cannot send it to you and let you play with it. It is based on the MuZero architecture (made by DeepMind), on the Stochastic MuZero, on the Gumbel MuZero architecture, and on the EfficientZero architecture. How does it work? It is 3 NNs (neural networks) that work together to be invincible at a given game without even knowing the rules! How can it play without knowing the rules? Well, it has an imagination that lets it predict what will happen all by itself without any help. For that, the first network, the Encoder formerly named h, will create a latent space (the imagination / position) based on the real state of the game for the other networks. After that, the Strategist (formerly f) network will see the latent space (the imagination / position) and check: Is this position a winning or a losing position with the V (value) network? What will be the next best moves with the P (policy) network? Then, based on the moves suggested by the P network, the the Simulator network (g) simulates the outcome to create the next imaginary state (latent space). It repeats this loop with the Strategist (f) and the Simulator (g) until it exhausts its thinking budget. But does it just imagine ONE line of play and blindly follow it? No! It actually imagines many different possible moves at the same time, like a tree of possibilities (this is called Monte Carlo Tree Search, or MCTS). At each node of this tree, the model has to pick which branch to expand next, and it does this using a formula (called PUCT) that balances two things: how good the P network and V network think this branch is (exploitation), and how few times this branch has been visited so far compared to its siblings (exploration). So a branch gets visited more when it keeps looking promising as it gets expanded deeper, but every branch still gets a fair shot early on so the model does not tunnel-vision on its first guess. This creates a feedback loop: good branches get explored more, which refines their value estimate even further, and bad branches get abandoned early. In the end, the move it picks is the one that got explored/visited the most during this search, not just āwhatever the P network liked the mostā at first glance. This is what makes the whole system so much stronger than the raw network alone! Safety mechanics: To avoid having problems like the imagination of the model being completely inaccurate, I added some probes (they are networks, but just remember that they are here to evaluate the model). Their goal is to extract information from the latent space to see if it is accurate. E.g., we create a latent space in which a PokĆ©mon is or isnāt (50-50) K.O., and the probe has to, based only on the latent space, say if the PokĆ©mon is K.O. or not. I also added a lot of logs, for example a log that counts the number of actions that the model takes (e.g., does it attack or does it pass its turn? (I had a problem one time where the model passed its turn 75% to 90% of the time!!)). below, you can see two different latent space (imagination), every dot is a real position in the game, the distance between the dots is their similarity (far = different, close = similar), you can also see in the 4th graph the age of the state (blue = start of the game, yellow = end of the game) and the most important in the 1st, 2nd and 3rd graph, you can see the predicted value of the model, the real value (red = win blue = loose) and the difference between the prediction of the AI and the real value the first png is the model at the first state (not trained) and the second png is the model at its best level", "repo": "https://github.com/utilisateursrichard/MuZero-PTCG/", "demo": "https://ptcg.dino.icu/"}]...
|
[{"post_id": 55738, "ts": "202 [{"post_id": 55738, "ts": "2026-08-27T18:30:05Z", "hours": 2.7586, "text": "addition of a new section in the readme.md !"}, {"post_id": 51211, "ts": "2026-08-20T18:52:58Z", "hours": 3.7792, "text": "I just found a visualizer so now you can play against the NN ! (ptcg.duckdns.org) (visualizer not made by me btw, look at the readme.md to find the original author (idk if i can send link here:/)) (please do not judge the visualizer, thatās not my project)"}, {"post_id": 49843, "ts": "2026-08-18T19:54:32Z", "hours": 1.155, "text": "addition of IREE to use the model with any GPU without downloading the pytorch/ROMc lib"}, {"post_id": 49348, "ts": "2026-08-18T03:48:11Z", "hours": 1.7164, "text": "correction of the visualizer to have beautiful visualization"}, {"post_id": 48954, "ts": "2026-08-17T15:09:07Z", "hours": 22.5117, "text": "the competiton and unfortunately I lost and finished at the 5000 place in the leaderboard :/"}, {"post_id": 21617, "ts": "2026-07-03T17:36:56Z", "hours": 0.8508, "text": "The training pipeline is finally done ! now the real challenge can finally start !"}, {"post_id": 21134, "ts": "2026-07-02T22:46:31Z", "hours": 1.2822, "text": "A quick rundown of a fun bug I encountered today. The concurrency API doesnāt provide any tools for generating or validating a deck, itās entirely up to the model to create a valid 60card deck, without any safeguards I ran into a big problem with ACE SPEC cards: the game rules prohibit having more than one per deck, regardless of the ACE SPEC category. However, the card database is poorly designed, some cards simply werenāt declared as ACE SPEC in the rules column. My code treated them as standard cards and added several to the deck without issue. The C++ game engine, however, wasnāt having any of it: it systematically rejected the deck, and the worker went into a crash loop. The fix required restarting the detection system from scratch: I now scan all suspicious columns in the CSV and the engineās API to list absolutely every ACE SPEC in the game. As soon as the Deck Builder draws one, the other 19 are immediately locked for the rest of the draw So now the error is finally corrected and I can finally focus on the real nightmare : the training of the neural network"}, {"post_id": 21046, "ts": "2026-07-02T20:23:22Z", "hours": 3.2472, "text": "fist devlog, for now the pipeline isnāt ready but it will be soon !"}]...
|
Title: PokƩmon MuZero by @utilisateur_richard | St Title: PokƩmon MuZero by @utilisateur_richard | Stardance
Devlogs:
fist devlog, for now the pipeline isnāt ready but it will be soon !
A quick rundown of a fun bug I encountered today. The concurrency API doesnāt provide any tools for generating or validating a deck, itās entirely up to the model to create a valid 60card deck, without any safeguards I ran into a big problem with ACE SPEC cards: the game rules prohibit having more than one per deck, regardless of the ACE SPEC category. However, the card database is poorly designed, some cards simply werenāt declared as ACE SPEC in the rules column. My code treated them as standard cards and added several to the deck without issue. The C++ game engine, however, wasnāt having any of it: it systematically rejected the deck, and the worker went into a crash loop. The fix required restarting the detection system from scratch: I now scan all suspicious columns in the CSV and the engineās API to list absolutely every ACE SPEC in the game. As soon as the Deck Builder draws one, the other 19 are immediately locked for the rest of the draw So now the error is finally corrected and I can finally focus on the real nightmare : the training of the neural network
The training pipeline is finally done ! now the real challenge can finally start !
the competiton and unfortunately I lost and finished at the 5000 place in the leaderboard :/
correction of the visualizer to have beautiful visualization
addition of IREE to use the model with any GPU without downloading the pytorch/ROMc lib
I just found a visualizer so now you can play against the NN ! (ptcg.duckdns.org) (visualizer not made by me btw, look at the readme.md to find the original author (idk if i can send link here:/)) (please do not judge the visualizer, thatās not my project)
addition of a new section in the readme.md !
Ships:
This is an AI (neural network, please do not think it is like ChatGPT) designed to reach superhuman / master level in PTCG (the PokĆ©mon Trading Card Game). Unfortunately, due to its nature and due to the fact that the game engine is proprietary, I cannot send it to you and let you play with it. It is based on the MuZero architecture (made by DeepMind), on the Stochastic MuZero, on the Gumbel MuZero architecture, and on the EfficientZero architecture. How does it work? It is 3 NNs (neural networks) that work together to be invincible at a given game without even knowing the rules! How can it play without knowing the rules? Well, it has an imagination that lets it predict what will happen all by itself without any help. For that, the first network, the Encoder formerly named h, will create a latent space (the imagination / position) based on the real state of the game for the other networks. After that, the Strategist (formerly f) network will see the latent space (the imagination / position) and check: Is this position a winning or a losing position with the V (value) network? What will be the next best moves with the P (policy) network? Then, based on the moves suggested by the P network, the the Simulator network (g) simulates the outcome to create the next imaginary state (latent space). It repeats this loop with the Strategist (f) and the Simulator (g) until it exhausts its thinking budget. But does it just imagine ONE line of play and blindly follow it? No! It actually imagines many different possible moves at the same time, like a tree of possibilities (this is called Monte Carlo Tree Search, or MCTS). At each node of this tree, the model has to pick which branch to expand next, and it does this using a formula (called PUCT) that balances two things: how good the P network and V network think this branch is (exploitation), and how few times this branch has been visited so far compared to its siblings (exploration). So a branch gets visited more when it keeps looking promising as it gets expanded deeper, but every branch still gets a fair shot early on so the model does not tunnel-vision on its first guess. This creates a feedback loop: good branches get explored more, which refines their value estimate even further, and bad branches get abandoned early. In the end, the move it picks is the one that got explored/visited the most during this search, not just āwhatever the P network liked the mostā at first glance. This is what makes the whole system so much stronger than the raw network alone! Safety mechanics: To avoid having problems like the imagination of the model being completely inaccurate, I added some probes (they are networks, but just remember that they are here to evaluate the model). Their goal is to extract information from the latent space to see if it is accurate. E.g., we create a latent space in which a PokĆ©mon is or isnāt (50-50) K.O., and the probe has to, based only on the latent space, say if the PokĆ©mon is K.O. or not. I also added a lot of logs, for example a log that counts the number of actions that the model takes (e.g., does it attack or does it pass its turn? (I had a problem one time where the model passed its turn 75% to 90% of the time!!)). below, you can see two different latent space (imagination), every dot is a real position in the game, the distance between the dots is their similarity (far = different, close = similar), you can also see in the 4th graph the age of the state (blue = start of the game, yellow = end of the game) and the most important in the 1st, 2nd and 3rd graph, you can see the predicted value of the model, the real value (red = win blue = loose) and the difference between the prediction of the AI and the real value the first png is the model at the first state (not trained) and the second png is the model at its best level...
|
1793512068.7418077
|
1793598468.7418077
|
|
41096
|
Untitled project by @uthraa777 | Stardance
|
uthraa777
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @uthraa777 | Stardance
|
1792788776.5373883
|
1793393576.5373883
|
|
7421
|
My first slack bot! by @uthish | Stardance
|
uthish
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @uthish | Stardance
|
1793307291.2059488
|
1793912091.2059488
|