|
3134
|
AV Media Booking System by @rachell_aristo | Stard AV Media Booking System by @rachell_aristo | Stardance...
|
rachell_aristo
|
0
|
78.75
|
0
|
[]
|
[{"post_id": 81415, "ts": "202 [{"post_id": 81415, "ts": "2026-10-21T06:29:38Z", "hours": 6.6819, "text": "Added an equipment check out system that allows the media technician to check out a loan by typing in the barcodes of specific assets. Checks if scanned asset exists in catalog Checks if the same assets are scanned > once Checks if a scanned asset is not requested in this loan And then saves the scanned barcodes to db. to do: add error handling for this + add barcode scanner with cam function"}, {"post_id": 80887, "ts": "2026-10-19T05:22:58Z", "hours": 1.2214, "text": "Added/changed all email templates into HTML to allow more formatting options in the future"}, {"post_id": 76966, "ts": "2026-10-05T07:15:47Z", "hours": 1.9156, "text": "Added variables to approve emails (with Jinja) so it’s dynamic Also added a few util functions for converting int ids to the string value (for equipment ids, studio space ids, timeslot ids etc) I wonder if there is a built in method for doing this with sql alchemy?"}, {"post_id": 71065, "ts": "2026-09-20T08:06:15Z", "hours": 0.9994, "text": "Added fully booked (depending on avalibility from selected date) + not avali for year group messages"}, {"post_id": 71020, "ts": "2026-09-20T06:51:57Z", "hours": 8.2517, "text": "I added an equipment item column to the equipment bookings table so that admin can also filter search by equipment :) Also added error handling for Flask Mail functions + updating loan status to db, which sends an appropriate message to admin about whether data was updated, email was sent etc."}, {"post_id": 70474, "ts": "2026-09-19T08:08:45Z", "hours": 5.9058, "text": "Added functionality for studio booking table - modals, action buttons etc. Also added filters to all tables. This sounds simple cuz previously all worked on equipment table, but was actually a mess to refactor because now there’s equipment bookings and studio bookings not just one type 🫠"}, {"post_id": 68636, "ts": "2026-09-15T13:22:08Z", "hours": 7.0539, "text": "omg SO MANY UPDATES!! >:) Updated the equipment booking system to dynamically update quantity counts depending on the date range selected by user (JS fetch) My app now sends AUTO EMAILS WHATTT with Flask Mail. Legit so cool :)) When admin changes a booking, eg by approving/cancelling, it will trigger an email to the user Added a filter system to bookings table! Can filter by searching a value in any column"}, {"post_id": 67984, "ts": "2026-09-14T09:54:57Z", "hours": 6.0844, "text": "Added accept/reject/cancel button functions to admin page + table of bookings with color coded status. Clicking on rows brings up a modal with more info + action buttons"}, {"post_id": 67211, "ts": "2026-09-13T08:17:54Z", "hours": 4.5839, "text": "Added verification for equipment booking: equipment must be allowed for the user’s year group, user must not have overdue loans and each loan has a limit for # of items loaned per equipmen type Basic table record display for all bookings on admin_home.html Updated CSS color scheme to fit school colors + unrounded elements (cuz I think the round UI design is over hyped) + made records more space efficent AI use: used Gemini to help update CSS"}, {"post_id": 66564, "ts": "2026-09-12T12:22:51Z", "hours": 2.1478, "text": "Fixed a really serious problem I didn’t spot previously where the equipment loan record getting saved to db wasn’t saving the quantity properly when u book >1 of each equipment type…simply forgot to iterate through the quantity list I had made 🫠 Also added to student_home page so that equipment bookings also get shown :)"}, {"post_id": 66329, "ts": "2026-09-12T03:08:07Z", "hours": 5.2681, "text": "Finally have a working equipment booking page and system! Figuering out how to select the data of equipment type and quantity and send to py was low key a nightmare…"}, {"post_id": 63527, "ts": "2026-09-07T13:12:08Z", "hours": 1.1408, "text": "Basic tab system for sorting the equipment cards based on category :)"}, {"post_id": 63488, "ts": "2026-09-07T11:28:33Z", "hours": 4.1219, "text": "Created a CSV parser with pandas (first time using!) which I can incorperate into the admin interface later on. Sorted out a lot of logicial tough questions such as how do you iterate through a 2D array to create records?"}, {"post_id": 62852, "ts": "2026-09-06T11:53:40Z", "hours": 2.3272, "text": "Changed html + js so that the studio booking page allows for div cards w/ photos for each studio space instead of a boring form like structure (css not fixed yet!)"}, {"post_id": 62606, "ts": "2026-09-06T02:26:32Z", "hours": 5.0053, "text": "Added comments to all my code + implemented Flask-Login. POV u came back to coding after like a month and realized you don’t understand what you wrote…comments for future me now. As for Flask-login, I implemented it cuz it makes sense to use it instead of manualy building login functions (in screenshot - goodbye manual login functions woop)"}, {"post_id": 35684, "ts": "2026-07-27T08:55:43Z", "hours": 11.0956, "text": "Finally have a functioning studio booking system with an HTML form that submits data to my mySQL db (form has frontend + backend validation too)!! Also created a student_home.html page, linked it to successful booking page. asked AI for tempoary functional css styling so that my page is easier to read (will change css to something less AI later on!) Stuff I’ve learned for the first time to use: Flatpickr date picker understanding how blueprints & routes work HTML templates and Jinja2 syntax Querying from database with sqlalchemy select"}, {"post_id": 14074, "ts": "2026-06-23T01:52:11Z", "hours": 2.5953, "text": "Added Google OAuth login!"}, {"post_id": 6664, "ts": "2026-06-11T05:21:49Z", "hours": 2.3544, "text": "Created database tables with SQLAlchemy for the first time"}]...
|
Title: AV Media Booking System by @rachell_aristo Title: AV Media Booking System by @rachell_aristo | Stardance
Devlogs:
Created database tables with SQLAlchemy for the first time
Added Google OAuth login!
Finally have a functioning studio booking system with an HTML form that submits data to my mySQL db (form has frontend + backend validation too)!! Also created a student_home.html page, linked it to successful booking page. asked AI for tempoary functional css styling so that my page is easier to read (will change css to something less AI later on!) Stuff I’ve learned for the first time to use: Flatpickr date picker understanding how blueprints & routes work HTML templates and Jinja2 syntax Querying from database with sqlalchemy select
Added comments to all my code + implemented Flask-Login. POV u came back to coding after like a month and realized you don’t understand what you wrote…comments for future me now. As for Flask-login, I implemented it cuz it makes sense to use it instead of manualy building login functions (in screenshot - goodbye manual login functions woop)
Changed html + js so that the studio booking page allows for div cards w/ photos for each studio space instead of a boring form like structure (css not fixed yet!)
Created a CSV parser with pandas (first time using!) which I can incorperate into the admin interface later on. Sorted out a lot of logicial tough questions such as how do you iterate through a 2D array to create records?
Basic tab system for sorting the equipment cards based on category :)
Finally have a working equipment booking page and system! Figuering out how to select the data of equipment type and quantity and send to py was low key a nightmare…
Fixed a really serious problem I didn’t spot previously where the equipment loan record getting saved to db wasn’t saving the quantity properly when u book >1 of each equipment type…simply forgot to iterate through the quantity list I had made 🫠 Also added to student_home page so that equipment bookings also get shown :)
Added verification for equipment booking: equipment must be allowed for the user’s year group, user must not have overdue loans and each loan has a limit for # of items loaned per equipmen type Basic table record display for all bookings on admin_home.html Updated CSS color scheme to fit school colors + unrounded elements (cuz I think the round UI design is over hyped) + made records more space efficent AI use: used Gemini to help update CSS
Added accept/reject/cancel button functions to admin page + table of bookings with color coded status. Clicking on rows brings up a modal with more info + action buttons
omg SO MANY UPDATES!! >:) Updated the equipment booking system to dynamically update quantity counts depending on the date range selected by user (JS fetch) My app now sends AUTO EMAILS WHATTT with Flask Mail. Legit so cool :)) When admin changes a booking, eg by approving/cancelling, it will trigger an email to the user Added a filter system to bookings table! Can filter by searching a value in any column
Added functionality for studio booking table - modals, action buttons etc. Also added filters to all tables. This sounds simple cuz previously all worked on equipment table, but was actually a mess to refactor because now there’s equipment bookings and studio bookings not just one type 🫠
I added an equipment item column to the equipment bookings table so that admin can also filter search by equipment :) Also added error handling for Flask Mail functions + updating loan status to db, which sends an appropriate message to admin about whether data was updated, email was sent etc.
Added fully booked (depending on avalibility from selected date) + not avali for year group messages
Added variables to approve emails (with Jinja) so it’s dynamic Also added a few util functions for converting int ids to the string value (for equipment ids, studio space ids, timeslot ids etc) I wonder if there is a built in method for doing this with sql alchemy?
Added/changed all email templates into HTML to allow more formatting options in the future
Added an equipment check out system that allows the media technician to check out a loan by typing in the barcodes of specific assets. Checks if scanned asset exists in catalog Checks if the same assets are scanned > once Checks if a scanned asset is not requested in this loan And then saves the scanned barcodes to db. to do: add error handling for this + add barcode scanner with cam function...
|
1792587171.3745627
|
1793191971.3745627
|
|
26914
|
TradeSims by @Maanvik | Stardance
|
Maanvik
|
1
|
78.58
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T18:11:26Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I Have created a Paper Trading Simulator Using Django Framework. Probably the hardest part was deployment, and after that creation of the stock page with real data, cause they both dealt with the yfinance API which is very finicky, but thank god it works", "repo": "https://github.com/MK150710/trading_sim", "demo": "https://tradesims.tradingsim-111.hackclub.app"}]...
|
[{"post_id": 72177, "ts": "202 [{"post_id": 72177, "ts": "2026-09-22T11:57:00Z", "hours": 1.3361, "text": "It got declined again But no matter, he said to build something to be proud of, so i went digging though my old papers and found the first draft of what i wanted the landing to look like, before i asked ai to make it. Ive made exactly that. detail for detail. With my favourite coloe scheme, back-green/blue-whiteThey told me to make something im proud of, and the way its turned out, i couldnt be prouder. Note to the judges First of all, maybe the way i write my css, with root vars and all, may make you think its ai, but i actually do write that way, casue i learnt to write css through ai. Secondly, time time tracked for this change is less, i put in about an hour and a half extra, but that time i was in a different state and forgot to isntall hacktime on dads laptop, i dont mind the lost time, i just dont want you to judke the time it took me to make this and think its ai cause its too less Thirdly, you asked me to make some of the features myself, and yes ive said it before, but the ENTIRE backend structure is my own. every line, every model every view. Soo yeahh. I made it myself, and im proud of it Lastly, thanks for taking the time to judge the project and read these journals 😁😁 (Ik the last few journals are not as detailed as 1-11, but thats cause exam season doesnt leave me time to write detailed logs)"}, {"post_id": 69675, "ts": "2026-09-17T15:44:46Z", "hours": 5.0294, "text": "Yeah, the last wasent the final Anyways, so in compliance witht he changes requested ive rewrote three pages: Hero Login Register Caveat I know it looks really bad, i only really was able to work on it for a limited time, with exam season and all. the Login and register pages’ html were resued(if thats okay) from a previosu project and just suited to this project. Anyways, thast all for this one. Thanks ! Edit I got reply saaaying ive used too much ai, but ive lliteraally sspent the alsat week rewriting three entire pages where ive basically used most of the ai im so confused"}, {"post_id": 63684, "ts": "2026-09-07T16:50:16Z", "hours": 1.2194, "text": "Fixing all the problems So this devlog is gonna be relatively short, cause it just comprises of correcting all changes requested, most importantly hosting on nest For the project reviewer Theres still a few issues with the website, but these are largely due to the hosting being on nest, cause the render website is mostly fine. Firstly, the whole website is very laggy and all round unresponsive for a few seconds after any press taht requires a query to supabase or redis Secondly, the dashboard does not render properly the first time, so id suggest to click the try again button or reload the page entirely. Even after reloading the portfolio performance part just doesn not work until you click on the one month or 3 month bnutton ( I have no clue why but this is on nest only) then it works The nest caddy does go down, like it did jstu at the time of writing this, so if it does happen to go down during the review, please check through tradesims.onrender.com, where the website is still upp Thats all. Once again, Thanks !!"}, {"post_id": 45935, "ts": "2026-08-12T18:38:36Z", "hours": 0.6011, "text": "Just fixing deployed website Fixed faqs, removed oauth, wrote the readme and instructions for installation"}, {"post_id": 45818, "ts": "2026-08-12T15:24:55Z", "hours": 11.5072, "text": "ONE. LAST. DANCE Hours: 12? 15? 20? (idek 😭😭) What i did Made the entire stock page have real data, you can actually buy and sell stocks now. This also updates transactions and holdings. Brand new holdings page that shows every stock you own. Finally, MY WEBSITE IS DEPLOYED. Try it out now: Visit TradeSims All changes I made Buy and sell card This actually works now. YOu can buy and sell stocks It has both backend and frontend checks for buying and selling capacity Unlike last time it shouws different metrics in the buying and selling panel. Buying power if u wanna buy and stocks owned if you want to sell The buy and sell button also update transactions Holdings page Its a simple page where all stocks are mentioned with their values quantity and P/L incurred. Theres a button to access it from the hero on the dasboard Wishlist I thought it was complete alst time, but when i checked the dashoard i remembered the buttons id added to trending stocks for adding to wishlist This one was slightly hard to do as it took changes in both JS and Python. I faced another error with color of the start but that worked out This led me to my next problem Stocks not in database Whenever i called yfinance on dashboard for market movers and trending stocks it might not be in the database This led to issues whenever I tried to wishlist those stocks or visited them it failed Now Ive made a function to check if a stock is in the database, if its not, it updates top stocks and now it can be accessed The same goes for the search bar, if theres no stock present then you can search for it, and if yfin has it, it adds to stocks and is forever accessible and updates just like all other stocks Deploying This IS THE HARDEST PART OF ALL Im not even sure how its working. but it is Ive used redis and Supabase for the cache and database respiectively Redis is mostlyto recude dependence on yfinance so taht i can reduce requiests, prevent rate limiting And uptime robot is for monitoring and keeping the webstie up. Thats about it. Thanks for the read Tradesims is officialy LIVE"}, {"post_id": 42571, "ts": "2026-08-07T11:57:53Z", "hours": 10.2128, "text": "Making The stock page Have real data Hours: 10 What I did I made everythine from the head to the news get real data from yfinance. Oh and also, one of my friends told me about Trading View so i scrapped my own chanrt and used their library to make an actual candlestick stock chart All changes Chart Scrapped the whole old chart Used trading view js library Actual candlestick chart YFin stock data sends it over an api to the stock page Stock head Gets data from yfin Has a fucntional button where ytou can wishlist and un wishlist stocks Price updates every 5 minutes All other parts The following: - About page - Key statistics - Financials - News - Order history - Holding Position Have been grabbed from backend ( YFin and DB models ) to display data in real time Buy/Sell This is the only part of the page that is not using actual data, its still simulated and yotu cant really buy stuff rn. but soon itll work Role of AI This time, AI was only used as a helper to debug code and check for syntax errors All code was written by me :) Problems faced Once again, the biggest problem here was spelling mismatch between the wesite API and component names and classes and id’s ( We all know how amazing i am at typing) Whats left Making buy and sell possile Transactions update after buying and selling Making a dedicated portfolio and (maybe) transaction page Adding a FAVICON ( omgg i keep forgetting) And thats about it. Thanks for the read !"}, {"post_id": 38269, "ts": "2026-07-31T16:06:29Z", "hours": 7.7064, "text": "FINALLY THE STOCK PAGE IS READYYYY Hours: 17 Note This is has been a grinddd. So many errors and aaaaaaa 😭😭😭 But the entire stock page with all of its components is currently complete. The entire page uses fake data inside the MockData.js File :) Next i gotta just create the real api endpoints and feed it to the frontend Changes in details The link The url for the stock is in the format: <main-url>/stock/<stock_name> Eg. ( Localhost ) http://127.0.0.1:8000/stock/AAPL/ The top bar Here is the place where the name and stock exchange is listed. Watchlist button is also present here Price, Gain and loss and time is also mentioned Price chart A detailed chart with historical data of the stock witht timelines ranging from 1D to Max About Simply, an about page with details of Stock Stats Displays: Opening and closing price Highs and lows (Last day and past year) Market cap Volume Avg volume Price to earning ratio Earning per share Divident yield Beta IDK how but this will probabaly be hardest to link to real data as ill have to change models too :( Financisls Displays revenue and net income for As bar charts per quarter News Its the news duh Might remove this if i cant link to real data Order history Only of said stock. Straight from dataabse Buying/Selling panel Literally, just a place to buy and sell your stocks that you own. It has its own frontend way of checking if you can afford a stock or not Position card Page to display what the user owns of the stock Has other details like Investment and value Related stocks Shows some more stocks to explore ( currently jst like the ones available in the fake data ) AI AI played a good role here. Helped me debug sooooo many errors and helped in writing certain jss animations and css blocks. All HTML and most CSS and Js was written by me ( Evident by the 17h worktime 🤣) Next Use real data. Test runs Connect stock page to main page Debug (Hopefully thats all) Thanks for the read !!"}, {"post_id": 35081, "ts": "2026-07-26T08:57:01Z", "hours": 9.4303, "text": "Im almost done with the stock page Ive been making this stuff for 9 hours now, and I dont have anything to show, but gimme a few hours ill get it done. just the CSS left now"}, {"post_id": 31715, "ts": "2026-07-20T10:32:00Z", "hours": 9.7186, "text": "Bug Fixes and live data Hours: 9 What all I completed All Bugs mentioned in the previous devlog have been fixed. All data related to stocks (except for login page) has been connected to stock database so that all data is live Created multiple components for stock details and page ( in development ) Changes in details Live data Finnhub API was scrapped to use only YFinance as the main Data provider. A task was scheduled to run every 5 minutes to update all data to stock database Instead of all pages calling the API for live data, all pages ping the database, which is updated as mentioned above Bug Fixes Live data Pages that now have live data: - Landing page ( Markets page and moving section ) - Watchlist part - Trending stocks ( With sparklines ) - Floating stock cards Problems faced I sometimes got timed out cause I called the API too many times I had to switch to the database metnod so i could reduce api queries. User button This was a small fix, but took a surprising amount of time 😭😭 The logout button is now hidden under the user initial button on top right File cleanup Extra blocks of code, specifically fake js data was removed Fairly strightforward Stock listing page This is still in development I have created multiple components Navbar Details Right panel Buy and sell stocks Related stocks User Ownership Left panel Stock progression chart Conpany overview Finance Company News Statistics Order History All compoenents come together inside a stock page that will be displayed This page is stil under development. I am planning to only use fake data for now, the i will slowly progress to real data from API and database There is very little js that i have written for this part till now, but there are more files planed Everything I learnt Its best to store all data from apis specially if multiple pages need to visit it, cause well then it doesnt reach limit. Revised JS and how to put together animations Again, I already listed everything I learnt and did in the bug fixes :) Role of AP AI only helped he understand the error specifics All code is written by me Current bugs The stock page is not complete(it is far from done) I dont have any rn but theyll pop up Next steps Complete the stock page Connect it to the database Allow for buying and selling FIX ALL BUGS ( They always come ) Thats about it !! Thanks for the read"}, {"post_id": 27094, "ts": "2026-07-12T11:00:40Z", "hours": 0.5575, "text": "Note This is an extension of the previous devlog, at in all it was too long to fit inside one 😭😭😂😅 Watchlist This was again, fairly straightforward. I simply got the values from the Datapased and parsed it instead of the placeholder array Current Bugs While the stock listed is itself part of the users wishlist, the pricing, change percent and sparkline are currently totally fake To fix this ill have to get the stock data update it in the database and create a function to do this every 10 miins or so Recent Transactions Here too, the data is simple parsed from backend and sybstituted instead of the placeholder array. These values however in the database, are obviously made up. The purpose right now i to simply get the data, cause then if i upload it i am guaranteed to get it Problems faced The Buy tag inside the transactions section was very uncooperative I later realised that it was due to the capitalisation of the tag in the database wheras the JS reciever expected it in lowercase, and rejected it, hence printing it as sell Everything I learnt API selection. Oh man! Theres so many parameters to check for and so many pros and cons and ups and downs. I should have probably evaluated all of that before actually starting to build the endpoint; It would probably have saved me an hour or two Capitalisation, i mean i knew it was important, but still. Spellings and capitalisation gave me a headache 😭😭😭 ~ [ I really gotta improve my typing accuracy] Data sttructuring designs matter a lot more than i thought. When creating the dashboard, all i thought was, what all do i want. BUt then i realised alter, that its more about what all will the backend send and i should have structured it accoring to that; It would also have saved me some time Even tho i did plan everything well this time, i did slip out at a few places; like the 0 Change error in my main section is caused due to the way i made my backend There is a lot more, but most of it has been covered in the problems sections, which obviously meant learning about everything that meant wrong, so im not going to repeat it all here Role of AI During this time, AI did not write any code. ALl implementation is my own work; Ai merely acted as a debugger for some of my issues Moreover, it helped me progress though my plan in stages that actually made sense It also stored all of my past mistakes and issues and designs so i could easily refer them and write the code Next Steps First, obiviously, just fix all the bugs in the Updated version once thats done, i plan to create a way for users to actually quote and buy stocks. I also want to create detailed amalysis pages for stocks dynamically, if possible ( I really hope i dont have to change APIs again 😭) Thanks for the read !!"}, {"post_id": 26728, "ts": "2026-07-11T18:07:33Z", "hours": 9.9983, "text": "MASSIVE CHANGES Hours: 10 The list includes: - User data pulled form database instead of fake values - Live market overview - Daily gainers and losers with live data - Sparklines and growth charts for all stocks - Watchlist dynamically rendered from user’s database - Transactions rendered from database - Portfolio progression chart created from users previous net worths Disclaimer These changes were meant to be distributed among two journals. But due to my absolutely amazing memory i forgot and created all these functions Hence this devlong is gonna be a long one Changes in depth User data Earlier, on logging in, the user visited a dashboard with palceholder name, portfolio, networth etc. This has been updated via the dashboard_api function in views.py to dynamically fetch user data Problems faced Mismatch with the expected json data of the Backend meant that initially the data was not rendering properly, and just returning placeholder data Current Bugs The way the data is saved daily means that there is virtually zero change in the net worth of the indivisual, atleast as far as this section is concerned This causes the change and change percent to always remain at 0 Market overview Yahoo’s YFinance API endpoint has been used to get live market data of the S&P500 , NASDAQ and Dow Jones ETFs. This data is rendered through markets.py file inside services Problems faced Initially, I thought of using finnhub as the provider due to its generous free tier and live data. This however did not work as the candles required to generate the sparkline of each graph were not included in the free tier of finnhub Next, i consider Alpha Vantage as my data provider. This idea was quickly scrapped due to its sparing free tier of 25 requests/day which would be exhausted in mere minutes I briefly considered a mix of Finnhub and Alpha Vantage to get the best of both worlds, but the lag between responses and the limit for alpha vantage were still limiting So finally, i went with a mix of Finnhub and YFinance, and i thought it was the best combination. However, again, it lagged, it would not render properly. And besider, apart from the 15 mins delay, which, lets face it, is not game changing for a simulator, YFinance offered everything i needed, and also it had good documentation i could refer to My final data feed comes from YFinance and yahooquery, which I am quite proud of Current Bugs Sometimes, there is still delay in the response, and im confused cause its very rare, and othertimes its not… Im still working on it Trending Trending API is still in progress, i havent been able to get it to work with the current data, but ill get it done by the next journal Progression Chart This is simply a chart that is dynamically created based on past portfolio worths of the user. Not many problems were faced here, thank god. It was fairly strightforward Market movers The greatest gainers and losers, by day and percentage, are shown here. (Theyre the market movers after all 😅) This part was a considerable pain to get to work properly, particularly when i was using Finnhub, becuase it was very hard to find the gainers and losers, atleast for me. Problems I faced Spellings mismatch with exact wording of the data the stock returned Issues with perfectly parsing it in the exact format required by JavaScript [What can i say, my typing is just that good] It was so bad that i did not even push my changes to github for this part YFinance for me somehow made this quite simpler and i was able to get it running. Thankfully, no errors presently"}, {"post_id": 22292, "ts": "2026-07-04T18:01:11Z", "hours": 4.3025, "text": "Creating Django Models, Admin Page & Connecting Frontend Pages to Database Hours: 4.5 Objective Create Django Models for backend foundation of TradeSims and connect the Login and Register pages to the backend database. What I Worked On Wrote a markdown file first listing out all the models, fields, and relationships before touching code Translated that into models.py — ended up with 5 models: Portfolio, Stock, Holding, Transaction, Wishlist Portfolio: one-to-one with User, starts everyone off with a $100k balance Stock: symbol, price, exchange, etc. Holding: links Portfolio + Stock, added a save() override so avg_buy_price calculates itself and the holding deletes itself if quantity hits 0 Transaction: logs every buy/sell with balance before/after so there’s a proper trade history Wishlist: User + Stock, made sure someone can’t wishlist the same stock twice Used PROTECT on the Stock foreign keys so a stock can’t get deleted while it’s still tied to trades/holdings, but CASCADE on the Portfolio ones since those don’t make sense without the parent Ran migrations, tested everything through the shell and admin Set up admin.py for all models + created a superuser Defined GET and POST conditions for login and register views Added a component to cleanly display any client-side errors(such as password mismatch) Checked for multiple edge cases such as: Duplicating usernames Password mismatch Incorrect username or password Duplicating email id Created a simple logout form What I Learnt on_delete matters more than I thought — CASCADE vs PROTECT changes a lot depending on whether the child record even makes sense without the parent Doing calculations (like avg_buy_price) inside save() keeps that logic in one place instead of copy-pasting it into views later Constraints like UniqueConstraint/CheckConstraint let the database stop bad data itself instead of relying only on form validation GET and POST methods Login required decorators Fetching data from HTML forms Django USER authentication using authenticate Problems & Rabbit Holes Migration broke when I swapped a CharField (was just storing the stock symbol as text) for a proper ForeignKey to Stock. Django had no way to map the existing text values to actual Stock rows, so it errored out Fixed by wiping the db and remigrating since there was no real data yet — if this happens again later with actual data I’ll need a proper data migration instead of just nuking it Multiple spelling mismatches across files meant that i had to carefully check and re iterate multiple files over and over again Forgot my superuser username 🤪 which lead me to use shell to retireve it Functional Elements Fully working relational database — 5 models, all linked up properly with constraints Django Admin page working for all models Superuser set up Functional Login and Register Pages tied to database Pop up Errors on client side Both frontend and backend authentication Simple logout functionality Role of AI AI was used as a reviewer and technical mentor to validate database design decisions, strengthen Django concepts, and help debug migration issues. AI was used as a syntax-reviewer (and in this case, a spelling checker), allowing me to focus on implementing logic in the functions. All implementation and code integration were completed by me. Next Steps Research for the most suitable API key given my current website scope Implement its API through a HTML form to fetch JSON data Parse the data and wire it up to backend Create a dashboard with all the user’s data Implement OAuth Buttons Error Pop-ups"}, {"post_id": 20097, "ts": "2026-07-01T16:46:42Z", "hours": 3.6028, "text": "Day 3 & 4 - Creating login and register pages Hours: 3 Objective Create and render the frontend part of login and register pages for website What I Worked On Writing HTML code and creating a form to input the First Name, last name, user ID, email ID, and password. After initial creation of HTML pages, it was broken into functional components to make code more readable andstructured Styling The HTML forms and components were created by me, with specific styling desicions inspired by Claude. The Specific CSS and JavaScript used to stylise the webpage, and to check for password strength, and email validity was implimented by claude. All AI generated code was cross checked and modified by me to fit the project’s coding style Functional Elements Working login page Working register page Password strength check at client side (Frontend only) Google and GitHub OAuth buttons Panels for both login and register pages to make the page visually appealing Next Steps Implement Django database models and SQL queries to be able to save user information Make OAuth Buttons functional Create Dashboard for user to view their paper currency value, stock holding, portfolio value, etc Add API to be able to pull live data of stocks"}, {"post_id": 17897, "ts": "2026-06-28T20:42:21Z", "hours": 2.4692, "text": "Created multiple components for homepage(such as hero, markets etc.) , used CSS and JS to beautifully style landing page. Compiled all components into final home.html file to successfully run my django app for the first time"}, {"post_id": 16917, "ts": "2026-06-27T14:07:40Z", "hours": 0.5228, "text": "Completed initial layout with a navbar, and template indexing, ready to use as a base for all webfiles. Also added a new django software"}, {"post_id": 16853, "ts": "2026-06-27T11:05:09Z", "hours": 0.4094, "text": "Initial layout and template html file"}]...
|
Title: TradeSims by @Maanvik | Stardance
Devlogs: Title: TradeSims by @Maanvik | Stardance
Devlogs:
Initial layout and template html file
Completed initial layout with a navbar, and template indexing, ready to use as a base for all webfiles. Also added a new django software
Created multiple components for homepage(such as hero, markets etc.) , used CSS and JS to beautifully style landing page. Compiled all components into final home.html file to successfully run my django app for the first time
Day 3 & 4 - Creating login and register pages Hours: 3 Objective Create and render the frontend part of login and register pages for website What I Worked On Writing HTML code and creating a form to input the First Name, last name, user ID, email ID, and password. After initial creation of HTML pages, it was broken into functional components to make code more readable andstructured Styling The HTML forms and components were created by me, with specific styling desicions inspired by Claude. The Specific CSS and JavaScript used to stylise the webpage, and to check for password strength, and email validity was implimented by claude. All AI generated code was cross checked and modified by me to fit the project’s coding style Functional Elements Working login page Working register page Password strength check at client side (Frontend only) Google and GitHub OAuth buttons Panels for both login and register pages to make the page visually appealing Next Steps Implement Django database models and SQL queries to be able to save user information Make OAuth Buttons functional Create Dashboard for user to view their paper currency value, stock holding, portfolio value, etc Add API to be able to pull live data of stocks
Creating Django Models, Admin Page & Connecting Frontend Pages to Database Hours: 4.5 Objective Create Django Models for backend foundation of TradeSims and connect the Login and Register pages to the backend database. What I Worked On Wrote a markdown file first listing out all the models, fields, and relationships before touching code Translated that into models.py — ended up with 5 models: Portfolio, Stock, Holding, Transaction, Wishlist Portfolio: one-to-one with User, starts everyone off with a $100k balance Stock: symbol, price, exchange, etc. Holding: links Portfolio + Stock, added a save() override so avg_buy_price calculates itself and the holding deletes itself if quantity hits 0 Transaction: logs every buy/sell with balance before/after so there’s a proper trade history Wishlist: User + Stock, made sure someone can’t wishlist the same stock twice Used PROTECT on the Stock foreign keys so a stock can’t get deleted while it’s still tied to trades/holdings, but CASCADE on the Portfolio ones since those don’t make sense without the parent Ran migrations, tested everything through the shell and admin Set up admin.py for all models + created a superuser Defined GET and POST conditions for login and register views Added a component to cleanly display any client-side errors(such as password mismatch) Checked for multiple edge cases such as: Duplicating usernames Password mismatch Incorrect username or password Duplicating email id Created a simple logout form What I Learnt on_delete matters more than I thought — CASCADE vs PROTECT changes a lot depending on whether the child record even makes sense without the parent Doing calculations (like avg_buy_price) inside save() keeps that logic in one place instead of copy-pasting it into views later Constraints like UniqueConstraint/CheckConstraint let the database stop bad data itself instead of relying only on form validation GET and POST methods Login required decorators Fetching data from HTML forms Django USER authentication using authenticate Problems & Rabbit Holes Migration broke when I swapped a CharField (was just storing the stock symbol as text) for a proper ForeignKey to Stock. Django had no way to map the existing text values to actual Stock rows, so it errored out Fixed by wiping the db and remigrating since there was no real data yet — if this happens again later with actual data I’ll need a proper data migration instead of just nuking it Multiple spelling mismatches across files meant that i had to carefully check and re iterate multiple files over and over again Forgot my superuser username 🤪 which lead me to use shell to retireve it Functional Elements Fully working relational database — 5 models, all linked up properly with constraints Django Admin page working for all models Superuser set up Functional Login and Register Pages tied to database Pop up Errors on client side Both frontend and backend authentication Simple logout functionality Role of AI AI was used as a reviewer and technical mentor to validate database design decisions, strengthen Django concepts, and help debug migration issues. AI was used as a syntax-reviewer (and in this case, a spelling checker), allowing me to focus on implementing logic in the functions. All implementation and code integration were completed by me. Next Steps Research for the most suitable API key given my current website scope Implement its API through a HTML form to fetch JSON data Parse the data and wire it up to backend Create a dashboard with all the user’s data Implement OAuth Buttons Error Pop-ups
MASSIVE CHANGES Hours: 10 The list includes: - User data pulled form database instead of fake values - Live market overview - Daily gainers and losers with live data - Sparklines and growth charts for all stocks - Watchlist dynamically rendered from user’s database - Transactions rendered from database - Portfolio progression chart created from users previous net worths Disclaimer These changes were meant to be distributed among two journals. But due to my absolutely amazing memory i forgot and created all these functions Hence this devlong is gonna be a long one Changes in depth User data Earlier, on logging in, the user visited a dashboard with palceholder name, portfolio, networth etc. This has been updated via the dashboard_api function in views.py to dynamically fetch user data Problems faced Mismatch with the expected json data of the Backend meant that initially the data was not rendering properly, and just returning placeholder data Current Bugs The way the data is saved daily means that there is virtually zero change in the net worth of the indivisual, atleast as far as this section is concerned This causes the change and change percent to always remain at 0 Market overview Yahoo’s YFinance API endpoint has been used to get live market data of the S&P500 , NASDAQ and Dow Jones ETFs. This data is rendered through markets.py file inside services Problems faced Initially, I thought of using finnhub as the provider due to its generous free tier and live data. This however did not work as the candles required to generate the sparkline of each graph were not included in the free tier of finnhub Next, i consider Alpha Vantage as my data provider. This idea was quickly scrapped due to its sparing free tier of 25 requests/day which would be exhausted in mere minutes I briefly considered a mix of Finnhub and Alpha Vantage to get the best of both worlds, but the lag between responses and the limit for alpha vantage were still limiting So finally, i went with a mix of Finnhub and YFinance, and i thought it was the best combination. However, again, it lagged, it would not render properly. And besider, apart from the 15 mins delay, which, lets face it, is not game changing for a simulator, YFinance offered everything i needed, and also it had good documentation i could refer to My final data feed comes from YFinance and yahooquery, which I am quite proud of Current Bugs Sometimes, there is still delay in the response, and im confused cause its very rare, and othertimes its not… Im still working on it Trending Trending API is still in progress, i havent been able to get it to work with the current data, but ill get it done by the next journal Progression Chart This is simply a chart that is dynamically created based on past portfolio worths of the user. Not many problems were faced here, thank god. It was fairly strightforward Market movers The greatest gainers and losers, by day and percentage, are shown here. (Theyre the market movers after all 😅) This part was a considerable pain to get to work properly, particularly when i was using Finnhub, becuase it was very hard to find the gainers and losers, atleast for me. Problems I faced Spellings mismatch with exact wording of the data the stock returned Issues with perfectly parsing it in the exact format required by JavaScript [What can i say, my typing is just that good] It was so bad that i did not even push my changes to github for this part YFinance for me somehow made this quite simpler and i was able to get it running. Thankfully, no errors presently
Note This is an extension of the previous devlog, at in all it was too long to fit inside one 😭😭😂😅 Watchlist This was again, fairly straightforward. I simply got the values from the Datapased and parsed it instead of the placeholder array Current Bugs While the stock listed is itself part of the users wishlist, the pricing, change percent and sparkline are currently totally fake To fix this ill have to get the stock data update it in the database and create a function to do this every 10 miins or so Recent Transactions Here too, the data is simple parsed from backend and sybstituted instead of the placeholder array. These values however in the database, are obviously made up. The purpose right now i to simply get the data, cause then if i upload it i am guaranteed to get it Problems faced The Buy tag inside the transactions section was very uncooperative I later realised that it was due to the capitalisation of the tag in the database wheras the JS reciever expected it in lowercase, and rejected it, hence printing it as sell Everything I learnt API selection. Oh man! Theres so many parameters to check for and so many pros and cons and ups and downs. I should have probably evaluated all of that before actually starting to build the endpoint; It would probably have saved me an hour or two Capitalisation, i mean i knew it was important, but still. Spellings and capitalisation gave me a headache 😭😭😭 ~ [ I really gotta improve my typing accuracy] Data sttructuring designs matter a lot more than i thought. When creating the dashboard, all i thought was, what all do i want. BUt then i realised alter, that its more about what all will the backend send and i should have structured it accoring to that; It would also have saved me some time Even tho i did plan everything well this time, i did slip out at a few places; like the 0 Change error in my main section is caused due to the way i made my backend There is a lot more, but most of it has been covered in the problems sections, which obviously meant learning about everything that meant wrong, so im not going to repeat it all here Role of AI During this time, AI did not write any code. ALl implementation is my own work; Ai merely acted as a debugger for some of my issues Moreover, it helped me progress though my plan in stages that actually made sense It also stored all of my past mistakes and issues and designs so i could easily refer them and write the code Next Steps First, obiviously, just fix all the bugs in the Updated version once thats done, i plan to create a way for users to actually quote and buy stocks. I also want to create detailed amalysis pages for stocks dynamically, if possible ( I really hope i dont have to change APIs again 😭) Thanks for the read !!
Bug Fixes and live data Hours: 9 What all I completed All Bugs mentioned in the previous devlog have been fixed. All data related to stocks (except for login page) has been connected to stock database so that all data is live Created multiple components for stock details and page ( in development ) Changes in details Live data Finnhub API was scrapped to use only YFinance as the main Data provider. A task was scheduled to run every 5 minutes to update all data to stock database Instead of all pages calling the API for live data, all pages ping the database, which is updated as mentioned above Bug Fixes Live data Pages that now have live data: - Landing page ( Markets page and moving section ) - Watchlist part - Trending stocks ( With sparklines ) - Floating stock cards Problems faced I sometimes got timed out cause I called the API too many times I had to switch to the database metnod so i could reduce api queries. User button This was a small fix, but took a surprising amount of time 😭😭 The logout button is now hidden under the user initial button on top right File cleanup Extra blocks of code, specifically fake js data was removed Fairly strightforward Stock listing page This is still in development I have created multiple components Navbar Details Right panel Buy and sell stocks Related stocks User Ownership Left panel Stock progression chart Conpany overview Finance Company News Statistics Order History All compoenents come together inside a stock page that will be displayed This page is stil under development. I am planning to only use fake data for now, the i will slowly progress to real data from API and database There is very little js that i have written for this part till now, but there are more files planed Everything I learnt Its best to store all data from apis specially if multiple pages need to visit it, cause well then it doesnt reach limit. Revised JS and how to put together animations Again, I already listed everything I learnt and did in the bug fixes :) Role of AP AI only helped he understand the error specifics All code is written by me Current bugs The stock page is not complete(it is far from done) I dont have any rn but theyll pop up Next steps Complete the stock page Connect it to the database Allow for buying and selling FIX ALL BUGS ( They always come ) Thats about it !! Thanks for the read
Im almost done with the stock page Ive been making this stuff for 9 hours now, and I dont have anything to show, but gimme a few hours ill get it done. just the CSS left now
FINALLY THE STOCK PAGE IS READYYYY Hours: 17 Note This is has been a grinddd. So many errors and aaaaaaa 😭😭😭 But the entire stock page with all of its components is currently complete. The entire page uses fake data inside the MockData.js File :) Next i gotta just create the real api endpoints and feed it to the frontend Changes in details The link The url for the stock is in the format: <main-url>/stock/<stock_name> Eg. ( Localhost ) http://127.0.0.1:8000/stock/AAPL/ The top bar Here is the place where the name and stock exchange is listed. Watchlist button is also present here Price, Gain and loss and time is also mentioned Price chart A detailed chart with historical data of the stock witht timelines ranging from 1D to Max About Simply, an about page with details of Stock Stats Displays: Opening and closing price Highs and lows (Last day and past year) Market cap Volume Avg volume Price to earning ratio Earning per share Divident yield Beta IDK how but this will probabaly be hardest to link to real data as ill have to change models too :( Financisls Displays revenue and net income for As bar charts per quarter News Its the news duh Might remove this if i cant link to real data Order history Only of said stock. Straight from dataabse Buying/Selling panel Literally, just a place to buy and sell your stocks that you own. It has its own frontend way of checking if you can afford a stock or not Position card Page to display what the user owns of the stock Has other details like Investment and value Related stocks Shows some more stocks to explore ( currently jst like the ones available in the fake data ) AI AI played a good role here. Helped me debug sooooo many errors and helped in writing certain jss animations and css blocks. All HTML and most CSS and Js was written by me ( Evident by the 17h worktime 🤣) Next Use real data. Test runs Connect stock page to main page Debug (Hopefully thats all) Thanks for the read !!
Making The stock page Have real data Hours: 10 What I did I made everythine from the head to the news get real data from yfinance. Oh and also, one of my friends told me about Trading View so i scrapped my own chanrt and used their library to make an actual candlestick stock chart All changes Chart Scrapped the whole old chart Used trading view js library Actual candlestick chart YFin stock data sends it over an api to the stock page Stock head Gets data from yfin Has a fucntional button where ytou can wishlist and un wishlist stocks Price updates every 5 minutes All other parts The following: - About page - Key statistics - Financials - News - Order history - Holding Position Have been grabbed from backend ( YFin and DB models ) to display data in real time Buy/Sell This is the only part of the page that is not using actual data, its still simulated and yotu cant really buy stuff rn. but soon itll work Role of AI This time, AI was only used as a helper to debug code and check for syntax errors All code was written by me :) Problems faced Once again, the biggest problem here was spelling mismatch between the wesite API and component names and classes and id’s ( We all know how amazing i am at typing) Whats left Making buy and sell possile Transactions update after buying and selling Making a dedicated portfolio and (maybe) transaction page Adding a FAVICON ( omgg i keep forgetting) And thats about it. Thanks for the read !
ONE. LAST. DANCE Hours: 12? 15? 20? (idek 😭😭) What i did Made the entire stock page have real data, you can actually buy and sell stocks now. This also updates transactions and holdings. Brand new holdings page that shows every stock you own. Finally, MY WEBSITE IS DEPLOYED. Try it out now: Visit TradeSims All changes I made Buy and sell card This actually works now. YOu can buy and sell stocks It has both backend and frontend checks for buying and selling capacity Unlike last time it shouws different metrics in the buying and selling panel. Buying power if u wanna buy and stocks owned if you want to sell The buy and sell button also update transactions Holdings page Its a simple page where all stocks are mentioned with their values quantity and P/L incurred. Theres a button to access it from the hero on the dasboard Wishlist I thought it was complete alst time, but when i checked the dashoard i remembered the buttons id added to trending stocks for adding to wishlist This one was slightly hard to do as it took changes in both JS and Python. I faced another error with color of the start but that worked out This led me to my next problem Stocks not in database Whenever i called yfinance on dashboard for market movers and trending stocks it might not be in the database This led to issues whenever I tried to wishlist those stocks or visited them it failed Now Ive made a function to check if a stock is in the database, if its not, it updates top stocks and now it can be accessed The same goes for the search bar, if theres no stock present then you can search for it, and if yfin has it, it adds to stocks and is forever accessible and updates just like all other stocks Deploying This IS THE HARDEST PART OF ALL Im not even sure how its working. but it is Ive used redis and Supabase for the cache and database respiectively Redis is mostlyto recude dependence on yfinance so taht i can reduce requiests, prevent rate limiting And uptime robot is for monitoring and keeping the webstie up. Thats about it. Thanks for the read Tradesims is officialy LIVE
Just fixing deployed website Fixed faqs, removed oauth, wrote the readme and instructions for installation
Fixing all the problems So this devlog is gonna be relatively short, cause it just comprises of correcting all changes requested, most importantly hosting on nest For the project reviewer Theres still a few issues with the website, but these are largely due to the hosting being on nest, cause the render website is mostly fine. Firstly, the whole website is very laggy and all round unresponsive for a few seconds after any press taht requires a query to supabase or redis Secondly, the dashboard does not render properly the first time, so id suggest to click the try again button or reload the page entirely. Even after reloading the portfolio performance part just doesn not work until you click on the one month or 3 month bnutton ( I have no clue why but this is on nest only) then it works The nest caddy does go down, like it did jstu at the time of writing this, so if it does happen to go down during the review, please check through tradesims.onrender.com, where the website is still upp Thats all. Once again, Thanks !!
Yeah, the last wasent the final Anyways, so in compliance witht he changes requested ive rewrote three pages: Hero Login Register Caveat I know it looks really bad, i only really was able to work on it for a limited time, with exam season and all. the Login and register pages’ html were resued(if thats okay) from a previosu project and just suited to this project. Anyways, thast all for this one. Thanks ! Edit I got reply saaaying ive used too much ai, but ive lliteraally sspent the alsat week rewriting three entire pages where ive basically used most of the ai im so confused
It got declined again But no matter, he said to build something to be proud of, so i went digging though my old papers and found the first draft of what i wanted the landing to look like, before i asked ai to make it. Ive made exactly that. detail for detail. With my favourite coloe scheme, back-green/blue-whiteThey told me to make something im proud of, and the way its turned out, i couldnt be prouder. Note to the judges First of all, maybe the way i write my css, with root vars and all, may make you think its ai, but i actually do write that way, casue i learnt to write css through ai. Secondly, time time tracked for this change is less, i put in about an hour and a half extra, but that time i was in a different state and forgot to isntall hacktime on dads laptop, i dont mind the lost time, i just dont want you to judke the time it took me to make this and think its ai cause its too less Thirdly, you asked me to make some of the features myself, and yes ive said it before, but the ENTIRE backend structure is my own. every line, every model every view. Soo yeahh. I made it myself, and im proud of it Lastly, thanks for taking the time to judge the project and read these journals 😁😁 (Ik the last few journals are not as detailed as 1-11, but thats cause exam season doesnt leave me time to write detailed logs)
Ships:
I Have created a Paper Trading Simulator Using Django Framework. Probably the hardest part was deployment, and after that creation of the stock page with real data, cause they both dealt with the yfinance API which is very finicky, but thank god it works...
|
1792986795.8473234
|
1793073195.8473234
|
|
524
|
Car Game by @Mihai | Stardance
|
Mihai
|
2
|
78.0
|
1589
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T19:17:46Z", "hours": 27.0, "multiplier": 19.23, "payout": 622, "blessing": "neutral", "text": "So, this is the new version of car gaim!!! There is a new map, much more optimized, together with settings and a linux build to improve accessibility. There are 3 races together with a free drive mode on the main map. Change log: -New map -3 new races -Settings -New UI/Hud -Racing line -Driver models and reactions -Driving Surfaces -New sounds (shifting, high speed, crash etc.) -Speed effects -Improved car model and textures -Small AI improvements -Loading Screen -New Crash system: three crashes or a big crash and you’re out of the race -Optimization -Partial controller support -Small destructable objects on the map The biggest challenge was finding time to still work on the game and also bring significant improvement. The time restrain allowed me to focus on the necessary and I really feel the game is in a better place now. Technically this update is much smaller than the first release (it’s obvious) but interconnecting all the systems in one product was a real hassle, especially with the UI, as Unity UI is a bit janky. Notes for testers: I found a region with very bad fps spikes, for which I haven’t found the cause for. Thankfully its only a small part of both races, and a small part on the map overall. There is partial controller support, menus haven’t been tested properly, but driving works. There is a Linux build, but it wasn’t tested, any notes about that are welcome. Download available on itch.io", "repo": "https://github.com/Telea-Mihai/Car-gaim", "demo": "https://github.com/Telea-Mihai/Car-gaim/releases/tag/V0.0.2"}, {"ship_num": 2, "ts": "2026-09-10T19:52:13Z", "hours": 51.0, "multiplier": 15.73, "payout": 967, "blessing": "neutral", "text": "This is a small NFS inspired car game demo. It’s a project to test my technical abilities in Unity. It features custom made vehicle physics based on Unity’s built in wheel colliders and a custom easy to use solution for racing ai. Besides that, it is (in some small predetermined angles) a fairly good looking game, with a little bit of style. The game uses Unity’s HDRP render pipeline for its graphics, together with some screen space reflections and reflective materials, the game gets to look fairly good, especialy in the low light enviorment it’s set in. The car physics are in a sim-cade style. The car can still do crazy steering at high speeds, and its very easy to rotate it, but understeer and oversteer can still occur, besides that, the car is not limited in any way when it comes to external forces that can imbalance it, hit a curb at a high speed and the car can go flying. The biggest challenge was the racing AI. First of all it was hard to make a car know how much to steer to go from point A to point B. After that, it was fairly simple right? Just sample some point from the road spline and follow them. But curves exist, and for that you need to calculate the right speed to go trough it so that it wont crash. Then, the car was driving very inefficiently, following the middle of the road, so what followed was a long quest of making a racing path generator, in which I succeeded (with the help of AI). Then came obstacle avoidance, making the car not seem just like a train following a predefined track. If necessary the car will go off track to avoid obstacles and it’s aware of cars around it and will try to keep the distance. There is also a system that predicts collisions with other cars (for example if a car in front is cutting in front of it, it can predict that will happen and brake). This is all theory but it still works in game, sometimes. Another hard part was building a city. I had no prior experience in making games that aren’t made out of just basic cubes and shapes, so it was difficult to find assets and other stuff to populate the city. Then also came the point of how much detail should I even add and many other factors that in the end made me make the hard decision of making just one race in order to not break the illussion of a semi believable city. I’m very proud of how it came out, alltough I have so many ideas about how I can make it grander and better, but i currently don’t have the time to do so. I hope to come back in the future and actually make a cool metal-rock and boost infused racing game like NFS Most Wanted, but it has to wait. For those who want to play test the game. Currently there is only a windows version for the game, and it can also be pretty demanding in terms of GPU (Basically, I think it needs a dedicated GPU, I have a rtx 3050 4gb laptop GPU and it runs fine). There is a simpler driving demo scene which is just white terrain with some roads, that maybe will fair better with lower end hardware.", "repo": "https://github.com/Telea-Mihai/Car-gaim", "demo": "https://github.com/Telea-Mihai/Car-gaim/releases/tag/V0.0.2"}]...
|
[{"post_id": 79112, "ts": "202 [{"post_id": 79112, "ts": "2026-10-12T18:32:02Z", "hours": 5.6664, "text": "This has been a big push to finish the new version of the game. Together with a linux build the new version brings a new map, new UI, racing line, settings menu, AI-improvements, optimization, driver models, 3 new races, a loading screen, and a start race “screen”. Specific for this devlog, the settings menu, with three graphical presets, a loading screen and a start race screen. Two new races. Small map additions (some houses and parked cars, and physical objects incld cones and barriers that you can hit). Bug fixes across the board. A big challenge for this was the data transition between scenes and settings saving. And I used player prefs to save settings, and some simple static objects to transfer info between scenes. Overall what I have here is a nice base to start building a campaign."}, {"post_id": 78111, "ts": "2026-10-09T16:17:50Z", "hours": 1.0669, "text": "I made a line that shows you where to go, so you don’t need to guess anymore. It uses the baked racing path the AI uses, and passes the points to a line renderer. It also scales with speed, higher speed => line extends further, in order to help you see upcoming corners easier."}, {"post_id": 77336, "ts": "2026-10-06T16:21:09Z", "hours": 3.9394, "text": "So, there have been a few changes. There are now drivers, the cars are no longer driven by ghosts. There are procedural animations for steering using IK (it’s really not that complicated. They also look ahead and where they drive (INCREDIBLE!!!!). Besides that they also react to crashes, eating the steering wheel, cus there ain’t no airbag (poor lads). I’ve reworked the crash system, not visually but technically. You are now allowed to have 3 small crashes, they still trigger the slow motion, but they don’t end your race. Crash many more times than that, your race ends. This way you are still penalised for bad driving. There is still a one hit “lethal impact”, but that basically means going top speed into a tree to trigger. Another small addition are some more sounds, to make the driving feel even better: -Gear shifter sounds -Handbrake pull/release sounds Just a small bit of polish. Besides that there were small bug fixes, nothing notable."}, {"post_id": 76466, "ts": "2026-10-03T16:42:33Z", "hours": 2.4925, "text": "I’ve been working on a new surface system! Now I can add surfaces with different sounds and effects when sliding. I also added “rolling sounds” that play when just driving over at adequate speed. I’ve added a dirt surface, for obvious reasons. It also has something called rolling resistance. You will observe the fact that when driving over dirt with one side of the car still on the road, the car will steer towards the dirt, because of the higher resistance, and also will have as a consequence a lower top speed, also acting as a penalty for driving offroad. Besides that I also added ambient sounds, like a wind and leaves thing so that you can tell when standing still that you are in a forest :))) Last thing is I made the crashing better, no longer will any impact “crash” you but the sounds are also better, with separate sounds for high and low impact speeds. Basically a lot of polish for the game, the driving feels better, I feel like, because of it, and it also incentivises you to stay on the road, alltough the trees already kinda did that."}, {"post_id": 76168, "ts": "2026-10-02T15:41:06Z", "hours": 2.1219, "text": "I’ve been working on the HUD for the game. Really simple, but it was missing. It features a lap counter, lap timer, best lap, lap delta, position. The speed/rpm/gear cluster is the same as before."}, {"post_id": 74116, "ts": "2026-09-26T18:26:41Z", "hours": 2.6064, "text": "Speed. Speed is very important when it comes to racing, right? Well yes, but in a video game, where you sit down on a chair, static, in a room, the sensation of speed is even more important. That’s why these few hours i’ve been working on making the game feel fast . Changes have been made to the way the camera moves behind the car and in how it tracks it. Besides that, there has been a little sound work. At high speeds sounds become muffled and a wind noise can be heard. There is also the post processing i’ve been talking about in the other devlogs. Besides that, i’ve started reworking the UI, and the first element was the gauge cluster. I’ve decided to have the text physically live in the world, it reacts to the car, lagging behind or moving from side to side slightly. It also gets blurred at high speeds, because from a certain point it doesn’t matter if you’re going 150 or 200 kph, since that road barrier is still approaching you at a lethal speed, so you should probably just brake. I LOVE the way the driving turned out, and I sometimes sit for too long just driving around, so I can’t wait to get this game back to you guyz. Peace."}, {"post_id": 72697, "ts": "2026-09-23T15:05:15Z", "hours": 2.4817, "text": "The map is doneeeeeeee!!!! It’s as varied as I could make it, but you can see the different regions, and I like that. Besides that I’ve made the first race layout, and the AI just works (wowowowwow!!!!). Another cool thing I’ve added is wind, as a sound, when you go really really fast. On high speed, as I said in a previous devlog, a tunnel vision effect forms. Now, the sounds will deafen as if the ears are getting plugged, the only thing you hear clearly being the sound of the wind passing by your car. It has a really cool implementation, using a curve and some inverse lerp to sample, this way the effect is not linear and at low speed no big changes happen. Anyway, down here i’ll add some screenshots with the map, love to hear your feedback!"}, {"post_id": 70530, "ts": "2026-09-19T10:10:04Z", "hours": 2.7044, "text": "I’ve been working on the dry-ish mountain region. I’ve also added grass to the map, as you can see. For the moment I have some lighting issues in the mountain region because of the rock models, and some settings, so the dry grass there is black, but other than that it looks great and it really helps fill the map with life. Other than map work, I took some time to work on the speed feeling. In the second and third photo is how the game looks at a speed of >120km/h. The edges get deformed, pulled back, and a vignette help sell the tunnel vision illusion. Besides that, its screen shake and FOV work. Between the third and last picture you can clearly see the difference between the two states."}, {"post_id": 69662, "ts": "2026-09-17T15:00:25Z", "hours": 1.1333, "text": "I’ve put in another hour on the map. I’ve decided to split the map in multiple regions for visual variety. There is the dense forest in the first photo, followed by a low vegetation, high altitude mountain region (began working, second and third photo). Planned is also a plains-like region, a lake and i’ll see if I can fit a small town somewhere. The roads are curved and never go straight for too long, and compared to the city map, some of the chicanes here make sense. I am still thinking about how I could still have the night city here in the next demo. Maybe i’ll restore the map itself, or i’m thinking of just adding a docks area for free driving."}, {"post_id": 69151, "ts": "2026-09-16T14:16:13Z", "hours": 1.1, "text": "I’ve been messing around with assets, lighting and visual effects. I kinda like this a bit more than the city night. So for the next demo, this will be the theme. I’ve also deleted the city scene, since it was just bad in terms of performance and other stuff. Basically, my hope is that, using a forest, will help me conceal a lot more, and repetition of trees and other assets wont be as visible as in a city, thus i’ll be able to finish it faster without losing visual fidelity. Also all the assets have LOD’s for optimization!"}, {"post_id": 68725, "ts": "2026-09-15T17:01:11Z", "hours": 1.6053, "text": "So, after all the positive feedback I couldn’t just leave the project to rot. Soo, in my free time I will try to work some more on this game. So I made a little list with what to add: I will be leaving the night city behind, it’s hard to optimize. Instead I will be making a forest/mountain scene, which I think will be cool to race in. I also decided to experiment some more with the visual effects available to me, so I added flares to light sources, for now a bit excessive, but oh well. I also upped the collision particles, more smoke, sparks and debris => looks better cuz it hides the bad crash physics (maybe ???) After I am done with the forest scene, and I will make a couple races, what will follow is another ship, and then I will work on traffic followed (if finished) by another ship."}, {"post_id": 65510, "ts": "2026-09-10T18:18:48Z", "hours": 3.2097, "text": "BUILD READY!!! This is the last devlog before the ship. Alltough the game isnt in the state I would like it to be, school started and i’m in my terminal grade, so it’s a tough year ahead, so I have to shelve this project. The race is playable, its difficult in a way but its also fun. I also added a second level which is just an open map with a field and hills for you to test the driving physics and also as a lower graphical alternative to the city race. In the final hours of development I added all the basic necessary menus and fixed some bugs that I catched while testing. See you in the ship!"}, {"post_id": 64889, "ts": "2026-09-09T16:28:26Z", "hours": 3.6897, "text": "I’ve reworked a few sections of the track and tweaked the racing AI. They can now almost always finish the race unless the player does some tomfoolery. Besides that I fixed a ugly visual bug where the terrain would poke trough the road when the camera was closed to the ground. Next, I remade the speedometer, RPM indicator and Gear indicator as you can see in the screenshots. The final thing that I added is a detection of “large” crashes, alltough is inconsistent, I dont currently have ideas how to fix it right now. For now when it detects a crash it enables slowmotion for a fraction of a second just for some oomph. All that remains for me to do is UI: -Race start countdown -Race finish info -Pause Menu -Main menu And a Game Over screen for when you crash. After these additions I will ship the game, as school started and I will have to shelve it, and I dont want to miss out on the sweet stardust it can offer!"}, {"post_id": 63721, "ts": "2026-09-07T17:33:37Z", "hours": 2.8544, "text": "Soo, I made the car more believable. It has working brake lights (WOOW), and new engine sounds that make it sound more powerful, but also added something extra spice, like exhaust backfire, that is programically made, with a multitude of firecracker sounds that I then processed. Besides that I also added a turbo blow off sound. They use the simulated rpm to decide their pitch and intensity, while also considering the throttle difference and position. Last thing (visible in the last seconds of the last video), I improved the crash physics with detachable parts and deformable chassis."}, {"post_id": 62131, "ts": "2026-09-05T11:51:23Z", "hours": 2.7356, "text": "The map is done! I added some bariers with a simple shader, but I might change them soon, as I dont like the way they look. I also added a new car for the race. I’ve also done some optimzing, enabled mesh batching, and after i’m 100% done with the map I will also bake the lighting for even better performance. I’ve decided to leave out traffic for now, as its’ pretty difficult to implement and I don’t have the time, since school is starting. As a small to do list for the ship: -Main menu with settings -Start sequence -Race Timer -Ending Cutscene -Model credit list -Sounds -Maybe some music"}, {"post_id": 55154, "ts": "2026-08-26T17:03:03Z", "hours": 3.3333, "text": "I have been working on the map ever since the last devlog. There isn’t much to say as there is to show. The scene has gotten laggy with lag spikes that seem random, so I will have to investigate and see how to optimize the game."}, {"post_id": 53725, "ts": "2026-08-24T12:09:21Z", "hours": 3.5356, "text": "Alright, i’ve been busy collecting assets and making materials and collections in order to start work on the map, which I did, I started with the dock area, since I dont yet have many house models, and well, I think it’s looking pretty cool, ngl. Next up I’ll go around the track in order to detail the section most. I am using the darkness and distance as a tool to be lazy, but also optimize. No point in detailing a part the player wont see. Also in my toolset is the fact the player will be moving fast and concentrating on the road, so it won’t be necessary for me to detail every inch of the map, instead focusing on intersections and areas the player will be slow enough to notice such details."}, {"post_id": 52464, "ts": "2026-08-22T16:17:32Z", "hours": 2.1669, "text": "The really fun part has begun! Im stylizing the game. Yeah, I decided to skip traffic for now and instead get busy making my environment. First I started by making a cool night sky and lighting, i turned on some settings, and I am pretty afraid that this game wont run decent at all when Im done, but ill do optimizing later, im sure it will be fine. Im still in search of models, as modelling everything by myself is out of the scope of this little project. But it’s gonna be pretty cool looking, i believe."}, {"post_id": 51776, "ts": "2026-08-21T16:47:51Z", "hours": 1.4, "text": "Ok, i’ve worked around a bit, and decided that for the first ship I want to release ONE very good feeling race. So I wont complicate myself with tuning and other systems, it will be one car, one race. So the atmosphere will be very important. I already have the layout of the race done, it’s supposed to go trough the docks > coast > downtown > highway and then the race ends. Also I believe making this small but very polished game will lend me more experience than something that will be overly complex, as many of my game projects end up. I will start with the terrain an polishing the track to make it more interesting in terms of driving and then i’ll get started on the terrain and dock area"}, {"post_id": 51639, "ts": "2026-08-21T12:50:14Z", "hours": 5.0786, "text": "The racing AI is done. I also made a small race manager which takes the cars, aligns them in a grid and then starts a countdown. It also keeps trak of the position and lap-times, but there is no UI for that yet. I also started working on the Map for the demo, i’m still debating how big the demo will be, but probably it’ll be a few races. After I have a small map layout, i’ll get started on the traffic AI, and move on from there. Im still trying to get the hang of this road tool I am using, and also getting the road dimensions right, but we’ll see."}, {"post_id": 49190, "ts": "2026-08-17T20:37:34Z", "hours": 3.1403, "text": "I’m very happy with the racing AI, while it’s not perfect and cannot avoid everything, like a wall in the middle of the road, I dont think that will be the case like ever. It can avoid other cars, either static or not and it uses a basic prediction to determine if it’s on a collision course with another car and act accordingly. Also, for the path, as you could see from the beggining of the video, the path was already backed based on the road. The car then only decides when to brake and steer based on that path. Next up i’ll make a demo race with multiple racers and position marking and stuff and then get started on the map."}, {"post_id": 47417, "ts": "2026-08-15T10:44:33Z", "hours": 5.6383, "text": "Alrighty, I decided to actually use my brain and came to the conclusion to instead bake the racing paths, instead of just having them create one at runtime. I made a small unity tool, I just place the checkpoints, click bake and a racing spline gets generated. If you look real close, you can see that the line follows an outside-inside-outside path for steering. Now that I have this, I will work on the racer Ai itself. First I will make it follow the track with optimal speed and then teach it to avoid obstacles, other cars and then even overtake."}, {"post_id": 45697, "ts": "2026-08-12T11:00:48Z", "hours": 3.2739, "text": "Okk, I feel like i’m getting close. As you can see, the car now tries to build a racing line, this is all in real time. While its still not perfect, I feel like I am getting close. There are still some bugs related to the pathing on the road that I will have to fix, but overall its very good. The system works by identifying an apex. The geometrical apex is considered in this case the point which has the biggest angle difference compared to its neighbours. Now, after it identifies the apex, it grabs all points leading to the apex, and shifts them to the outside, before starting to shift them to the inside towards the apex, all using a sine wave based lerp in order to get a nice arc. While this system is good, I feel like the driver script that is responsible with making the car follow the points is kind of goofed, so i’ll look into that."}, {"post_id": 45184, "ts": "2026-08-11T14:37:35Z", "hours": 6.5986, "text": "Racing ai, thats all I’ve been doing. It works fine-ish, i feel like Im close but it still overshoots, but I have some ideas on how to fix it."}, {"post_id": 3583, "ts": "2026-06-06T16:13:53Z", "hours": 4.5958, "text": "I have been working on making racing ai for the game. As a small intro, i have worked on this project before, and what I got is a working car controller, and dialed in physics to something I like how it feels. The ai represented a difficult problem. If I want this to be open world, and for there to be police chases, I needed the NPC car to be able to go offroad, so basically, of a set path. There would be the option to make a hand tailored map and even for the offroad sections to be counted as roads, but that would be hard for one developer to do and test, so I opted for this. When the car is not on a road network, it fallbacks to the built in navmesh system in unity. It then uses it to calculate a path as a list of point and then drives between them. On the road, we just need to sample points from the spline of the road and then drive between them. The hard part was this driving part :D While it might seem simple, just point the car to the next point, and then have it move forwards, there is much more nuance to this. First, the NPC car should behave just like the player car, it should have the same turn angle, and thus I must now convert a simple direction into a steering angle. Another difficult part is when racing. I can’t just have it accelerate always, the car must brake when a sharp corner is coming up, and for really tight one, maybe even drift. So how do you do that? Well, i dont know yet, this past 4 hours I have been working on the same script and same section trying to figure that out. I really hope that next devlog I can come with a solution, but i cant promise anything. My plan is to calculate the curve of the upcoming curve, and then somehow spit out a good speed for that, but there are a lot of factors to account for, like the grip of the car and actual speed, distance to corner etc."}]...
|
Title: Car Game by @Mihai | Stardance
Devlogs:
I Title: Car Game by @Mihai | Stardance
Devlogs:
I have been working on making racing ai for the game. As a small intro, i have worked on this project before, and what I got is a working car controller, and dialed in physics to something I like how it feels. The ai represented a difficult problem. If I want this to be open world, and for there to be police chases, I needed the NPC car to be able to go offroad, so basically, of a set path. There would be the option to make a hand tailored map and even for the offroad sections to be counted as roads, but that would be hard for one developer to do and test, so I opted for this. When the car is not on a road network, it fallbacks to the built in navmesh system in unity. It then uses it to calculate a path as a list of point and then drives between them. On the road, we just need to sample points from the spline of the road and then drive between them. The hard part was this driving part :D While it might seem simple, just point the car to the next point, and then have it move forwards, there is much more nuance to this. First, the NPC car should behave just like the player car, it should have the same turn angle, and thus I must now convert a simple direction into a steering angle. Another difficult part is when racing. I can’t just have it accelerate always, the car must brake when a sharp corner is coming up, and for really tight one, maybe even drift. So how do you do that? Well, i dont know yet, this past 4 hours I have been working on the same script and same section trying to figure that out. I really hope that next devlog I can come with a solution, but i cant promise anything. My plan is to calculate the curve of the upcoming curve, and then somehow spit out a good speed for that, but there are a lot of factors to account for, like the grip of the car and actual speed, distance to corner etc.
Racing ai, thats all I’ve been doing. It works fine-ish, i feel like Im close but it still overshoots, but I have some ideas on how to fix it.
Okk, I feel like i’m getting close. As you can see, the car now tries to build a racing line, this is all in real time. While its still not perfect, I feel like I am getting close. There are still some bugs related to the pathing on the road that I will have to fix, but overall its very good. The system works by identifying an apex. The geometrical apex is considered in this case the point which has the biggest angle difference compared to its neighbours. Now, after it identifies the apex, it grabs all points leading to the apex, and shifts them to the outside, before starting to shift them to the inside towards the apex, all using a sine wave based lerp in order to get a nice arc. While this system is good, I feel like the driver script that is responsible with making the car follow the points is kind of goofed, so i’ll look into that.
Alrighty, I decided to actually use my brain and came to the conclusion to instead bake the racing paths, instead of just having them create one at runtime. I made a small unity tool, I just place the checkpoints, click bake and a racing spline gets generated. If you look real close, you can see that the line follows an outside-inside-outside path for steering. Now that I have this, I will work on the racer Ai itself. First I will make it follow the track with optimal speed and then teach it to avoid obstacles, other cars and then even overtake.
I’m very happy with the racing AI, while it’s not perfect and cannot avoid everything, like a wall in the middle of the road, I dont think that will be the case like ever. It can avoid other cars, either static or not and it uses a basic prediction to determine if it’s on a collision course with another car and act accordingly. Also, for the path, as you could see from the beggining of the video, the path was already backed based on the road. The car then only decides when to brake and steer based on that path. Next up i’ll make a demo race with multiple racers and position marking and stuff and then get started on the map.
The racing AI is done. I also made a small race manager which takes the cars, aligns them in a grid and then starts a countdown. It also keeps trak of the position and lap-times, but there is no UI for that yet. I also started working on the Map for the demo, i’m still debating how big the demo will be, but probably it’ll be a few races. After I have a small map layout, i’ll get started on the traffic AI, and move on from there. Im still trying to get the hang of this road tool I am using, and also getting the road dimensions right, but we’ll see.
Ok, i’ve worked around a bit, and decided that for the first ship I want to release ONE very good feeling race. So I wont complicate myself with tuning and other systems, it will be one car, one race. So the atmosphere will be very important. I already have the layout of the race done, it’s supposed to go trough the docks > coast > downtown > highway and then the race ends. Also I believe making this small but very polished game will lend me more experience than something that will be overly complex, as many of my game projects end up. I will start with the terrain an polishing the track to make it more interesting in terms of driving and then i’ll get started on the terrain and dock area
The really fun part has begun! Im stylizing the game. Yeah, I decided to skip traffic for now and instead get busy making my environment. First I started by making a cool night sky and lighting, i turned on some settings, and I am pretty afraid that this game wont run decent at all when Im done, but ill do optimizing later, im sure it will be fine. Im still in search of models, as modelling everything by myself is out of the scope of this little project. But it’s gonna be pretty cool looking, i believe.
Alright, i’ve been busy collecting assets and making materials and collections in order to start work on the map, which I did, I started with the dock area, since I dont yet have many house models, and well, I think it’s looking pretty cool, ngl. Next up I’ll go around the track in order to detail the section most. I am using the darkness and distance as a tool to be lazy, but also optimize. No point in detailing a part the player wont see. Also in my toolset is the fact the player will be moving fast and concentrating on the road, so it won’t be necessary for me to detail every inch of the map, instead focusing on intersections and areas the player will be slow enough to notice such details.
I have been working on the map ever since the last devlog. There isn’t much to say as there is to show. The scene has gotten laggy with lag spikes that seem random, so I will have to investigate and see how to optimize the game.
The map is done! I added some bariers with a simple shader, but I might change them soon, as I dont like the way they look. I also added a new car for the race. I’ve also done some optimzing, enabled mesh batching, and after i’m 100% done with the map I will also bake the lighting for even better performance. I’ve decided to leave out traffic for now, as its’ pretty difficult to implement and I don’t have the time, since school is starting. As a small to do list for the ship: -Main menu with settings -Start sequence -Race Timer -Ending Cutscene -Model credit list -Sounds -Maybe some music
Soo, I made the car more believable. It has working brake lights (WOOW), and new engine sounds that make it sound more powerful, but also added something extra spice, like exhaust backfire, that is programically made, with a multitude of firecracker sounds that I then processed. Besides that I also added a turbo blow off sound. They use the simulated rpm to decide their pitch and intensity, while also considering the throttle difference and position. Last thing (visible in the last seconds of the last video), I improved the crash physics with detachable parts and deformable chassis.
I’ve reworked a few sections of the track and tweaked the racing AI. They can now almost always finish the race unless the player does some tomfoolery. Besides that I fixed a ugly visual bug where the terrain would poke trough the road when the camera was closed to the ground. Next, I remade the speedometer, RPM indicator and Gear indicator as you can see in the screenshots. The final thing that I added is a detection of “large” crashes, alltough is inconsistent, I dont currently have ideas how to fix it right now. For now when it detects a crash it enables slowmotion for a fraction of a second just for some oomph. All that remains for me to do is UI: -Race start countdown -Race finish info -Pause Menu -Main menu And a Game Over screen for when you crash. After these additions I will ship the game, as school started and I will have to shelve it, and I dont want to miss out on the sweet stardust it can offer!
BUILD READY!!! This is the last devlog before the ship. Alltough the game isnt in the state I would like it to be, school started and i’m in my terminal grade, so it’s a tough year ahead, so I have to shelve this project. The race is playable, its difficult in a way but its also fun. I also added a second level which is just an open map with a field and hills for you to test the driving physics and also as a lower graphical alternative to the city race. In the final hours of development I added all the basic necessary menus and fixed some bugs that I catched while testing. See you in the ship!
So, after all the positive feedback I couldn’t just leave the project to rot. Soo, in my free time I will try to work some more on this game. So I made a little list with what to add: I will be leaving the night city behind, it’s hard to optimize. Instead I will be making a forest/mountain scene, which I think will be cool to race in. I also decided to experiment some more with the visual effects available to me, so I added flares to light sources, for now a bit excessive, but oh well. I also upped the collision particles, more smoke, sparks and debris => looks better cuz it hides the bad crash physics (maybe ???) After I am done with the forest scene, and I will make a couple races, what will follow is another ship, and then I will work on traffic followed (if finished) by another ship.
I’ve been messing around with assets, lighting and visual effects. I kinda like this a bit more than the city night. So for the next demo, this will be the theme. I’ve also deleted the city scene, since it was just bad in terms of performance and other stuff. Basically, my hope is that, using a forest, will help me conceal a lot more, and repetition of trees and other assets wont be as visible as in a city, thus i’ll be able to finish it faster without losing visual fidelity. Also all the assets have LOD’s for optimization!
I’ve put in another hour on the map. I’ve decided to split the map in multiple regions for visual variety. There is the dense forest in the first photo, followed by a low vegetation, high altitude mountain region (began working, second and third photo). Planned is also a plains-like region, a lake and i’ll see if I can fit a small town somewhere. The roads are curved and never go straight for too long, and compared to the city map, some of the chicanes here make sense. I am still thinking about how I could still have the night city here in the next demo. Maybe i’ll restore the map itself, or i’m thinking of just adding a docks area for free driving.
I’ve been working on the dry-ish mountain region. I’ve also added grass to the map, as you can see. For the moment I have some lighting issues in the mountain region because of the rock models, and some settings, so the dry grass there is black, but other than that it looks great and it really helps fill the map with life. Other than map work, I took some time to work on the speed feeling. In the second and third photo is how the game looks at a speed of >120km/h. The edges get deformed, pulled back, and a vignette help sell the tunnel vision illusion. Besides that, its screen shake and FOV work. Between the third and last picture you can clearly see the difference between the two states.
The map is doneeeeeeee!!!! It’s as varied as I could make it, but you can see the different regions, and I like that. Besides that I’ve made the first race layout, and the AI just works (wowowowwow!!!!). Another cool thing I’ve added is wind, as a sound, when you go really really fast. On high speed, as I said in a previous devlog, a tunnel vision effect forms. Now, the sounds will deafen as if the ears are getting plugged, the only thing you hear clearly being the sound of the wind passing by your car. It has a really cool implementation, using a curve and some inverse lerp to sample, this way the effect is not linear and at low speed no big changes happen. Anyway, down here i’ll add some screenshots with the map, love to hear your feedback!
Speed. Speed is very important when it comes to racing, right? Well yes, but in a video game, where you sit down on a chair, static, in a room, the sensation of speed is even more important. That’s why these few hours i’ve been working on making the game feel fast . Changes have been made to the way the camera moves behind the car and in how it tracks it. Besides that, there has been a little sound work. At high speeds sounds become muffled and a wind noise can be heard. There is also the post processing i’ve been talking about in the other devlogs. Besides that, i’ve started reworking the UI, and the first element was the gauge cluster. I’ve decided to have the text physically live in the world, it reacts to the car, lagging behind or moving from side to side slightly. It also gets blurred at high speeds, because from a certain point it doesn’t matter if you’re going 150 or 200 kph, since that road barrier is still approaching you at a lethal speed, so you should probably just brake. I LOVE the way the driving turned out, and I sometimes sit for too long just driving around, so I can’t wait to get this game back to you guyz. Peace.
I’ve been working on the HUD for the game. Really simple, but it was missing. It features a lap counter, lap timer, best lap, lap delta, position. The speed/rpm/gear cluster is the same as before.
I’ve been working on a new surface system! Now I can add surfaces with different sounds and effects when sliding. I also added “rolling sounds” that play when just driving over at adequate speed. I’ve added a dirt surface, for obvious reasons. It also has something called rolling resistance. You will observe the fact that when driving over dirt with one side of the car still on the road, the car will steer towards the dirt, because of the higher resistance, and also will have as a consequence a lower top speed, also acting as a penalty for driving offroad. Besides that I also added ambient sounds, like a wind and leaves thing so that you can tell when standing still that you are in a forest :))) Last thing is I made the crashing better, no longer will any impact “crash” you but the sounds are also better, with separate sounds for high and low impact speeds. Basically a lot of polish for the game, the driving feels better, I feel like, because of it, and it also incentivises you to stay on the road, alltough the trees already kinda did that.
So, there have been a few changes. There are now drivers, the cars are no longer driven by ghosts. There are procedural animations for steering using IK (it’s really not that complicated. They also look ahead and where they drive (INCREDIBLE!!!!). Besides that they also react to crashes, eating the steering wheel, cus there ain’t no airbag (poor lads). I’ve reworked the crash system, not visually but technically. You are now allowed to have 3 small crashes, they still trigger the slow motion, but they don’t end your race. Crash many more times than that, your race ends. This way you are still penalised for bad driving. There is still a one hit “lethal impact”, but that basically means going top speed into a tree to trigger. Another small addition are some more sounds, to make the driving feel even better: -Gear shifter sounds -Handbrake pull/release sounds Just a small bit of polish. Besides that there were small bug fixes, nothing notable.
I made a line that shows you where to go, so you don’t need to guess anymore. It uses the baked racing path the AI uses, and passes the points to a line renderer. It also scales with speed, higher speed => line extends further, in order to help you see upcoming corners easier.
This has been a big push to finish the new version of the game. Together with a linux build the new version brings a new map, new UI, racing line, settings menu, AI-improvements, optimization, driver models, 3 new races, a loading screen, and a start race “screen”. Specific for this devlog, the settings menu, with three graphical presets, a loading screen and a start race screen. Two new races. Small map additions (some houses and parked cars, and physical objects incld cones and barriers that you can hit). Bug fixes across the board. A big challenge for this was the data transition between scenes and settings saving. And I used player prefs to save settings, and some simple static objects to transfer info between scenes. Overall what I have here is a nice base to start building a campaign.
Ships:
This is a small NFS inspired car game demo. It’s a project to test my technical abilities in Unity. It features custom made vehicle physics based on Unity’s built in wheel colliders and a custom easy to use solution for racing ai. Besides that, it is (in some small predetermined angles) a fairly good looking game, with a little bit of style. The game uses Unity’s HDRP render pipeline for its graphics, together with some screen space reflections and reflective materials, the game gets to look fairly good, especialy in the low light enviorment it’s set in. The car physics are in a sim-cade style. The car can still do crazy steering at high speeds, and its very easy to rotate it, but understeer and oversteer can still occur, besides that, the car is not limited in any way when it comes to external forces that can imbalance it, hit a curb at a high speed and the car can go flying. The biggest challenge was the racing AI. First of all it was hard to make a car know how much to steer to go from point A to point B. After that, it was fairly simple right? Just sample some point from the road spline and follow them. But curves exist, and for that you need to calculate the right speed to go trough it so that it wont crash. Then, the car was driving very inefficiently, following the middle of the road, so what followed was a long quest of making a racing path generator, in which I succeeded (with the help of AI). Then came obstacle avoidance, making the car not seem just like a train following a predefined track. If necessary the car will go off track to avoid obstacles and it’s aware of cars around it and will try to keep the distance. There is also a system that predicts collisions with other cars (for example if a car in front is cutting in front of it, it can predict that will happen and brake). This is all theory but it still works in game, sometimes. Another hard part was building a city. I had no prior experience in making games that aren’t made out of just basic cubes and shapes, so it was difficult to find assets and other stuff to populate the city. Then also came the point of how much detail should I even add and many other factors that in the end made me make the hard decision of making just one race in order to not break the illussion of a semi believable city. I’m very proud of how it came out, alltough I have so many ideas about how I can make it grander and better, but i currently don’t have the time to do so. I hope to come back in the future and actually make a cool metal-rock and boost infused racing game like NFS Most Wanted, but it has to wait. For those who want to play test the game. Currently there is only a windows version for the game, and it can also be pretty demanding in terms of GPU (Basically, I think it needs a dedicated GPU, I have a rtx 3050 4gb laptop GPU and it runs fine). There is a simpler driving demo scene which is just white terrain with some roads, that maybe will fair better with lower end hardware.
So, this is the new version of car gaim!!! There is a new map, much more optimized, together with settings and a linux build to improve accessibility. There are 3 races together with a free drive mode on the main map. Change log: -New map -3 new races -Settings -New UI/Hud -Racing line -Driver models and reactions -Driving Surfaces -New sounds (shifting, high speed, crash etc.) -Speed effects -Improved car model and textures -Small AI improvements -Loading Screen -New Crash system: three crashes or a big crash and you’re out of the race -Optimization -Partial controller support -Small destructable objects on the map The biggest challenge was finding time to still work on the game and also bring significant improvement. The time restrain allowed me to focus on the necessary and I really feel the game is in a better place now. Technically this update is much smaller than the first release (it’s obvious) but interconnecting all the systems in one product was a real hassle, especially with the UI, as Unity UI is a bit janky. Notes for testers: I found a region with very bad fps spikes, for which I haven’t found the cause for. Thankfully its only a small part of both races, and a small part on the map overall. There is partial controller support, menus haven’t been tested properly, but driving works. There is a Linux build, but it wasn’t tested, any notes about that are welcome. Download available on itch.io...
|
1793000933.982767
|
1793087333.982767
|
|
939
|
LUNAR-HAL by @INiNiDS | Stardance
|
INiNiDS
|
1
|
78.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T18:18:07Z", "hours": 78.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!", "repo": "https://github.com/ininids/lunar-hal", "demo": "https://lnhal.ininids.in.rs"}]...
|
[{"post_id": 75310, "ts": "202 [{"post_id": 75310, "ts": "2026-09-29T18:16:50Z", "hours": 5.1756, "text": "Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!"}, {"post_id": 68044, "ts": "2026-09-14T12:49:45Z", "hours": 12.1378, "text": "DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting."}, {"post_id": 45625, "ts": "2026-08-12T07:29:27Z", "hours": 3.5756, "text": "* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible."}, {"post_id": 41159, "ts": "2026-08-05T06:03:25Z", "hours": 3.4289, "text": "DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it."}, {"post_id": 31372, "ts": "2026-07-19T18:15:40Z", "hours": 8.1406, "text": "🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt."}, {"post_id": 12966, "ts": "2026-06-21T06:54:53Z", "hours": 18.7053, "text": "DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge."}, {"post_id": 7982, "ts": "2026-06-13T09:54:00Z", "hours": 10.8433, "text": "🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀"}, {"post_id": 4775, "ts": "2026-06-08T08:22:17Z", "hours": 9.8683, "text": "🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥"}, {"post_id": 1972, "ts": "2026-06-04T07:13:17Z", "hours": 2.9592, "text": "🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨"}, {"post_id": 717, "ts": "2026-06-02T09:35:55Z", "hours": 3.0953, "text": "🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨"}]...
|
Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs: Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs:
🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨
🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨
🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥
🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀
DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge.
🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt.
DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it.
* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible.
DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting.
Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!
Ships:
Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!...
|
1793004967.5732112
|
1793091367.5732112
|
|
3633
|
alpenglow by @undivisible | Stardance
|
undivisible
|
0
|
78.0
|
0
|
[]
|
[{"post_id": 22920, "ts": "202 [{"post_id": 22920, "ts": "2026-07-05T15:48:52Z", "hours": 44.9656, "text": "https://alpenglow.tsc.hk/ run alpenglow in your browser"}, {"post_id": 12337, "ts": "2026-06-20T03:49:43Z", "hours": 33.0294, "text": "benchmarks of alpenglow versus other linux distributions we clear (i only just added this project to stardance but will post more devlogs as i go)"}]...
|
Title: alpenglow by @undivisible | Stardance
Devl Title: alpenglow by @undivisible | Stardance
Devlogs:
benchmarks of alpenglow versus other linux distributions we clear (i only just added this project to stardance but will post more devlogs as i go)
https://alpenglow.tsc.hk/ run alpenglow in your browser...
|
1792597642.467533
|
1793202442.467533
|
|
48213
|
Level Up by @Lalith | Stardance
|
Lalith
|
4
|
78.0
|
654
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T05:23:19Z", "hours": 9.0, "multiplier": 12.16, "payout": 112, "blessing": "neutral", "text": "Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 2, "ts": "2026-09-30T12:09:06Z", "hours": 11.0, "multiplier": 9.76, "payout": 103, "blessing": "neutral", "text": "This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 3, "ts": "2026-09-20T07:44:58Z", "hours": 18.0, "multiplier": 8.6, "payout": 153, "blessing": "neutral", "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 4, "ts": "2026-09-11T17:51:26Z", "hours": 40.0, "multiplier": 16.67, "payout": 286, "blessing": "neutral", "text": "I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}]...
|
[{"post_id": 81165, "ts": "202 [{"post_id": 81165, "ts": "2026-10-20T05:15:28Z", "hours": 9.1767, "text": "Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!"}, {"post_id": 75526, "ts": "2026-09-30T11:33:39Z", "hours": 8.6486, "text": "I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!"}, {"post_id": 72287, "ts": "2026-09-22T16:18:34Z", "hours": 1.9244, "text": "I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!"}, {"post_id": 71049, "ts": "2026-09-20T07:44:31Z", "hours": 0.8897, "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages"}, {"post_id": 70978, "ts": "2026-09-20T04:38:42Z", "hours": 5.0881, "text": "Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile."}, {"post_id": 70451, "ts": "2026-09-19T07:02:36Z", "hours": 8.2389, "text": "I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp"}, {"post_id": 68897, "ts": "2026-09-16T00:04:43Z", "hours": 1.1653, "text": "Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free"}, {"post_id": 67964, "ts": "2026-09-14T09:11:00Z", "hours": 2.6825, "text": "Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!"}, {"post_id": 66090, "ts": "2026-09-11T17:47:02Z", "hours": 13.0997, "text": "I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages"}, {"post_id": 50297, "ts": "2026-08-19T13:37:53Z", "hours": 12.4239, "text": "So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!"}, {"post_id": 47521, "ts": "2026-08-15T14:15:55Z", "hours": 0.4181, "text": "Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please."}, {"post_id": 47501, "ts": "2026-08-15T13:29:22Z", "hours": 13.9158, "text": "This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!"}]...
|
Title: Level Up by @Lalith | Stardance
Devlogs:
T Title: Level Up by @Lalith | Stardance
Devlogs:
This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!
Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please.
So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!
I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!
Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free
I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp
Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile.
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!
I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!
Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!
Ships:
I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀
Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/...
|
1793004590.0500307
|
1793090990.0500307
|
|
51814
|
Pulse Website by @jinjin | Stardance
|
jinjin
|
1
|
78.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:52:03Z", "hours": 78.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made I built Pulse Website, a clean, lightweight, and customizable start page designed to replace your browser’s default new tab page. It features an instant-load layout, custom menu navigation, aesthetic UI designs, dynamic weather integration, and NASA API data fetching. What Was Challenging Debugging & Refactoring: Spending hours hunting down edge-case bugs while refining the UI layout and responsiveness. API Integration: Fetching and processing data smoothly from external sources (like NASA APIs and weather tools) while keeping the page lightweight and fast. UI Design: Balancing custom aesthetic designs with a minimal, clutter-free user experience. What I’m Proud Of Logging 78 total hours across 11 devlogs to build a full custom solution from scratch. Successfully integrating real-time weather and NASA API features. Creating a fast, zero-bloat start page that loads instantly on every new tab.", "repo": "https://github.com/jinjintt89-cmyk/New-pulse", "demo": "https://custom-new-tab-page-eight.vercel.app/"}]...
|
[{"post_id": 63508, "ts": "202 [{"post_id": 63508, "ts": "2026-09-07T12:27:54Z", "hours": 3.1069, "text": "Today I spent some time going through the code and making it feel more human-written and easier to understand. I cleaned up parts of the code that were messy or overly complicated, renamed a few things to make their purpose clearer, and removed some unnecessary code. I also made a few small improvements to how different parts of the website work together. It wasn’t a huge feature, but cleaning up the code now should make it much easier to add more features later without everything becoming a mess."}, {"post_id": 57213, "ts": "2026-08-29T10:01:14Z", "hours": 14.2, "text": "Today I worked on adding more features to Pulse Website and making the start page feel more useful. I added and refined several smaller features around the main interface, making sure everything worked together without making the page feel cluttered. I also spent time testing the new functionality and fixing small issues that appeared while using it. The goal is to keep building Pulse into a start page that actually feels worth using every time I open a new tab."}, {"post_id": 55285, "ts": "2026-08-27T00:41:43Z", "hours": 8.0667, "text": "Today I focused on improving the overall layout of Pulse Website. I adjusted the spacing, positioning, and sizing of different sections so everything feels more balanced. I also cleaned up a few areas that felt too crowded and made the important information easier to find at a glance. These changes are mostly visual, but they make a big difference when using the website. I want Pulse to feel clean and simple while still having plenty of useful features."}, {"post_id": 55108, "ts": "2026-08-26T15:53:16Z", "hours": 7.435, "text": "Today I worked on improving the navigation around Pulse Website. I made the different sections easier to access and cleaned up some of the interactions between the menu and the main page. I also tested the navigation in different situations to make sure it felt consistent instead of having buttons or sections behave differently. The changes make Pulse feel more like a complete start page rather than just a collection of features. There is still more I want to add, but the overall experience is starting to come together."}, {"post_id": 54821, "ts": "2026-08-25T23:36:23Z", "hours": 11.6667, "text": "Today I spent some time improving the visual design of Pulse Website. I adjusted the styling of different components, cleaned up some inconsistent elements, and made the overall interface feel more polished. I also worked on making the layout look good without sacrificing the simplicity of the start page. A lot of the work was focused on small details that are easy to overlook, but together they make the website feel much more finished."}, {"post_id": 54318, "ts": "2026-08-25T08:26:08Z", "hours": 17.035, "text": "Today I worked on adding a calendar feature to Pulse Website. I wanted the calendar to be simple enough to use quickly while still fitting naturally into the rest of the start page. I worked on displaying the dates clearly, handling navigation between months, and making sure the calendar matched the overall design. I also fixed a few small issues I found while testing it. It’s another useful feature that makes Pulse more practical as an everyday new-tab page."}, {"post_id": 51548, "ts": "2026-08-21T09:48:48Z", "hours": 2.1333, "text": "Today I worked on adding weather information to Pulse Website. I connected the website to a weather API so the start page can display current weather information without needing to open another website. I worked on handling the API response and displaying the information in a way that fits naturally into the existing layout. I also spent some time testing different weather conditions and fixing small issues with loading and displaying the data. This makes Pulse feel much more useful as an everyday new-tab page."}, {"post_id": 51352, "ts": "2026-08-20T23:36:01Z", "hours": 11.2683, "text": "Today I added a timer feature to Pulse Website. I wanted the timer to be something I could quickly use without opening another app or website. I worked on the controls for starting, pausing, and resetting the timer, while also making sure the display was easy to read. I tested the timer several times and fixed a few small issues with the controls and countdown. It fits nicely alongside the other utilities on the start page and makes Pulse a little more useful for everyday tasks."}, {"post_id": 50922, "ts": "2026-08-20T12:05:29Z", "hours": 0.9425, "text": "Debuging code"}, {"post_id": 50890, "ts": "2026-08-20T11:03:08Z", "hours": 1.1333, "text": "Today I started working on one of the bigger features for Pulse Website: NASA data. I integrated NASA’s public API and began experimenting with pulling useful data directly into the start page. The main goal was to make the website feel more interesting every time it is opened, rather than showing the exact same information every day. Getting the API responses working correctly took some debugging, especially around loading states and handling the data returned by NASA. I also worked on fitting the new information into the existing UI without making the page feel overcrowded. This is probably one of the coolest additions to Pulse so far, and I want to expand the NASA features even more."}, {"post_id": 50865, "ts": "2026-08-20T09:55:26Z", "hours": 0.8706, "text": "Writing the code - still not finished"}]...
|
Title: Pulse Website by @jinjin | Stardance
Devlo Title: Pulse Website by @jinjin | Stardance
Devlogs:
Writing the code - still not finished
Today I started working on one of the bigger features for Pulse Website: NASA data. I integrated NASA’s public API and began experimenting with pulling useful data directly into the start page. The main goal was to make the website feel more interesting every time it is opened, rather than showing the exact same information every day. Getting the API responses working correctly took some debugging, especially around loading states and handling the data returned by NASA. I also worked on fitting the new information into the existing UI without making the page feel overcrowded. This is probably one of the coolest additions to Pulse so far, and I want to expand the NASA features even more.
Debuging code
Today I added a timer feature to Pulse Website. I wanted the timer to be something I could quickly use without opening another app or website. I worked on the controls for starting, pausing, and resetting the timer, while also making sure the display was easy to read. I tested the timer several times and fixed a few small issues with the controls and countdown. It fits nicely alongside the other utilities on the start page and makes Pulse a little more useful for everyday tasks.
Today I worked on adding weather information to Pulse Website. I connected the website to a weather API so the start page can display current weather information without needing to open another website. I worked on handling the API response and displaying the information in a way that fits naturally into the existing layout. I also spent some time testing different weather conditions and fixing small issues with loading and displaying the data. This makes Pulse feel much more useful as an everyday new-tab page.
Today I worked on adding a calendar feature to Pulse Website. I wanted the calendar to be simple enough to use quickly while still fitting naturally into the rest of the start page. I worked on displaying the dates clearly, handling navigation between months, and making sure the calendar matched the overall design. I also fixed a few small issues I found while testing it. It’s another useful feature that makes Pulse more practical as an everyday new-tab page.
Today I spent some time improving the visual design of Pulse Website. I adjusted the styling of different components, cleaned up some inconsistent elements, and made the overall interface feel more polished. I also worked on making the layout look good without sacrificing the simplicity of the start page. A lot of the work was focused on small details that are easy to overlook, but together they make the website feel much more finished.
Today I worked on improving the navigation around Pulse Website. I made the different sections easier to access and cleaned up some of the interactions between the menu and the main page. I also tested the navigation in different situations to make sure it felt consistent instead of having buttons or sections behave differently. The changes make Pulse feel more like a complete start page rather than just a collection of features. There is still more I want to add, but the overall experience is starting to come together.
Today I focused on improving the overall layout of Pulse Website. I adjusted the spacing, positioning, and sizing of different sections so everything feels more balanced. I also cleaned up a few areas that felt too crowded and made the important information easier to find at a glance. These changes are mostly visual, but they make a big difference when using the website. I want Pulse to feel clean and simple while still having plenty of useful features.
Today I worked on adding more features to Pulse Website and making the start page feel more useful. I added and refined several smaller features around the main interface, making sure everything worked together without making the page feel cluttered. I also spent time testing the new functionality and fixing small issues that appeared while using it. The goal is to keep building Pulse into a start page that actually feels worth using every time I open a new tab.
Today I spent some time going through the code and making it feel more human-written and easier to understand. I cleaned up parts of the code that were messy or overly complicated, renamed a few things to make their purpose clearer, and removed some unnecessary code. I also made a few small improvements to how different parts of the website work together. It wasn’t a huge feature, but cleaning up the code now should make it much easier to add more features later without everything becoming a mess.
Ships:
What I Made I built Pulse Website, a clean, lightweight, and customizable start page designed to replace your browser’s default new tab page. It features an instant-load layout, custom menu navigation, aesthetic UI designs, dynamic weather integration, and NASA API data fetching. What Was Challenging Debugging & Refactoring: Spending hours hunting down edge-case bugs while refining the UI layout and responsiveness. API Integration: Fetching and processing data smoothly from external sources (like NASA APIs and weather tools) while keeping the page lightweight and fast. UI Design: Balancing custom aesthetic designs with a minimal, clutter-free user experience. What I’m Proud Of Logging 78 total hours across 11 devlogs to build a full custom solution from scratch. Successfully integrating real-time weather and NASA API features. Creating a fast, zero-bloat start page that loads instantly on every new tab....
|
1792875222.4840136
|
1793739222.4840136
|
|
28121
|
Chatbot RAG by @Hamna | Stardance
|
Hamna
|
2
|
77.71
|
1127
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T20:16:08Z", "hours": 37.0, "multiplier": 16.89, "payout": 615, "blessing": "neutral", "text": "Made a RAG chatbot that mimics my friends personality using Llama and Hugging Face. NOTE: I’m using zero GPU on HF so after 100 msgs it goes to sleeping mood , in that case the chatbot would reply a random thing like “system off” , “internet is down” or something like that , so don’t worry about that, come after 24Hr and she’ll talk normally FACT: Senpai used to say a lot “Haii haii” which is a japanese phrase for “yes” so don’t worry about that either, she’s just being friendly with ya Hope ya’ll love this version of chatbot", "repo": "https://github.com/lilithCode/Senpai-Chatbot", "demo": "https://senpai-chatbot.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-17T14:23:40Z", "hours": 36.0, "multiplier": 14.99, "payout": 512, "blessing": "neutral", "text": "I built a AI RAG chatbot that mimics my friends personality , trained on whatsapp chats so it actually talks like my friend instead of generic robot ai. fine tuned llama 3b with LoRA on kaggle’s free gpu, deployed it on hf spaces zeroGPU gradio for backend and next.js on vercel for frontend, plus added RAG so it can clean up messy texts and pull live info from the web when needed. it genuinely feels like talking to my friend, all built for free. to test it. just start chatting, first msg might take a sec to load (model’s waking up)", "repo": "https://github.com/lilithCode/Senpai-Chatbot", "demo": "https://senpai-chatbot.vercel.app/"}]...
|
[{"post_id": 78990, "ts": "202 [{"post_id": 78990, "ts": "2026-10-12T08:38:28Z", "hours": 4.7081, "text": "here"}, {"post_id": 61751, "ts": "2026-09-04T20:10:09Z", "hours": 0.5464, "text": "Guyss!! This is gonna be the last change I’ve made today, Senpai chatbot is live now and she’s talking like my friend (really couldn’t be more happy to see her talk to me again 🥹 )"}, {"post_id": 61709, "ts": "2026-09-04T19:04:49Z", "hours": 0.4631, "text": "Made some Minor UI changes on frontend nextjs"}, {"post_id": 53148, "ts": "2026-08-23T16:07:39Z", "hours": 9.6033, "text": "After testing the chatbot with around 50 beta users, I found several issues that weren’t obvious during development. Responses were too long, the personality became too generic when using RAG, Urdu and English were sometimes mixed incorrectly, and the mobile layout needed work. I shortened the responses, restricted web search to things like news and sports, improved the system prompt and input handling, redesigned the mobile UI, and added a message explaining the cold start delay"}, {"post_id": 51779, "ts": "2026-08-21T16:52:36Z", "hours": 8.5322, "text": "I added logging, I started finding problems that weren’t obvious from the frontend. Web searches were sometimes failing silently, too many messages were causing token overflows, and using both max_length and max_new_tokens was causing unexpected behavior. I fixed these issues by adding proper error handling, limiting the conversation context, and simplifying the token settings. I also built a small debug dashboard to track searches, response times, token usage, and errors (Ughh I’m really exhausted now)"}, {"post_id": 50775, "ts": "2026-08-20T04:39:03Z", "hours": 8.7972, "text": "I initially moved the deployment to Replicate to improve response speed. It worked and responses dropped from around 15–30 seconds to about 5–10 seconds but then it also introduced extra cost and complexity. In the end, I decided to stay with Hugging Face Spaces because the free setup is more suitable for this side project. Also improved the HF app.py file"}, {"post_id": 50127, "ts": "2026-08-19T06:54:46Z", "hours": 8.6286, "text": "I noticed that the model was giving very generic and robotic responses even though it worked much better during training. After debugging, I realized I was using a different system prompt during inference than the one I used while fine tuning. Once I switched back to the exact same prompt, the responses became much more consistent. Also fixed Hackclub key errors , now it’s working fine"}, {"post_id": 48921, "ts": "2026-08-17T14:15:13Z", "hours": 10.1547, "text": "wanted senpai to be more. Previous It was only talking with using fine tuned Llama model but if i’ll ask it something like what’s happening in the world, it won’t talk back like my friend cause it didn’t have that latest information of the world so i added RAG. used the hackclub api as a middleman llm that cleans up messy input and decides if a web search is needed ( like “what’s the fifa score rn” this will be flagged as a web search needed query) two bugs along the way: responses were so slow at first , turns out just zeroGPU cold starts, chills out after msg 1 model started sounding fake n robotic bc i overwrote it with a huge system prompt. fixed this by making the heavy prompt short so now gng it’s live, plz talk to her"}, {"post_id": 46190, "ts": "2026-08-13T07:44:42Z", "hours": 7.7883, "text": "I uploaded my model on Hugging Face with zero GPU (made a new hf space called amadeus, picked gradio as the sdk, zeroGPU as hardware) If someone else is thinking about starting in HF, just wanna tell the annoying part: cold starts. first message takes 20-40s while the model loads into memory. after that it’s quick like 3-8s then built an actual next.js frontend since raw gradio ui felt kinda mid, hooked it up through an api route, deployed on vercel with my env keys And it’s live"}, {"post_id": 45064, "ts": "2026-08-11T10:21:56Z", "hours": 11.2864, "text": "Trained the data ( This took soo much time fr) I used kaggle’s free gpu (t4, sometimes p100 if i got lucky) to fine tune llama 3b with LoRA through PEFT. quick explainer since people asked LoRA freezes the whole base model (32m params untouched) and only trains a tiny set of adapter params (420k). instead of retraining the entire model I put a extra layer of changed weights on top of the model which is way cheaper and faster than the traditional training tested it after training and it WORKED. The model is giving the same energy, same little phrases, actual personality of my friend which is kinda scary ngl notebook’s public if you wanna nerd out: https://www.kaggle.com/code/hamnamubarak/amadeus/edit"}, {"post_id": 33459, "ts": "2026-07-23T13:12:01Z", "hours": 6.3861, "text": "so i’m building senpai, an ai that actually talks like my friend, not some normal chatbot. so first thing first, I need data to learn from so here’s wht I did: exported a whole year of whatsapp chats with my friend (yes i read through all of it, and got his consent). wrote a python script on kaggle to clean it up and formatting it into proper training pairs not glamorous but this is like 30% of the actual work tbh, garbage data can cause strange and irrelevant replies Then I trained this on Kaggle with Llama model with LoRA adaptation Right now the replies aren’t so great, I’ll do some fine tuning later"}]...
|
Title: Chatbot RAG by @Hamna | Stardance
Devlogs: Title: Chatbot RAG by @Hamna | Stardance
Devlogs:
so i’m building senpai, an ai that actually talks like my friend, not some normal chatbot. so first thing first, I need data to learn from so here’s wht I did: exported a whole year of whatsapp chats with my friend (yes i read through all of it, and got his consent). wrote a python script on kaggle to clean it up and formatting it into proper training pairs not glamorous but this is like 30% of the actual work tbh, garbage data can cause strange and irrelevant replies Then I trained this on Kaggle with Llama model with LoRA adaptation Right now the replies aren’t so great, I’ll do some fine tuning later
Trained the data ( This took soo much time fr) I used kaggle’s free gpu (t4, sometimes p100 if i got lucky) to fine tune llama 3b with LoRA through PEFT. quick explainer since people asked LoRA freezes the whole base model (32m params untouched) and only trains a tiny set of adapter params (420k). instead of retraining the entire model I put a extra layer of changed weights on top of the model which is way cheaper and faster than the traditional training tested it after training and it WORKED. The model is giving the same energy, same little phrases, actual personality of my friend which is kinda scary ngl notebook’s public if you wanna nerd out: https://www.kaggle.com/code/hamnamubarak/amadeus/edit
I uploaded my model on Hugging Face with zero GPU (made a new hf space called amadeus, picked gradio as the sdk, zeroGPU as hardware) If someone else is thinking about starting in HF, just wanna tell the annoying part: cold starts. first message takes 20-40s while the model loads into memory. after that it’s quick like 3-8s then built an actual next.js frontend since raw gradio ui felt kinda mid, hooked it up through an api route, deployed on vercel with my env keys And it’s live
wanted senpai to be more. Previous It was only talking with using fine tuned Llama model but if i’ll ask it something like what’s happening in the world, it won’t talk back like my friend cause it didn’t have that latest information of the world so i added RAG. used the hackclub api as a middleman llm that cleans up messy input and decides if a web search is needed ( like “what’s the fifa score rn” this will be flagged as a web search needed query) two bugs along the way: responses were so slow at first , turns out just zeroGPU cold starts, chills out after msg 1 model started sounding fake n robotic bc i overwrote it with a huge system prompt. fixed this by making the heavy prompt short so now gng it’s live, plz talk to her
I noticed that the model was giving very generic and robotic responses even though it worked much better during training. After debugging, I realized I was using a different system prompt during inference than the one I used while fine tuning. Once I switched back to the exact same prompt, the responses became much more consistent. Also fixed Hackclub key errors , now it’s working fine
I initially moved the deployment to Replicate to improve response speed. It worked and responses dropped from around 15–30 seconds to about 5–10 seconds but then it also introduced extra cost and complexity. In the end, I decided to stay with Hugging Face Spaces because the free setup is more suitable for this side project. Also improved the HF app.py file
I added logging, I started finding problems that weren’t obvious from the frontend. Web searches were sometimes failing silently, too many messages were causing token overflows, and using both max_length and max_new_tokens was causing unexpected behavior. I fixed these issues by adding proper error handling, limiting the conversation context, and simplifying the token settings. I also built a small debug dashboard to track searches, response times, token usage, and errors (Ughh I’m really exhausted now)
After testing the chatbot with around 50 beta users, I found several issues that weren’t obvious during development. Responses were too long, the personality became too generic when using RAG, Urdu and English were sometimes mixed incorrectly, and the mobile layout needed work. I shortened the responses, restricted web search to things like news and sports, improved the system prompt and input handling, redesigned the mobile UI, and added a message explaining the cold start delay
Made some Minor UI changes on frontend nextjs
Guyss!! This is gonna be the last change I’ve made today, Senpai chatbot is live now and she’s talking like my friend (really couldn’t be more happy to see her talk to me again 🥹 )
here
Ships:
I built a AI RAG chatbot that mimics my friends personality , trained on whatsapp chats so it actually talks like my friend instead of generic robot ai. fine tuned llama 3b with LoRA on kaggle’s free gpu, deployed it on hf spaces zeroGPU gradio for backend and next.js on vercel for frontend, plus added RAG so it can clean up messy texts and pull live info from the web when needed. it genuinely feels like talking to my friend, all built for free. to test it. just start chatting, first msg might take a sec to load (model’s waking up)
Made a RAG chatbot that mimics my friends personality using Llama and Hugging Face. NOTE: I’m using zero GPU on HF so after 100 msgs it goes to sleeping mood , in that case the chatbot would reply a random thing like “system off” , “internet is down” or something like that , so don’t worry about that, come after 24Hr and she’ll talk normally FACT: Senpai used to say a lot “Haii haii” which is a japanese phrase for “yes” so don’t worry about that either, she’s just being friendly with ya Hope ya’ll love this version of chatbot...
|
1792983108.5054207
|
1793069508.5054207
|
|
7920
|
mdl-website by @make_aguess | Stardance
|
make_aguess
|
0
|
77.16
|
0
|
[]
|
[{"post_id": 42720, "ts": "202 [{"post_id": 42720, "ts": "2026-08-07T16:03:51Z", "hours": 13.6217, "text": "ok so. been gone for a long time anyway. new commits from 4b3da0327219420254936eb2aa33c302f1689a6e onwards in summary added download features (merging was not fun) bumped trigger.dev to v4 added web sockets login had a bug. took way too long to realize i forgot to add keys to prod. added sentry cos i was bored and error detection bumped version again for trigger.dev cleaned up database, and updated schemas. added skeleton loaders change the theme cos i was bored. nextjs config file confused me, but i fixed it :) more trigger bugs appears. more trigger fix appears. added some safety stuff (pls dont attempt to attack it) somewhat mobile integration the remaining here is on the dev branch instead… havent gotten the chance to review code and merge tuning + prefs for users added unit tests. dashboard clean up."}, {"post_id": 15078, "ts": "2026-06-24T14:34:55Z", "hours": 4.8981, "text": "testing my brain cell limits today"}, {"post_id": 14408, "ts": "2026-06-23T15:06:15Z", "hours": 0.9156, "text": "jsut why ,"}, {"post_id": 13754, "ts": "2026-06-22T15:20:01Z", "hours": 1.4694, "text": "i might have a solution (thank you trigger.dev)"}, {"post_id": 12508, "ts": "2026-06-20T13:04:55Z", "hours": 1.6903, "text": "added weebcentral dowload functions. but sadly, vercel doesnt have long enough serverless funcs for me. shhame in the process of trying to get a domain somehow with dns"}, {"post_id": 11993, "ts": "2026-06-19T15:54:10Z", "hours": 7.7006, "text": "YES FINALLY ADDED STREAMING LOGIC AND SOME OTHER FEATURES yes i finally added the functions to download from my other 2 sources you can finally start with a mangadex url and downloading it (it takes a moment too) very nice"}, {"post_id": 11271, "ts": "2026-06-18T13:04:36Z", "hours": 7.2008, "text": "typescript is funny today HUH"}, {"post_id": 10695, "ts": "2026-06-17T15:42:40Z", "hours": 4.4536, "text": "had to read some c code for this man"}, {"post_id": 9948, "ts": "2026-06-16T14:02:58Z", "hours": 1.5778, "text": "today was less coding, but added some api fixes and testing code for manga dex download is working. plan to start on maunal next"}, {"post_id": 9120, "ts": "2026-06-15T08:16:23Z", "hours": 0.7036, "text": "added linting and more database problems"}, {"post_id": 9085, "ts": "2026-06-15T05:47:54Z", "hours": 4.0447, "text": "added some api features"}, {"post_id": 7527, "ts": "2026-06-12T15:54:54Z", "hours": 8.9889, "text": "today was NOT a fun day"}, {"post_id": 6866, "ts": "2026-06-11T14:53:22Z", "hours": 5.0228, "text": "added some database and checking auth features"}, {"post_id": 6148, "ts": "2026-06-10T10:30:25Z", "hours": 1.5867, "text": "contiuned on auth and kinda got dashboard working"}, {"post_id": 5641, "ts": "2026-06-09T14:50:34Z", "hours": 1.7522, "text": "added some parts of auth feature"}, {"post_id": 4919, "ts": "2026-06-08T14:52:06Z", "hours": 2.9381, "text": "unfortunately my code got deleted before i could commit :("}, {"post_id": 4117, "ts": "2026-06-07T09:48:14Z", "hours": 3.4328, "text": "Added database using supabase"}, {"post_id": 3434, "ts": "2026-06-06T11:26:51Z", "hours": 5.1667, "text": "successfully linked the api, and created a basic landing page"}]...
|
Title: mdl-website by @make_aguess | Stardance
De Title: mdl-website by @make_aguess | Stardance
Devlogs:
successfully linked the api, and created a basic landing page
Added database using supabase
unfortunately my code got deleted before i could commit :(
added some parts of auth feature
contiuned on auth and kinda got dashboard working
added some database and checking auth features
today was NOT a fun day
added some api features
added linting and more database problems
today was less coding, but added some api fixes and testing code for manga dex download is working. plan to start on maunal next
had to read some c code for this man
typescript is funny today HUH
YES FINALLY ADDED STREAMING LOGIC AND SOME OTHER FEATURES yes i finally added the functions to download from my other 2 sources you can finally start with a mangadex url and downloading it (it takes a moment too) very nice
added weebcentral dowload functions. but sadly, vercel doesnt have long enough serverless funcs for me. shhame in the process of trying to get a domain somehow with dns
i might have a solution (thank you trigger.dev)
jsut why ,
testing my brain cell limits today
ok so. been gone for a long time anyway. new commits from 4b3da0327219420254936eb2aa33c302f1689a6e onwards in summary added download features (merging was not fun) bumped trigger.dev to v4 added web sockets login had a bug. took way too long to realize i forgot to add keys to prod. added sentry cos i was bored and error detection bumped version again for trigger.dev cleaned up database, and updated schemas. added skeleton loaders change the theme cos i was bored. nextjs config file confused me, but i fixed it :) more trigger bugs appears. more trigger fix appears. added some safety stuff (pls dont attempt to attack it) somewhat mobile integration the remaining here is on the dev branch instead… havent gotten the chance to review code and merge tuning + prefs for users added unit tests. dashboard clean up....
|
1792615834.0808933
|
1793220634.0808933
|
|
4099
|
MealMash by @asherm | Stardance
|
asherm
|
0
|
77.06
|
0
|
[]
|
[{"post_id": 63795, "ts": "202 [{"post_id": 63795, "ts": "2026-09-07T19:12:43Z", "hours": 10.0731, "text": "Devlog 9 BETA VERSION IS OUT! Try it out here: Android: https://expo.dev/accounts/ashermemon/projects/never-leftover-new/builds/5fa5640f-6a34-4513-8dc3-4af86768a41b IOS: https://testflight.apple.com/join/gyUzY9ur After working on achievements, icons, and dark mode in the last devlog, I decided to move on to smaller details across the app. I started by adding subtle animations in certain areas of the app and tinting shadows rather than keeping them always black. I also removed an old text input at the top of the home screen and replaced it with a surprise me button and made it look cool (generates a random recipe on click). Finally, I added a toast notification when the user unlocks an achievement, which I think looks pretty neat. These new changes, however, came with a whole bunch of new bugs to fix, which meant a lot of tedious work. After adding these features, I worked on more of the under the hood stuff. I completely restructured my MMKV storage (stores all the saved recipes and other stuff) as there were a lot of problems with my previous system. I did this by making lots of helper functions and using structured records rather than using random variables. Additionally, I moved the meal images to my supabase and made my code fetch them from there, so that they aren’t included in the app build (that would take up extra space). Finally, I added profile picture uploading on the profile tab, made some smaller changes, and created the beta builds of the app for you to try out! Here are some screenshots!"}, {"post_id": 49386, "ts": "2026-08-18T05:33:56Z", "hours": 10.255, "text": "Devlog 8 SAVED RECIPES, achievements, new icons, haptics and MORE With the redesign of the profile page in the last devlog, I had one more key page to rework: the saved recipes page. Previously, it was a really ugly list of recipe names inside boxes, and that was about it. So I started by routing the profile saves button to a new “Saves Home” page with different recipe categories (Sweet Treats, Quick Snacks, etc.). I then made the AI generating the recipes also classify which categories the recipe fits into. These category cards go to the page and display the actual recipes when clicked. So I made a new recipe card component (looks much nicer and includes details and a photo instead of just the title) and filtered the recipes to display the correct ones based on which category card was clicked. A bonus feature I decided to add was achievements. I set up the area for them in the last devlog, and this time I worked on coming up with them and displaying them on the profile. I realized, however, that the emojis I was using weren’t going to cut it for this, so I went on a hunt for a nice 3D icon pack. I ended up finding a few icon packs that were similar enough to use across the entire app. And so, I migrated to these new 3d icons next, which I think made the app look a lot more polished. I also decided to go through some bugs, fix them and add missing haptic feedback across the app. Here are some screenshots of achievements and the save pages (in dark mode cuz i like it)!"}, {"post_id": 47103, "ts": "2026-08-14T19:04:57Z", "hours": 14.6722, "text": "Devlog 7 Grocery List, Dark Mode, Profile and more! With the ingredient search api implemented last devlog, I started off by testing and tweaking it a bit. Next I made same changes to the home page, and made the browse recipe by category buttons work (so now you can scroll through lunch recipes or dessert recipes from the home page!). I realized that my project was getting kinda cluttered with old components, packages and styles, so I cleaned up everything that was no longer in use. The next feature I wanted to add was a grocery list that adds ingredients to the pantry when the user checks them off. I also added features to re use your list by unchecking all items. I then completely restarted the profile page as well as I hadn’t updated it from my old design from months ago. Here I added a dark mode / light mode toggle switch that controls the theme of the app. I spent a couple days just tweaking both the light mode and dark mode color palettes as well as making minor changes like shadows. There’s still some work to get done on the profile page and saves page, so that’s what I will be working on next! Here are some screenshots of the changes!"}, {"post_id": 42240, "ts": "2026-08-06T21:09:21Z", "hours": 10.3269, "text": "Devlog 6 Ingredient search API! After finishing up the core pantry functionality last devlog, I had one more crucial feature to implement: a way to actually search for and add ingredients. For this, I used the OpenNutrition Foods database as it fit my needs best. I then went through and removed duplicates, branded items and more! The next step was setting up Supabase with this dataset so I could call it in the app, which took a while. After setting it up, I created the search feature in the app, styled it, and fixed A LOT of bugs. I ended up adding a category column to the dataset by synthetically generating values with Gemini as well as a popularity score column. The popularity score helps inform which ingredients appear first when searching. I also implemented the Browse Ingredients mode that allows the user to pick specific ingredients to generate with rather than their whole pantry. I made the search from the pantry into a component and reused it here, just adding to a temporary list of Ingredients rather than to the pantry. Other than those changes, I pretty much worked on bugfixes and implementing small changes like being able to rename the pantry after creation. Here are some screenshots of the new features!"}, {"post_id": 31617, "ts": "2026-07-20T05:11:53Z", "hours": 12.7664, "text": "Devlog 5 Pantry development and more! After I redesigned the pantry in the last devlog, I began developing it in the app! I started by making a reusable onboarding sequence component and then using this component for the user’s first time on the pantry page (setup). It walks the user through naming their pantry, adding an icon, and adding ingredients! Creating this component, however, came with bug after bug and required reshaping a lot of the app. For instance, in order to fit my new pantry system, I had to completely change the way the ingredients and pantry details were stored and retrieved on different pages. After finishing the onboarding portion, I developed the actual pantry page that is shown after setup, displaying ingredients with filters and a search bar. In addition, I worked on colours and made some minor tweaks to the entire app. As for next steps, I definitely need to get an ingredient API hooked up so I can search through ingredients to add to the pantry. Here is a screenshot of the new design in the app!"}, {"post_id": 15931, "ts": "2026-06-25T21:33:26Z", "hours": 4.1111, "text": "Devlog 4 – June 15-25, 2026 Pantry page design and development! Last devlog, I finished the generator page, meaning the next necessary step was to allow the user to add ingredients. I created the pantry page to serve this purpose, allowing users to either snap a photo of their fridge and pantry or manually add ingredients. I first created a design in figma, and once I thought it looked okay, I started developing it. About 3 hours through development, however, I started to find issues with the design including a lack of clear instructions and a difficult user experience. I used tiny tags for ingredients under dropdowns, making it difficult to navigate. Additionally, I didn’t have any features like choosing an expiration date or quantity, which are often crucial for keeping track of what you have. Because of these issues, I started from scratch, creating a whole new figma design. I probably spent ~6 hours on this, (and I realised that my hackatime figma extension thing wasn’t even tracking 😭), and I am quite happy with the design. I will be implementing it over the next week or so! Here is a messy screenshot of all the design attempts I made in figma. The new ones are labelled pantry new, and it goes through a sequence to add ingredients! The other screenshot shows the overall new pantry design."}, {"post_id": 9047, "ts": "2026-06-15T03:15:37Z", "hours": 10.9528, "text": "Devlog 3 – June 7-14, 2026 New Generator Page + LOTS of bugfixes! As I finished work on the recipes and swiping portion of the app in the last few weeks, the next page I wanted to work on was the generation page. This page holds all the settings for generation to set before swiping. The generation page I had before was very simple and unfinished, with only a place to add ingredients… so i deleted it and started from scratch. I started off by designing in figma and brainstorming what I wanted the page to have. I settled on 3 modes: Pantry, Select Ingredients, and Any Ingredients. For Pantry mode, the recipes are generated using all the ingredients the user has at home (will make a separate page to add ingredients to their pantry in the future). The second mode allows the user to choose specific ingredients that they want to use now in the recipe. The final mode, any ingredients, uses anything to make the best recipe! I also decided I wanted controls for difficulty, time, number of servings, cuisine and meal type (breakfast, lunch, dinner …). Over the past week, I added all these controls with dropdowns and multi-select buttons that I created from scratch. When the user sets these settings, it modifies the input to the AI to make recipes to fit them. Here’s a video showing off the new page!"}, {"post_id": 4491, "ts": "2026-06-07T20:26:18Z", "hours": 2.9747, "text": "Devlog 2 – June 3-6, 2026 Another update on my recipe generator app: bugfixes, figma and images! I first took the time to look into a few bugs I was experiencing, like the images and recipe preview disappearing briefly after loading and reappearing. The preview cards would also glitch if the make recipe button was clicked while it was swiping off screen. These were both pretty quick fixes, and I decided to clean up some code after and remove some old functions. The next feature I wanted to add was unique images , as at the time, every recipe used the same placeholder image. I thought of using an image generator as the user swipes, but I realised that would be far too expensive and slow . Instead, I used gemini on the web to generate 10 images of different meal categories (e.g. seafood, dessert, salad…) on the same plate and removed the backgrounds, and saved them to a folder in the project. I then made the AI that was generating the recipe also choose a recipe image category from the available images. I then replaced the placeholder to display that image! In the future, I will definitely add more specific recipe categories (100+ categories) to make the images more accurate to the recipe. I also worked on some figma designs for other parts of the app! Here’s a little preview so far of swiping with the new images:"}, {"post_id": 1315, "ts": "2026-06-03T07:19:07Z", "hours": 0.9239, "text": "Devlog 1 – June 2, 2026 Updating the generation system: unique recipes! I have been working on a recipe generator app and am currently working on the generation feature. I made swipable recipe cards that give the basic details of each recipe, and people can either choose to follow it (gives a detailed view with instructions), save it or skip it. When they swipe this card away, a new recipe is on the next card! Since joining Stardance, I have been working on modifying and redesigning how the generation works. My first step in this was actually generating unique recipes , as, with the same inputs, the AI usually generates near-identical recipes. I have been working on adding constraints randomly added to the prompt each swipe to yield unique recipes for the same inputted ingredients! I have three categories of constraints that get added: meal type (late night snack, high protein…), texture (crunchy, creamy…), and methods (grill, char, bake…). Here are some screenshots of the cards and some unique recipes that were inputted the same ingredients!!! (btw the image of the meal is just a placeholder rn)"}]...
|
Title: MealMash by @asherm | Stardance
Devlogs:
D Title: MealMash by @asherm | Stardance
Devlogs:
Devlog 1 – June 2, 2026 Updating the generation system: unique recipes! I have been working on a recipe generator app and am currently working on the generation feature. I made swipable recipe cards that give the basic details of each recipe, and people can either choose to follow it (gives a detailed view with instructions), save it or skip it. When they swipe this card away, a new recipe is on the next card! Since joining Stardance, I have been working on modifying and redesigning how the generation works. My first step in this was actually generating unique recipes , as, with the same inputs, the AI usually generates near-identical recipes. I have been working on adding constraints randomly added to the prompt each swipe to yield unique recipes for the same inputted ingredients! I have three categories of constraints that get added: meal type (late night snack, high protein…), texture (crunchy, creamy…), and methods (grill, char, bake…). Here are some screenshots of the cards and some unique recipes that were inputted the same ingredients!!! (btw the image of the meal is just a placeholder rn)
Devlog 2 – June 3-6, 2026 Another update on my recipe generator app: bugfixes, figma and images! I first took the time to look into a few bugs I was experiencing, like the images and recipe preview disappearing briefly after loading and reappearing. The preview cards would also glitch if the make recipe button was clicked while it was swiping off screen. These were both pretty quick fixes, and I decided to clean up some code after and remove some old functions. The next feature I wanted to add was unique images , as at the time, every recipe used the same placeholder image. I thought of using an image generator as the user swipes, but I realised that would be far too expensive and slow . Instead, I used gemini on the web to generate 10 images of different meal categories (e.g. seafood, dessert, salad…) on the same plate and removed the backgrounds, and saved them to a folder in the project. I then made the AI that was generating the recipe also choose a recipe image category from the available images. I then replaced the placeholder to display that image! In the future, I will definitely add more specific recipe categories (100+ categories) to make the images more accurate to the recipe. I also worked on some figma designs for other parts of the app! Here’s a little preview so far of swiping with the new images:
Devlog 3 – June 7-14, 2026 New Generator Page + LOTS of bugfixes! As I finished work on the recipes and swiping portion of the app in the last few weeks, the next page I wanted to work on was the generation page. This page holds all the settings for generation to set before swiping. The generation page I had before was very simple and unfinished, with only a place to add ingredients… so i deleted it and started from scratch. I started off by designing in figma and brainstorming what I wanted the page to have. I settled on 3 modes: Pantry, Select Ingredients, and Any Ingredients. For Pantry mode, the recipes are generated using all the ingredients the user has at home (will make a separate page to add ingredients to their pantry in the future). The second mode allows the user to choose specific ingredients that they want to use now in the recipe. The final mode, any ingredients, uses anything to make the best recipe! I also decided I wanted controls for difficulty, time, number of servings, cuisine and meal type (breakfast, lunch, dinner …). Over the past week, I added all these controls with dropdowns and multi-select buttons that I created from scratch. When the user sets these settings, it modifies the input to the AI to make recipes to fit them. Here’s a video showing off the new page!
Devlog 4 – June 15-25, 2026 Pantry page design and development! Last devlog, I finished the generator page, meaning the next necessary step was to allow the user to add ingredients. I created the pantry page to serve this purpose, allowing users to either snap a photo of their fridge and pantry or manually add ingredients. I first created a design in figma, and once I thought it looked okay, I started developing it. About 3 hours through development, however, I started to find issues with the design including a lack of clear instructions and a difficult user experience. I used tiny tags for ingredients under dropdowns, making it difficult to navigate. Additionally, I didn’t have any features like choosing an expiration date or quantity, which are often crucial for keeping track of what you have. Because of these issues, I started from scratch, creating a whole new figma design. I probably spent ~6 hours on this, (and I realised that my hackatime figma extension thing wasn’t even tracking 😭), and I am quite happy with the design. I will be implementing it over the next week or so! Here is a messy screenshot of all the design attempts I made in figma. The new ones are labelled pantry new, and it goes through a sequence to add ingredients! The other screenshot shows the overall new pantry design.
Devlog 5 Pantry development and more! After I redesigned the pantry in the last devlog, I began developing it in the app! I started by making a reusable onboarding sequence component and then using this component for the user’s first time on the pantry page (setup). It walks the user through naming their pantry, adding an icon, and adding ingredients! Creating this component, however, came with bug after bug and required reshaping a lot of the app. For instance, in order to fit my new pantry system, I had to completely change the way the ingredients and pantry details were stored and retrieved on different pages. After finishing the onboarding portion, I developed the actual pantry page that is shown after setup, displaying ingredients with filters and a search bar. In addition, I worked on colours and made some minor tweaks to the entire app. As for next steps, I definitely need to get an ingredient API hooked up so I can search through ingredients to add to the pantry. Here is a screenshot of the new design in the app!
Devlog 6 Ingredient search API! After finishing up the core pantry functionality last devlog, I had one more crucial feature to implement: a way to actually search for and add ingredients. For this, I used the OpenNutrition Foods database as it fit my needs best. I then went through and removed duplicates, branded items and more! The next step was setting up Supabase with this dataset so I could call it in the app, which took a while. After setting it up, I created the search feature in the app, styled it, and fixed A LOT of bugs. I ended up adding a category column to the dataset by synthetically generating values with Gemini as well as a popularity score column. The popularity score helps inform which ingredients appear first when searching. I also implemented the Browse Ingredients mode that allows the user to pick specific ingredients to generate with rather than their whole pantry. I made the search from the pantry into a component and reused it here, just adding to a temporary list of Ingredients rather than to the pantry. Other than those changes, I pretty much worked on bugfixes and implementing small changes like being able to rename the pantry after creation. Here are some screenshots of the new features!
Devlog 7 Grocery List, Dark Mode, Profile and more! With the ingredient search api implemented last devlog, I started off by testing and tweaking it a bit. Next I made same changes to the home page, and made the browse recipe by category buttons work (so now you can scroll through lunch recipes or dessert recipes from the home page!). I realized that my project was getting kinda cluttered with old components, packages and styles, so I cleaned up everything that was no longer in use. The next feature I wanted to add was a grocery list that adds ingredients to the pantry when the user checks them off. I also added features to re use your list by unchecking all items. I then completely restarted the profile page as well as I hadn’t updated it from my old design from months ago. Here I added a dark mode / light mode toggle switch that controls the theme of the app. I spent a couple days just tweaking both the light mode and dark mode color palettes as well as making minor changes like shadows. There’s still some work to get done on the profile page and saves page, so that’s what I will be working on next! Here are some screenshots of the changes!
Devlog 8 SAVED RECIPES, achievements, new icons, haptics and MORE With the redesign of the profile page in the last devlog, I had one more key page to rework: the saved recipes page. Previously, it was a really ugly list of recipe names inside boxes, and that was about it. So I started by routing the profile saves button to a new “Saves Home” page with different recipe categories (Sweet Treats, Quick Snacks, etc.). I then made the AI generating the recipes also classify which categories the recipe fits into. These category cards go to the page and display the actual recipes when clicked. So I made a new recipe card component (looks much nicer and includes details and a photo instead of just the title) and filtered the recipes to display the correct ones based on which category card was clicked. A bonus feature I decided to add was achievements. I set up the area for them in the last devlog, and this time I worked on coming up with them and displaying them on the profile. I realized, however, that the emojis I was using weren’t going to cut it for this, so I went on a hunt for a nice 3D icon pack. I ended up finding a few icon packs that were similar enough to use across the entire app. And so, I migrated to these new 3d icons next, which I think made the app look a lot more polished. I also decided to go through some bugs, fix them and add missing haptic feedback across the app. Here are some screenshots of achievements and the save pages (in dark mode cuz i like it)!
Devlog 9 BETA VERSION IS OUT! Try it out here: Android: https://expo.dev/accounts/ashermemon/projects/never-leftover-new/builds/5fa5640f-6a34-4513-8dc3-4af86768a41b IOS: https://testflight.apple.com/join/gyUzY9ur After working on achievements, icons, and dark mode in the last devlog, I decided to move on to smaller details across the app. I started by adding subtle animations in certain areas of the app and tinting shadows rather than keeping them always black. I also removed an old text input at the top of the home screen and replaced it with a surprise me button and made it look cool (generates a random recipe on click). Finally, I added a toast notification when the user unlocks an achievement, which I think looks pretty neat. These new changes, however, came with a whole bunch of new bugs to fix, which meant a lot of tedious work. After adding these features, I worked on more of the under the hood stuff. I completely restructured my MMKV storage (stores all the saved recipes and other stuff) as there were a lot of problems with my previous system. I did this by making lots of helper functions and using structured records rather than using random variables. Additionally, I moved the meal images to my supabase and made my code fetch them from there, so that they aren’t included in the app build (that would take up extra space). Finally, I added profile picture uploading on the profile tab, made some smaller changes, and created the beta builds of the app for you to try out! Here are some screenshots!...
|
1792727380.6509788
|
1793332180.6509788
|
|
3794
|
RTX Minecraft Shader by @DubbsPi | Stardance
|
DubbsPi
|
1
|
77.0
|
1308
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T16:35:23Z", "hours": 77.0, "multiplier": 16.95, "payout": 1308, "blessing": "neutral", "text": "This is a custom minecraft shader I made. I first started with the Iris tutorial, but this project quickly expanded with a bunch of high end features, such as raytraced reflections! I’ve always kinda been annoyed with screen space reflections, so I thought, how hard could it be to just make them world space? Turns out it was way harder than I expected and took way longer as well. Overall, the result of my shader turned out pretty good, but it is not gameplay focused/to be used outside of demos in the overworld. I hope others may even build off of my progress to start integrating advanced reflection features like I have. This project greatly helped me improve my shader skills/taught me how to use the vertex and compute shaders (my only prior shader experience is on shadertoy) to produce nice results. The hardest part for me was probably setting up the BVH for RT acceleration and actually starting the project. Apparently minecraft has a lot of little overlapping transparent textures setup to perfectly rasterize, but to trace them causes a lot of precision related bugs, hence the reason I was forced to cheap out a little on grass blocks/tall grass. Also, the BVH resolution is limited due to performance constraints, causing overlapping triangles to clip infront of each other constantly, but that issue is mostly nonexistent for non transparent triangles, like buildings and such. In the end, I’m happy with the result and couldn’t have asked for a better long-term coding project!", "repo": "https://github.com/DubbsPi/My-Minecraft-Shaderpack", "demo": "https://www.curseforge.com/minecraft/shaders/basic-rtx-shader"}]...
|
[{"post_id": 43388, "ts": "202 [{"post_id": 43388, "ts": "2026-08-08T16:27:45Z", "hours": 7.6336, "text": "Finished fixing up a bunch of small bugs/issues. Also added waves to the water. I deleted my .git files by accident so that took a while to fix. Added a bunch of options to the settings to help reduce the render scale of reflections, which allows this to actually run halfway decently. Couldn’t figure out how to get the reflections to work properly on water, so there will be none there."}, {"post_id": 31865, "ts": "2026-07-20T16:26:32Z", "hours": 3.2281, "text": "We now have some of the most complex handheld lighting in minecraft! I setup a quick light tracing function and inputted the light values for it for each hand, so as you can see there are two shadows being cast. I will add an option in the future to upscale the RTX features since this was taken at 27 fps. I also added bloom and a bunch of settings for it and fixed up the sky ground issues. Now it truly scatters the ground until you hit y ≈ 200 million, then the lowest part breaks ¯ ( ツ)/¯"}, {"post_id": 31520, "ts": "2026-07-20T00:14:26Z", "hours": 3.8397, "text": "you know what, its 98% working. I call that good enough for tonight! I will continue fixing up the various tracing bugs and add entities, but so far this is pretty good! I plan on also raytracing shadows and lights if possible, although I will keep the standard shadow pass for nearby to get cheaper shadow filtering than with multiple rays. A lot of little issues plagued the final BVH build, mostly with me not clearing buffers :)"}, {"post_id": 30981, "ts": "2026-07-19T00:18:09Z", "hours": 6.6114, "text": "Finally!!! I got the radix sort working! The screen shot doesn’t look like much, but if you notice the bar on the bottom, the colors are generally grouped together and are perfectly stable. I had really struggled with getting this to work correctly as I’m not exactly the most experienced with compute shaders (or I should say was, now I know more about them than I need to). I had reached out to the shader labs discord even (thanks to them btw, they helped with a workgroup dispatching bug I had) and ran about every test possible to eliminate any possible race conditions/out of bounds errors. Then comes gemini to save the day. Apparently, I really should have done some more research into atomics in the past since even though they are meant to be stable, they are not perfect in the slightest, so I was basically attempting to do a radix sort without stable ranking (which is what it needs to achieve its insane parallelism and speed) and yeah it works now. BVH time (which should not take long to setup, the radix is normally the hard part), then true RTX features (not just voxelizations) like raytraced reflections and idk I might add a path tracing option since I’ve made a PT on shadertoy before and it was super enjoyable to do."}, {"post_id": 27699, "ts": "2026-07-13T14:19:43Z", "hours": 5.9664, "text": "All I can say I got done in this long session is I optimized the rendering slightly. Not the tracing, just the regular lighting by catching the light colors (since they are from the scattered sky) in a tiny 2x2 texture, but it did give me 80+ fps back when I look at the ground at least. I will also have to redo all the BVH setup and actually learn how to do it all since I was leaning a bit heavy on AI use and something broke somewhere and I couldn’t figure out where. Time to actually code it all QwQ (not really sad, probably a good idea to actually learn it fully)"}, {"post_id": 26101, "ts": "2026-07-10T18:06:01Z", "hours": 0.9642, "text": "Haha I feel evil for being mean to my gpu. I got the full world space reflections working (along with a second bar to show how full my triangle buffer is), although I still have to tweak the entities combining with the terrain, but I mean it runs horribly (better than not at all!). You can’t see it in the screen shot really, but I installed a resolution changer mod that puts me at 1/4 resolution, so 1/16 of the pixels and perf is worse than full res with the entities. Definitely will need to get that BVH/acceleration running soon because or else my GPU is going to blow a fuse :D"}, {"post_id": 25300, "ts": "2026-07-09T14:40:44Z", "hours": 1.5022, "text": "Fixed up performance and small bugs!! I removed the combining of vertices into tris and just did that during the trace. Thanks to less memory pressure I got back around 20 idle fps and fixed the jitter bug (hehe)"}, {"post_id": 24178, "ts": "2026-07-07T16:06:28Z", "hours": 3.9919, "text": "(mostly) Finished a major performance win. I figured out a way to use the vertex shader instead of the geometry shader for everything. The geometry shader is notoriously slow (5-10x) compared to everything else, so by not using, my idle performance has went up several times due to no longer having to slowly process so many triangles. I still have some room for improvement (iron golems are black and some weird new backface visual bugs, nothing severe though) but this is much better than before!"}, {"post_id": 22943, "ts": "2026-07-05T16:32:52Z", "hours": 3.3131, "text": "Got FXAA working! Haven’t finished the acceleration for the RT yet, but thought some minor AA wouldn’t be too hard and look nice! Thanks to Simon Rodriguez for his wonderful tutorial on how to add in FXAA!"}, {"post_id": 21433, "ts": "2026-07-03T11:48:09Z", "hours": 5.2997, "text": "The wonderful world space reflections!! Right now they are only setup for entities and are still unaccelerated (that is why its running 25fps). This one was a real challenge to pull off since I learned the hard way entities don’t have texture atlases. That means for each entity on the screen, I had to manually bake their texture to a custom atlas. I will say, I found a pretty smart way to do it that only runs the bake once and caches the texture. If I ever notice overwriting issues, I can change it up, but it should be good. Also, I made it index based off the texture’s color, so modded entities should be supported :)"}, {"post_id": 20766, "ts": "2026-07-02T13:44:05Z", "hours": 2.1428, "text": "We are starting to get fancy!! I finally got just an entity triangle buffer setup. The reason my framerate is so bad so far is I haven’t setup acceleration yet, but that is going to be next. Its surprising how its actually cheaper (so far) to store triangles than storing the block faces I had earlier since info can be omitted pretty easily. The hardest part about doing this was the fact I forgot to put a vertex output in the gbuffers_entities.gsh so it was erring a ton because I forgot two lines 😁"}, {"post_id": 20450, "ts": "2026-07-02T01:31:07Z", "hours": 1.3664, "text": "After optimizing the voxel buffer some more and the DDA march, I have decided to make my life harder. I plan on moving from voxel marches to actual raytracing with acceleration structures due to the fact as of now, block only marches is limited visually, doesn’t have entities, and breaks very quickly when a block uses a 3d model instead of a standard block. My hope will be to use compute shaders for the BVH building so that should be fast. I plan on doing entities first, terrain later just because then I’m not deleting stuff and for once entities are simpler. Plus once this works its basically infinite quality and actually might be faster."}, {"post_id": 19507, "ts": "2026-06-30T20:37:39Z", "hours": 1.7464, "text": "Got all the shadows in the reflections wired up as well! I also added screen space shadows to stop floating shadows on the foliage, but I set it to not run on blocks since those shadows are normally not floating and this way the most noticeable shadows are soft and without artifacts. I merged a lot of code this time so then WSR and SSR can be used at the same time for more detail (for now, hopefully the WSR will be full detail on its own in the near future). I’m going to ignore the 1.6gb of vram in the one buffer alone issue for now and address extra compression later :D"}, {"post_id": 19290, "ts": "2026-06-30T15:41:18Z", "hours": 3.3058, "text": "Moved world space reflections to a SSBO!! Now they have all the details of the world, but the only issue (which I suppose I couldn’t notice with the lower quality ones before), is 3D models for blocks, since they cannot be voxelized. By moving the reflections to a SSBO in gbuffers_terrain, I was able to get normal shadow mapping back as well! Also I made VRAM storage more efficient - nvm just did the math and using 8 4k textures in RGBA16F was actually more efficient at 1.06gb while the current SSBO requires 1.6gb, but also the 8 4k textures could only store one block face, while the SSBO stores all 6, so if anything, the new SSBO method if I only gave it the same rigor as my setup before, is around 0.27gb of VRAM, way more compressed."}, {"post_id": 18749, "ts": "2026-06-29T22:48:27Z", "hours": 6.0992, "text": "Got these colored world space reflections working. The only thing I’m running into the issues of voxelizing with the shadow pass, so I am going to do a big refactor and move everything into the regular geometry pass, just that may either require the entire scene be rendered or cleaver caching."}, {"post_id": 17365, "ts": "2026-06-28T03:42:47Z", "hours": 0.8519, "text": "Got the DDA reflector going! Its actually running faster than screen space reflections were, and obviously has the world within the radius (which is 128 blocks, pretty good actually since 126/16 is 8 chunks). Just need to add texturing and lighting to the blocks. Actually I need lighting everywhere in the shader lol"}, {"post_id": 17105, "ts": "2026-06-27T19:32:56Z", "hours": 3.4997, "text": "Finally got the voxel buffer setup!! I did it at the cost of shadows, so I might try to add shadows back, or just use the voxel buffer for them. My hope is to be able to use the buffer for world space reflections since not many shaders have that."}, {"post_id": 16356, "ts": "2026-06-26T16:40:20Z", "hours": 3.5428, "text": "Improved SSR and the sky a little bit. Also got LabPBR’s specular mapping working but couldn’t get the normal map yet. Wasted like two hours trying to use AI to help me seutp a voxel buffer for world space reflections. Ended up deleting all the AI’s stuff due to the fact it didn’t really work right and halved my framerate."}, {"post_id": 15941, "ts": "2026-06-25T22:01:37Z", "hours": 2.5308, "text": "Added atmospheric scattering. Honestly it looks pretty good and runs really well so far. Had to have AI help explain a couple of the functions, but other than that I hand wrote it all. Took a while to figure out how to replace the fog, but once I did it turned out really nice!"}, {"post_id": 15811, "ts": "2026-06-25T18:08:53Z", "hours": 3.2617, "text": "Got much better looking reflections setup with screen space reflections. Trying to use DDA before wasn’t really a bad move, it basically gives a ton of free perf, until you put it with something that isn’t a cube or have to march through 300 blocks. I will try to add world space reflections in the future, but for now the SSR is pretty performant and looks nice!"}, {"post_id": 15343, "ts": "2026-06-24T22:51:45Z", "hours": 1.3783, "text": "Got these really nice looking dda reflections going that are basically free, just walking too far away or looking at them wrong or doing literally anything that isn’t his photo looks kinda bad. Also non solid blocks are very warped, but in this ideal situation they looks really nice!"}, {"post_id": 15154, "ts": "2026-06-24T16:55:26Z", "hours": 1.6878, "text": "Got a lot of stuff done - kidding. Just imported a sky function from a old shader I made. Sadly, I could not get waving vertices working yet. No clue how to do those and everything I try either breaks when you move or when you rotate so yea."}, {"post_id": 15097, "ts": "2026-06-24T15:08:22Z", "hours": 1.4875, "text": "Finally finished the tutorial. Honestly its looking pretty good so far for just a tutorial. I think it a few hours I will have quite a bit down to make this look fantastic and run well!"}, {"post_id": 15050, "ts": "2026-06-24T13:24:37Z", "hours": 1.9417, "text": "Getting near the end of the iris shader tutorial. I had zero clue how to actually format minecraft shaders to start, but the tutorial was super helpful. Hopefully using my experience on shadertoy I will be able to apply optimization and beauty to a game of blocks (either that or I’ll be at 2fps and spinning fish quality)"}]...
|
Title: RTX Minecraft Shader by @DubbsPi | Stardanc Title: RTX Minecraft Shader by @DubbsPi | Stardance
Devlogs:
Getting near the end of the iris shader tutorial. I had zero clue how to actually format minecraft shaders to start, but the tutorial was super helpful. Hopefully using my experience on shadertoy I will be able to apply optimization and beauty to a game of blocks (either that or I’ll be at 2fps and spinning fish quality)
Finally finished the tutorial. Honestly its looking pretty good so far for just a tutorial. I think it a few hours I will have quite a bit down to make this look fantastic and run well!
Got a lot of stuff done - kidding. Just imported a sky function from a old shader I made. Sadly, I could not get waving vertices working yet. No clue how to do those and everything I try either breaks when you move or when you rotate so yea.
Got these really nice looking dda reflections going that are basically free, just walking too far away or looking at them wrong or doing literally anything that isn’t his photo looks kinda bad. Also non solid blocks are very warped, but in this ideal situation they looks really nice!
Got much better looking reflections setup with screen space reflections. Trying to use DDA before wasn’t really a bad move, it basically gives a ton of free perf, until you put it with something that isn’t a cube or have to march through 300 blocks. I will try to add world space reflections in the future, but for now the SSR is pretty performant and looks nice!
Added atmospheric scattering. Honestly it looks pretty good and runs really well so far. Had to have AI help explain a couple of the functions, but other than that I hand wrote it all. Took a while to figure out how to replace the fog, but once I did it turned out really nice!
Improved SSR and the sky a little bit. Also got LabPBR’s specular mapping working but couldn’t get the normal map yet. Wasted like two hours trying to use AI to help me seutp a voxel buffer for world space reflections. Ended up deleting all the AI’s stuff due to the fact it didn’t really work right and halved my framerate.
Finally got the voxel buffer setup!! I did it at the cost of shadows, so I might try to add shadows back, or just use the voxel buffer for them. My hope is to be able to use the buffer for world space reflections since not many shaders have that.
Got the DDA reflector going! Its actually running faster than screen space reflections were, and obviously has the world within the radius (which is 128 blocks, pretty good actually since 126/16 is 8 chunks). Just need to add texturing and lighting to the blocks. Actually I need lighting everywhere in the shader lol
Got these colored world space reflections working. The only thing I’m running into the issues of voxelizing with the shadow pass, so I am going to do a big refactor and move everything into the regular geometry pass, just that may either require the entire scene be rendered or cleaver caching.
Moved world space reflections to a SSBO!! Now they have all the details of the world, but the only issue (which I suppose I couldn’t notice with the lower quality ones before), is 3D models for blocks, since they cannot be voxelized. By moving the reflections to a SSBO in gbuffers_terrain, I was able to get normal shadow mapping back as well! Also I made VRAM storage more efficient - nvm just did the math and using 8 4k textures in RGBA16F was actually more efficient at 1.06gb while the current SSBO requires 1.6gb, but also the 8 4k textures could only store one block face, while the SSBO stores all 6, so if anything, the new SSBO method if I only gave it the same rigor as my setup before, is around 0.27gb of VRAM, way more compressed.
Got all the shadows in the reflections wired up as well! I also added screen space shadows to stop floating shadows on the foliage, but I set it to not run on blocks since those shadows are normally not floating and this way the most noticeable shadows are soft and without artifacts. I merged a lot of code this time so then WSR and SSR can be used at the same time for more detail (for now, hopefully the WSR will be full detail on its own in the near future). I’m going to ignore the 1.6gb of vram in the one buffer alone issue for now and address extra compression later :D
After optimizing the voxel buffer some more and the DDA march, I have decided to make my life harder. I plan on moving from voxel marches to actual raytracing with acceleration structures due to the fact as of now, block only marches is limited visually, doesn’t have entities, and breaks very quickly when a block uses a 3d model instead of a standard block. My hope will be to use compute shaders for the BVH building so that should be fast. I plan on doing entities first, terrain later just because then I’m not deleting stuff and for once entities are simpler. Plus once this works its basically infinite quality and actually might be faster.
We are starting to get fancy!! I finally got just an entity triangle buffer setup. The reason my framerate is so bad so far is I haven’t setup acceleration yet, but that is going to be next. Its surprising how its actually cheaper (so far) to store triangles than storing the block faces I had earlier since info can be omitted pretty easily. The hardest part about doing this was the fact I forgot to put a vertex output in the gbuffers_entities.gsh so it was erring a ton because I forgot two lines 😁
The wonderful world space reflections!! Right now they are only setup for entities and are still unaccelerated (that is why its running 25fps). This one was a real challenge to pull off since I learned the hard way entities don’t have texture atlases. That means for each entity on the screen, I had to manually bake their texture to a custom atlas. I will say, I found a pretty smart way to do it that only runs the bake once and caches the texture. If I ever notice overwriting issues, I can change it up, but it should be good. Also, I made it index based off the texture’s color, so modded entities should be supported :)
Got FXAA working! Haven’t finished the acceleration for the RT yet, but thought some minor AA wouldn’t be too hard and look nice! Thanks to Simon Rodriguez for his wonderful tutorial on how to add in FXAA!
(mostly) Finished a major performance win. I figured out a way to use the vertex shader instead of the geometry shader for everything. The geometry shader is notoriously slow (5-10x) compared to everything else, so by not using, my idle performance has went up several times due to no longer having to slowly process so many triangles. I still have some room for improvement (iron golems are black and some weird new backface visual bugs, nothing severe though) but this is much better than before!
Fixed up performance and small bugs!! I removed the combining of vertices into tris and just did that during the trace. Thanks to less memory pressure I got back around 20 idle fps and fixed the jitter bug (hehe)
Haha I feel evil for being mean to my gpu. I got the full world space reflections working (along with a second bar to show how full my triangle buffer is), although I still have to tweak the entities combining with the terrain, but I mean it runs horribly (better than not at all!). You can’t see it in the screen shot really, but I installed a resolution changer mod that puts me at 1/4 resolution, so 1/16 of the pixels and perf is worse than full res with the entities. Definitely will need to get that BVH/acceleration running soon because or else my GPU is going to blow a fuse :D
All I can say I got done in this long session is I optimized the rendering slightly. Not the tracing, just the regular lighting by catching the light colors (since they are from the scattered sky) in a tiny 2x2 texture, but it did give me 80+ fps back when I look at the ground at least. I will also have to redo all the BVH setup and actually learn how to do it all since I was leaning a bit heavy on AI use and something broke somewhere and I couldn’t figure out where. Time to actually code it all QwQ (not really sad, probably a good idea to actually learn it fully)
Finally!!! I got the radix sort working! The screen shot doesn’t look like much, but if you notice the bar on the bottom, the colors are generally grouped together and are perfectly stable. I had really struggled with getting this to work correctly as I’m not exactly the most experienced with compute shaders (or I should say was, now I know more about them than I need to). I had reached out to the shader labs discord even (thanks to them btw, they helped with a workgroup dispatching bug I had) and ran about every test possible to eliminate any possible race conditions/out of bounds errors. Then comes gemini to save the day. Apparently, I really should have done some more research into atomics in the past since even though they are meant to be stable, they are not perfect in the slightest, so I was basically attempting to do a radix sort without stable ranking (which is what it needs to achieve its insane parallelism and speed) and yeah it works now. BVH time (which should not take long to setup, the radix is normally the hard part), then true RTX features (not just voxelizations) like raytraced reflections and idk I might add a path tracing option since I’ve made a PT on shadertoy before and it was super enjoyable to do.
you know what, its 98% working. I call that good enough for tonight! I will continue fixing up the various tracing bugs and add entities, but so far this is pretty good! I plan on also raytracing shadows and lights if possible, although I will keep the standard shadow pass for nearby to get cheaper shadow filtering than with multiple rays. A lot of little issues plagued the final BVH build, mostly with me not clearing buffers :)
We now have some of the most complex handheld lighting in minecraft! I setup a quick light tracing function and inputted the light values for it for each hand, so as you can see there are two shadows being cast. I will add an option in the future to upscale the RTX features since this was taken at 27 fps. I also added bloom and a bunch of settings for it and fixed up the sky ground issues. Now it truly scatters the ground until you hit y ≈ 200 million, then the lowest part breaks ¯ ( ツ)/¯
Finished fixing up a bunch of small bugs/issues. Also added waves to the water. I deleted my .git files by accident so that took a while to fix. Added a bunch of options to the settings to help reduce the render scale of reflections, which allows this to actually run halfway decently. Couldn’t figure out how to get the reflections to work properly on water, so there will be none there.
Ships:
This is a custom minecraft shader I made. I first started with the Iris tutorial, but this project quickly expanded with a bunch of high end features, such as raytraced reflections! I’ve always kinda been annoyed with screen space reflections, so I thought, how hard could it be to just make them world space? Turns out it was way harder than I expected and took way longer as well. Overall, the result of my shader turned out pretty good, but it is not gameplay focused/to be used outside of demos in the overworld. I hope others may even build off of my progress to start integrating advanced reflection features like I have. This project greatly helped me improve my shader skills/taught me how to use the vertex and compute shaders (my only prior shader experience is on shadertoy) to produce nice results. The hardest part for me was probably setting up the BVH for RT acceleration and actually starting the project. Apparently minecraft has a lot of little overlapping transparent textures setup to perfectly rasterize, but to trace them causes a lot of precision related bugs, hence the reason I was forced to cheap out a little on grass blocks/tall grass. Also, the BVH resolution is limited due to performance constraints, causing overlapping triangles to clip infront of each other constantly, but that issue is mostly nonexistent for non transparent triangles, like buildings and such. In the end, I’m happy with the result and couldn’t have asked for a better long-term coding project!...
|
1793083953.0525913
|
1793170353.0525913
|
|
6223
|
Stavex by @pranav101 | Stardance
|
pranav101
|
4
|
77.0
|
215
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T15:19:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Stavex", "repo": "https://github.com/itzpranav101/stavex", "demo": "https://stavex.org"}, {"ship_num": 2, "ts": "2026-08-19T08:04:27Z", "hours": 44.0, "multiplier": 6.98, "payout": 70, "blessing": "neutral", "text": "Stavex", "repo": "https://github.com/itzpranav101/stavex", "demo": "https://stavex.org"}, {"ship_num": 3, "ts": "2026-08-10T16:04:48Z", "hours": 15.0, "multiplier": 6.04, "payout": 85, "blessing": "neutral", "text": "Stavex", "repo": "https://github.com/itzpranav101/stavex", "demo": "https://stavex.org"}, {"ship_num": 4, "ts": "2026-06-03T11:20:19Z", "hours": 15.0, "multiplier": 6.01, "payout": 60, "blessing": "neutral", "text": "Hey guys! I made an initiative/website called stavex. Its essentially helps teens around the world create their startups with out 9 stage dashboard. Check out the website now - stavex.org Check our insta too for more details!! @stavexhq", "repo": "https://github.com/itzpranav101/stavex", "demo": "https://stavex.org"}]...
|
[{"post_id": 50918, "ts": "202 [{"post_id": 50918, "ts": "2026-08-20T11:58:24Z", "hours": 3.4219, "text": "Currently improving the app!!"}, {"post_id": 44665, "ts": "2026-08-10T16:09:25Z", "hours": 44.1517, "text": "currently working on a sub project called meco - a memory companion"}, {"post_id": 8000, "ts": "2026-06-13T10:51:19Z", "hours": 7.3961, "text": "introducing scheduling to stavex!! making an entire interface for students just so they can schedule their day - balancing acads and their passion.."}, {"post_id": 5533, "ts": "2026-06-09T10:49:44Z", "hours": 7.5583, "text": "currently working on the backend of the dashboard!! Also implementing argo smart routing"}, {"post_id": 1372, "ts": "2026-06-03T11:16:48Z", "hours": 14.5661, "text": "Currently working on the dashboard system!!"}]...
|
Title: Stavex by @pranav101 | Stardance
Devlogs:
Title: Stavex by @pranav101 | Stardance
Devlogs:
Currently working on the dashboard system!!
currently working on the backend of the dashboard!! Also implementing argo smart routing
introducing scheduling to stavex!! making an entire interface for students just so they can schedule their day - balancing acads and their passion..
currently working on a sub project called meco - a memory companion
Currently improving the app!!
Ships:
Hey guys! I made an initiative/website called stavex. Its essentially helps teens around the world create their startups with out 9 stage dashboard. Check out the website now - stavex.org Check our insta too for more details!! @stavexhq
Stavex
Stavex
Stavex...
|
1792997405.9623263
|
1793083805.9623263
|
|
7503
|
Pc parts lister by @Fiskerz | Stardance
|
Fiskerz
|
1
|
77.0
|
1286
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T13:41:56Z", "hours": 77.0, "multiplier": 19.41, "payout": 1286, "blessing": "neutral", "text": "What is this? You are currently looking at a native windows app , written entirely in C# & XAML . The main goal of this app is to make for a pc hardware person like me, keeping track of components I might happen to have laying around a lot easier and incredibly organized, without having to use endless and ugly excel tables. It is my first ever project of this kind, as I’ve been always making games, or mods, but not actual apps. What was challenging/I’m proud of As I said this was the first project of this type I’ve made ever so learning XAML took me some real time and effort. The expandible system and the mark-down style parser are the real “trophies” here, the amount of time and effort they took is just still horryfic to me. But I’m extremely proud of myself for biting through them. Features I’ll only go through some of the most important features, as there’s just many smaller things to cover. You can view all of the features in the github repository’s README file that took me a pretty long time to write and decorate. There are so many features that I can’t even fit them within this posts text limits. Adding, searching up, viewing, editing and deleting Components You can do all of these with any Component. Adding and searching up components is pretty simple, you just click on the gigantic buttons on the window that you will first see. And once you open the search window you can then view in detail, edit and delete the components from there using the dedicated buttons. Mark-down style description parser, writer and viewer. One of the most difficult things I’ve done in this project, as getting it to fully work was really difficult, even more so due to it being my first time having to solve an issue like this. But hey you can: Write in bold , italic , bold-italic and have two different headings styles. See what you’re writing in a preview box placed next to the description writer View the rendered descriptions in the detail window afterwards. Making your own Parameters, as well as editing default ones, or removing them entirely This is the most difficult thing I’ve dealt with throughout the entire project. As let me tell you - rewriting the entire app into architecture where the app itself has no idea what concrete step it’s doing is pure hell. I called this the Expandible system and it revolves mainly around being dynamic and expandable. Instead of having a Component that has a string value for its model, you now have a Component that may, or may not have a Model parameter assigned in its parameters. And that specific Model parameter can hold some value. And now try explaining this to the app. Just hell to deal with. But hey it works and I am super happy with how it turned out. Thanks to it you can: Add your own parameters . You yourself can make any of available rules for it, all using a pretty simply navigatable UI. Edit current parameters just as easily as you can add parameters, you can also edit any parameters and shape them into your liking. Or.. Delete any parameter you now dislike, or have no interest/use for. The UI scales and renders your parameters all throughout the app, based on what parameters you set up. Filtering Components Once again, from any of the parameters you’ve set up you can use them to filter out specific components, using any kind of parameter you decided to add in. Multi-language support In the app settings you can swap out between English (Default) and Czech. And the language is implemented all accross the app. So much so that even the default parameters will be generated in your selected language. Testing and using You can download the app from the latest release on github for Windows 10/11. There is unfortunately no other way to publish this app, since it’s a native windows app. For more detail follow the guide in the README file.", "repo": "https://github.com/Catmaster543/PC-Parts-Lister", "demo": "https://github.com/Catmaster543/PC-Parts-Lister/releases/tag/v1.0.2"}]...
|
[{"post_id": 74472, "ts": "202 [{"post_id": 74472, "ts": "2026-09-27T13:39:43Z", "hours": 5.5408, "text": "Added QOL features, README rewrite, bugfixes & shipping preparations! After all this time- the app is finally entering the final stretch (atleast for its first ship). A pretty thorough testing has been done and I am now quite confident that there’s not much missing. I got some feedback from a friend of mine and used it to add in some things he found missing, soo shoutout to him! Added many warnings and pop-ups throughout the app . In the app there are many settings that if you tweak at the wrong time, or incorrectly you can get yourself into quite some mess. With these warnings it should be more easily preventable. Completely rewrote the README , so that it now includes many images, gifs and most importantly very good documentation of the features. Added translations for more things , such as when parameters are regenerated it is done so in your chosen language. Added watermark text to the add window . Since I’ve heard it multiple times now, that the text box for components name is not intuitive to click on at all this should fix it. Fixed many issues , ranging from parameters saving as their opposite type, to the app crashing just from opening settings. You can read through these in detail in the respective github commits. Ship preparations . I took some time to deal with these things, such as making the app as humanly simple to run as possible, thourough testing, making github releases and writing the README as well as the ship description. And that is probably it here. This is likely the last devlog before shipping, so hopefully see you there! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 74151, "ts": "2026-09-26T19:39:02Z", "hours": 6.2444, "text": "Added multi-language support + settings + first README written! You might notice quite some time logged on this one. And let me tell you, you would not believe just how bad a simple mistake can be. I’ll get to this on the end of the devlog, for now let me tell you about the stuff that I’ve added. Added multi-language support . Now all text you see in the app is either dynamically generated based on the things you make, so that’s in your language, or use a key , which is then filled from the decently sized language tables I’ve written. Added English support . Up until now, the entirety of the app has been written in czech, my native language. But since I’ve now added the multi-language support I of course chose english as the first one to add. Now personally I will probably NOT be adding any other languages, as I don’t want to use google translate for them, since I know how choppy it can come out and personally don’t know any other languages on a tier high-enough to trust myself with writing the tables right. If anyone out there would be willing to translate the app into a language they can speak, I’m down! Added settings . Settings is actually a bit of a.. silly name to use here, as there’s only one setting there. Which is of course the language toggle. Written the first README . Now first clarifies only as first for this project, as I’ve written a few of these before, but this project is the largest one I’ve ever made, so it took me quite a bit of time to write this one. I’ll be improving it further, as it’s incomplete so far. And that’s it I think. The awful mistake I’ve made was forgetting to merge the github branches before starting this part and made an absolutely ridiculous amount of issues by that, such as the app mixing old and new codes and other terrible stuff. Outside these, I think that’s all for this one. I’m expecting this to finally be one of the last devlogs before the first ship, as there’s not much blocking me now from shipping. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 73754, "ts": "2026-09-25T21:13:23Z", "hours": 2.4719, "text": "Added the custom settings from last time + custom parameters adding Devlog #9 for PC Parts Lister Soo as I said last time, I’ve now implemented the following: List option for string type parameters . This allows parameters to load as a selectable list of options, instead of just a text field. Allowing custom list entries . An extension to the list option, which when toggled also allows you to type out your own thing if none from the list suits your need. Custom numbers sufix . Just as I said last time- this enables you to set a custom sufix to number type parameters and will do one simple thing - wherever this parameter is displayed, your sufix will be displayed after the number, so instead of “Capacity: 500”, it will now be “Capacity: 500 GB”. That is ofc if you set the sufix to be GB. Adding custom parameters . Since you could edit current parameters last time, I now gave you the power to make your own parameters. Everything since I’ve began building the expandible system has been preparing for this moment and now it’s here. It took me just a few lines of code to add this, but thanks to the complex system I’ve built custom parameters are supported everywhere in the app. Bugfixes Fixed Possible parameters obtaining values . As simple and unimportant this sounds, Possible parameters act only ONLY as a sort of template. Thus no actual value should be assigned to them. And thanks to a bug in the code this was happening, which broke the app way more than I expected. Fixed filtering-related issues . There were issues where the filtering system would be unable to filter out correctly, despite everything being right. UI fixes , such as scrollbars in places that were missing. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 73326, "ts": "2026-09-24T21:30:06Z", "hours": 5.9783, "text": "Added the parameters editing windows! Devlog #8 for PC Parts Lister Great day ya’ll. Added the edit parameters window , which features the following: See all current parameters Edit current parameters Delete current parameters Added the parameter edit window itself , which you can from the previous window and it allows you to: Change the parameter name Change the parameters ID Select if the parameter is either text, or a number Change the possible values in case of text Set if the parameter is supposed to be in a list in the case of text Set if the parameter can be edited, or just selected from set values in case of text Set a custom suffix to number type parameters, for example if you want to add a parameter for storage capacity it would be weird to have just “500”. 500 potatoes? You can use this to instead show “500 Gb”. Much better ain’t it? In cases of all these three new settings - they are only selectable here and the app saves them, but they are yet to be implemented! Added and edited the main window layout , adding the parameter settings button. And that is about it, hopefully se any one of you around! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 72368, "ts": "2026-09-22T19:27:35Z", "hours": 2.995, "text": "Finished migrating the filter window, added back category selection buttons, filtering by favorite and searching up components by name! Devlog #7 for PC Parts Lister Before I start - WHY THE HELL DOES THE REVIEW PROCESS ON MY OTHER PROJECT TAKE SOO LONG? My other project, the Sponsor system has been under review for OVER 12 DAYS now, anyone got any idea what’s up with that? Either way, to the actual devlog now- Soo since last time not any crazy time has passed, although I still did quite some work and want to write a devlog before heading onto the next parts that I assume will take a little while. Added searching components up by name back. Just like the other features, this has been implemented before already, but due to the migration to the expandible (= aka. dynamic) system has been broken. Added filtering by favorites back. Soo you can filter out all of your favorited components. Added back the category buttons . They behave just as before, you click on a category and see components under that category. Pretty neat, no? A whole lot of bugfixing and testing . Since last time I’ve discovered quite an insane amount of bugs and had to do patches almost constantly. Not to mention I had to pretty deeply test out all of the features to make sure there are not any holes I missed. But I believe not. Anyways I think that’s mostly it this time, I gotta say though that I should really hurry up with this project to finish it on time, soo cya! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!"}, {"post_id": 70833, "ts": "2026-09-19T20:56:29Z", "hours": 6.3892, "text": "Added support for filtering by numbers and text for the new system! Devlog #6 for PC Parts Lister Since last time I’ve began work on the expandible system quite some time has passed and I’ve worked on other projects in the meantime, but here am I now to hopefully finish this. Soo.. Added support to the filtering window for the new system, meaning it now generates the parameters dynamically, just like add window does Added back filtering by numbers , such as wattage and other number based parameters, with the old smaller/bigger/equal toggles Added back filtering by text so long story short - you can filter the other things that are not in numbers, such as names, series, subseries, etc. Added the reset filter button back . Pretty self explanatory I think, ain’t it? Many bugfixes . Since last time’s revert to the new system old things just keep on breaking and breaking and I have to constantly patch/disable features (temporarily) till I am able to fix them. Outside that I think that’s mostly it for this time, the main eater of time here was me really just spending a whole lot of time figuring out the architecture that would work for this whole system and let me tell you - it’s a real nightmare to think about. (wouldn’t be surprised if I had nightmares abt it tonight lol) Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also mz first time making anz kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to stick around and hit the follow, ty!"}, {"post_id": 64275, "ts": "2026-09-08T15:38:48Z", "hours": 6.49, "text": "Overhauled the Add window + started work on the expandible system! Devlog #5 for PC Parts Lister This is a change I’ve long anticipated and feared , but it should elevate the app by entire levels higher. Now what is the Expandible system? Up until now you could only use pre-specified, hardcoded parameters with very little flexibility to it. The expandible system aims to completely overhaul the way information is handled in the app , which will allow for custom parameters, parameter options, etc. etc. in the future. The biggest issue with that is the transfer from the current system. As of now I had to purposely break big chunks of the app for the sake of testing the basics and I will have to rebuild it back up, just with the expandible system. Overhaul of the Add window Since I’ve started the expandible system, the Add window, as one of the most outdated (both technically and visually) had to go first. Also this was due to me needing a way to add in components using the new system outside having to hard-code each tester. I think it is decent, but it is not finished yet, keep that in mind! A majority of the windows overhaul was technical , but I made sure to use the way more recent UI style from Detail and Edit windows that got updated recently to improve the visuals atleast a bit. I think there’s not all that much more I can specify as of right now, but when the system is done I’ll be sure to write some more about it, soo cya for now! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around and hit the follow, thx!"}, {"post_id": 43957, "ts": "2026-08-09T12:38:35Z", "hours": 8.3703, "text": "Improved the description by a whole new level! Devlog #4 This time I didn’t forget to post a devlog, so yay I don’t lose the payout on this one- Anyways my focus here was to make a pretty simple yet convenient description system, because the original one was… let’s say way too simple ( just plain text ). So to improve it I changed it into a Markdown-style system . So what did I add/change? An entire new renderer for the description in Detail Window . I had to write a custom parser for it in order for it to read bold, italic and other styles, more on them later though- An entirely new description editor in the Edit Window. Since I do not have the skill, time, or interest in making a live-preview editor that apps like obsidian have I chose a different approach. You have a regular text field with buttons for each function added (such as bold, etc.). On the other half you have a preview window that updates after you stop writing automatically (thus preventing lag) and displays a preview of what you wrote. Bold, Italic, BoldItalic, Heading & Small Heading are all the styles I added (maybe for now, maybe for good.). Each and every single one of these has a button, that either turns on or off that style. And that’s it for now I think. Seeing this project for the first time? This project is a windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around!"}, {"post_id": 24247, "ts": "2026-07-07T18:00:38Z", "hours": 17.6844, "text": "Devlog #3 for PC Parts Lister Alright, so I may, or may not have forgotten to post any updates in a while and quite a lot of things have been added, so here’s a small overview: Complete visual (and technical) overhaul of the Edit and Detail window . I improved their overall visuals, added a lot of new things, such as the photogallery, all while fixing some older bugs and issues. Addition of a whole new photogallery , to both edit and detail window. With it you can now have multiple different pictures for each component + a main picture. You can click on each picture to view them in a new window; in their full scale. You can also delete each picture, or in the case of the main picture you can also swap it out for a new one. In the full picture view you can also cycle between the components individual pictures, just like in most photogallery apps. Newly added description , it is very simple, but you can have a description at the very least. I am currently working on a whole new description system with MarkDown support, so you can make bold text , italic , or things like headings and paragraphs. Also I added the ability to favorite your favorite components and sort by that. It is quite a simple feature but in my opinion it is a nice to have feature. Alongside this I added the ability to filter components, so now you can easily separate your fav components. It is quite a lot of stuff to say the least and I’ll try my best from now on to do the devlogs in their respective times. See the 2 people who even read these in the next one!"}, {"post_id": 8651, "ts": "2026-06-14T11:35:07Z", "hours": 12.955, "text": "Devlog #2 for PC Parts Lister Main addition: Super specific and smart filtering system, allowing to seamlessly filter your components; by name, by type, even by things like amount! List of important changes: Added the smart filtering system window Added the amount value for components Re-used part of code from adding components Completely overhauled the re-used code, to be smarter, more effecient and way more easily expandable in the future Added a smart error reporting inside the filtering window, informing you if there’s something wrong Changed the way certain components values are stored Added and improved a few already existing button designs Improved certain behaviours of windows Fixed issues when opening the app in full-screen Fixed components saving with unrealistic values (for example having a SSD with the capacity “donkey”)"}, {"post_id": 2755, "ts": "2026-06-05T15:07:41Z", "hours": 1.7581, "text": "I just added the ability to search up by name"}]...
|
Title: Pc parts lister by @Fiskerz | Stardance
De Title: Pc parts lister by @Fiskerz | Stardance
Devlogs:
I just added the ability to search up by name
Devlog #2 for PC Parts Lister Main addition: Super specific and smart filtering system, allowing to seamlessly filter your components; by name, by type, even by things like amount! List of important changes: Added the smart filtering system window Added the amount value for components Re-used part of code from adding components Completely overhauled the re-used code, to be smarter, more effecient and way more easily expandable in the future Added a smart error reporting inside the filtering window, informing you if there’s something wrong Changed the way certain components values are stored Added and improved a few already existing button designs Improved certain behaviours of windows Fixed issues when opening the app in full-screen Fixed components saving with unrealistic values (for example having a SSD with the capacity “donkey”)
Devlog #3 for PC Parts Lister Alright, so I may, or may not have forgotten to post any updates in a while and quite a lot of things have been added, so here’s a small overview: Complete visual (and technical) overhaul of the Edit and Detail window . I improved their overall visuals, added a lot of new things, such as the photogallery, all while fixing some older bugs and issues. Addition of a whole new photogallery , to both edit and detail window. With it you can now have multiple different pictures for each component + a main picture. You can click on each picture to view them in a new window; in their full scale. You can also delete each picture, or in the case of the main picture you can also swap it out for a new one. In the full picture view you can also cycle between the components individual pictures, just like in most photogallery apps. Newly added description , it is very simple, but you can have a description at the very least. I am currently working on a whole new description system with MarkDown support, so you can make bold text , italic , or things like headings and paragraphs. Also I added the ability to favorite your favorite components and sort by that. It is quite a simple feature but in my opinion it is a nice to have feature. Alongside this I added the ability to filter components, so now you can easily separate your fav components. It is quite a lot of stuff to say the least and I’ll try my best from now on to do the devlogs in their respective times. See the 2 people who even read these in the next one!
Improved the description by a whole new level! Devlog #4 This time I didn’t forget to post a devlog, so yay I don’t lose the payout on this one- Anyways my focus here was to make a pretty simple yet convenient description system, because the original one was… let’s say way too simple ( just plain text ). So to improve it I changed it into a Markdown-style system . So what did I add/change? An entire new renderer for the description in Detail Window . I had to write a custom parser for it in order for it to read bold, italic and other styles, more on them later though- An entirely new description editor in the Edit Window. Since I do not have the skill, time, or interest in making a live-preview editor that apps like obsidian have I chose a different approach. You have a regular text field with buttons for each function added (such as bold, etc.). On the other half you have a preview window that updates after you stop writing automatically (thus preventing lag) and displays a preview of what you wrote. Bold, Italic, BoldItalic, Heading & Small Heading are all the styles I added (maybe for now, maybe for good.). Each and every single one of these has a button, that either turns on or off that style. And that’s it for now I think. Seeing this project for the first time? This project is a windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around!
Overhauled the Add window + started work on the expandible system! Devlog #5 for PC Parts Lister This is a change I’ve long anticipated and feared , but it should elevate the app by entire levels higher. Now what is the Expandible system? Up until now you could only use pre-specified, hardcoded parameters with very little flexibility to it. The expandible system aims to completely overhaul the way information is handled in the app , which will allow for custom parameters, parameter options, etc. etc. in the future. The biggest issue with that is the transfer from the current system. As of now I had to purposely break big chunks of the app for the sake of testing the basics and I will have to rebuild it back up, just with the expandible system. Overhaul of the Add window Since I’ve started the expandible system, the Add window, as one of the most outdated (both technically and visually) had to go first. Also this was due to me needing a way to add in components using the new system outside having to hard-code each tester. I think it is decent, but it is not finished yet, keep that in mind! A majority of the windows overhaul was technical , but I made sure to use the way more recent UI style from Detail and Edit windows that got updated recently to improve the visuals atleast a bit. I think there’s not all that much more I can specify as of right now, but when the system is done I’ll be sure to write some more about it, soo cya for now! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. If you find this project cool be sure to stick around and hit the follow, thx!
Added support for filtering by numbers and text for the new system! Devlog #6 for PC Parts Lister Since last time I’ve began work on the expandible system quite some time has passed and I’ve worked on other projects in the meantime, but here am I now to hopefully finish this. Soo.. Added support to the filtering window for the new system, meaning it now generates the parameters dynamically, just like add window does Added back filtering by numbers , such as wattage and other number based parameters, with the old smaller/bigger/equal toggles Added back filtering by text so long story short - you can filter the other things that are not in numbers, such as names, series, subseries, etc. Added the reset filter button back . Pretty self explanatory I think, ain’t it? Many bugfixes . Since last time’s revert to the new system old things just keep on breaking and breaking and I have to constantly patch/disable features (temporarily) till I am able to fix them. Outside that I think that’s mostly it for this time, the main eater of time here was me really just spending a whole lot of time figuring out the architecture that would work for this whole system and let me tell you - it’s a real nightmare to think about. (wouldn’t be surprised if I had nightmares abt it tonight lol) Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also mz first time making anz kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to stick around and hit the follow, ty!
Finished migrating the filter window, added back category selection buttons, filtering by favorite and searching up components by name! Devlog #7 for PC Parts Lister Before I start - WHY THE HELL DOES THE REVIEW PROCESS ON MY OTHER PROJECT TAKE SOO LONG? My other project, the Sponsor system has been under review for OVER 12 DAYS now, anyone got any idea what’s up with that? Either way, to the actual devlog now- Soo since last time not any crazy time has passed, although I still did quite some work and want to write a devlog before heading onto the next parts that I assume will take a little while. Added searching components up by name back. Just like the other features, this has been implemented before already, but due to the migration to the expandible (= aka. dynamic) system has been broken. Added filtering by favorites back. Soo you can filter out all of your favorited components. Added back the category buttons . They behave just as before, you click on a category and see components under that category. Pretty neat, no? A whole lot of bugfixing and testing . Since last time I’ve discovered quite an insane amount of bugs and had to do patches almost constantly. Not to mention I had to pretty deeply test out all of the features to make sure there are not any holes I missed. But I believe not. Anyways I think that’s mostly it this time, I gotta say though that I should really hurry up with this project to finish it on time, soo cya! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added the parameters editing windows! Devlog #8 for PC Parts Lister Great day ya’ll. Added the edit parameters window , which features the following: See all current parameters Edit current parameters Delete current parameters Added the parameter edit window itself , which you can from the previous window and it allows you to: Change the parameter name Change the parameters ID Select if the parameter is either text, or a number Change the possible values in case of text Set if the parameter is supposed to be in a list in the case of text Set if the parameter can be edited, or just selected from set values in case of text Set a custom suffix to number type parameters, for example if you want to add a parameter for storage capacity it would be weird to have just “500”. 500 potatoes? You can use this to instead show “500 Gb”. Much better ain’t it? In cases of all these three new settings - they are only selectable here and the app saves them, but they are yet to be implemented! Added and edited the main window layout , adding the parameter settings button. And that is about it, hopefully se any one of you around! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added the custom settings from last time + custom parameters adding Devlog #9 for PC Parts Lister Soo as I said last time, I’ve now implemented the following: List option for string type parameters . This allows parameters to load as a selectable list of options, instead of just a text field. Allowing custom list entries . An extension to the list option, which when toggled also allows you to type out your own thing if none from the list suits your need. Custom numbers sufix . Just as I said last time- this enables you to set a custom sufix to number type parameters and will do one simple thing - wherever this parameter is displayed, your sufix will be displayed after the number, so instead of “Capacity: 500”, it will now be “Capacity: 500 GB”. That is ofc if you set the sufix to be GB. Adding custom parameters . Since you could edit current parameters last time, I now gave you the power to make your own parameters. Everything since I’ve began building the expandible system has been preparing for this moment and now it’s here. It took me just a few lines of code to add this, but thanks to the complex system I’ve built custom parameters are supported everywhere in the app. Bugfixes Fixed Possible parameters obtaining values . As simple and unimportant this sounds, Possible parameters act only ONLY as a sort of template. Thus no actual value should be assigned to them. And thanks to a bug in the code this was happening, which broke the app way more than I expected. Fixed filtering-related issues . There were issues where the filtering system would be unable to filter out correctly, despite everything being right. UI fixes , such as scrollbars in places that were missing. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added multi-language support + settings + first README written! You might notice quite some time logged on this one. And let me tell you, you would not believe just how bad a simple mistake can be. I’ll get to this on the end of the devlog, for now let me tell you about the stuff that I’ve added. Added multi-language support . Now all text you see in the app is either dynamically generated based on the things you make, so that’s in your language, or use a key , which is then filled from the decently sized language tables I’ve written. Added English support . Up until now, the entirety of the app has been written in czech, my native language. But since I’ve now added the multi-language support I of course chose english as the first one to add. Now personally I will probably NOT be adding any other languages, as I don’t want to use google translate for them, since I know how choppy it can come out and personally don’t know any other languages on a tier high-enough to trust myself with writing the tables right. If anyone out there would be willing to translate the app into a language they can speak, I’m down! Added settings . Settings is actually a bit of a.. silly name to use here, as there’s only one setting there. Which is of course the language toggle. Written the first README . Now first clarifies only as first for this project, as I’ve written a few of these before, but this project is the largest one I’ve ever made, so it took me quite a bit of time to write this one. I’ll be improving it further, as it’s incomplete so far. And that’s it I think. The awful mistake I’ve made was forgetting to merge the github branches before starting this part and made an absolutely ridiculous amount of issues by that, such as the app mixing old and new codes and other terrible stuff. Outside these, I think that’s all for this one. I’m expecting this to finally be one of the last devlogs before the first ship, as there’s not much blocking me now from shipping. Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Added QOL features, README rewrite, bugfixes & shipping preparations! After all this time- the app is finally entering the final stretch (atleast for its first ship). A pretty thorough testing has been done and I am now quite confident that there’s not much missing. I got some feedback from a friend of mine and used it to add in some things he found missing, soo shoutout to him! Added many warnings and pop-ups throughout the app . In the app there are many settings that if you tweak at the wrong time, or incorrectly you can get yourself into quite some mess. With these warnings it should be more easily preventable. Completely rewrote the README , so that it now includes many images, gifs and most importantly very good documentation of the features. Added translations for more things , such as when parameters are regenerated it is done so in your chosen language. Added watermark text to the add window . Since I’ve heard it multiple times now, that the text box for components name is not intuitive to click on at all this should fix it. Fixed many issues , ranging from parameters saving as their opposite type, to the app crashing just from opening settings. You can read through these in detail in the respective github commits. Ship preparations . I took some time to deal with these things, such as making the app as humanly simple to run as possible, thourough testing, making github releases and writing the README as well as the ship description. And that is probably it here. This is likely the last devlog before shipping, so hopefully see you there! Seeing this project for the first time? This project is a native windows app written in XAML and C#. It aims to make a software that would allow you to note down any pc components you might have lying around (which I doubt are too many people.. xd). The main reason why I am making it is 1) To make this app, as I would personally appreciate something like this and 2) To learn XAML and practice C#. This is my biggest project and I hope that it will help atleast someone one day. It is also my first time ever making any kind of app, instead of games/mods so I learn quite a bunch on this journey. If you find this project cool, or just want to stick with me on this journey be sure to hit the follow, ty!
Ships:
What is this? You are currently looking at a native windows app , written entirely in C# & XAML . The main goal of this app is to make for a pc hardware person like me, keeping track of components I might happen to have laying around a lot easier and incredibly organized, without having to use endless and ugly excel tables. It is my first ever project of this kind, as I’ve been always making games, or mods, but not actual apps. What was challenging/I’m proud of As I said this was the first project of this type I’ve made ever so learning XAML took me some real time and effort. The expandible system and the mark-down style parser are the real “trophies” here, the amount of time and effort they took is just still horryfic to me. But I’m extremely proud of myself for biting through them. Features I’ll only go through some of the most important features, as there’s just many smaller things to cover. You can view all of the features in the github repository’s README file that took me a pretty long time to write and decorate. There are so many features that I can’t even fit them within this posts text limits. Adding, searching up, viewing, editing and deleting Components You can do all of these with any Component. Adding and searching up components is pretty simple, you just click on the gigantic buttons on the window that you will first see. And once you open the search window you can then view in detail, edit and delete the components from there using the dedicated buttons. Mark-down style description parser, writer and viewer. One of the most difficult things I’ve done in this project, as getting it to fully work was really difficult, even more so due to it being my first time having to solve an issue like this. But hey you can: Write in bold , italic , bold-italic and have two different headings styles. See what you’re writing in a preview box placed next to the description writer View the rendered descriptions in the detail window afterwards. Making your own Parameters, as well as editing default ones, or removing them entirely This is the most difficult thing I’ve dealt with throughout the entire project. As let me tell you - rewriting the entire app into architecture where the app itself has no idea what concrete step it’s doing is pure hell. I called this the Expandible system and it revolves mainly around being dynamic and expandable. Instead of having a Component that has a string value for its model, you now have a Component that may, or may not have a Model parameter assigned in its parameters. And that specific Model parameter can hold some value. And now try explaining this to the app. Just hell to deal with. But hey it works and I am super happy with how it turned out. Thanks to it you can: Add your own parameters . You yourself can make any of available rules for it, all using a pretty simply navigatable UI. Edit current parameters just as easily as you can add parameters, you can also edit any parameters and shape them into your liking. Or.. Delete any parameter you now dislike, or have no interest/use for. The UI scales and renders your parameters all throughout the app, based on what parameters you set up. Filtering Components Once again, from any of the parameters you’ve set up you can use them to filter out specific components, using any kind of parameter you decided to add in. Multi-language support In the app settings you can swap out between English (Default) and Czech. And the language is implemented all accross the app. So much so that even the default parameters will be generated in your selected language. Testing and using You can download the app from the latest release on github for Windows 10/11. There is unfortunately no other way to publish this app, since it’s a native windows app. For more detail follow the guide in the README file....
|
1793004489.6726213
|
1793090889.6726213
|
|
48055
|
Mumurpetrichor by @xon172694 | Stardance
|
xon172694
|
1
|
77.0
|
141
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T07:51:41Z", "hours": 77.0, "multiplier": 14.1, "payout": 141, "blessing": "neutral", "text": "i just made it cause i wanted something that actually feels off like a vhs style game with kind of an psycological horror not jumpscare spam shi. the butterfly is the daughter guiding you through stuff its not accurate bcz she aswell is messed up bcz ofcccc she is sick what do you evenm expect a sick little girl to do for you", "repo": "https://github.com/xon172604-bit/Murmurpetrichor", "demo": "https://the-kind-light-37e7ed.gitlab.io/"}]...
|
[{"post_id": 47353, "ts": "202 [{"post_id": 47353, "ts": "2026-08-15T07:35:26Z", "hours": 77.1544, "text": "1—this i my most favourite part of the game and i burnt myself for thisbut i love the end result»» sooo where do we beginnn… alr so this is the end of the whole story you get the moonstone and run for your daughters life the lighting took the most of it i wanted to give it tht pinteresty glow which wasony possible with this guy https://github.com/Zylann/godot_voxel i mean it such an fab tool thanks man and yeahh that gave it to me the stairs part might annoy you bcz it annoyed me aswell but hey its a game and it is supposed to challenging whatever just check it out 2— ok so the entry level, so the thing that took most of the time was the desighn ofthe whole level aswell as the the mechanics desighn: i was really confused about how i should start it and how do i make everything good and nice and a pretty good horror game that someone even likes and thats whr i hit the creators / devs block whatver y call it but them i thought that fu*k it lets just see what already worked and put my own tongue in it so backrooms is what came to my mind and i tried recreating that with my own artistic choices the fuses the keys the all kinda crowbar and stuff mechanics and yeahh i might irritate you with the fact of fining these things i mean they are infront of you but also kinda not so ahppy figuring out ma man the keys an th crowbar and the fuse part: again the thing was that im not A VERY GOOD COER AND SO NEW TO GAME DEV AND THE KEY MECHANICS THE FUSE MECHANICS THE BULKHEAD ALL GOT ME AGAIN BUT WHEN THERE IS A WILL THERE IS A WAY I JUST LAYED OUT THE DESIGHN MESSED WITH MY HEAD, ASKED HELP FROM THESE YT GODOT GODS AND we were so backkkkk the visual context below ik y like visuals mor than these lame azz textsss also there is almond milk in the game incase you get tired Spoiler warning…. if you are finding the last key its over here {hint} so that y give me a lott of gold and make my cpu better so that i make more amazing projects like these babyeee enough context for now 3— ALRR MY VISUALLY MOST FAVOURITE SCENE THIS IS THE SECONG VISUALLY FAV THE FIRST IS YET TO COME…. So the vault scene Moths & mices: these are the two thigs which i learned to animate move aroud and give a little to the environment again meshing them notating them burned me out and heatd me and my hardware both up but eventually it turned out pretty good i used the help of git reps brackeys tuts and also there is this guy named omni gox something he makes really good yt tuts and bcz of these all awsome dudes a little mind of mine and a hecktick amount of trial and error and we diddditttttttttttttt…… 4— Alrrr so now we talk about the house scene and the things that i wporked on…. Fake taxi (fake exit and the real exit*): so the thing was thatafter the player does all the tasks in thisscene then he get two oors and he has to choose between them one is thefake exit which gets him killed and the other one lets him pass through the level wohooo and that stupid thing messed me over bcz im shit at technicalities but again wehave yt the saviour and yeahh we figured it out the problem was that i was not ale to understan how do i link two doors in th same scene to two different places…. i also aaddded cool tables the always biting plant as an metaphor and almod milk for energy just check the game out itlll all make sense for ya…."}]...
|
Title: Mumurpetrichor by @xon172694 | Stardance
D Title: Mumurpetrichor by @xon172694 | Stardance
Devlogs:
1—this i my most favourite part of the game and i burnt myself for thisbut i love the end result»» sooo where do we beginnn… alr so this is the end of the whole story you get the moonstone and run for your daughters life the lighting took the most of it i wanted to give it tht pinteresty glow which wasony possible with this guy https://github.com/Zylann/godot_voxel i mean it such an fab tool thanks man and yeahh that gave it to me the stairs part might annoy you bcz it annoyed me aswell but hey its a game and it is supposed to challenging whatever just check it out 2— ok so the entry level, so the thing that took most of the time was the desighn ofthe whole level aswell as the the mechanics desighn: i was really confused about how i should start it and how do i make everything good and nice and a pretty good horror game that someone even likes and thats whr i hit the creators / devs block whatver y call it but them i thought that fu*k it lets just see what already worked and put my own tongue in it so backrooms is what came to my mind and i tried recreating that with my own artistic choices the fuses the keys the all kinda crowbar and stuff mechanics and yeahh i might irritate you with the fact of fining these things i mean they are infront of you but also kinda not so ahppy figuring out ma man the keys an th crowbar and the fuse part: again the thing was that im not A VERY GOOD COER AND SO NEW TO GAME DEV AND THE KEY MECHANICS THE FUSE MECHANICS THE BULKHEAD ALL GOT ME AGAIN BUT WHEN THERE IS A WILL THERE IS A WAY I JUST LAYED OUT THE DESIGHN MESSED WITH MY HEAD, ASKED HELP FROM THESE YT GODOT GODS AND we were so backkkkk the visual context below ik y like visuals mor than these lame azz textsss also there is almond milk in the game incase you get tired Spoiler warning…. if you are finding the last key its over here {hint} so that y give me a lott of gold and make my cpu better so that i make more amazing projects like these babyeee enough context for now 3— ALRR MY VISUALLY MOST FAVOURITE SCENE THIS IS THE SECONG VISUALLY FAV THE FIRST IS YET TO COME…. So the vault scene Moths & mices: these are the two thigs which i learned to animate move aroud and give a little to the environment again meshing them notating them burned me out and heatd me and my hardware both up but eventually it turned out pretty good i used the help of git reps brackeys tuts and also there is this guy named omni gox something he makes really good yt tuts and bcz of these all awsome dudes a little mind of mine and a hecktick amount of trial and error and we diddditttttttttttttt…… 4— Alrrr so now we talk about the house scene and the things that i wporked on…. Fake taxi (fake exit and the real exit*): so the thing was thatafter the player does all the tasks in thisscene then he get two oors and he has to choose between them one is thefake exit which gets him killed and the other one lets him pass through the level wohooo and that stupid thing messed me over bcz im shit at technicalities but again wehave yt the saviour and yeahh we figured it out the problem was that i was not ale to understan how do i link two doors in th same scene to two different places…. i also aaddded cool tables the always biting plant as an metaphor and almod milk for energy just check the game out itlll all make sense for ya….
Ships:
i just made it cause i wanted something that actually feels off like a vhs style game with kind of an psycological horror not jumpscare spam shi. the butterfly is the daughter guiding you through stuff its not accurate bcz she aswell is messed up bcz ofcccc she is sick what do you evenm expect a sick little girl to do for you...
|
1792878653.7896104
|
1793742653.7896104
|
|
42278
|
Monado Phone Driver by @ttomf | Stardance
|
ttomf
|
3
|
76.94
|
1364
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T16:44:11Z", "hours": 22.0, "multiplier": 19.73, "payout": 430, "blessing": "neutral", "text": "I made Monado Phone Driver - a bridge between VR app and phone in cardboard headset. This allows you to play VR games just with Linux PC and Android phone, without buying expensive VR headset. There are alternatives, like ALVR and WiVRn , but my driver has 6DOF tracking (you can move and rotate in space) and hand tracking (it takes hand landmarks from PC or phone camera). Since last ship, I improved stability, added Android app settings, created auto installer, and mainly tracking from PC camera, because phone has small FOV and limited performance.", "repo": "https://github.com/ttomf/monado-phone", "demo": "https://github.com/ttomf/monado-phone/releases/"}, {"ship_num": 2, "ts": "2026-09-04T08:04:23Z", "hours": 32.0, "multiplier": 19.12, "payout": 609, "blessing": "neutral", "text": "Hi! This is my second ship of this project, Monado Phone Driver. It’s bridge between your VR app and your phone in headset ( Google Cardboard ). I wanted to make it better than ALVR , because it has only 3DOF tracking, so I created 6DOF tracking and hand tracking, like professional headsets. The most challenging part of this was debugging all of these. From Vulkan swapchain management and GStreamer pipeline to hand and 6DOF tracking. I am proud of it, because this will help people without VR headsets to enjoy VR games. NOTE: Hand tracking is done the best possible way, but I think it still doesn’t compete with real VR headsets. Next ship should add better tracking with PC camera.", "repo": "https://github.com/ttomf/monado-phone", "demo": "https://github.com/ttomf/monado-phone/releases/"}, {"ship_num": 3, "ts": "2026-08-05T13:16:21Z", "hours": 19.0, "multiplier": 17.05, "payout": 325, "blessing": "neutral", "text": "Hi! I ship my Monado Phone Driver ! I worked on it for last week and it was really challenging. My vision was to build something with what you can play VR games on phone (with Google Cardboard), like iVRy, but open-source and simple. I worked on streaming pipeline, UDP discovery, pose tracking and gluing it all together with Monado. I hope this will help people that wanted to play VR games without expensive headset.", "repo": "https://github.com/ttomf/monado-phone", "demo": "https://github.com/ttomf/monado-phone/releases/"}]...
|
[{"post_id": 73208, "ts": "202 [{"post_id": 73208, "ts": "2026-09-24T16:33:26Z", "hours": 3.9361, "text": "Hi! So I’m here again after many exams (I didn’t have time and strength to iteratively test this ) and I’m gonna make this better using better Hand Landmarkers and (hopefully) run on Window$."}, {"post_id": 69212, "ts": "2026-09-16T16:31:16Z", "hours": 1.6044, "text": "I think it’s time to new release! I merged upstream, created tag, built app and driver and published on GitHub."}, {"post_id": 68141, "ts": "2026-09-14T16:07:57Z", "hours": 3.4667, "text": "I am working on implementing hand controller using same data as hand tracking does. It also includes the “aim pose” - where does controller point. On video, it’s shown as red line, I take it from the index finger. I hope I will be able to play some better VR games!"}, {"post_id": 66631, "ts": "2026-09-12T14:11:34Z", "hours": 5.8714, "text": "I’ve fixed some bugs and leaks, added more configuration to Android app and created hand tracking vizualization for the PC script. Also, I am working on integrating hands as controllers (because controllers have better support across games)."}, {"post_id": 63611, "ts": "2026-09-07T15:18:52Z", "hours": 3.8808, "text": "YEAH! I have finally done the PC camera hand tracking! It has much better FOV than phone camera and more computing power. It’s just Python script with MediaPipe, sending the data to 127.0.0.1 to hand port, and it has same format, so the driver doesn’t even know the data is sending someone other than phone. You will ofc need to disable phone hand tracking, otherwise they will collide. As you see in the video, I can move the hands far and they still get tracked. (End of the video is when I took off the headset - it was also tracked :D)"}, {"post_id": 62773, "ts": "2026-09-06T09:09:55Z", "hours": 1.3114, "text": "Now I am making just minor changes to the driver as the base is nearly done. I added screen size synchronization with phone, so the driver now can send right stream. Also I am making small bugfixes and improvements."}, {"post_id": 62286, "ts": "2026-09-05T16:11:29Z", "hours": 1.7353, "text": "I added settings on phone, so now you can really configure the ports on both sides! Also there’s option to disable hand tracking or 6DOF (then it will send only rotation of headset)"}, {"post_id": 62060, "ts": "2026-09-05T09:18:28Z", "hours": 3.9211, "text": "I created simple terminal installer in python that downloads and setups Monado Phone Driver. Thanks also for the positive reviews and the 19.12x stardust multiplier — when I started this project, I didn’t think I’d ever finish it :D"}, {"post_id": 61371, "ts": "2026-09-04T07:52:18Z", "hours": 0.4617, "text": "Last devlog before ship! I just merged upstream monado, built release binaries and created GitHub release."}, {"post_id": 61334, "ts": "2026-09-04T06:19:09Z", "hours": 2.1025, "text": "So I finished the hand tracking! I tried to make it as good as possible on a phone, and it looks like it might actually work! Even though I’m limited by the hardware, you can see in the video that it tracks pretty well. (video from openxr-simple-playground )"}, {"post_id": 60746, "ts": "2026-09-03T09:54:46Z", "hours": 5.6369, "text": "I am enhancing hand tracking now, and it’s starting to look good! Here is how: I use MediaPipe by Google to analyze image from front camera. MediaPipe Hand Landmarker returns hand landmarks in camera-relative format in two dimensions, so I need to make depth (z-coordinate). I measure distance between wrist and fingers, in 2D space this means distance from camera (the farther away they are, the smaller they get). Now, they are 3D, but still relative to camera. Then I simply send both hands as UDP packet for the driver. The driver (PC side) computes real-world coordinates of the hands using saved earlier sent from ARCore and pushes them into Monado."}, {"post_id": 59610, "ts": "2026-09-01T15:01:51Z", "hours": 6.9739, "text": "I worked hard on both the Android app and the Monado driver and finally: I have working hand tracking! It is very laggy, needs many optimizations, and isn’t even in alpha state yet, but I can see that it is possible to do it. This was my dream when I began this project, and finally, it has come true. I hope it will help many people who cannot afford a professional headset :D"}, {"post_id": 58719, "ts": "2026-08-31T08:20:00Z", "hours": 2.2467, "text": "So today I finished image settings (you can configure them in the config file). They control how the image is rendered, because every headset has different lenses, distance between lenses, distance from screen to lenses etc. To find your headset’s properties, go to https://wwgc.firebaseapp.com/ ."}, {"post_id": 58171, "ts": "2026-08-30T15:09:22Z", "hours": 3.5397, "text": "I created new TCP socket logic for configuration sharing and added logic for loading configuration file. Now I am trying to change the x265enc software encoding to something faster on GPU. Unfortunately, nvenc (nvidia encoding) is really hard to configure properly, as you can see for yourselves."}, {"post_id": 57515, "ts": "2026-08-29T17:59:31Z", "hours": 9.2639, "text": "Phew, I almost went over the time limit (10 hours) :D I tried to get it running on Windows, and I partially succeeded, but it’s still not stable. Aside from that, I mostly cleaned up the code, improved usability, and removed unnecessary modules from CMake. Now I’m working on an improved distortion using Monado’s u_distortion_cardboard_calculate (cardboard stands for Google Cardboard btw) And one more thing: thanks to everyone for the positive feedback on the project — I really didn’t expect that!"}, {"post_id": 46899, "ts": "2026-08-14T13:22:12Z", "hours": 1.6314, "text": "Since nobody reviewed my submission, I don’t want to add more features, so I only updated the README and made small changes to the app. If anyone wants to play VR games on their phone, they can just download the files from Releases and run them without hard compiling!"}, {"post_id": 41279, "ts": "2026-08-05T12:09:23Z", "hours": 6.8658, "text": "Devlog 4 : I replaced boilerplate LLM code with my own. I also wrote README with instructions, so you can now try it!"}, {"post_id": 40628, "ts": "2026-08-04T09:25:23Z", "hours": 0.6022, "text": "I am making minor adjustments to run with SteamVR. I use opencomposite as layer between OpenXR and OpenVR/SteamVR. Video is phone screencap from free Steam game “Aircar”."}, {"post_id": 39990, "ts": "2026-08-03T10:37:11Z", "hours": 3.0761, "text": "Devlog 3 : I made 6DOF (6 degrees of freedom = position+rotation in space) tracking with ARCore. It’s a bit laggy, but it works. This is just test, I plan to optimize it later. Video is from xrgears with looking around."}, {"post_id": 39422, "ts": "2026-08-02T11:32:08Z", "hours": 1.5058, "text": "Devlog 2 : Finally I made working streaming pipeline! My driver takes image from Monado, gstreamer encodes it and sends via UDP. On phone, there is AMediaCodec that takes the packets, joins them and renders. Used codec is HEVC (H265). Video is from xrgears demo."}, {"post_id": 38950, "ts": "2026-08-01T15:47:39Z", "hours": 4.6072, "text": "So now I’m basically stuck. Three hours of debugging the streaming pipeline, refractoring with Opencode and trying to make it work. As you see, even Deepseek is struggling with it… Wish me luck 🤞"}, {"post_id": 38092, "ts": "2026-07-31T09:43:03Z", "hours": 2.3839, "text": "Hi! So I have started this project because I want to play VR games, but I don’t have any headset, only Google Cardboard. I know there is ALVR and iVRy, but: ALVR doesn’t have support for hand tracking and 6DOF iVRy is closed-source and wants to pay Sorry, but I don’t plan to add Windows support soon. Devlog 1 : I forked Monado and made some bureaucracy (like adding my driver to CMakeLists.txt etc.) I made simple Android app that pairs over UDP multicast with my driver. The image is from editor, because I don’t have anything interesting to post (except maybe positive logs 😁)"}]...
|
Title: Monado Phone Driver by @ttomf | Stardance
Title: Monado Phone Driver by @ttomf | Stardance
Devlogs:
Hi! So I have started this project because I want to play VR games, but I don’t have any headset, only Google Cardboard. I know there is ALVR and iVRy, but: ALVR doesn’t have support for hand tracking and 6DOF iVRy is closed-source and wants to pay Sorry, but I don’t plan to add Windows support soon. Devlog 1 : I forked Monado and made some bureaucracy (like adding my driver to CMakeLists.txt etc.) I made simple Android app that pairs over UDP multicast with my driver. The image is from editor, because I don’t have anything interesting to post (except maybe positive logs 😁)
So now I’m basically stuck. Three hours of debugging the streaming pipeline, refractoring with Opencode and trying to make it work. As you see, even Deepseek is struggling with it… Wish me luck 🤞
Devlog 2 : Finally I made working streaming pipeline! My driver takes image from Monado, gstreamer encodes it and sends via UDP. On phone, there is AMediaCodec that takes the packets, joins them and renders. Used codec is HEVC (H265). Video is from xrgears demo.
Devlog 3 : I made 6DOF (6 degrees of freedom = position+rotation in space) tracking with ARCore. It’s a bit laggy, but it works. This is just test, I plan to optimize it later. Video is from xrgears with looking around.
I am making minor adjustments to run with SteamVR. I use opencomposite as layer between OpenXR and OpenVR/SteamVR. Video is phone screencap from free Steam game “Aircar”.
Devlog 4 : I replaced boilerplate LLM code with my own. I also wrote README with instructions, so you can now try it!
Since nobody reviewed my submission, I don’t want to add more features, so I only updated the README and made small changes to the app. If anyone wants to play VR games on their phone, they can just download the files from Releases and run them without hard compiling!
Phew, I almost went over the time limit (10 hours) :D I tried to get it running on Windows, and I partially succeeded, but it’s still not stable. Aside from that, I mostly cleaned up the code, improved usability, and removed unnecessary modules from CMake. Now I’m working on an improved distortion using Monado’s u_distortion_cardboard_calculate (cardboard stands for Google Cardboard btw) And one more thing: thanks to everyone for the positive feedback on the project — I really didn’t expect that!
I created new TCP socket logic for configuration sharing and added logic for loading configuration file. Now I am trying to change the x265enc software encoding to something faster on GPU. Unfortunately, nvenc (nvidia encoding) is really hard to configure properly, as you can see for yourselves.
So today I finished image settings (you can configure them in the config file). They control how the image is rendered, because every headset has different lenses, distance between lenses, distance from screen to lenses etc. To find your headset’s properties, go to https://wwgc.firebaseapp.com/ .
I worked hard on both the Android app and the Monado driver and finally: I have working hand tracking! It is very laggy, needs many optimizations, and isn’t even in alpha state yet, but I can see that it is possible to do it. This was my dream when I began this project, and finally, it has come true. I hope it will help many people who cannot afford a professional headset :D
I am enhancing hand tracking now, and it’s starting to look good! Here is how: I use MediaPipe by Google to analyze image from front camera. MediaPipe Hand Landmarker returns hand landmarks in camera-relative format in two dimensions, so I need to make depth (z-coordinate). I measure distance between wrist and fingers, in 2D space this means distance from camera (the farther away they are, the smaller they get). Now, they are 3D, but still relative to camera. Then I simply send both hands as UDP packet for the driver. The driver (PC side) computes real-world coordinates of the hands using saved earlier sent from ARCore and pushes them into Monado.
So I finished the hand tracking! I tried to make it as good as possible on a phone, and it looks like it might actually work! Even though I’m limited by the hardware, you can see in the video that it tracks pretty well. (video from openxr-simple-playground )
Last devlog before ship! I just merged upstream monado, built release binaries and created GitHub release.
I created simple terminal installer in python that downloads and setups Monado Phone Driver. Thanks also for the positive reviews and the 19.12x stardust multiplier — when I started this project, I didn’t think I’d ever finish it :D
I added settings on phone, so now you can really configure the ports on both sides! Also there’s option to disable hand tracking or 6DOF (then it will send only rotation of headset)
Now I am making just minor changes to the driver as the base is nearly done. I added screen size synchronization with phone, so the driver now can send right stream. Also I am making small bugfixes and improvements.
YEAH! I have finally done the PC camera hand tracking! It has much better FOV than phone camera and more computing power. It’s just Python script with MediaPipe, sending the data to 127.0.0.1 to hand port, and it has same format, so the driver doesn’t even know the data is sending someone other than phone. You will ofc need to disable phone hand tracking, otherwise they will collide. As you see in the video, I can move the hands far and they still get tracked. (End of the video is when I took off the headset - it was also tracked :D)
I’ve fixed some bugs and leaks, added more configuration to Android app and created hand tracking vizualization for the PC script. Also, I am working on integrating hands as controllers (because controllers have better support across games).
I am working on implementing hand controller using same data as hand tracking does. It also includes the “aim pose” - where does controller point. On video, it’s shown as red line, I take it from the index finger. I hope I will be able to play some better VR games!
I think it’s time to new release! I merged upstream, created tag, built app and driver and published on GitHub.
Hi! So I’m here again after many exams (I didn’t have time and strength to iteratively test this ) and I’m gonna make this better using better Hand Landmarkers and (hopefully) run on Window$.
Ships:
Hi! I ship my Monado Phone Driver ! I worked on it for last week and it was really challenging. My vision was to build something with what you can play VR games on phone (with Google Cardboard), like iVRy, but open-source and simple. I worked on streaming pipeline, UDP discovery, pose tracking and gluing it all together with Monado. I hope this will help people that wanted to play VR games without expensive headset.
Hi! This is my second ship of this project, Monado Phone Driver. It’s bridge between your VR app and your phone in headset ( Google Cardboard ). I wanted to make it better than ALVR , because it has only 3DOF tracking, so I created 6DOF tracking and hand tracking, like professional headsets. The most challenging part of this was debugging all of these. From Vulkan swapchain management and GStreamer pipeline to hand and 6DOF tracking. I am proud of it, because this will help people without VR headsets to enjoy VR games. NOTE: Hand tracking is done the best possible way, but I think it still doesn’t compete with real VR headsets. Next ship should add better tracking with PC camera.
I made Monado Phone Driver - a bridge between VR app and phone in cardboard headset. This allows you to play VR games just with Linux PC and Android phone, without buying expensive VR headset. There are alternatives, like ALVR and WiVRn , but my driver has 6DOF tracking (you can move and rotate in space) and hand tracking (it takes hand landmarks from PC or phone camera). Since last ship, I improved stability, added Android app settings, created auto installer, and mainly tracking from PC camera, because phone has small FOV and limited performance....
|
1792986625.0380526
|
1793073025.0380526
|
|
3856
|
Super Beach Ball by @Olebsbo | Stardance
|
Olebsbo
|
1
|
76.27
|
1455
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T00:41:48Z", "hours": 76.0, "multiplier": 19.15, "payout": 1455, "blessing": "neutral", "text": "This is the ship for my beach volleyball game! :D I’m really proud of this project. I had to learn so many new things about UI, music, SFX, and other things that I just never got around to in my previous projects because I never reached the point where I could actually release my previous games. I struggled a lot with these things at first, but now I really think that I can make them all work well in my future projects! I should probably mention a few things (this might be a bit long, but please try to read it, the itch.io page also has some of the same info but this one is probably better for people specifically coming from Stardance) First of all, while the game is available to play in the browser, it seems that the lighting and particles get messed up. I think it is because of Godot’s way of exporting to HTML (I think it has to downgrade the graphics a bit to make it work properly), so unfortunately, if you do play it in browser you will have to deal with some weird lighting. The particles can be turned off in the options menu. The downloaded version is just fine, so if you can use that, that would be great! Although, I perfectly understand if you don’t want to download from a random stranger on the internet, and I haven’t tested the Mac or Linux versions (look at the download info on the itch.io page for more). Second, while I have tested the game with my friends, I’m still very uncertain about how effective the tutorial is. I believe that it should be fine if you read through carefully. If you find it confusing, then I sincerely apologize and hope you don’t take it to represent the entire game, and you can tell me what you found difficult. Also, the game is WAY more fun when you play with friends/family! Like, seriously, get someone to go through the tutorial and play with you. The competitiveness makes it so much more enjoyable! And if you’re friends can’t play with you at the moment, then playing against the AI can still be fun. If there are any bugs, please tell me! Just give me the situation that it happened in and what the bug actually was. And finally, thank you for trying my game! I worked very hard on it, and I’m really glad that it turned out the way it did! And if you don’t like it… uhhh please don’t cook the rating ⊙﹏⊙∥ remember to rate fairly!", "repo": "https://github.com/Olebsbo/SuperBeachBall", "demo": "https://olebsbo.itch.io/super-beach-ball"}]...
|
[{"post_id": 28064, "ts": "202 [{"post_id": 28064, "ts": "2026-07-14T02:48:17Z", "hours": 0.2658, "text": "I’ve made some really quick QOL adjustments to my game! It was some pretty basic stuff that I just didn’t account for previously because I just didn’t think of it before. Some changes include: Trying to account for weird resolutions (not 16:9) by adding black bars to the side (cannot confirm if it works yet) Adding additional information to the itch.io page to remind people about the tutorial and to mention that there might be some lag at the start of the web version Sorry I had to add this after the ship, but these changes were really simple and important, so I just felt like I had to! Also, I’d assume that this isn’t considered fraud or anything because it’s just a quick QOL update after the ship that doesn’t change anything major, just makes the experience better for players, and actual games do these kinds of emergency updates all the time. Also, I haven’t seen anything about this kind of thing being a possible problem. IF YOU ARE RATING , could you please take this information into account as well? It isn’t included in the ship information, but this info is also important."}, {"post_id": 27436, "ts": "2026-07-13T00:13:54Z", "hours": 1.4775, "text": "This is my final devlog! I’ve posted the itch.io page! And then itch went down for a couple minutes… But I should be ready to ship now. If you’d like, you should be able to play the game now! Thanks for reading!"}, {"post_id": 26372, "ts": "2026-07-11T03:49:25Z", "hours": 1.8675, "text": "I’m finally finished with my beach volleyball game! (Hopefully) I’ve pretty much just been touching up on some small things like making the background look a bit more interesting and adjusting some variables to make playing the game more intuitive. It’s basically done now! I plan on playtesting it one more time, and then after that I may do some minor adjustments, but the actual game is complete and I don’t plan on changing any of the gameplay anymore. I’ve been working on this project for 75 hours now, and I’m really proud of it; hopefully the next devlog will be the final one! :D"}, {"post_id": 25683, "ts": "2026-07-10T03:24:15Z", "hours": 4.0469, "text": "I’m actually getting pretty close to being done with my beach volleyball game! q(≧▽≦q) I’m done with the music for the win screen. I’ve also added a couple of small details like some boats and birds in the background to make the ocean look a little less empty, and some general bug fixing stuff. I also changed the volleyball color slightly because I kinda realized that it looks too much like a Mikasa volleyball and while I think I’ll be fine I don’t want to get sued (´。_。`) In general, I’m pretty close to being done! I think I’ll keep on working on touching up some small things, but I should be ready to ship soon!"}, {"post_id": 25140, "ts": "2026-07-09T05:08:14Z", "hours": 7.6383, "text": "I’ve done some more work on the music for my beach volleyball game! I think that I’m pretty much done with the main menu theme and the gameplay theme. I just have to do the win screen music now, and I think I have a pretty good idea of how I want it to sound. I think the music could definitely be better, but since I don’t do this kind of thing much, I’m pretty happy with how it’s come out!"}, {"post_id": 23831, "ts": "2026-07-07T00:15:23Z", "hours": 9.4881, "text": "I’ve been working on a bunch of polishing for my beach volleyball game! Now there’s a bunch of particle effects! There’s wind and leaf particles in the background that appear in random quantities. As the game progresses, the amount of each slowly increases so it looks like the game is getting really intense. I included a screenshot below of me testing the particles with godot icons as placeholders, and I think it looks pretty goofy. There’s also sand particles when the players move. Also, I’ve made it so that after 10 rallies, the ball starts moving faster to challenge high level players. It also gets set on fire and becomes more and more red as it gets faster, because fire is pretty cool :D Finally, I’ve been working a bit on the audio side of things. I’m a beginner at making music and sound effects, so I don’t think they’ll be too good, but I think that it’s good to try anyways and learn!"}, {"post_id": 21922, "ts": "2026-07-04T03:24:21Z", "hours": 4.9758, "text": "I got some good feedback from some playtesters, and I’ve added some solid changes to my beach volleyball game! There’s now a tutorial manual in the menu! I found that the actual interactive tutorial can be a bit difficult in terms of fully conveying the game’s rules to the player, so I decided that a tutorial manual for some of the more complicated things would be best. I also made a couple of small changes, like adding an indicator to show which character the player is controlling and fixing some smaller bugs, like how the ball used to detect multiple spikes if you spammed the spike button. There weren’t too many major changes, but I think that I’m definitely getting toward a more polished experience now :)"}, {"post_id": 20481, "ts": "2026-07-02T02:44:56Z", "hours": 5.6242, "text": "I’ve started work on a tutorial for my beach volleyball game! I’m not gonna lie, my game is WAY harder to explain than I thought it would be 😅. Making a tutorial was pretty weird because a lot of the rules and whatnot would be pretty confusing for somebody who’s never seen volleyball being played before. I’ve tried to make the tutorial as interactive as I could, but some things are just not very easy to show and I have to use a bunch of text to explain them. I’ll have to test the tutorial on some of my friends for now, but I think it’s a good start."}, {"post_id": 19700, "ts": "2026-07-01T02:54:53Z", "hours": 3.5767, "text": "I think I’ve finally got a good end screen for my beach volleyball game! It took a while, but I think I’ve got something I’m pretty happy with! I might work on it a bit more in future, but for now I think that it works well enough. There’s currently two randomized animations that the winning team might do, and I’ve shown an example of each below in the screenshot and the screen recording respectively."}, {"post_id": 18950, "ts": "2026-06-30T04:02:23Z", "hours": 4.53, "text": "I’ve been working some more on my beach volleyball game… Do you know that thing where people say that making something only takes 20% of the time but making it good takes 80% of the time? Yeah… I’ve been working on the game end screen for like 3 hours now and I just can’t get it to look right. The screenshot below is what I got after like 5 different prototypes and is nowhere near done. A lot of the effects that I’m trying to add seem to not work very well with Godot’s control nodes either, so they looked pretty jittery when I tried to set them up. Thankfully, I did get something good done! You can now access a menu during a match which allows you to adjust settings or leave the match and go back to the main menu."}, {"post_id": 16630, "ts": "2026-06-27T01:36:36Z", "hours": 2.4983, "text": "I finally got around to adding local PVP! So far, you’ve only been able to play against an AI, but I’ve made it so that there’s an option to select local PVP now, and it actually works! The left team is controlled by WASD, and the right team is controlled by the arrow keys. It honestly took way longer to implement than I thought. Maybe I shouldn’t have made so much spaghetti code… (▔﹏▔) I had to fix so many dependencies that I made initially just to set up the gameplay quickly. Really, it probably should have taken like 10 minutes since I already had all the logic down for player movement and gameplay. Still, I was able to finish it in the end. I won’t be able to work on this project for a bit since I’ll be out over the weekend, but I’ve definitely got a good idea of what I’ll be doing next!"}, {"post_id": 16069, "ts": "2026-06-26T03:43:29Z", "hours": 5.6756, "text": "I’ve finally set up a main menu for my beach volleyball game! Honestly, it might look a bit too good, because now the actual gameplay feels like it needs to be way better (┬┬﹏┬┬) But really, I’m proud of how it looks because I’ve never done a main menu before. The buttons are super satisfying to hover over, and in general, I think it looks really professional now. Plus, it worked almost first try! ( with the help of a couple youtube tutorials, but the slide in and hover animations of the buttons, as well as a bunch of other styling choices were all done by me! )"}, {"post_id": 15698, "ts": "2026-06-25T15:01:43Z", "hours": 10.4783, "text": "I’ve made some great progress on my beach volleyball game! Now you’re actually playing on a beach! It looks a bit empty though… I’ll probably add more to it later. I’ve also been working on making the game feel good. I added a bit of screenshake whenever the ball gets hit. I’ve also made it so that the camera zooms in when the ball gets hit up. There’s also a diamond transition and a score counter whenever a point is scored. Finally, bug fixing! Originally, if the ball hit the top of the net, the AI would think that the ball had hit the ground and would stop playing, but the ball is technically still in play. To fix this, I changed it so that the AI would recalculate where to move if the ball has substantially changed its trajectory, i.e. the ball bounces off the net, so it lands somewhere that wasn’t where it originally thought it would land. Also, I encountered a pretty funny bug while making it so that the ball would spin when it gets hit. It turns out you shouldn’t make a 2D sprite rotate in ALL directions! (screenshot below) Overall, I’m pretty happy with how things are going. I plan to continue polishing the game up as much as possible, so I don’t think I’ll be shipping for a while. Still, I think it should all be worth it!"}, {"post_id": 13923, "ts": "2026-06-22T20:39:01Z", "hours": 3.4772, "text": "I’ve gotten a lot of work done on my beach volleyball game! I’ve finished up all the animations, so all the player characters are actually moving and stuff. I also added some sprites for the net and the ball, so they actually look pretty nice now. I’ve also added a couple of effects to make the game a lot more interesting to look at as well as a lot more balanced. I noticed that it’s pretty much impossible to react to the enemy spikes instantly, so I added a small pause whenever one of the players spike or receive, both of which look really cool as well as make the game a lot more reasonable to play. I also made it so that the camera moves a little to follow the ball. All in all, I think that I’m on a good track to make a really solid finished product! I should probably also mention that the little blue outlines in the screenshot and the recording are debug lines to see collisions and raycasts. They’re not going to be there in the final game, they’re only there for testing. They do look pretty cool tho :p"}, {"post_id": 12886, "ts": "2026-06-21T03:23:01Z", "hours": 4.7542, "text": "I’ve finally got some player art for my beach volleyball game! I still need to set up animations though… still, I’ve got all the frames that I need, and I’ve already begun setting up animations for one of the player characters. I’m still balancing the actual gameplay, but I think that it should all be in a good state soon!"}, {"post_id": 12328, "ts": "2026-06-20T03:32:35Z", "hours": 4.41, "text": "I’ve been working some more on my beach volleyball game. Now you can play against an AI! It took me ages to figure out how to make the AI move exactly to the right location to hit the ball, but I was able to finally figure it out using a bunch of parabola equations (high school physics finally coming in clutch). Lowkey, the AI is way better at my game than me though😭 I’ll probably be able to work on some proper art soon, but for now I’m pretty satisfied with how things have turned out! Also, if you know how actual volleyball works, you probably know that people usually serve after the receive. I considered doing this, but I figured it would just complicate things, so I kept it at just a receive and a spike. And yes, I did in fact make this game because I loved the anime Haikyuu! (you should watch it too) BTW, I’m trying to upload a screen recording here, but I’m not completely sure if it will work or not. If it doesn’t, please tell me how I can make it work, and I’ll post an updated devlog."}, {"post_id": 11685, "ts": "2026-06-19T01:16:02Z", "hours": 1.4906, "text": "WHY IS HE GETTING CLOSER?!?! I’m working on a beach volleyball game. The game has 2D graphics, but I plan on making the background 3D, so the game uses 3D physics. It turns out that if you leave the Z position of the player a little off, they start sliding towards the camera. I’m still working on prototyping, so art isn’t final, but I’ve already set up a ball (the purple godot icon) that bounces and can be hit, so I should have something functional soon!"}, {"post_id": 1216, "ts": "2026-06-03T02:20:24Z", "hours": 0.4764, "text": "Just started, I’ve got a simple 3d scene set up for now with basic movement, I’m planning on eventually making it into a 2d beach volleyball game with 3d graphics (probably will have to get through finals week first tho). Should be pretty cool!"}]...
|
Title: Super Beach Ball by @Olebsbo | Stardance
D Title: Super Beach Ball by @Olebsbo | Stardance
Devlogs:
Just started, I’ve got a simple 3d scene set up for now with basic movement, I’m planning on eventually making it into a 2d beach volleyball game with 3d graphics (probably will have to get through finals week first tho). Should be pretty cool!
WHY IS HE GETTING CLOSER?!?! I’m working on a beach volleyball game. The game has 2D graphics, but I plan on making the background 3D, so the game uses 3D physics. It turns out that if you leave the Z position of the player a little off, they start sliding towards the camera. I’m still working on prototyping, so art isn’t final, but I’ve already set up a ball (the purple godot icon) that bounces and can be hit, so I should have something functional soon!
I’ve been working some more on my beach volleyball game. Now you can play against an AI! It took me ages to figure out how to make the AI move exactly to the right location to hit the ball, but I was able to finally figure it out using a bunch of parabola equations (high school physics finally coming in clutch). Lowkey, the AI is way better at my game than me though😭 I’ll probably be able to work on some proper art soon, but for now I’m pretty satisfied with how things have turned out! Also, if you know how actual volleyball works, you probably know that people usually serve after the receive. I considered doing this, but I figured it would just complicate things, so I kept it at just a receive and a spike. And yes, I did in fact make this game because I loved the anime Haikyuu! (you should watch it too) BTW, I’m trying to upload a screen recording here, but I’m not completely sure if it will work or not. If it doesn’t, please tell me how I can make it work, and I’ll post an updated devlog.
I’ve finally got some player art for my beach volleyball game! I still need to set up animations though… still, I’ve got all the frames that I need, and I’ve already begun setting up animations for one of the player characters. I’m still balancing the actual gameplay, but I think that it should all be in a good state soon!
I’ve gotten a lot of work done on my beach volleyball game! I’ve finished up all the animations, so all the player characters are actually moving and stuff. I also added some sprites for the net and the ball, so they actually look pretty nice now. I’ve also added a couple of effects to make the game a lot more interesting to look at as well as a lot more balanced. I noticed that it’s pretty much impossible to react to the enemy spikes instantly, so I added a small pause whenever one of the players spike or receive, both of which look really cool as well as make the game a lot more reasonable to play. I also made it so that the camera moves a little to follow the ball. All in all, I think that I’m on a good track to make a really solid finished product! I should probably also mention that the little blue outlines in the screenshot and the recording are debug lines to see collisions and raycasts. They’re not going to be there in the final game, they’re only there for testing. They do look pretty cool tho :p
I’ve made some great progress on my beach volleyball game! Now you’re actually playing on a beach! It looks a bit empty though… I’ll probably add more to it later. I’ve also been working on making the game feel good. I added a bit of screenshake whenever the ball gets hit. I’ve also made it so that the camera zooms in when the ball gets hit up. There’s also a diamond transition and a score counter whenever a point is scored. Finally, bug fixing! Originally, if the ball hit the top of the net, the AI would think that the ball had hit the ground and would stop playing, but the ball is technically still in play. To fix this, I changed it so that the AI would recalculate where to move if the ball has substantially changed its trajectory, i.e. the ball bounces off the net, so it lands somewhere that wasn’t where it originally thought it would land. Also, I encountered a pretty funny bug while making it so that the ball would spin when it gets hit. It turns out you shouldn’t make a 2D sprite rotate in ALL directions! (screenshot below) Overall, I’m pretty happy with how things are going. I plan to continue polishing the game up as much as possible, so I don’t think I’ll be shipping for a while. Still, I think it should all be worth it!
I’ve finally set up a main menu for my beach volleyball game! Honestly, it might look a bit too good, because now the actual gameplay feels like it needs to be way better (┬┬﹏┬┬) But really, I’m proud of how it looks because I’ve never done a main menu before. The buttons are super satisfying to hover over, and in general, I think it looks really professional now. Plus, it worked almost first try! ( with the help of a couple youtube tutorials, but the slide in and hover animations of the buttons, as well as a bunch of other styling choices were all done by me! )
I finally got around to adding local PVP! So far, you’ve only been able to play against an AI, but I’ve made it so that there’s an option to select local PVP now, and it actually works! The left team is controlled by WASD, and the right team is controlled by the arrow keys. It honestly took way longer to implement than I thought. Maybe I shouldn’t have made so much spaghetti code… (▔﹏▔) I had to fix so many dependencies that I made initially just to set up the gameplay quickly. Really, it probably should have taken like 10 minutes since I already had all the logic down for player movement and gameplay. Still, I was able to finish it in the end. I won’t be able to work on this project for a bit since I’ll be out over the weekend, but I’ve definitely got a good idea of what I’ll be doing next!
I’ve been working some more on my beach volleyball game… Do you know that thing where people say that making something only takes 20% of the time but making it good takes 80% of the time? Yeah… I’ve been working on the game end screen for like 3 hours now and I just can’t get it to look right. The screenshot below is what I got after like 5 different prototypes and is nowhere near done. A lot of the effects that I’m trying to add seem to not work very well with Godot’s control nodes either, so they looked pretty jittery when I tried to set them up. Thankfully, I did get something good done! You can now access a menu during a match which allows you to adjust settings or leave the match and go back to the main menu.
I think I’ve finally got a good end screen for my beach volleyball game! It took a while, but I think I’ve got something I’m pretty happy with! I might work on it a bit more in future, but for now I think that it works well enough. There’s currently two randomized animations that the winning team might do, and I’ve shown an example of each below in the screenshot and the screen recording respectively.
I’ve started work on a tutorial for my beach volleyball game! I’m not gonna lie, my game is WAY harder to explain than I thought it would be 😅. Making a tutorial was pretty weird because a lot of the rules and whatnot would be pretty confusing for somebody who’s never seen volleyball being played before. I’ve tried to make the tutorial as interactive as I could, but some things are just not very easy to show and I have to use a bunch of text to explain them. I’ll have to test the tutorial on some of my friends for now, but I think it’s a good start.
I got some good feedback from some playtesters, and I’ve added some solid changes to my beach volleyball game! There’s now a tutorial manual in the menu! I found that the actual interactive tutorial can be a bit difficult in terms of fully conveying the game’s rules to the player, so I decided that a tutorial manual for some of the more complicated things would be best. I also made a couple of small changes, like adding an indicator to show which character the player is controlling and fixing some smaller bugs, like how the ball used to detect multiple spikes if you spammed the spike button. There weren’t too many major changes, but I think that I’m definitely getting toward a more polished experience now :)
I’ve been working on a bunch of polishing for my beach volleyball game! Now there’s a bunch of particle effects! There’s wind and leaf particles in the background that appear in random quantities. As the game progresses, the amount of each slowly increases so it looks like the game is getting really intense. I included a screenshot below of me testing the particles with godot icons as placeholders, and I think it looks pretty goofy. There’s also sand particles when the players move. Also, I’ve made it so that after 10 rallies, the ball starts moving faster to challenge high level players. It also gets set on fire and becomes more and more red as it gets faster, because fire is pretty cool :D Finally, I’ve been working a bit on the audio side of things. I’m a beginner at making music and sound effects, so I don’t think they’ll be too good, but I think that it’s good to try anyways and learn!
I’ve done some more work on the music for my beach volleyball game! I think that I’m pretty much done with the main menu theme and the gameplay theme. I just have to do the win screen music now, and I think I have a pretty good idea of how I want it to sound. I think the music could definitely be better, but since I don’t do this kind of thing much, I’m pretty happy with how it’s come out!
I’m actually getting pretty close to being done with my beach volleyball game! q(≧▽≦q) I’m done with the music for the win screen. I’ve also added a couple of small details like some boats and birds in the background to make the ocean look a little less empty, and some general bug fixing stuff. I also changed the volleyball color slightly because I kinda realized that it looks too much like a Mikasa volleyball and while I think I’ll be fine I don’t want to get sued (´。_。`) In general, I’m pretty close to being done! I think I’ll keep on working on touching up some small things, but I should be ready to ship soon!
I’m finally finished with my beach volleyball game! (Hopefully) I’ve pretty much just been touching up on some small things like making the background look a bit more interesting and adjusting some variables to make playing the game more intuitive. It’s basically done now! I plan on playtesting it one more time, and then after that I may do some minor adjustments, but the actual game is complete and I don’t plan on changing any of the gameplay anymore. I’ve been working on this project for 75 hours now, and I’m really proud of it; hopefully the next devlog will be the final one! :D
This is my final devlog! I’ve posted the itch.io page! And then itch went down for a couple minutes… But I should be ready to ship now. If you’d like, you should be able to play the game now! Thanks for reading!
I’ve made some really quick QOL adjustments to my game! It was some pretty basic stuff that I just didn’t account for previously because I just didn’t think of it before. Some changes include: Trying to account for weird resolutions (not 16:9) by adding black bars to the side (cannot confirm if it works yet) Adding additional information to the itch.io page to remind people about the tutorial and to mention that there might be some lag at the start of the web version Sorry I had to add this after the ship, but these changes were really simple and important, so I just felt like I had to! Also, I’d assume that this isn’t considered fraud or anything because it’s just a quick QOL update after the ship that doesn’t change anything major, just makes the experience better for players, and actual games do these kinds of emergency updates all the time. Also, I haven’t seen anything about this kind of thing being a possible problem. IF YOU ARE RATING , could you please take this information into account as well? It isn’t included in the ship information, but this info is also important.
Ships:
This is the ship for my beach volleyball game! :D I’m really proud of this project. I had to learn so many new things about UI, music, SFX, and other things that I just never got around to in my previous projects because I never reached the point where I could actually release my previous games. I struggled a lot with these things at first, but now I really think that I can make them all work well in my future projects! I should probably mention a few things (this might be a bit long, but please try to read it, the itch.io page also has some of the same info but this one is probably better for people specifically coming from Stardance) First of all, while the game is available to play in the browser, it seems that the lighting and particles get messed up. I think it is because of Godot’s way of exporting to HTML (I think it has to downgrade the graphics a bit to make it work properly), so unfortunately, if you do play it in browser you will have to deal with some weird lighting. The particles can be turned off in the options menu. The downloaded version is just fine, so if you can use that, that would be great! Although, I perfectly understand if you don’t want to download from a random stranger on the internet, and I haven’t tested the Mac or Linux versions (look at the download info on the itch.io page for more). Second, while I have tested the game with my friends, I’m still very uncertain about how effective the tutorial is. I believe that it should be fine if you read through carefully. If you find it confusing, then I sincerely apologize and hope you don’t take it to represent the entire game, and you can tell me what you found difficult. Also, the game is WAY more fun when you play with friends/family! Like, seriously, get someone to go through the tutorial and play with you. The competitiveness makes it so much more enjoyable! And if you’re friends can’t play with you at the moment, then playing against the AI can still be fun. If there are any bugs, please tell me! Just give me the situation that it happened in and what the bug actually was. And finally, thank you for trying my game! I worked very hard on it, and I’m really glad that it turned out the way it did! And if you don’t like it… uhhh please don’t cook the rating ⊙﹏⊙∥ remember to rate fairly!...
|
1793083837.413625
|
1793170237.413625
|
|
41271
|
Fleer by @johan | Stardance
|
johan
|
1
|
76.21
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T21:52:34Z", "hours": 64.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "School is coming back soon, Stardance may be ending tomorrow, and I’m currently at 15% of what I want to do. I got an entire planning on Linear on what to do now. Fleer is a toxic-love project for me because of the numbers of issues I encountered, but I still want it to be done so bad. And yeah, I know testing is kinda hard now, I can’t publish an hosted testing instance so you will need to host it yourself (just one 30 MB Docker image to compile on any system and any architecture).", "repo": "https://github.com/johan-perso/fleer-relay", "demo": "https://github.com/johan-perso/fleer-cli#installation"}]...
|
[{"post_id": 81085, "ts": "202 [{"post_id": 81085, "ts": "2026-10-19T20:04:48Z", "hours": 4.6358, "text": "Fleer is a decentralized platform, meaning anyone can host one or multiple relay servers. This devlog brings this concept even more to the Fleer CLI. Three lists of relay servers are hosted (on the GitHub repo, on my main website, and obviously on the Fleer landing page itself). These lists contain the URL for the currently only hosted relay. You can also add your own custom lists. In the future, the officials lists will include many more relays, from me or from anyone that contributes to the ecosystem, and the CLI is already prepared for that! I’m on a hotspot with like not even 1 Mbps so the video is just here for illustrative purposes 💀"}, {"post_id": 72709, "ts": "2026-09-23T15:38:39Z", "hours": 7.5769, "text": "After a few weeks without being able to do proper coding sessions (only got time to do it while being at school), I can finally release a new feature for Fleer! Integrity checking: after sending files, the receiver can ask the sender for a list of SHA-256 hashes. All communications are using encrypted messages to reduce the amount of things a malicious relay server can do. Integrity checking allows the receiver to be sure that files are identical from the sent one, and that the relay didn’t skipped chunks/files. I also added proper (and definitive) instructions for selfhosting a relay server by using Docker Compose (with prebuilt images via GitHub Actions), by building the image yourself with a Dockerfile, or to run from source. Reduce chunkSize when sending files if network conditions were really really bad before starting to send chunks."}, {"post_id": 58469, "ts": "2026-08-30T21:45:51Z", "hours": 7.2975, "text": "Not sure if Stardance will get extended until something like the end of September, so here am I (didn’t got many times to update the app and encountered many problems). A new command fleer relay followed by any Fleer Relay URL will output details about it. Receiver device name was sent in clear to the relay, it is now exchanged using encrypted messages. The transfer will be deleted if too many restarts happen (because messages size exceeds the limit for example). A structure containing all files, folders and path is included to give the receiver some visuals indications. If it’s too large, the structure will be dropped entirely. The amount of received/sent bytes will be displayed in Kbps instead of Mbps if it’s slow asf. Many bugs fixes and optimizations. The relay can now pauses transfers if it’s processing too many transfers at once. The indicated transfer size will include an estimated encryption overhead (the algorithm used can add some bytes to files). Transfers that shares MANY messages can use a feature from the relay that give clients ability to select the amount of cached bytes for messages and chunks. Inactives shares are deleted from the memory of the relay. The build version and latest commit pulled is returned to clients from the relay. Rate limits now apply to WebSocket messages."}, {"post_id": 53427, "ts": "2026-08-23T23:35:26Z", "hours": 3.7667, "text": "Didn’t wrote many lines of code on this project the last few days, was busy with personnal things so I’m listing what I pushed this week: User can decide what to do if a file already exist in the current directory (replace it, rename the new one, or skip this file). A new command fdd allows to start a download even faster, by checking the first parameter ( fdd <share_link> ) or any URL in the clipboard. fleer send command can generate a QR Code image, and display it for supported terminals (such as the incredible Ghostty). Download speed is displayed live in Mbps. Some fixes concerning security and downloading in specific conditions."}, {"post_id": 49259, "ts": "2026-08-17T23:04:04Z", "hours": 4.8894, "text": "A few minors QoL changes: The CLI is automatically closed when download is finished, synced for both sender and receiver through an encrypted message that acts as a signal to tell both party they have done their job. Share Link is automatically copied into the clipboard of the sender, even if he’s remotely connected via SSH to another server. The directory in which files are saved is displayed at the end of execution (default to current folder). Improved performances when downloading. Some more verifications with the relay server used. Protect against Path Traversal vulnerability."}, {"post_id": 46633, "ts": "2026-08-14T01:00:19Z", "hours": 8.6061, "text": "Okay, changelog required even though I wasn’t planning on publishing it right now. Apart from some additions such as: --debug-socket flag that logs every actions happening between the client and a relay server Encryption protocol indicator (which is used by clients to know what algorithm and settings to use) is NOT known by the server anymore, as it is transferred in the share link itself Proper exit (and closure of spinner animations) when using Ctrl+C A few optimizations for responsive logs Downloading files is ALMOST done, I’m currently having many issues with slow file upload, and many attempts at optimizing it (that litteraly give me the idea of just quitting this project) and I’m making this changelog now because I think we might not finish this part of the CLI before at least 2 days. In the meantime, I daydreamed about many things I want to introduce into the project that will hopefully make a difference with others apps, even if I don’t have the same speed as them."}, {"post_id": 45231, "ts": "2026-08-11T15:54:32Z", "hours": 1.0211, "text": "Made a command to explain how Fleer relays, encryption and decryption work - always with a nice focus on terminal design, with colors, responsive and auto resize"}, {"post_id": 44327, "ts": "2026-08-10T00:30:37Z", "hours": 7.3697, "text": "We can send files using the CLI! I have some optimizations to make because sending small files is just as slow as sending large files, causing super low speed upload 💀 We also display the URL, command, and keys (used by the server) to connect as a receiver and start downloading files. The protocol is kinda complex and I’m planning to write a documentation on how to use it for any matter (like automations or 3rd party clients), and a terminal generally being for nerds (especially when a desktop GUI app is planned) make this the best place to showcase how the relay system really work, so I implemented a flag --debug-performances that log every actions into a file, also useful to debug performances (if you didn’t guessed…). The sender sends files to the relay, one by one, chunk by chunk to the relay, which will pipe them to the receiver afterwards. Chunks are fully encrypted on both clients and server cannot access their content whatsoever. To ensure even better security, I also display a warning with confirmation before continuing if the server is using HTTP instead of HTTPS. There is many things happening that isn’t easy to see, and many little details (like some responsive resizing for low sized terminals) that many people may never encounteer, and I’m proud of how those devlogs are only like 7h long?? Anyway, here’s a video of where I currently am, and thanks for reading all of that garbage nonsense written by a french guy that isn’t quite good at telling things in foreign languages."}, {"post_id": 42308, "ts": "2026-08-06T23:19:36Z", "hours": 6.6911, "text": "Spent a few hours starting the CLI! For now it can only search for files and directory to send, while excluding socket and symlinks, and asking user if he want to excludes some others directory (like node_modules, cache or trashed files on macOS/Linux). Interface use colors, spinners and terminal screen width detection to avoid overflowing texts on another lines, providing a nice display when displaying large quantity of text, even if it’s only on screen for a few milliseconds. The files searching is really fast thank to Bun and some optimizations I did, here is a demo."}, {"post_id": 41111, "ts": "2026-08-05T03:10:10Z", "hours": 6.4781, "text": "Receiver can now receive chunks of data even if he wasn’t connected when the sender started sending them. Also, some communications are added between the receiver and the sender, such as a warning when the other one disconnect, or any other form of encrypted message. Senders were informed when they reached the max cached data limit, but are also now informed when this limit can be ignored (when the receiver download those cached data to free some space). And the thing you can see in the demo video: it is now possible to, as the receiver, restart an entire transfer if you connect to the download, disconnect, and reconnect again (because cached data are cleaned by the backend, which mean the sender has to send them again). I know “sender” and “receiver” are repeated 300x but idk how to explain this in a better way 😭🙏 (+ i’m french idk we’re all bad in this language tbh)"}, {"post_id": 38550, "ts": "2026-08-01T00:54:39Z", "hours": 6.45, "text": "After starting to get some progress on a test CLI (with both sending and receiving sides), we can now encrypt/send, and decrypt/download chunks on storage. I will make a few changes on how files saving will be handled because for now the receiver only get chunks data, and don’t know how to reassemble them. If you want, one of my git commit got this long ahh description: - Many more checks - Receiver can set their name (sender get notified) - Chunks are sent to receiver - receiver can acknowledge when they receive one, and chunks sending is paused if they have at least three chunks not ack. - An encryption protocol indicator is exchanged (not encrypted) to let clients know what encryption parameters to use - Chunks that are in the memory of the server has a maximum, afterwards we stop accepting more - Auto removal of all in-memory data of acknowledged chunks"}, {"post_id": 36745, "ts": "2026-07-29T00:19:25Z", "hours": 11.2589, "text": "Just started this new project! I’ve already wrote a loooong list of things I want to do (and how I want them to be done), will not post it here to avoid spoiling so wait a few changelog to know how the service will work! For now, I’ve only implemented a basic API that allows to create a share, returning a shareId that allows to request details about it ; I also started the implementation of a socket that will allow someone to download a file while it’s being uploaded. The backend will be done in Dart to allow the build of a light executable file, allowing an easier self-hosting while consuming less ressources. This language also enable me the possibility of including the server directly inside a Flutter made client, but I’m not sure I will use this possibility, I guess we will see!"}]...
|
Title: Fleer by @johan | Stardance
Devlogs:
Just Title: Fleer by @johan | Stardance
Devlogs:
Just started this new project! I’ve already wrote a loooong list of things I want to do (and how I want them to be done), will not post it here to avoid spoiling so wait a few changelog to know how the service will work! For now, I’ve only implemented a basic API that allows to create a share, returning a shareId that allows to request details about it ; I also started the implementation of a socket that will allow someone to download a file while it’s being uploaded. The backend will be done in Dart to allow the build of a light executable file, allowing an easier self-hosting while consuming less ressources. This language also enable me the possibility of including the server directly inside a Flutter made client, but I’m not sure I will use this possibility, I guess we will see!
After starting to get some progress on a test CLI (with both sending and receiving sides), we can now encrypt/send, and decrypt/download chunks on storage. I will make a few changes on how files saving will be handled because for now the receiver only get chunks data, and don’t know how to reassemble them. If you want, one of my git commit got this long ahh description: - Many more checks - Receiver can set their name (sender get notified) - Chunks are sent to receiver - receiver can acknowledge when they receive one, and chunks sending is paused if they have at least three chunks not ack. - An encryption protocol indicator is exchanged (not encrypted) to let clients know what encryption parameters to use - Chunks that are in the memory of the server has a maximum, afterwards we stop accepting more - Auto removal of all in-memory data of acknowledged chunks
Receiver can now receive chunks of data even if he wasn’t connected when the sender started sending them. Also, some communications are added between the receiver and the sender, such as a warning when the other one disconnect, or any other form of encrypted message. Senders were informed when they reached the max cached data limit, but are also now informed when this limit can be ignored (when the receiver download those cached data to free some space). And the thing you can see in the demo video: it is now possible to, as the receiver, restart an entire transfer if you connect to the download, disconnect, and reconnect again (because cached data are cleaned by the backend, which mean the sender has to send them again). I know “sender” and “receiver” are repeated 300x but idk how to explain this in a better way 😭🙏 (+ i’m french idk we’re all bad in this language tbh)
Spent a few hours starting the CLI! For now it can only search for files and directory to send, while excluding socket and symlinks, and asking user if he want to excludes some others directory (like node_modules, cache or trashed files on macOS/Linux). Interface use colors, spinners and terminal screen width detection to avoid overflowing texts on another lines, providing a nice display when displaying large quantity of text, even if it’s only on screen for a few milliseconds. The files searching is really fast thank to Bun and some optimizations I did, here is a demo.
We can send files using the CLI! I have some optimizations to make because sending small files is just as slow as sending large files, causing super low speed upload 💀 We also display the URL, command, and keys (used by the server) to connect as a receiver and start downloading files. The protocol is kinda complex and I’m planning to write a documentation on how to use it for any matter (like automations or 3rd party clients), and a terminal generally being for nerds (especially when a desktop GUI app is planned) make this the best place to showcase how the relay system really work, so I implemented a flag --debug-performances that log every actions into a file, also useful to debug performances (if you didn’t guessed…). The sender sends files to the relay, one by one, chunk by chunk to the relay, which will pipe them to the receiver afterwards. Chunks are fully encrypted on both clients and server cannot access their content whatsoever. To ensure even better security, I also display a warning with confirmation before continuing if the server is using HTTP instead of HTTPS. There is many things happening that isn’t easy to see, and many little details (like some responsive resizing for low sized terminals) that many people may never encounteer, and I’m proud of how those devlogs are only like 7h long?? Anyway, here’s a video of where I currently am, and thanks for reading all of that garbage nonsense written by a french guy that isn’t quite good at telling things in foreign languages.
Made a command to explain how Fleer relays, encryption and decryption work - always with a nice focus on terminal design, with colors, responsive and auto resize
Okay, changelog required even though I wasn’t planning on publishing it right now. Apart from some additions such as: --debug-socket flag that logs every actions happening between the client and a relay server Encryption protocol indicator (which is used by clients to know what algorithm and settings to use) is NOT known by the server anymore, as it is transferred in the share link itself Proper exit (and closure of spinner animations) when using Ctrl+C A few optimizations for responsive logs Downloading files is ALMOST done, I’m currently having many issues with slow file upload, and many attempts at optimizing it (that litteraly give me the idea of just quitting this project) and I’m making this changelog now because I think we might not finish this part of the CLI before at least 2 days. In the meantime, I daydreamed about many things I want to introduce into the project that will hopefully make a difference with others apps, even if I don’t have the same speed as them.
A few minors QoL changes: The CLI is automatically closed when download is finished, synced for both sender and receiver through an encrypted message that acts as a signal to tell both party they have done their job. Share Link is automatically copied into the clipboard of the sender, even if he’s remotely connected via SSH to another server. The directory in which files are saved is displayed at the end of execution (default to current folder). Improved performances when downloading. Some more verifications with the relay server used. Protect against Path Traversal vulnerability.
Didn’t wrote many lines of code on this project the last few days, was busy with personnal things so I’m listing what I pushed this week: User can decide what to do if a file already exist in the current directory (replace it, rename the new one, or skip this file). A new command fdd allows to start a download even faster, by checking the first parameter ( fdd <share_link> ) or any URL in the clipboard. fleer send command can generate a QR Code image, and display it for supported terminals (such as the incredible Ghostty). Download speed is displayed live in Mbps. Some fixes concerning security and downloading in specific conditions.
Not sure if Stardance will get extended until something like the end of September, so here am I (didn’t got many times to update the app and encountered many problems). A new command fleer relay followed by any Fleer Relay URL will output details about it. Receiver device name was sent in clear to the relay, it is now exchanged using encrypted messages. The transfer will be deleted if too many restarts happen (because messages size exceeds the limit for example). A structure containing all files, folders and path is included to give the receiver some visuals indications. If it’s too large, the structure will be dropped entirely. The amount of received/sent bytes will be displayed in Kbps instead of Mbps if it’s slow asf. Many bugs fixes and optimizations. The relay can now pauses transfers if it’s processing too many transfers at once. The indicated transfer size will include an estimated encryption overhead (the algorithm used can add some bytes to files). Transfers that shares MANY messages can use a feature from the relay that give clients ability to select the amount of cached bytes for messages and chunks. Inactives shares are deleted from the memory of the relay. The build version and latest commit pulled is returned to clients from the relay. Rate limits now apply to WebSocket messages.
After a few weeks without being able to do proper coding sessions (only got time to do it while being at school), I can finally release a new feature for Fleer! Integrity checking: after sending files, the receiver can ask the sender for a list of SHA-256 hashes. All communications are using encrypted messages to reduce the amount of things a malicious relay server can do. Integrity checking allows the receiver to be sure that files are identical from the sent one, and that the relay didn’t skipped chunks/files. I also added proper (and definitive) instructions for selfhosting a relay server by using Docker Compose (with prebuilt images via GitHub Actions), by building the image yourself with a Dockerfile, or to run from source. Reduce chunkSize when sending files if network conditions were really really bad before starting to send chunks.
Fleer is a decentralized platform, meaning anyone can host one or multiple relay servers. This devlog brings this concept even more to the Fleer CLI. Three lists of relay servers are hosted (on the GitHub repo, on my main website, and obviously on the Fleer landing page itself). These lists contain the URL for the currently only hosted relay. You can also add your own custom lists. In the future, the officials lists will include many more relays, from me or from anyone that contributes to the ecosystem, and the CLI is already prepared for that! I’m on a hotspot with like not even 1 Mbps so the video is just here for illustrative purposes 💀
Ships:
School is coming back soon, Stardance may be ending tomorrow, and I’m currently at 15% of what I want to do. I got an entire planning on Linear on what to do now. Fleer is a toxic-love project for me because of the numbers of issues I encountered, but I still want it to be done so bad. And yeah, I know testing is kinda hard now, I can’t publish an hosted testing instance so you will need to host it yourself (just one 30 MB Docker image to compile on any system and any architecture)....
|
1793087902.8764782
|
1793174302.8764782
|
|
27793
|
playing chess through a CNN by @advay_awesomer | S playing chess through a CNN by @advay_awesomer | Stardance...
|
advay_awesomer
|
1
|
76.0
|
161
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T18:32:11Z", "hours": 55.0, "multiplier": 16.14, "payout": 161, "blessing": "neutral", "text": "Made chesscnn — a chess engine that picks its moves from a convolutional neural network instead of hand-written rules, AlphaZero-style. The net (PyTorch, a residual tower with two heads) looks at the board as a stack of 19 image-like planes and outputs both a move-probability map and a single “who’s winning” score. A PUCT Monte-Carlo Tree Search then uses those to actually play. There’s a CLI and a Streamlit web app where you can play it and watch its eval bar, its predicted line, and a heatmap of where it wants to move. Challenging: encoding chess moves for the network was the rabbit hole — every possible move has to map to one of 4,672 output slots (the 8×8×73 scheme), and promotions/castling/en-passant all have edge cases. I round-tripped 219k moves to prove the mapping never collides. The other hard part was getting it to play well without a giant training run — a freshly-initialized net plays nonsense, so I blend the network’s evaluation with a classical hand-crafted one and let the search do the heavy lifting. Proud of: it plays real openings out of the box (it’ll walk into a Ruy Lopez or a Pirc), it found a tactic in testing (won a hanging queen), and it went 0 losses across 14 games vs a random-mover. ~9,000 lines of Python with 53 passing tests, and a full training stack (self-play → replay buffer → trainer → arena/Elo) if you want to make it stronger. To test it: clone github.com/advaycode/CNN1, pip install -r requirements-app.txt, then streamlit run chesscnn/app.py and play it in your browser.", "repo": "https://github.com/advaycode/CNN1", "demo": "https://advaycode.github.io/CNN1/"}]...
|
[{"post_id": 39672, "ts": "202 [{"post_id": 39672, "ts": "2026-08-02T20:02:37Z", "hours": 21.0, "text": "designing some more model architecture"}, {"post_id": 17779, "ts": "2026-06-28T18:29:53Z", "hours": 55.0, "text": "The entire architecture for the machine learning model"}]...
|
Title: playing chess through a CNN by @advay_aweso Title: playing chess through a CNN by @advay_awesomer | Stardance
Devlogs:
The entire architecture for the machine learning model
designing some more model architecture
Ships:
Made chesscnn — a chess engine that picks its moves from a convolutional neural network instead of hand-written rules, AlphaZero-style. The net (PyTorch, a residual tower with two heads) looks at the board as a stack of 19 image-like planes and outputs both a move-probability map and a single “who’s winning” score. A PUCT Monte-Carlo Tree Search then uses those to actually play. There’s a CLI and a Streamlit web app where you can play it and watch its eval bar, its predicted line, and a heatmap of where it wants to move. Challenging: encoding chess moves for the network was the rabbit hole — every possible move has to map to one of 4,672 output slots (the 8×8×73 scheme), and promotions/castling/en-passant all have edge cases. I round-tripped 219k moves to prove the mapping never collides. The other hard part was getting it to play well without a giant training run — a freshly-initialized net plays nonsense, so I blend the network’s evaluation with a classical hand-crafted one and let the search do the heavy lifting. Proud of: it plays real openings out of the box (it’ll walk into a Ruy Lopez or a Pirc), it found a tactic in testing (won a hanging queen), and it went 0 losses across 14 games vs a random-mover. ~9,000 lines of Python with 53 passing tests, and a full training stack (self-play → replay buffer → trainer → arena/Elo) if you want to make it stronger. To test it: clone github.com/advaycode/CNN1, pip install -r requirements-app.txt, then streamlit run chesscnn/app.py and play it in your browser....
|
1792882076.1522121
|
1793746076.1522121
|
|
38886
|
WEB APP FOR STUDENTS by @Uxyamo | Stardance
|
Uxyamo
|
3
|
76.0
|
621
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T06:40:42Z", "hours": 18.0, "multiplier": 8.4, "payout": 99, "blessing": "neutral", "text": "I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 2, "ts": "2026-08-28T16:13:00Z", "hours": 4.0, "multiplier": 12.19, "payout": 43, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 3, "ts": "2026-08-16T08:22:09Z", "hours": 54.0, "multiplier": 10.6, "payout": 479, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}]...
|
[{"post_id": 81181, "ts": "202 [{"post_id": 81181, "ts": "2026-10-20T06:39:31Z", "hours": 1.7442, "text": "I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app"}, {"post_id": 76794, "ts": "2026-10-04T16:11:16Z", "hours": 15.7992, "text": "Some modifications…"}, {"post_id": 56718, "ts": "2026-08-28T16:12:12Z", "hours": 3.5033, "text": "Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international"}, {"post_id": 47987, "ts": "2026-08-16T08:17:36Z", "hours": 0.3178, "text": "I finished the project!! Thanks yo evryone that helped me and followed me in my project!!"}, {"post_id": 47541, "ts": "2026-08-15T14:48:56Z", "hours": 3.5642, "text": "Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!"}, {"post_id": 46530, "ts": "2026-08-13T20:28:50Z", "hours": 5.1931, "text": "I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do"}, {"post_id": 45816, "ts": "2026-08-12T15:19:22Z", "hours": 2.1239, "text": "Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊"}, {"post_id": 45595, "ts": "2026-08-12T05:53:03Z", "hours": 1.1178, "text": "Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!"}, {"post_id": 45170, "ts": "2026-08-11T14:20:09Z", "hours": 4.26, "text": "There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language."}, {"post_id": 43311, "ts": "2026-08-08T14:38:46Z", "hours": 4.4058, "text": "I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)"}, {"post_id": 41494, "ts": "2026-08-05T18:52:57Z", "hours": 1.5481, "text": "Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone."}, {"post_id": 40272, "ts": "2026-08-03T18:13:14Z", "hours": 1.2458, "text": "I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class."}, {"post_id": 40025, "ts": "2026-08-03T11:28:39Z", "hours": 2.4278, "text": "I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!"}, {"post_id": 39633, "ts": "2026-08-02T19:12:07Z", "hours": 8.9369, "text": "That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it"}, {"post_id": 34515, "ts": "2026-07-25T09:32:54Z", "hours": 19.0533, "text": "I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊"}]...
|
Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance
Devlogs:
I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊
That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it
I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!
I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class.
Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone.
I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)
There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language.
Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!
Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊
I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do
Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!
I finished the project!! Thanks yo evryone that helped me and followed me in my project!!
Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international
Some modifications…
I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app
Ships:
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.
I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!...
|
1792990616.8690119
|
1793077016.8690119
|
|
44701
|
StudyBuddy by @Vedant_Daga | Stardance
|
Vedant_Daga
|
2
|
76.0
|
1064
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T03:35:26Z", "hours": 23.0, "multiplier": 18.54, "payout": 436, "blessing": "neutral", "text": "StudyBuddy - https://trystudybuddy.vercel.app fyi before u try it: reading runs on a free model with a shared daily cap, and ship day is way more traffic than a normal day. please use the sample worksheets wherever u can (they’re the first thing on the upload page, one click) and upload at most one of ur own pdfs for the next day or two. if the homepage says the free reads are used up, the samples still work. what it does upload a worksheet pdf. it reads every question off the page, tags each one by topic, and works out the answer key. u mark which ones u got wrong and it brings them back on an FSRS schedule (the algo anki uses). across every test u upload it turns “i got 12 wrong” into “ur bad at ratios”. what changed since last time runs on openrouter’s free tier instead of my gpu. not a proof of concept anymore one worksheet is ~4 requests instead of ~42. pages are read in groups the site says when the day’s free reads are running low. clear about the trial: 3 worksheets free, then still free, u just add questions by hand or plug in ur own key. what was hard free models reason before they answer and bill that against the output limit which ends up causing an error, but its really hard to figure out the embedding-only shortcut for sorting looked fine and was wrong a third of the time so fixed it", "repo": "https://github.com/DagaVedant/StudyBuddy", "demo": "https://trystudybuddy.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-19T19:30:17Z", "hours": 53.0, "multiplier": 12.7, "payout": 628, "blessing": "neutral", "text": "StudyBuddy Turn the worksheets you have already done into a record of what you actually know. Try it: https://trystudybuddy.vercel.app Code: https://github.com/DagaVedant/StudyBuddy What I made Upload a worksheet you already finished, as a PDF or photos. A vision model pulls out every question, its options and its answer key. You mark what you got wrong. That is the only input it needs. It sorts questions into 87 topics across SAT and competition maths. Then it ranks your weak areas and schedules revision using FSRS, the algorithm behind Anki. It also writes practice questions on your weak topics and exports misses to Blooket. Built on my own past papers: 387 real questions from 22 worksheets. What was challenging The models can run in four places: my GPU, your API key, your own Ollama, or not at all. A student with a GPU should never send homework to my server. A student with nothing should still get something. Topic tagging needs an embedding model that serverless hosting cannot run. So the shortlist is a pgvector query on the server and the vector is computed anywhere, including in your browser under WebAssembly. Worst bug was three characters: I stored the global fetch on a class field, which passes the object as the receiver. Node allows it, browsers throw Illegal invocation. Every test passed and the only runtime that mattered was broken. What I am proud of It does not lie to you. Weak topics are ranked by a Wilson lower bound, not a raw percentage, so two unlucky answers cannot fake a weakness. Model-written questions are kept out of your accuracy, so the ranking cannot feed the questions it generates. Every model response is schema-checked before it reaches the database. Generated practice is sifted against thirteen specific failure modes. When my GPU is off, the upload screen says so instead of spinning. 1,459 unit tests, 84 end to end, 293 commits. How to test it Sign in with Google, or an email and password. Upload any worksheet you have already done. A past paper works well. Check what it read. Each question sits beside the page image it came from. Mark what you missed, then open the dashboard. The free trial reads three worksheets on my own GPU. If it is off, your upload queues and the app tells you. To skip the wait, settings takes your own API key or connects to Ollama on your machine. guys i wish this was markdown compatible but its not so sorry", "repo": "https://github.com/DagaVedant/StudyBuddy", "demo": "https://trystudybuddy.vercel.app/"}]...
|
[{"post_id": 66334, "ts": "202 [{"post_id": 66334, "ts": "2026-09-12T03:21:31Z", "hours": 3.7986, "text": "Devlog 24: StudyBuddy so a lot of the feedback said “cool but it needs ur gpu on”. that made it seem like a PoC, so now its running on the free tier of openrouter. making the free tier work one request per question was never going to fit a daily cap. extraction now sends up to 10 pages / 25 questions per call, sorting and answer key go 10 questions at a time. ~4 requests per worksheet instead of ~42 the homepage and upload page count the day’s calls. 80% says busy, 100% stops reading and points u at the samples. samples upload page leads with the three samples as one-click cards; ur own pdf is the second option and says how much of the shared allowance is used. removed phone photo uploads (highly innaccurate on the free tier of models i have)"}, {"post_id": 61499, "ts": "2026-09-04T13:23:50Z", "hours": 0.4864, "text": "Devlog 23 - StudyBuddy i just had some minutes left on this so im just making the devlog still waiting for my ship to be approved (been waiting a few days) no big changes at all (waiting for feedback)"}, {"post_id": 57722, "ts": "2026-08-29T23:49:06Z", "hours": 0.3544, "text": "Devlog 22 - StudyBuddy fixed more bugs and rewrote code by hand"}, {"post_id": 56688, "ts": "2026-08-28T15:28:49Z", "hours": 3.3164, "text": "Devlog 21 - StudyBuddy patched even more bugs rewrote tons of my code (ai to human) cleaned up old files (a lot of old features were removed and reupdated) just more QoL fixes"}, {"post_id": 55293, "ts": "2026-08-27T01:04:56Z", "hours": 0.7281, "text": "Devlog 20 - StudyBuddy more bug fixes continous reships (they keep saying its too AI generated even after i rebuilt the UI) started working on the API key integration (like almost there rn) tons of dead code removal and code clean up added support for firefox too (now it works on edge, firefox, chrome, and prolly a ton others i just havent really tested it)"}, {"post_id": 55212, "ts": "2026-08-26T19:29:14Z", "hours": 2.0147, "text": "Devlog 19 - StudyBuddy even more bug fixes so i pushed a change, and that somehow broke the entire pipeline so i patched it no real content just fixes going to add API key integration soon (follow to see it happen)"}, {"post_id": 54267, "ts": "2026-08-25T04:59:03Z", "hours": 1.3939, "text": "Devlog 18 - StudyBuddy lowk not a lot of content in this one but like 1000000 different bugs popped up and reviewers are pointing it out so thank you smmm ( @blowupthenoobs ur the goat) fixed the trials having no limit other fixes just check my commits"}, {"post_id": 53477, "ts": "2026-08-24T01:28:48Z", "hours": 6.445, "text": "Devlog 17 - StudyBuddy (ah im losing track of these devlogs uh my ship keeps getting rejected for look to AI, and ive literally rebuilt everything, removed all teh ai generated thing. (im gonna ship again rn) made a logo cuz i thought it would look cool added a Terms of Services page cuz its risky cuz people could upload worksheets they dont have access for an i could be fried so i made them agree to that cleaned up more code fixed a few more bugs"}, {"post_id": 51966, "ts": "2026-08-21T23:14:31Z", "hours": 0.5383, "text": "Devlog 16 - StudyBuddy added some sample worksheets so you can try it out added the borders back to the buttons because i accidently removed them before"}, {"post_id": 51893, "ts": "2026-08-21T19:51:51Z", "hours": 0.3522, "text": "Devlog 15 more cleaninggggggg cleaned up repo, removed more dead logic and stuff instead of a css wallpaper, i added a image of lined paper to really give that school/learning feel asked ai to help me get the ui to look kinda fresh and add the pencil style heading"}, {"post_id": 51715, "ts": "2026-08-21T15:23:46Z", "hours": 3.1414, "text": "Devlog 14 shipwrights rejected the project so im fixing their things decided to clean up the code, get rid of old functions, and i also cleaned up the UI because no one really needs the heading and then what it means, like i think you know that topics means topics and doesnt need a whole sentence after that. cleaned up the repo, got rid of ai generated code fixed a 500 error when uploading worksheets, cuz something happened and some linux kernel wasnt compaitble with the library i was using wrapped up my last few fixes lowk not a lot of new features, rather like fixes"}, {"post_id": 51288, "ts": "2026-08-20T20:55:12Z", "hours": 0.9239, "text": "Devlog 13 - StudyBuddy update the ui to make it look liek sticky notes and lined paper"}, {"post_id": 50557, "ts": "2026-08-19T19:22:57Z", "hours": 1.2472, "text": "ANYONE RATING THIS PROJECT - THE VIDEO ON THE SHIP IS OUTDATED, THERE IS ALSO ANOTHER FEW DEVLOGS SO CHECK THAT OUT BEFORE JUDGING BECAUSE IT GIVES MORE INFO ABOUT THE BUILDING AND WHY THE CHANGED A LOT SORRYYYY ALSO USE THE SAMPLE WORKSHEETS I ATTACHED OR EASILY PARSEABLE WORKSHEETS. TEMPORAILY IVE CLOSED THE API KEY VERSION AS MOST PEOPLE DONT HAVE THEM. COMPLEX WORKSHEETS ARE TO BE USED ONLY WITH LARGE LLM Devlog 12 - StudyBuddy got everything ready to ship turns out that ollama needed some permissions so fixed that and added it to readme for people to set up, and other stuff like that shipping it in 5 mins 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉"}, {"post_id": 49640, "ts": "2026-08-18T15:06:19Z", "hours": 3.8678, "text": "Devlog 11 - StudyBuddy this is a short one got the google sign in to work added email verification and forgot ur password thing cleaned up the overall UI made the topic tree standardized cleaned up some of the extraction issues added ollama integration for everyone added practice question generation, topic overview, etc tested everything fully the attached image is the app after a ton of testing *"}, {"post_id": 48576, "ts": "2026-08-17T00:58:42Z", "hours": 5.8406, "text": "Devlog 10 - StudyBuddy mostly the same bug wearing different clothes: a screen that exists, that u can get to, that quietly does less than it says tier C was sitting in settings doing nothing save an ollama address and the app resolves u to a browser executor. that executor had nowhere to go, so ur worksheet just sat there looking queued it claims the job now and reads each page against localhost:11434 , posting back through the same queue my gpu posts through has to run in the browser cuz a server cant reach ur localhost, so the tab stays open. checkpointed per page tho, closing it resumes instead of restarting the paper a mark u mis-tapped was permanent tap through 40 of these and ur going to hit the wrong one eventually that one tap feeds the FSRS schedule, the topic accuracy, the weakness ranking and the blooket export only way back was deleting the worksheet and uploading it again, which costs u a trial credit. so the fix for a mistap was paying for it two defences that were never on WORKER_ALLOWED_IPS was optional and empty meant no restriction empty is the state every deployment starts in, so the normal outcome was a defence thats off that nobody ever decided to turn off refused now. * still allows any address but somebody has to type it untagged worksheets looked identical to broken ones tier B cant auto-classify, the embedding model needs a native runtime the serverless host doesnt have so ur questions saved fine and were reviewable fine, they just had no topic and nothing said why. reads exactly like it silently failed every tier that can come back untagged says so now nothing told u when a worksheet finished u uploaded and then u guessed. sat on the status page or came back later and hoped in-app bell that needs zero setup, plus web push for a tab u closed also “Review these now” now reviews those questions. the word had drifted onto three screens meaning three different things dashboard was missing three of its panels, and the trend arrow was specified ages ago and never computed taxonomy had no front door and the subject panel only went one level deep. Math > Geometry > Triangles walks now pagination was capping at the fiftieth worksheet and saying nothing about it the AI setup prompt showed up after ur trial ran out, which is the one moment it cant help u grouped scripts/ by what it does to ur data. inspect/ reads, repair/ writes behind a guard, benchmark/ measures 1285 tests green. playwright hasnt run yet and app/ moved a lot this time, so thats next"}, {"post_id": 47159, "ts": "2026-08-14T20:52:31Z", "hours": 5.0856, "text": "Devlog 9 - StudyBuddy the merge tool could double up a question number renumbering the survivor of a duplicate pair used Math.min of just those two rows, blind to the rest of the paper merging a phantom #5 into a real #9 could hand the paper a second #5, the exact thing the tool exists to prevent zero tests on a function that deletes rows. five now, including the repro $15/hour was losing its sign, not just $5 the math-stripper runs from one $ to the next, so “earns $15/hour and $18/hour” reads the slash as a fraction and eats both signs. same with $40 = $25 + $15 on the = i wrote this down once as “one weird case.” it’s the whole unit-rate and equation category fix checks the char after the closing $ : a digit means it’s opening the next price, not real math figure crops didnt need a new pipeline, just reusing one filed as “never produced,” which reads like crop, store, backfill the verify screen already computes a crop window from the bbox over the stored page image. review got wired to the same math, every old worksheet gets it free the real work was the guards: zero-area, inverted, off-page, or no recorded page size all have to degrade to nothing rather than to the wrong crop a fence i built to be un-escapable, wasnt the comment says a new tag can’t be added without going through the escaping. page-seam work added two by typing them directly a page whose OCR contains the literal closing tag closes the fence early, and everything after reads as instructions instead of data tag list exists once now, every fence built from it every worksheets.status write was a bare UPDATE no guard on the current value, so a stale job retry could drag an already-reviewed worksheet back to failed one transitionWorksheet(from, to) now, every write through it preview deploys were migrating the prod database guard only checked VERCEL_ENV === 'production' , but previews fire on every push against one shared DATABASE_URL two finishing together were racing through the migration folder 9 tests could go quiet and nobody would know one e2e file, 12 tests serial in a single tab, everything past “verify” depending on a question a drag gesture created three tests earlier a drag regression silently skipped 9 unrelated tests instead of failing them api fixture, split the file, broke the drag on purpose to prove it. held the question list rendered all 114 cards for a screen that edits one at a time deferred a while back: virtualizing editable rows risks one unmounting mid-edit only one card can ever be expanded, so the risk surface is exactly one row virtualizes past 40 now, open row pinned into the rendered range wherever scrolling goes. typed into one at 60 questions, scrolled thousands of px away, still there, still focused, still holding the edit also profile save had devlog 4’s router.refresh() remount bug login rate limit skipped Auth.js’s own credentials endpoint ollama worker had no startup timeout and just hung worksheet text leaked into console logs on schema rejections review screen shipped every page’s OCR text on page-1 load admin console got merge, tree edit, queue, usage doc-count drift (third time), and a false-positive LaTeX check flagging real set notation as broken math"}, {"post_id": 46100, "ts": "2026-08-13T02:23:56Z", "hours": 3.2192, "text": "Devlog 8 - StudyBuddy im too lazy to have a full write up for this (watched spiderman tdy IT WAS REALLY GOOD) for each topic that a user gets wrong, a seperate model (gpt-oss:20b, sorry if i miswrote the model) gives a walkthrough of the topic also added missed questions to the csv export added a AI answer key system if the worksheet doesnt have one."}, {"post_id": 45521, "ts": "2026-08-12T02:04:02Z", "hours": 3.0014, "text": "Devlog 7 - StudyBuddy the drag box was broken in the real app. for months u upload a worksheet, u draw a box around question 1, it fills in. thats the whole manual editor, thats the whole free tier. and it didnt work. click through the app to get there and nothing responds. reload and its fine. four previous commits went looking for this. the test had a 24 line comment explaining why it was probably a test problem. it was not. elementFromPoint(100, 28) -> HTML elementsFromPoint(100, 28) -> [HTML] thats the browser saying nothing is at this pixel , for every pixel on the page. the cause was 8 view transition animations, 6 stuck running forever . one that never finishes sits in the top layer and covers everything. and its a pseudo element so it shows up in no ancestor walk and no element stack, which is why every previous investigation contradicted itself. bisected on clean builds: next flag react component result on on broken off on broken on off clean off off clean so its react’s <ViewTransition> , not next. three lines of css. the drag test used to fake the mouse with dispatched events, now it uses a real one, which is the only thing that proves anything. gemini has never completed a single request 4 providers in settings. one says “has a free tier worth starting on”. zero successful calls, ever. every nullable field is anyOf: [{type:'x'}, {type:'null'}] gemini doesnt understand anyOf , so a filter strips keywords it rejects the filter dropped anyOf and left {} behind, while leaving the field in required a required field with no type = rejected request. every time funny part: the allowlist already had nullable in it, gemini’s own word for the same idea. someone knew. nothing connected them. the landing page was lying about 3 of its 4 topics theres a comment above them saying “kept honest on purpose: these are real taxonomy names” . Ratio & proportion - not real Linear equations - not real Reading inference - not real Vocabulary in context - real so the one claim the page made about its own honesty was the false one lol. theres a test now instead of a comment. tests found 2 bugs i wasnt looking for new Date(\"sometime in 2010\") returns jan 1 2010, cuz v8 scrapes a year out of almost anything. and it parses as local midnight while everything next to it is UTC. on a 13th birthday thats the whole question one route answered 404 to someone with no session. the client sends u to sign in on a 401 and brings u back after, so a tab that sat open till the session expired just ate what u typed the rest a reload could cost u a 114 question paper. markup saves nothing till every question is marked, so its a local draft now / , /signin , /signup are static html now. the topbar called auth() from the root layout, which made all 39 routes render per request the 23mb embedding model was getting fetched inside a background task on every cold start, and failing silently one commit recorded 32 renames and none of the code . the git add failed and i’d redirected the error away so i never saw it"}, {"post_id": 44852, "ts": "2026-08-10T21:45:18Z", "hours": 1.3739, "text": "Devlog 6 - StudyBuddy u can throw everything u got wrong into blooket now button on the dashboard for the whole account, and one per worksheet if u only want that paper it gives u a file, u upload it to blooket, u get a set of exactly the questions u missed wrong means ever wrong, not currently wrong. if u got it wrong on paper and then right in review, its still in there. thats the one u actually want to drill and it wouldve been weird to leave out blooket hands u an .xlsx template so everyone calls this an xlsx export, but its uploader only accepts csv. took a while to work out also its importer just silently imports nothing if the file is slightly off. no error, no warning, zero questions. three separate ways to trip that picking a subject barely did anything theres a dropdown on upload for what subject the worksheet is. it offers things like “Algebra 1” only the first bit of that was ever used, so picking Algebra 1 searched all of high school maths. exactly the same as picking “all of high school maths” the one control u have over how ur questions get sorted, doing basically nothing long papers were quietly losing questions to a limit the topic tagger takes questions 100 at a time. fine except it grabbed 100 in no particular order and then removed the ones already done, so on a 114 question paper 14 never got looked at, and which 14 was down to whatever the database felt like that day worse on a second pass: if 100 were already tagged it handed back an empty list, which reads as “nothing left to do”, and the rest never got tagged at all two screens counting the same paper differently the worksheets page filters out page junk like “CONTINUE TO THE NEXT PAGE” before counting. the dashboard didnt so the same worksheet was 25 questions on one screen and 26 on the other, and nothing tells u which one is lying the chart was lying about time the accuracy chart draws a bar per week. it was only making bars for weeks u actually did something in so 12 bars looked like 12 weeks in a row but werent. practise in march and again in june and u see two bars side by side like it was steady every week is a bar now, empty ones included, and it says which weeks its showing scrolling changed my settings without me touching anything the page range and question count boxes were number inputs, and number inputs treat the scroll wheel as a way to change the value so scrolling down the upload page with ur cursor over one of them silently rewrote which pages get read found a pile of other accessibility stuff while i was in there: buttons a bit too small to reliably hit on a phone, cards that vanish in high contrast mode, and a “skip to content” link that didnt actually skip anything also asking to see an explanation u already had was using up ur hourly limit for generating new ones the topic picker was built in a way that made screen readers think the list had nothing in it button labels were half Title Case and half sentence case, sometimes on the same screen"}, {"post_id": 44789, "ts": "2026-08-10T20:01:20Z", "hours": 1.8522, "text": "Devlog 5 - StudyBuddy “accept the remaining 114” checked none of them that button fires one save per question, and on my test paper thats 114 of them at once nothing read the answers back, so a save that failed looked exactly like one that worked the tick stayed on, u moved to the next screen, and it was never stored deleting a question said “Saved” and then didnt delete it delete waits a few seconds so u can undo it. it dropped the question from the list first and threw away whatever came back from the server so if it failed u got told it saved, and the question showed up in ur study queue later like nothing happened also there was no undo button anywhere. it was just a slow delete $5 was being eaten maths sometimes comes wrapped in dollar signs so i strip them off. money also comes wrapped in dollar signs “Sam has $5 and Ana has $12” was being read as “Sam has 5 and Ana has 12” checked a real saved question and yep. paper says $5, database said 5 if my worker died, ur worksheet said “queued” forever the machine that reads the pages runs at my house. if it fell over mid job, nothing anywhere ever marked that job as failed it just sat there, and the free credit it charged u never came back the topic tagging could fail without failing it needs a bit of software thats not always there on the server. when it wasnt, it came back with “no matches” which is a completely normal answer. so the job finished, every question was untagged, ur weak areas page was empty, and nothing anywhere was an error one i was told to do and didnt had a note to cap the page number by how many pages the worksheet has except if u upload pages 10 to 15 of a pdf thats six pages numbered 10 to 15, so that check refuses every single one of them capped the two things separately instead also the screen asking u to check questions against the page never showed the page finishing a review session stopped saying u finished it the AI could print its own error onto ur status page, which sometimes meant quoting ur own worksheet back at u the upload checked the image size by asking the browser instead of opening the image"}, {"post_id": 44684, "ts": "2026-08-10T16:42:14Z", "hours": 2.2806, "text": "Devlog 4 - StudyBuddy no new features today. just went hunting for stuff that was quietly broken, and there was way more of it than i expected the sign-in page could send u to a different website if someone handed u a link like /signin?next=someothersite.com , u would log in and then land on their page immediately after typing ur password, which is about the worst possible moment for that to happen this one went first there was no limit on login attempts i had limits on signing up and on uploading. somehow not on the actual password box so u could sit there and guess forever getting blocked now looks identical to just getting the password wrong. telling someone “too many attempts” quietly confirms the account exists file storage was writing into the void if one setting went missing it silently saved ur page images somewhere that doesnt survive on the server uploads said they worked. returned a success. images just gone nothing errored anywhere, which is why it sat there so long now it refuses to start up at all instead of pretending everything is fine i almost broke my whole test suite fixing something unrelated locked down two internal-only routes with what seemed like the obvious check except my tests run against a production build, so that check wouldve locked the tests out too caught it before it shipped, then wrote a test explaining it so future me doesnt helpfully undo it added security headers and instantly caught myself put them in report-only mode first so nothing could actually break about 40 seconds later it flagged a script that my own analytics loads the strict version wouldve blocked it in prod. i absolutely wouldve shipped that one fix i deleted instead of shipping had a note to add another check to the duplicate-question detector actually tested it against real papers first, and it turns out it can never trigger. the answers on a maths paper are just “4” and “9” and stuff, way too short for it to match on wouldve quietly made things worse all tests green at the end of it. onto the next pile"}, {"post_id": 44340, "ts": "2026-08-10T01:14:54Z", "hours": 6.0992, "text": "Devlog 3 - StudyBuddy wrote a script that reads each papers own answer key out of the source pdf and diffs it against my database. so the paper grades me instead of me grading myself. those 14 sheets scored 1 of 14 the first time i pointed it at them. tonight theyre 14 of 14 . barely any of it was the model. one paper stored 8 of its 15 questions. the model had read all 15 the log said dropped 6 unreadable question(s) . a count. no reason. it said that for two days made it print which field rejected the question and it told me on the first run: choices.0.label: Too big: expected string to have <=8 characters answer labels are capped at 8 chars, but the cap runs before the function that shortens them. that function only exists cuz the model returns A. 60 instead of A so the cap was checked against exactly the thing the transform was written to fix. coordinate geometry paper, every option reads A. (-2, 3) , ten chars, binned a count with no reason cant tell u “model returned garbage” from “ur schema is stricter than the paper” and those have opposite fixes also 44 duplicate-answer flags, every one wrong: -2 and 2 both normalised to 2 lol. on a maths paper the sign IS the question."}, {"post_id": 43025, "ts": "2026-08-08T02:19:09Z", "hours": 0.3111, "text": "if any of you guys wanna try this out here is the link: https://trystudybuddy.vercel.app/ YOOOOO WE GOT OUR FIRST FEW USERS i just checked before sleeping and yo we have 14 worksheets in the processing queue right now i wonder how much we had before THANK YOU GUYS"}, {"post_id": 42970, "ts": "2026-08-07T23:33:19Z", "hours": 5.2603, "text": "Devlog 2 - StudyBuddy HERE IS THE LINK TO TRY IT ( https://trystudybuddy.vercel.app/ ) left a pile of worksheets extracting overnight cuz i was sick of testing every fix against the same two papers. woke up to 9 worksheets, 713 questions, 353 pages everything below only shipped after i swept it over all of that first. rule i have now, after two earlier “fixes” that read perfectly and were wrong on real data a question that shipped reading ?rac{44}{11} i tell the model to write plain text. it writes LaTeX anyway sometimes that fails loudly. \\sqrt isnt a valid JSON escape so the response explodes and i lose a page. thats fine?? at least i know the other half is the problem. \\f is a form feed and \\t is a tab, both totally valid , so \\frac{44}{11} parses perfectly and quietly becomes a form feed followed by rac{44}{11} i had an AMC8 question in my database reading ?rac{44}{11} and nothing anywhere reported a problem fix has to run before the first parse , not in the catch block, cuz the version that actually hurts u never throws it doubles the backslash on letter runs JSON would misread, but only the six that collide (b f n r t u) and only when the run spells a real command. otherwise a real line break stops being a line break, which is a fun way to make things worse questions torn in half by the page break extraction reads one page at a time and never sees the page before or after. so a question ending at the bottom of page 3 with its answer choices at the top of page 4 is never whole in either request . five of them on the AMC8 paper one fix folds the halves back together. the other is for the worse case where the extractor returned nothing at all for the second half, cuz a bare block of answer choices isnt a question so the model just drops it. theyre still sitting in the next pages text layer tho, u just have to go get them sorting questions within a page needed its own module cuz the bounding boxes lie . question 4 came back with a top of 1428 and question 5 with 1379, so pure geometry puts them backwards AMC8 went from 19 of 25 questions having their answer choices to 24 of 25 , zero false positives across 348 SHSAT pages stuff that broke a worksheet told me it had 26 questions when the paper has 25 . the extra one was the axis labels off a diagram, and the SHSAT ones had rows that just said CONTINUE TO THE NEXT PAGE. dropped 23 rows, all page furniture then immediately shipped a followup bug where the card read “Questions 25” next to “Unchecked 26” cuz i filtered one count and forgot the other one lol tried just asking the model to return a carried answer block as half a question. produced zero of them and started relabelling stem-only questions as free response, which hides the damage from every check i have. reverted the landing page every animation was gated behind prefers-reduced-motion , which sounds responsible until u find out some managed windows installs ship with animation effects off by default . so the page whose whole job is showing the product working was showing a static screenshot the hero panel gets dealt onto the page like a card now. needs a perspective on the parent or the rotations collapse into a shear and it just looks like a slide the forgetting curve draws itself left to right. stroke-dashoffset does not work here , pathLength is silently ignored under vector-effect: non-scaling-stroke so the dash tiles across the path instead of spanning it once. and i need non-scaling-stroke or the line renders 9x too thick . used a page-coloured shutter instead next things: that one AMC8 question needs reading off the page image since the text layer doesnt have it. and theres a cheaper reduced-motion compromise i wrote down but havent built."}, {"post_id": 42187, "ts": "2026-08-06T20:02:11Z", "hours": 13.8281, "text": "Devlog 1 - StudyBuddy so ive been doing SHSAT practice tests for a while and the thing that always got me is that after i mark one, i have like 20 wrong answers and no idea what to actually do with that info . like ok i got 12 questions wrong, but am i bad at geometry or did i just misread three questions? no clue. so id end up redoing entire sections i was already fine at. basically what im building is a web app where u upload a worksheet or a practice test (pdf or even just a photo of the page) and it reads every question off it, figures out what topic each one is, and then after u mark which ones u got wrong it schedules them to come back later using FSRS (same spaced repetition algo anki uses). the thing that makes it diff from just writing ur mistakes in a notebook is that it tracks topics across every test u ever upload . one test says nothing. five tests and it can actually tell u “ur bad at ratios” with a straight face. the AI runs on my own laptop i did not want to pay for an api. so the vision model that reads the pages runs on my own rtx 5080 . it sits at home and asks the deployed site for jobs, and it only ever dials outward so theres no port open on my home network. if my laptops off, uploads just queue instead of dying. the part i was most wrong about i picked the model i was using (qwen2.5vl:7b) literally because it was the first one i pulled . thats the whole reason. so i finally benchmarked it properly, 9 models on a real 58 page shsat paper, 114 questions . the one i already had won?? the 27b model is 4x bigger, scored 6 points WORSE , and took 183 seconds per page vs 7.8 . id been assuming for weeks that upgrading would fix my accuracy problems lol. also the grading was free which i was way too happy about. every question number 1-114 shows up exactly once on the paper so the test just grades itself , i never labelled a single page by hand. the bug that was actually my fault so when i looked at WHICH questions got missed they werent random, they came in chunks . one model dropped 17 questions in a row . turns out every single miss on every model was a page that came back completely empty . not a wrong answer. nothing. and that was my bug not the models . an empty reply gives 0 questions and no error, so my checker (which only looked for gaps in question numbering) saw nothing wrong and the upload said success while a whole page just quietly disappeared . fixed with one retry at a slightly higher temperature cuz a model that decided to output nothing will decide that again if u ask it the exact same way. stuff that broke i wrote a check to catch questions that got cut off mid sentence (flag anything not ending in punctuation) and it flagged 25 out of 114 questions on a CLEAN run . all wrong. turns out shsat questions end with like “by” or “through” all the time and the answer choices finish the sentence. fixed it and it changed literally zero outcomes so the rule was doing nothing the whole time. also added rate limiting and instantly locked myself out of my own test suite , which signs up way more than 5 times an hour from localhost. also deleted my entire email system . u need a domain u own to send emails (spf/dkim records) and a free .vercel.app subdomain cant do that. so instead of buying a domain i deleted 274 lines and made google sign in the front door. next things: tier B uploads dont get topic tags yet, and theres one test failing on purpose cuz FSRS says a question u just got wrong is due in 1 minute but i think it should be due immediately. gotta pick one."}]...
|
Title: StudyBuddy by @Vedant_Daga | Stardance
Dev Title: StudyBuddy by @Vedant_Daga | Stardance
Devlogs:
Devlog 1 - StudyBuddy so ive been doing SHSAT practice tests for a while and the thing that always got me is that after i mark one, i have like 20 wrong answers and no idea what to actually do with that info . like ok i got 12 questions wrong, but am i bad at geometry or did i just misread three questions? no clue. so id end up redoing entire sections i was already fine at. basically what im building is a web app where u upload a worksheet or a practice test (pdf or even just a photo of the page) and it reads every question off it, figures out what topic each one is, and then after u mark which ones u got wrong it schedules them to come back later using FSRS (same spaced repetition algo anki uses). the thing that makes it diff from just writing ur mistakes in a notebook is that it tracks topics across every test u ever upload . one test says nothing. five tests and it can actually tell u “ur bad at ratios” with a straight face. the AI runs on my own laptop i did not want to pay for an api. so the vision model that reads the pages runs on my own rtx 5080 . it sits at home and asks the deployed site for jobs, and it only ever dials outward so theres no port open on my home network. if my laptops off, uploads just queue instead of dying. the part i was most wrong about i picked the model i was using (qwen2.5vl:7b) literally because it was the first one i pulled . thats the whole reason. so i finally benchmarked it properly, 9 models on a real 58 page shsat paper, 114 questions . the one i already had won?? the 27b model is 4x bigger, scored 6 points WORSE , and took 183 seconds per page vs 7.8 . id been assuming for weeks that upgrading would fix my accuracy problems lol. also the grading was free which i was way too happy about. every question number 1-114 shows up exactly once on the paper so the test just grades itself , i never labelled a single page by hand. the bug that was actually my fault so when i looked at WHICH questions got missed they werent random, they came in chunks . one model dropped 17 questions in a row . turns out every single miss on every model was a page that came back completely empty . not a wrong answer. nothing. and that was my bug not the models . an empty reply gives 0 questions and no error, so my checker (which only looked for gaps in question numbering) saw nothing wrong and the upload said success while a whole page just quietly disappeared . fixed with one retry at a slightly higher temperature cuz a model that decided to output nothing will decide that again if u ask it the exact same way. stuff that broke i wrote a check to catch questions that got cut off mid sentence (flag anything not ending in punctuation) and it flagged 25 out of 114 questions on a CLEAN run . all wrong. turns out shsat questions end with like “by” or “through” all the time and the answer choices finish the sentence. fixed it and it changed literally zero outcomes so the rule was doing nothing the whole time. also added rate limiting and instantly locked myself out of my own test suite , which signs up way more than 5 times an hour from localhost. also deleted my entire email system . u need a domain u own to send emails (spf/dkim records) and a free .vercel.app subdomain cant do that. so instead of buying a domain i deleted 274 lines and made google sign in the front door. next things: tier B uploads dont get topic tags yet, and theres one test failing on purpose cuz FSRS says a question u just got wrong is due in 1 minute but i think it should be due immediately. gotta pick one.
Devlog 2 - StudyBuddy HERE IS THE LINK TO TRY IT ( https://trystudybuddy.vercel.app/ ) left a pile of worksheets extracting overnight cuz i was sick of testing every fix against the same two papers. woke up to 9 worksheets, 713 questions, 353 pages everything below only shipped after i swept it over all of that first. rule i have now, after two earlier “fixes” that read perfectly and were wrong on real data a question that shipped reading ?rac{44}{11} i tell the model to write plain text. it writes LaTeX anyway sometimes that fails loudly. \sqrt isnt a valid JSON escape so the response explodes and i lose a page. thats fine?? at least i know the other half is the problem. \f is a form feed and \t is a tab, both totally valid , so \frac{44}{11} parses perfectly and quietly becomes a form feed followed by rac{44}{11} i had an AMC8 question in my database reading ?rac{44}{11} and nothing anywhere reported a problem fix has to run before the first parse , not in the catch block, cuz the version that actually hurts u never throws it doubles the backslash on letter runs JSON would misread, but only the six that collide (b f n r t u) and only when the run spells a real command. otherwise a real line break stops being a line break, which is a fun way to make things worse questions torn in half by the page break extraction reads one page at a time and never sees the page before or after. so a question ending at the bottom of page 3 with its answer choices at the top of page 4 is never whole in either request . five of them on the AMC8 paper one fix folds the halves back together. the other is for the worse case where the extractor returned nothing at all for the second half, cuz a bare block of answer choices isnt a question so the model just drops it. theyre still sitting in the next pages text layer tho, u just have to go get them sorting questions within a page needed its own module cuz the bounding boxes lie . question 4 came back with a top of 1428 and question 5 with 1379, so pure geometry puts them backwards AMC8 went from 19 of 25 questions having their answer choices to 24 of 25 , zero false positives across 348 SHSAT pages stuff that broke a worksheet told me it had 26 questions when the paper has 25 . the extra one was the axis labels off a diagram, and the SHSAT ones had rows that just said CONTINUE TO THE NEXT PAGE. dropped 23 rows, all page furniture then immediately shipped a followup bug where the card read “Questions 25” next to “Unchecked 26” cuz i filtered one count and forgot the other one lol tried just asking the model to return a carried answer block as half a question. produced zero of them and started relabelling stem-only questions as free response, which hides the damage from every check i have. reverted the landing page every animation was gated behind prefers-reduced-motion , which sounds responsible until u find out some managed windows installs ship with animation effects off by default . so the page whose whole job is showing the product working was showing a static screenshot the hero panel gets dealt onto the page like a card now. needs a perspective on the parent or the rotations collapse into a shear and it just looks like a slide the forgetting curve draws itself left to right. stroke-dashoffset does not work here , pathLength is silently ignored under vector-effect: non-scaling-stroke so the dash tiles across the path instead of spanning it once. and i need non-scaling-stroke or the line renders 9x too thick . used a page-coloured shutter instead next things: that one AMC8 question needs reading off the page image since the text layer doesnt have it. and theres a cheaper reduced-motion compromise i wrote down but havent built.
if any of you guys wanna try this out here is the link: https://trystudybuddy.vercel.app/ YOOOOO WE GOT OUR FIRST FEW USERS i just checked before sleeping and yo we have 14 worksheets in the processing queue right now i wonder how much we had before THANK YOU GUYS
Devlog 3 - StudyBuddy wrote a script that reads each papers own answer key out of the source pdf and diffs it against my database. so the paper grades me instead of me grading myself. those 14 sheets scored 1 of 14 the first time i pointed it at them. tonight theyre 14 of 14 . barely any of it was the model. one paper stored 8 of its 15 questions. the model had read all 15 the log said dropped 6 unreadable question(s) . a count. no reason. it said that for two days made it print which field rejected the question and it told me on the first run: choices.0.label: Too big: expected string to have <=8 characters answer labels are capped at 8 chars, but the cap runs before the function that shortens them. that function only exists cuz the model returns A. 60 instead of A so the cap was checked against exactly the thing the transform was written to fix. coordinate geometry paper, every option reads A. (-2, 3) , ten chars, binned a count with no reason cant tell u “model returned garbage” from “ur schema is stricter than the paper” and those have opposite fixes also 44 duplicate-answer flags, every one wrong: -2 and 2 both normalised to 2 lol. on a maths paper the sign IS the question.
Devlog 4 - StudyBuddy no new features today. just went hunting for stuff that was quietly broken, and there was way more of it than i expected the sign-in page could send u to a different website if someone handed u a link like /signin?next=someothersite.com , u would log in and then land on their page immediately after typing ur password, which is about the worst possible moment for that to happen this one went first there was no limit on login attempts i had limits on signing up and on uploading. somehow not on the actual password box so u could sit there and guess forever getting blocked now looks identical to just getting the password wrong. telling someone “too many attempts” quietly confirms the account exists file storage was writing into the void if one setting went missing it silently saved ur page images somewhere that doesnt survive on the server uploads said they worked. returned a success. images just gone nothing errored anywhere, which is why it sat there so long now it refuses to start up at all instead of pretending everything is fine i almost broke my whole test suite fixing something unrelated locked down two internal-only routes with what seemed like the obvious check except my tests run against a production build, so that check wouldve locked the tests out too caught it before it shipped, then wrote a test explaining it so future me doesnt helpfully undo it added security headers and instantly caught myself put them in report-only mode first so nothing could actually break about 40 seconds later it flagged a script that my own analytics loads the strict version wouldve blocked it in prod. i absolutely wouldve shipped that one fix i deleted instead of shipping had a note to add another check to the duplicate-question detector actually tested it against real papers first, and it turns out it can never trigger. the answers on a maths paper are just “4” and “9” and stuff, way too short for it to match on wouldve quietly made things worse all tests green at the end of it. onto the next pile
Devlog 5 - StudyBuddy “accept the remaining 114” checked none of them that button fires one save per question, and on my test paper thats 114 of them at once nothing read the answers back, so a save that failed looked exactly like one that worked the tick stayed on, u moved to the next screen, and it was never stored deleting a question said “Saved” and then didnt delete it delete waits a few seconds so u can undo it. it dropped the question from the list first and threw away whatever came back from the server so if it failed u got told it saved, and the question showed up in ur study queue later like nothing happened also there was no undo button anywhere. it was just a slow delete $5 was being eaten maths sometimes comes wrapped in dollar signs so i strip them off. money also comes wrapped in dollar signs “Sam has $5 and Ana has $12” was being read as “Sam has 5 and Ana has 12” checked a real saved question and yep. paper says $5, database said 5 if my worker died, ur worksheet said “queued” forever the machine that reads the pages runs at my house. if it fell over mid job, nothing anywhere ever marked that job as failed it just sat there, and the free credit it charged u never came back the topic tagging could fail without failing it needs a bit of software thats not always there on the server. when it wasnt, it came back with “no matches” which is a completely normal answer. so the job finished, every question was untagged, ur weak areas page was empty, and nothing anywhere was an error one i was told to do and didnt had a note to cap the page number by how many pages the worksheet has except if u upload pages 10 to 15 of a pdf thats six pages numbered 10 to 15, so that check refuses every single one of them capped the two things separately instead also the screen asking u to check questions against the page never showed the page finishing a review session stopped saying u finished it the AI could print its own error onto ur status page, which sometimes meant quoting ur own worksheet back at u the upload checked the image size by asking the browser instead of opening the image
Devlog 6 - StudyBuddy u can throw everything u got wrong into blooket now button on the dashboard for the whole account, and one per worksheet if u only want that paper it gives u a file, u upload it to blooket, u get a set of exactly the questions u missed wrong means ever wrong, not currently wrong. if u got it wrong on paper and then right in review, its still in there. thats the one u actually want to drill and it wouldve been weird to leave out blooket hands u an .xlsx template so everyone calls this an xlsx export, but its uploader only accepts csv. took a while to work out also its importer just silently imports nothing if the file is slightly off. no error, no warning, zero questions. three separate ways to trip that picking a subject barely did anything theres a dropdown on upload for what subject the worksheet is. it offers things like “Algebra 1” only the first bit of that was ever used, so picking Algebra 1 searched all of high school maths. exactly the same as picking “all of high school maths” the one control u have over how ur questions get sorted, doing basically nothing long papers were quietly losing questions to a limit the topic tagger takes questions 100 at a time. fine except it grabbed 100 in no particular order and then removed the ones already done, so on a 114 question paper 14 never got looked at, and which 14 was down to whatever the database felt like that day worse on a second pass: if 100 were already tagged it handed back an empty list, which reads as “nothing left to do”, and the rest never got tagged at all two screens counting the same paper differently the worksheets page filters out page junk like “CONTINUE TO THE NEXT PAGE” before counting. the dashboard didnt so the same worksheet was 25 questions on one screen and 26 on the other, and nothing tells u which one is lying the chart was lying about time the accuracy chart draws a bar per week. it was only making bars for weeks u actually did something in so 12 bars looked like 12 weeks in a row but werent. practise in march and again in june and u see two bars side by side like it was steady every week is a bar now, empty ones included, and it says which weeks its showing scrolling changed my settings without me touching anything the page range and question count boxes were number inputs, and number inputs treat the scroll wheel as a way to change the value so scrolling down the upload page with ur cursor over one of them silently rewrote which pages get read found a pile of other accessibility stuff while i was in there: buttons a bit too small to reliably hit on a phone, cards that vanish in high contrast mode, and a “skip to content” link that didnt actually skip anything also asking to see an explanation u already had was using up ur hourly limit for generating new ones the topic picker was built in a way that made screen readers think the list had nothing in it button labels were half Title Case and half sentence case, sometimes on the same screen
Devlog 7 - StudyBuddy the drag box was broken in the real app. for months u upload a worksheet, u draw a box around question 1, it fills in. thats the whole manual editor, thats the whole free tier. and it didnt work. click through the app to get there and nothing responds. reload and its fine. four previous commits went looking for this. the test had a 24 line comment explaining why it was probably a test problem. it was not. elementFromPoint(100, 28) -> HTML elementsFromPoint(100, 28) -> [HTML] thats the browser saying nothing is at this pixel , for every pixel on the page. the cause was 8 view transition animations, 6 stuck running forever . one that never finishes sits in the top layer and covers everything. and its a pseudo element so it shows up in no ancestor walk and no element stack, which is why every previous investigation contradicted itself. bisected on clean builds: next flag react component result on on broken off on broken on off clean off off clean so its react’s <ViewTransition> , not next. three lines of css. the drag test used to fake the mouse with dispatched events, now it uses a real one, which is the only thing that proves anything. gemini has never completed a single request 4 providers in settings. one says “has a free tier worth starting on”. zero successful calls, ever. every nullable field is anyOf: [{type:'x'}, {type:'null'}] gemini doesnt understand anyOf , so a filter strips keywords it rejects the filter dropped anyOf and left {} behind, while leaving the field in required a required field with no type = rejected request. every time funny part: the allowlist already had nullable in it, gemini’s own word for the same idea. someone knew. nothing connected them. the landing page was lying about 3 of its 4 topics theres a comment above them saying “kept honest on purpose: these are real taxonomy names” . Ratio & proportion - not real Linear equations - not real Reading inference - not real Vocabulary in context - real so the one claim the page made about its own honesty was the false one lol. theres a test now instead of a comment. tests found 2 bugs i wasnt looking for new Date("sometime in 2010") returns jan 1 2010, cuz v8 scrapes a year out of almost anything. and it parses as local midnight while everything next to it is UTC. on a 13th birthday thats the whole question one route answered 404 to someone with no session. the client sends u to sign in on a 401 and brings u back after, so a tab that sat open till the session expired just ate what u typed the rest a reload could cost u a 114 question paper. markup saves nothing till every question is marked, so its a local draft now / , /signin , /signup are static html now. the topbar called auth() from the root layout, which made all 39 routes render per request the 23mb embedding model was getting fetched inside a background task on every cold start, and failing silently one commit recorded 32 renames and none of the code . the git add failed and i’d redirected the error away so i never saw it
Devlog 8 - StudyBuddy im too lazy to have a full write up for this (watched spiderman tdy IT WAS REALLY GOOD) for each topic that a user gets wrong, a seperate model (gpt-oss:20b, sorry if i miswrote the model) gives a walkthrough of the topic also added missed questions to the csv export added a AI answer key system if the worksheet doesnt have one.
Devlog 9 - StudyBuddy the merge tool could double up a question number renumbering the survivor of a duplicate pair used Math.min of just those two rows, blind to the rest of the paper merging a phantom #5 into a real #9 could hand the paper a second #5, the exact thing the tool exists to prevent zero tests on a function that deletes rows. five now, including the repro $15/hour was losing its sign, not just $5 the math-stripper runs from one $ to the next, so “earns $15/hour and $18/hour” reads the slash as a fraction and eats both signs. same with $40 = $25 + $15 on the = i wrote this down once as “one weird case.” it’s the whole unit-rate and equation category fix checks the char after the closing $ : a digit means it’s opening the next price, not real math figure crops didnt need a new pipeline, just reusing one filed as “never produced,” which reads like crop, store, backfill the verify screen already computes a crop window from the bbox over the stored page image. review got wired to the same math, every old worksheet gets it free the real work was the guards: zero-area, inverted, off-page, or no recorded page size all have to degrade to nothing rather than to the wrong crop a fence i built to be un-escapable, wasnt the comment says a new tag can’t be added without going through the escaping. page-seam work added two by typing them directly a page whose OCR contains the literal closing tag closes the fence early, and everything after reads as instructions instead of data tag list exists once now, every fence built from it every worksheets.status write was a bare UPDATE no guard on the current value, so a stale job retry could drag an already-reviewed worksheet back to failed one transitionWorksheet(from, to) now, every write through it preview deploys were migrating the prod database guard only checked VERCEL_ENV === 'production' , but previews fire on every push against one shared DATABASE_URL two finishing together were racing through the migration folder 9 tests could go quiet and nobody would know one e2e file, 12 tests serial in a single tab, everything past “verify” depending on a question a drag gesture created three tests earlier a drag regression silently skipped 9 unrelated tests instead of failing them api fixture, split the file, broke the drag on purpose to prove it. held the question list rendered all 114 cards for a screen that edits one at a time deferred a while back: virtualizing editable rows risks one unmounting mid-edit only one card can ever be expanded, so the risk surface is exactly one row virtualizes past 40 now, open row pinned into the rendered range wherever scrolling goes. typed into one at 60 questions, scrolled thousands of px away, still there, still focused, still holding the edit also profile save had devlog 4’s router.refresh() remount bug login rate limit skipped Auth.js’s own credentials endpoint ollama worker had no startup timeout and just hung worksheet text leaked into console logs on schema rejections review screen shipped every page’s OCR text on page-1 load admin console got merge, tree edit, queue, usage doc-count drift (third time), and a false-positive LaTeX check flagging real set notation as broken math
Devlog 10 - StudyBuddy mostly the same bug wearing different clothes: a screen that exists, that u can get to, that quietly does less than it says tier C was sitting in settings doing nothing save an ollama address and the app resolves u to a browser executor. that executor had nowhere to go, so ur worksheet just sat there looking queued it claims the job now and reads each page against localhost:11434 , posting back through the same queue my gpu posts through has to run in the browser cuz a server cant reach ur localhost, so the tab stays open. checkpointed per page tho, closing it resumes instead of restarting the paper a mark u mis-tapped was permanent tap through 40 of these and ur going to hit the wrong one eventually that one tap feeds the FSRS schedule, the topic accuracy, the weakness ranking and the blooket export only way back was deleting the worksheet and uploading it again, which costs u a trial credit. so the fix for a mistap was paying for it two defences that were never on WORKER_ALLOWED_IPS was optional and empty meant no restriction empty is the state every deployment starts in, so the normal outcome was a defence thats off that nobody ever decided to turn off refused now. * still allows any address but somebody has to type it untagged worksheets looked identical to broken ones tier B cant auto-classify, the embedding model needs a native runtime the serverless host doesnt have so ur questions saved fine and were reviewable fine, they just had no topic and nothing said why. reads exactly like it silently failed every tier that can come back untagged says so now nothing told u when a worksheet finished u uploaded and then u guessed. sat on the status page or came back later and hoped in-app bell that needs zero setup, plus web push for a tab u closed also “Review these now” now reviews those questions. the word had drifted onto three screens meaning three different things dashboard was missing three of its panels, and the trend arrow was specified ages ago and never computed taxonomy had no front door and the subject panel only went one level deep. Math > Geometry > Triangles walks now pagination was capping at the fiftieth worksheet and saying nothing about it the AI setup prompt showed up after ur trial ran out, which is the one moment it cant help u grouped scripts/ by what it does to ur data. inspect/ reads, repair/ writes behind a guard, benchmark/ measures 1285 tests green. playwright hasnt run yet and app/ moved a lot this time, so thats next
Devlog 11 - StudyBuddy this is a short one got the google sign in to work added email verification and forgot ur password thing cleaned up the overall UI made the topic tree standardized cleaned up some of the extraction issues added ollama integration for everyone added practice question generation, topic overview, etc tested everything fully the attached image is the app after a ton of testing *
ANYONE RATING THIS PROJECT - THE VIDEO ON THE SHIP IS OUTDATED, THERE IS ALSO ANOTHER FEW DEVLOGS SO CHECK THAT OUT BEFORE JUDGING BECAUSE IT GIVES MORE INFO ABOUT THE BUILDING AND WHY THE CHANGED A LOT SORRYYYY ALSO USE THE SAMPLE WORKSHEETS I ATTACHED OR EASILY PARSEABLE WORKSHEETS. TEMPORAILY IVE CLOSED THE API KEY VERSION AS MOST PEOPLE DONT HAVE THEM. COMPLEX WORKSHEETS ARE TO BE USED ONLY WITH LARGE LLM Devlog 12 - StudyBuddy got everything ready to ship turns out that ollama needed some permissions so fixed that and added it to readme for people to set up, and other stuff like that shipping it in 5 mins 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉
Devlog 13 - StudyBuddy update the ui to make it look liek sticky notes and lined paper
Devlog 14 shipwrights rejected the project so im fixing their things decided to clean up the code, get rid of old functions, and i also cleaned up the UI because no one really needs the heading and then what it means, like i think you know that topics means topics and doesnt need a whole sentence after that. cleaned up the repo, got rid of ai generated code fixed a 500 error when uploading worksheets, cuz something happened and some linux kernel wasnt compaitble with the library i was using wrapped up my last few fixes lowk not a lot of new features, rather like fixes
Devlog 15 more cleaninggggggg cleaned up repo, removed more dead logic and stuff instead of a css wallpaper, i added a image of lined paper to really give that school/learning feel asked ai to help me get the ui to look kinda fresh and add the pencil style heading
Devlog 16 - StudyBuddy added some sample worksheets so you can try it out added the borders back to the buttons because i accidently removed them before
Devlog 17 - StudyBuddy (ah im losing track of these devlogs uh my ship keeps getting rejected for look to AI, and ive literally rebuilt everything, removed all teh ai generated thing. (im gonna ship again rn) made a logo cuz i thought it would look cool added a Terms of Services page cuz its risky cuz people could upload worksheets they dont have access for an i could be fried so i made them agree to that cleaned up more code fixed a few more bugs
Devlog 18 - StudyBuddy lowk not a lot of content in this one but like 1000000 different bugs popped up and reviewers are pointing it out so thank you smmm ( @blowupthenoobs ur the goat) fixed the trials having no limit other fixes just check my commits
Devlog 19 - StudyBuddy even more bug fixes so i pushed a change, and that somehow broke the entire pipeline so i patched it no real content just fixes going to add API key integration soon (follow to see it happen)
Devlog 20 - StudyBuddy more bug fixes continous reships (they keep saying its too AI generated even after i rebuilt the UI) started working on the API key integration (like almost there rn) tons of dead code removal and code clean up added support for firefox too (now it works on edge, firefox, chrome, and prolly a ton others i just havent really tested it)
Devlog 21 - StudyBuddy patched even more bugs rewrote tons of my code (ai to human) cleaned up old files (a lot of old features were removed and reupdated) just more QoL fixes
Devlog 22 - StudyBuddy fixed more bugs and rewrote code by hand
Devlog 23 - StudyBuddy i just had some minutes left on this so im just making the devlog still waiting for my ship to be approved (been waiting a few days) no big changes at all (waiting for feedback)
Devlog 24: StudyBuddy so a lot of the feedback said “cool but it needs ur gpu on”. that made it seem like a PoC, so now its running on the free tier of openrouter. making the free tier work one request per question was never going to fit a daily cap. extraction now sends up to 10 pages / 25 questions per call, sorting and answer key go 10 questions at a time. ~4 requests per worksheet instead of ~42 the homepage and upload page count the day’s calls. 80% says busy, 100% stops reading and points u at the samples. samples upload page leads with the three samples as one-click cards; ur own pdf is the second option and says how much of the shared allowance is used. removed phone photo uploads (highly innaccurate on the free tier of models i have)
Ships:
StudyBuddy Turn the worksheets you have already done into a record of what you actually know. Try it: https://trystudybuddy.vercel.app Code: https://github.com/DagaVedant/StudyBuddy What I made Upload a worksheet you already finished, as a PDF or photos. A vision model pulls out every question, its options and its answer key. You mark what you got wrong. That is the only input it needs. It sorts questions into 87 topics across SAT and competition maths. Then it ranks your weak areas and schedules revision using FSRS, the algorithm behind Anki. It also writes practice questions on your weak topics and exports misses to Blooket. Built on my own past papers: 387 real questions from 22 worksheets. What was challenging The models can run in four places: my GPU, your API key, your own Ollama, or not at all. A student with a GPU should never send homework to my server. A student with nothing should still get something. Topic tagging needs an embedding model that serverless hosting cannot run. So the shortlist is a pgvector query on the server and the vector is computed anywhere, including in your browser under WebAssembly. Worst bug was three characters: I stored the global fetch on a class field, which passes the object as the receiver. Node allows it, browsers throw Illegal invocation. Every test passed and the only runtime that mattered was broken. What I am proud of It does not lie to you. Weak topics are ranked by a Wilson lower bound, not a raw percentage, so two unlucky answers cannot fake a weakness. Model-written questions are kept out of your accuracy, so the ranking cannot feed the questions it generates. Every model response is schema-checked before it reaches the database. Generated practice is sifted against thirteen specific failure modes. When my GPU is off, the upload screen says so instead of spinning. 1,459 unit tests, 84 end to end, 293 commits. How to test it Sign in with Google, or an email and password. Upload any worksheet you have already done. A past paper works well. Check what it read. Each question sits beside the page image it came from. Mark what you missed, then open the dashboard. The free trial reads three worksheets on my own GPU. If it is off, your upload queues and the app tells you. To skip the wait, settings takes your own API key or connects to Ollama on your machine. guys i wish this was markdown compatible but its not so sorry
StudyBuddy - https://trystudybuddy.vercel.app fyi before u try it: reading runs on a free model with a shared daily cap, and ship day is way more traffic than a normal day. please use the sample worksheets wherever u can (they’re the first thing on the upload page, one click) and upload at most one of ur own pdfs for the next day or two. if the homepage says the free reads are used up, the samples still work. what it does upload a worksheet pdf. it reads every question off the page, tags each one by topic, and works out the answer key. u mark which ones u got wrong and it brings them back on an FSRS schedule (the algo anki uses). across every test u upload it turns “i got 12 wrong” into “ur bad at ratios”. what changed since last time runs on openrouter’s free tier instead of my gpu. not a proof of concept anymore one worksheet is ~4 requests instead of ~42. pages are read in groups the site says when the day’s free reads are running low. clear about the trial: 3 worksheets free, then still free, u just add questions by hand or plug in ur own key. what was hard free models reason before they answer and bill that against the output limit which ends up causing an error, but its really hard to figure out the embedding-only shortcut for sorting looked fine and was wrong a third of the time so fixed it...
|
1793054929.91747
|
1793141329.91747
|
|
21857
|
HoopIQ by @atharva02 | Stardance
|
atharva02
|
3
|
75.8
|
642
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T21:56:53Z", "hours": 22.0, "multiplier": 16.02, "payout": 348, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. The hardest part in this ship was probably finding the best way to integrate mobile into this. I really don’t like styling, and it took really long to figure out correct widths, until I realized viewport widths which made life so much easier and correctly take up the space you need. I’m most proud of the animations that have now been integrated within the site. They’re pretty basic, but I do think they add enough flavor to the app to make it a little bit more enjoyable, which is always a nice touch. When testing this project, data is saved locally so progress doesn’t save between devices and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. This is the third ship for this project, and I anticipate more to come so all feedback is appreciated. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}, {"ship_num": 2, "ts": "2026-08-29T02:17:33Z", "hours": 21.0, "multiplier": 10.39, "payout": 215, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. A challenging part for this part was finding specific drills that improved the skillset that I had created. Also the metric to imperial conversion had a finicky error which took a lot longer to fix, but it’s here now so great! I’m proud that the drills remain personalized like the other training parts as they target where you have logged you are weak at. I feel training sites are best when the user knows where they struggle and needs a medium to improve. When testing this project, data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. Other than that, this is the second ship so some feedback was incorporated, but same as before, this app will continue to be expanded upon so all feedback is good feedback. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}, {"ship_num": 3, "ts": "2026-08-20T01:05:17Z", "hours": 6.0, "multiplier": 12.86, "payout": 79, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. The challenging part within making this app was finding out what skills are important to test out. Obviously shooting is the main aspect of basketball, but it’s also important to practice ball control. After that, there was challenges it creating specific algorithms to test those skills that provide an even split across the categories. I’m most proud of how the shot diet and baseline work together to create a unique training experience so you specifically work on categories that help YOUR play style, rather than a generic one. When testing this project, all data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Other than that, I’m really excited to get any feedback on this whatsoever considering there is a lot more I plan to add to this. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}]...
|
[{"post_id": 65645, "ts": "202 [{"post_id": 65645, "ts": "2026-09-10T22:34:50Z", "hours": 4.3764, "text": "Devlog #18 Current Features Drill panel is here! Took a lot of effort to get working because accessing data from the same project is hard 😭. It wasn’t hard to access the drill history itself, but the way I was storing it was based on ID numbers and not drill names(something that was never actually stored) which made it hard to show on screen. I think it looks really good on the screen, and it’s intuitive to access via the calendar, click on the day. What’s Coming Up Right now it only shows what exactly you did, and your performance their specifically. However, I want to make it so that the user can easily see the misses they tagged as well, providing an all encompassing way of accessing all their history within this app. Obviously my app uses the data to give them drill suggestions, but the user should be able to see their history and make their own trends based on what they see. Game Plan I’ll be spending the next chunk of this trying to get that working: backend functionality, styling on screen, updating day to day, stuff like that. After that I’ll try to incorporate some animations in that and unless I think of other major changes, there will be another ship hopefully."}, {"post_id": 64585, "ts": "2026-09-09T02:57:01Z", "hours": 4.1461, "text": "Devlog #17 Current Features Started to work on the hover/pressing functionality. I’ve decided to simply combine the two functionalities into one, but I’m struggling to find the best way to display it on the screen. Basically, the user should be able to tap the day they worked on something, and see what exactly they did What’s Coming Up I was mainly testing with the backend part of this within these hours and will push a UI update to reflect these changes within the coming days hopefully. Other than that, I want to hopefully add a feature where they see the exact percentage boost they got by doing a task if I have the correct data to hold that. Game Plan Add UI features as mentioned above, switch gears to working on backend part of progress updates, and see how the app looks like then. Note: I had to reset data to test the UI, hence why my streak isn’t the 2 days including yesterday:)"}, {"post_id": 63999, "ts": "2026-09-08T03:20:25Z", "hours": 4.7167, "text": "Devlog #16 Current Features UI update is finally here! Finally got this working after a lot of trial and error with the display and making it show up with the proper date. The best part is it also looks great with the mobile without any extra styling so even better for me! What’s Coming Up Still want to add more functionality to the calendar specifically such as clicking to see your exact work, hovering to see basic title overview, and just general user interactivity. Game Plan Most of the above changes go along with how I stored data anyway, so I’m not behind in any regard. I plan on adding the above changes first, before deciding what else there is to add in relation to this."}, {"post_id": 63341, "ts": "2026-09-07T03:22:10Z", "hours": 5.4511, "text": "Devlog #14 Current Events Calendar is basically fully functioning! Hasn’t been integrated in the UI yet like I hoped it would be, but I got it working the way I wanted it to with the user able to see their progress in a quick snapshot. Really happy to see this working now as it’s been a asked feature in past ships What’s Coming Up The UI update will definitely be what’s coming up next. I know this was mentioned last devlog, but instead I got it close to fully working and now will be adding the interface. Game Plan Adding the UI on the screen so it fully works, and then switching over to the backend part of the session history"}, {"post_id": 62479, "ts": "2026-09-05T20:52:52Z", "hours": 4.2714, "text": "Devlog #13 Current Events Decided to add the screen itself to the UI so it’s easier to update these logs with progress as it occurs. On the backend, I realize I have been storing drill sessions anyway, just wasn’t displaying them so that’s a pretty big timesave. Along with that, the calendar is still a work in progress, just doing some testing to see how exactly it works along with how the streak will play into that. What’s Coming Up I’d expect a UI update shortly with multiple elements on the screen, maybe not fully functional right away, but in the intial working phase if that makes sense. Game Plan Add calendar and streak elements on screen with functionality – I’ll need some time to test if the days are tracked correctly. After that, it’ll be simply integrated session logs onto the screen"}, {"post_id": 61806, "ts": "2026-09-04T21:52:28Z", "hours": 3.8361, "text": "Devlog #13 Current Events I have started working on implementing a calendar and streak feature. I want to make it similar to stardance’s so that you can see what you worked on that specific day. Essentially, I’ll be adding another tab called history and input information there so they can see their streaks, recent drills, and progress over time. What’s Coming Up None of the UI has been integrated, but that doesn’t mean the backend is finished either. I was experimenting with how exactly the calendar works and how it might look within the UI. Game Plan I plan on slowly integrate the UI with the tab and only show the calendar and streaks at first once that starts working, and then work towards displaying the drill history. Thank you to whoever mentioned formatting devlogs properly in ship review! This makes it a lot easier to read."}, {"post_id": 61135, "ts": "2026-09-03T21:52:45Z", "hours": 5.5231, "text": "Devlog #12 Animations are here! Admittedly, there aren’t too animations, mainly because the one I saw online aren’t sites where the user is constantly interacting, their mainly shops or display sites, like WebOS. However, they are here now and I feel that they’re subtle, but still look nice on the screen. I especially like the pulse effect on the baseline screen when you increase, or decrease, your made shots. A ship will follow this devlog, so as always, please give all feedback that you can think of, specifically features which you want added that could improve this. I anticipate my next feature to be a calendar/streak system of sorts, giving the user visual cues on their progress. I have not forgotten about the drill tutorials, it’s just that it’s a bit more complicated and I like showing off progress periodically, not just once at the end. Hope you all enjoy!"}, {"post_id": 59907, "ts": "2026-09-01T22:48:44Z", "hours": 3.5156, "text": "Devlog #11 New Feature? I don’t know if mobile integration really counts as a new feature but I’m counting it anyway. This makes it easier to train as it is no longer necessary to be huddled around a laptop, entering your data. The new styles make it easier to navigate throughout the site on your phone. I know in my very first devlog I said I want to make a mobile app, but I think making a website work well on a phone also serves that need. Nothing has changed with the way data is handled, the main thing I worked on here was CSS styling in the new media set. These were hours well spent on making the site look good on a phone, so I hope you all enjoy it. My next goal is to add animations to the CSS, whether that’s new elements or just simple, quick navigation I don’t fully know yet. I will also be postponing the drill tutorials to a later date, I want to get another ship this week(I like having each ship have only a few unique features added, it helps me get feedback in bits rather than on everything), and I will likely not have the time to research online drill images or make them myself. Otherwise, I’ve had a lot of fun continuing this project so I hope you guys like this new style as much as I do. Attached is the recreation of mobile styles using Chrome Dev Tools, I didn’t want to type this all on my phone. Enjoy!"}, {"post_id": 59297, "ts": "2026-09-01T00:36:19Z", "hours": 3.7131, "text": "Devlog #10 A sad devlog, but a necessary one, GameIQ has been removed and will not be a feature any longer. I wasn’t able to find an efficient way to add in multiple situations unless I gave a paragraph of information instead of an image describing the situation. Perhaps I will be able to find a workaround with play-drawing section, but I’ve also realized that most people will not use this to play professional basketball games in any regard(high school or rec league), and will use it for pickup most likely. I will be focusing my attention on adding features that were recommended from previous ship reviews. I apologize for anyone reading these devlogs waiting for GameIQ to be a feature, it has been removed now. I am sorry."}, {"post_id": 58372, "ts": "2026-08-30T19:39:48Z", "hours": 3.6325, "text": "Devlog #9 GameIQ is still a work in progress right now, but the second ship reviews came in so I’m planning on making this a larger ship with more than just that. A big recommendation was drill tutorials so I might integrate a separate YouTube channel and provide links to the drills so people know how to do them, or find something online who knows. Also people said to add some animations to the actual site so I will probably add that as well. Despite the 3.5 hours in this devlog, I still couldn’t find a viable API source for the GameIQ, or maybe I’m not looking hard enough lol. I’m still going to try to find some alternative instead of hard-coding situations because I don’t know how many I’ll be able to do. But, I know for sure that some suggestions from past ships will be integrated within the next ship. Thank you for all the feedback so far, it’s been great reading them and planning out what more to do with this project!"}, {"post_id": 57742, "ts": "2026-08-30T00:37:08Z", "hours": 5.3189, "text": "Devlog #8 I’ve started working on the GameIQ section, except nothing with the Ui yet. I’ve been trying to get the internal logic to work and it’s being a bit weird. I’m trying to see if there’s a way to get a large question bank of answers without using an API to route to questions. Other than that, the main premise of GameIQ is you’ll be given a situation and you have to make the correct read out of 4 options, basically a quiz which you can opt out of anytime. Once that’s integrated as simply a base functionality, I hope to make it specific to the drills the user is actively working on to further test their skills. But again, not much works right now, it’s just some base logic with not much else."}, {"post_id": 57000, "ts": "2026-08-29T02:12:39Z", "hours": 4.6917, "text": "Devlog #7 Drills have been incorporated successfully! The user can now properly use this app to actually improve I think. Rather than repeatedly doing the same thing, they can do specific drills to improve their skills. This has the same display as the handling and shooting session log only difference is this doesn’t affect any of the calculations associated with you. These drills are simply a means to improve your handling and shooting skills which thereby affect your percentages. The drills tell you what to complete along with a suggested rep/time count but even if you log more/less it only affects you and not the internal algorithm. Other change made was based off of the first recommendation by adding metric units. This has also been added, you choose at the start and can update at any time via the settings page. Internal calculations still use inches, but the display will show metric in case anyone is looking at what data is being stored. Enjoy!"}, {"post_id": 56232, "ts": "2026-08-27T22:07:13Z", "hours": 5.4708, "text": "Devlog #6 New Feature! Drills are now a new feature that are still a small work in progress, but the initial testing is complete so though I’d post about it here. Essentially before all you could do was practice repetitive actions without actually working on how to improve it. Now with drills, after you’ve done some sessions to see how you’re performing, this will gauge where you’re usually messing up and provide drills to improve. Now these drills will help improve a specific part of the misses you tagged earlier. The flow that I’m going for here is you practice specific shot types and tag misses, complete drills to help said misses, and improve your skills over time! I’m still working on specific drills to add, along with descriptions so the user knows how to perform them. Attached is how it currently looks on the training screen, the session screen is still a work in progress. Note: some feedback given from initial ship will be adressed in next devlog, assuming I get around to it. Once this drill functionality is working and some feedback is adressed, there will most likely be another ship. Enjoy!"}, {"post_id": 54390, "ts": "2026-08-25T11:46:41Z", "hours": 6.0103, "text": "Devlog #5 Unfortunately, no new coding was done because I ran into multiple errors that took a lot of time trying to fix. I’m not actually sure what happened, but my files were messed up and the file structure internally broke down. Luckily, it’s all fixed now, so I thought I’d post this small devlog so I can reset my hours and post a new one when I start working on the drill features, without the 10 hour limit worrying me. Other than that, the UI of the app remains unchanged."}, {"post_id": 52649, "ts": "2026-08-22T21:46:24Z", "hours": 4.5331, "text": "Devlog #4 I did my usual project UI overhaul like I always need to usually. I usually let Claude generate the UI just so I can see stuff on the screen when I code the actual logic, and then inevitably forget I did that when I go to ship, but I have attempted to revert most of that back while still maintain the basketball theme. I personally think it looks pretty good now, I made all of the text bigger, made the buttons and most elements on the screen more visible. I also added a hover effect on most elements to give it an orange glow, this will eventually be converted to fully-mobile friendly(currently it works just doesn’t look good) but I still really enjoy it. Other than that there weren’t any logic changes, just felt the need to showcase what the site looks like right now as I spent a large amount of time updating the UI. Enjoy!"}, {"post_id": 50700, "ts": "2026-08-20T01:01:11Z", "hours": 2.7242, "text": "Devlog 3 So much has happened since. Now that the user has a baseline that they can be compared against, the initial training algorithm has been created! Right now it’s mainly based off of repetition and the user should continuously practice the same stuff they did within the baseline. This is simply the initial algorithm because based off of the baseline, the algorithm finds the weakest area and applies percentages to each are so you practice weak ones more than others. As you can see from the provided image: I have to practice specific ball handling and then if I don’t reach the amount, I have to tag a miss and it gives a cue on what you can do to fix that. Eventually, after this keeps growing, it’ll give specific drills that help instead of repetition. However, I will likely ship after this to see what people think of this so far and we’ll go from there."}, {"post_id": 36695, "ts": "2026-07-28T22:23:59Z", "hours": 2.4206, "text": "Devlog #2 So instead of generating a baseline based off of just personal bio-data, the user goes through a series of drills to see where they stand at currently. They have to practice threes, mid-rangers, layups, and practice some ball-handling drills. Based off of these beginning stats, it generates their current overall and saves their stats to be used later. Right now this is the only main thing that works and based off of this I’m gonna generate a training regime that best fits them mainly off of these stats. Other than that, the user is also able to input their shot diet on the training screen which basically tells the computer what they do when they have the ball. For example, they shoot threes 15% of the time, mid-rangers 35%, layups 40%, and handle the ball via dribbling 10%. Attached is a sample results page after the user finishes their baseline."}, {"post_id": 14042, "ts": "2026-06-23T00:47:40Z", "hours": 1.0325, "text": "So I’m currently working on a basketball trainer website, eventually converted into an app to help people improve their basketball skills. Currently, there’s only a good UI base because I haven’t started the full functionality yet. I plan on, hopefully, adding a new training section twice every week, or just weekly if that’s what works. Attached is the home page where the user inputs their info to get a baseline for training rigor."}]...
|
Title: HoopIQ by @atharva02 | Stardance
Devlogs:
Title: HoopIQ by @atharva02 | Stardance
Devlogs:
So I’m currently working on a basketball trainer website, eventually converted into an app to help people improve their basketball skills. Currently, there’s only a good UI base because I haven’t started the full functionality yet. I plan on, hopefully, adding a new training section twice every week, or just weekly if that’s what works. Attached is the home page where the user inputs their info to get a baseline for training rigor.
Devlog #2 So instead of generating a baseline based off of just personal bio-data, the user goes through a series of drills to see where they stand at currently. They have to practice threes, mid-rangers, layups, and practice some ball-handling drills. Based off of these beginning stats, it generates their current overall and saves their stats to be used later. Right now this is the only main thing that works and based off of this I’m gonna generate a training regime that best fits them mainly off of these stats. Other than that, the user is also able to input their shot diet on the training screen which basically tells the computer what they do when they have the ball. For example, they shoot threes 15% of the time, mid-rangers 35%, layups 40%, and handle the ball via dribbling 10%. Attached is a sample results page after the user finishes their baseline.
Devlog 3 So much has happened since. Now that the user has a baseline that they can be compared against, the initial training algorithm has been created! Right now it’s mainly based off of repetition and the user should continuously practice the same stuff they did within the baseline. This is simply the initial algorithm because based off of the baseline, the algorithm finds the weakest area and applies percentages to each are so you practice weak ones more than others. As you can see from the provided image: I have to practice specific ball handling and then if I don’t reach the amount, I have to tag a miss and it gives a cue on what you can do to fix that. Eventually, after this keeps growing, it’ll give specific drills that help instead of repetition. However, I will likely ship after this to see what people think of this so far and we’ll go from there.
Devlog #4 I did my usual project UI overhaul like I always need to usually. I usually let Claude generate the UI just so I can see stuff on the screen when I code the actual logic, and then inevitably forget I did that when I go to ship, but I have attempted to revert most of that back while still maintain the basketball theme. I personally think it looks pretty good now, I made all of the text bigger, made the buttons and most elements on the screen more visible. I also added a hover effect on most elements to give it an orange glow, this will eventually be converted to fully-mobile friendly(currently it works just doesn’t look good) but I still really enjoy it. Other than that there weren’t any logic changes, just felt the need to showcase what the site looks like right now as I spent a large amount of time updating the UI. Enjoy!
Devlog #5 Unfortunately, no new coding was done because I ran into multiple errors that took a lot of time trying to fix. I’m not actually sure what happened, but my files were messed up and the file structure internally broke down. Luckily, it’s all fixed now, so I thought I’d post this small devlog so I can reset my hours and post a new one when I start working on the drill features, without the 10 hour limit worrying me. Other than that, the UI of the app remains unchanged.
Devlog #6 New Feature! Drills are now a new feature that are still a small work in progress, but the initial testing is complete so though I’d post about it here. Essentially before all you could do was practice repetitive actions without actually working on how to improve it. Now with drills, after you’ve done some sessions to see how you’re performing, this will gauge where you’re usually messing up and provide drills to improve. Now these drills will help improve a specific part of the misses you tagged earlier. The flow that I’m going for here is you practice specific shot types and tag misses, complete drills to help said misses, and improve your skills over time! I’m still working on specific drills to add, along with descriptions so the user knows how to perform them. Attached is how it currently looks on the training screen, the session screen is still a work in progress. Note: some feedback given from initial ship will be adressed in next devlog, assuming I get around to it. Once this drill functionality is working and some feedback is adressed, there will most likely be another ship. Enjoy!
Devlog #7 Drills have been incorporated successfully! The user can now properly use this app to actually improve I think. Rather than repeatedly doing the same thing, they can do specific drills to improve their skills. This has the same display as the handling and shooting session log only difference is this doesn’t affect any of the calculations associated with you. These drills are simply a means to improve your handling and shooting skills which thereby affect your percentages. The drills tell you what to complete along with a suggested rep/time count but even if you log more/less it only affects you and not the internal algorithm. Other change made was based off of the first recommendation by adding metric units. This has also been added, you choose at the start and can update at any time via the settings page. Internal calculations still use inches, but the display will show metric in case anyone is looking at what data is being stored. Enjoy!
Devlog #8 I’ve started working on the GameIQ section, except nothing with the Ui yet. I’ve been trying to get the internal logic to work and it’s being a bit weird. I’m trying to see if there’s a way to get a large question bank of answers without using an API to route to questions. Other than that, the main premise of GameIQ is you’ll be given a situation and you have to make the correct read out of 4 options, basically a quiz which you can opt out of anytime. Once that’s integrated as simply a base functionality, I hope to make it specific to the drills the user is actively working on to further test their skills. But again, not much works right now, it’s just some base logic with not much else.
Devlog #9 GameIQ is still a work in progress right now, but the second ship reviews came in so I’m planning on making this a larger ship with more than just that. A big recommendation was drill tutorials so I might integrate a separate YouTube channel and provide links to the drills so people know how to do them, or find something online who knows. Also people said to add some animations to the actual site so I will probably add that as well. Despite the 3.5 hours in this devlog, I still couldn’t find a viable API source for the GameIQ, or maybe I’m not looking hard enough lol. I’m still going to try to find some alternative instead of hard-coding situations because I don’t know how many I’ll be able to do. But, I know for sure that some suggestions from past ships will be integrated within the next ship. Thank you for all the feedback so far, it’s been great reading them and planning out what more to do with this project!
Devlog #10 A sad devlog, but a necessary one, GameIQ has been removed and will not be a feature any longer. I wasn’t able to find an efficient way to add in multiple situations unless I gave a paragraph of information instead of an image describing the situation. Perhaps I will be able to find a workaround with play-drawing section, but I’ve also realized that most people will not use this to play professional basketball games in any regard(high school or rec league), and will use it for pickup most likely. I will be focusing my attention on adding features that were recommended from previous ship reviews. I apologize for anyone reading these devlogs waiting for GameIQ to be a feature, it has been removed now. I am sorry.
Devlog #11 New Feature? I don’t know if mobile integration really counts as a new feature but I’m counting it anyway. This makes it easier to train as it is no longer necessary to be huddled around a laptop, entering your data. The new styles make it easier to navigate throughout the site on your phone. I know in my very first devlog I said I want to make a mobile app, but I think making a website work well on a phone also serves that need. Nothing has changed with the way data is handled, the main thing I worked on here was CSS styling in the new media set. These were hours well spent on making the site look good on a phone, so I hope you all enjoy it. My next goal is to add animations to the CSS, whether that’s new elements or just simple, quick navigation I don’t fully know yet. I will also be postponing the drill tutorials to a later date, I want to get another ship this week(I like having each ship have only a few unique features added, it helps me get feedback in bits rather than on everything), and I will likely not have the time to research online drill images or make them myself. Otherwise, I’ve had a lot of fun continuing this project so I hope you guys like this new style as much as I do. Attached is the recreation of mobile styles using Chrome Dev Tools, I didn’t want to type this all on my phone. Enjoy!
Devlog #12 Animations are here! Admittedly, there aren’t too animations, mainly because the one I saw online aren’t sites where the user is constantly interacting, their mainly shops or display sites, like WebOS. However, they are here now and I feel that they’re subtle, but still look nice on the screen. I especially like the pulse effect on the baseline screen when you increase, or decrease, your made shots. A ship will follow this devlog, so as always, please give all feedback that you can think of, specifically features which you want added that could improve this. I anticipate my next feature to be a calendar/streak system of sorts, giving the user visual cues on their progress. I have not forgotten about the drill tutorials, it’s just that it’s a bit more complicated and I like showing off progress periodically, not just once at the end. Hope you all enjoy!
Devlog #13 Current Events I have started working on implementing a calendar and streak feature. I want to make it similar to stardance’s so that you can see what you worked on that specific day. Essentially, I’ll be adding another tab called history and input information there so they can see their streaks, recent drills, and progress over time. What’s Coming Up None of the UI has been integrated, but that doesn’t mean the backend is finished either. I was experimenting with how exactly the calendar works and how it might look within the UI. Game Plan I plan on slowly integrate the UI with the tab and only show the calendar and streaks at first once that starts working, and then work towards displaying the drill history. Thank you to whoever mentioned formatting devlogs properly in ship review! This makes it a lot easier to read.
Devlog #13 Current Events Decided to add the screen itself to the UI so it’s easier to update these logs with progress as it occurs. On the backend, I realize I have been storing drill sessions anyway, just wasn’t displaying them so that’s a pretty big timesave. Along with that, the calendar is still a work in progress, just doing some testing to see how exactly it works along with how the streak will play into that. What’s Coming Up I’d expect a UI update shortly with multiple elements on the screen, maybe not fully functional right away, but in the intial working phase if that makes sense. Game Plan Add calendar and streak elements on screen with functionality – I’ll need some time to test if the days are tracked correctly. After that, it’ll be simply integrated session logs onto the screen
Devlog #14 Current Events Calendar is basically fully functioning! Hasn’t been integrated in the UI yet like I hoped it would be, but I got it working the way I wanted it to with the user able to see their progress in a quick snapshot. Really happy to see this working now as it’s been a asked feature in past ships What’s Coming Up The UI update will definitely be what’s coming up next. I know this was mentioned last devlog, but instead I got it close to fully working and now will be adding the interface. Game Plan Adding the UI on the screen so it fully works, and then switching over to the backend part of the session history
Devlog #16 Current Features UI update is finally here! Finally got this working after a lot of trial and error with the display and making it show up with the proper date. The best part is it also looks great with the mobile without any extra styling so even better for me! What’s Coming Up Still want to add more functionality to the calendar specifically such as clicking to see your exact work, hovering to see basic title overview, and just general user interactivity. Game Plan Most of the above changes go along with how I stored data anyway, so I’m not behind in any regard. I plan on adding the above changes first, before deciding what else there is to add in relation to this.
Devlog #17 Current Features Started to work on the hover/pressing functionality. I’ve decided to simply combine the two functionalities into one, but I’m struggling to find the best way to display it on the screen. Basically, the user should be able to tap the day they worked on something, and see what exactly they did What’s Coming Up I was mainly testing with the backend part of this within these hours and will push a UI update to reflect these changes within the coming days hopefully. Other than that, I want to hopefully add a feature where they see the exact percentage boost they got by doing a task if I have the correct data to hold that. Game Plan Add UI features as mentioned above, switch gears to working on backend part of progress updates, and see how the app looks like then. Note: I had to reset data to test the UI, hence why my streak isn’t the 2 days including yesterday:)
Devlog #18 Current Features Drill panel is here! Took a lot of effort to get working because accessing data from the same project is hard 😭. It wasn’t hard to access the drill history itself, but the way I was storing it was based on ID numbers and not drill names(something that was never actually stored) which made it hard to show on screen. I think it looks really good on the screen, and it’s intuitive to access via the calendar, click on the day. What’s Coming Up Right now it only shows what exactly you did, and your performance their specifically. However, I want to make it so that the user can easily see the misses they tagged as well, providing an all encompassing way of accessing all their history within this app. Obviously my app uses the data to give them drill suggestions, but the user should be able to see their history and make their own trends based on what they see. Game Plan I’ll be spending the next chunk of this trying to get that working: backend functionality, styling on screen, updating day to day, stuff like that. After that I’ll try to incorporate some animations in that and unless I think of other major changes, there will be another ship hopefully.
Ships:
I made a basketball training app that will help people train their basketball skills. The challenging part within making this app was finding out what skills are important to test out. Obviously shooting is the main aspect of basketball, but it’s also important to practice ball control. After that, there was challenges it creating specific algorithms to test those skills that provide an even split across the categories. I’m most proud of how the shot diet and baseline work together to create a unique training experience so you specifically work on categories that help YOUR play style, rather than a generic one. When testing this project, all data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Other than that, I’m really excited to get any feedback on this whatsoever considering there is a lot more I plan to add to this. Enjoy!
I made a basketball training app that will help people train their basketball skills. A challenging part for this part was finding specific drills that improved the skillset that I had created. Also the metric to imperial conversion had a finicky error which took a lot longer to fix, but it’s here now so great! I’m proud that the drills remain personalized like the other training parts as they target where you have logged you are weak at. I feel training sites are best when the user knows where they struggle and needs a medium to improve. When testing this project, data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. Other than that, this is the second ship so some feedback was incorporated, but same as before, this app will continue to be expanded upon so all feedback is good feedback. Enjoy!
I made a basketball training app that will help people train their basketball skills. The hardest part in this ship was probably finding the best way to integrate mobile into this. I really don’t like styling, and it took really long to figure out correct widths, until I realized viewport widths which made life so much easier and correctly take up the space you need. I’m most proud of the animations that have now been integrated within the site. They’re pretty basic, but I do think they add enough flavor to the app to make it a little bit more enjoyable, which is always a nice touch. When testing this project, data is saved locally so progress doesn’t save between devices and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. This is the third ship for this project, and I anticipate more to come so all feedback is appreciated. Enjoy!...
|
1792878565.47188
|
1793742565.47188
|
|
1736
|
Stormfall by @myth0 | Stardance
|
myth0
|
0
|
75.48
|
0
|
[]
|
[{"post_id": 79704, "ts": "202 [{"post_id": 79704, "ts": "2026-10-15T03:53:42Z", "hours": 0.9122, "text": "I added this cool wind gust shader to my game! Eventually I’m going to have gameplay mechanics where wind pushes the player, which can boost (or limit) the player’s jump distance. For now I just focused on the visuals for this mechanic and I still need to implement the physics. To make the visual effect, I intially tried a unity particle system based approach. This looked really bad however so I made a shader for the wind instead. Basically the shader scrolls the X UV offset on a gradient noise node. The tiling of the gradient noise is super stretched out so it looks like streaks of wind instead of dots. It was simple to make and turned out pretty good! Now time to implement the physics…"}, {"post_id": 79457, "ts": "2026-10-14T03:26:58Z", "hours": 3.2947, "text": "Wow, its been a while since I devlogged on here! I’m back with some more progress on my metroidvania. In the last few hours I started refining the art and level design for the game’s 2nd area. I added a bunch of sprites like tilesets, rock formations, animated dead bushes, and spikes. Then I started assembling the area in the editor. It took me a while to get the area’s art to match what I had imagined without creating visual clutter on the screen. I think it looks pretty good now and Im proud of how it turned out! I also learned a lot from building the previous area and so this time I made a ton of art/environment prefabs right away. This is going to save me a loooot of time when filling in the art for the rest of the area. I also greyboxed a bunch of the level design. I have the level design built for about 1/2 of the area now. This area is where the player unlocks wall jump, and it’s also going to have some fun wind mechanics that can boost the player’s jump distance (I still need to code this). I’m trying to build the level design to complement these features so that the area has a unique play style compared to the first area."}, {"post_id": 75073, "ts": "2026-09-29T02:14:04Z", "hours": 6.7061, "text": "In the last several hours, I made a whole bunch of progress. First I fixed a whole bunch of relatively minor bugs. Things like getting stuck on ability obtained screens, minor potential scene loading issues, and scenes unloading when the player revives after falling on spikes. I added a screen with an autosave notice. It wasnt really nessecary but makes the game look professional. Updated some small things like the game’s splash screen, internal name, and game icon. Added a custom cursor when in the game window. I added a knockback system! Enemies now actually get knocked back when hit. I used an interface that I attached to the enemy health manager script to create this system. I added a new music track for the village area that the player can find after finishing the first gameplay area. Then I actually started working on the village area. I used existing sprites to make a castle-like structure for the player to pass through. I also made a really nice animated flag sprite for the village. I worked on level design for the 2nd major area of the game. I’m about halfway done the level design for this area at the moment! And since stardance is going for an extra month, I’ll probably have time to ship the 2nd area now!"}, {"post_id": 70271, "ts": "2026-09-18T20:58:14Z", "hours": 5.4206, "text": "I did a ton of stuff over the last 5 hours of work! Here’s some of the main things I added: Added a jump animation to the player! This is a feature that many people have requested, but I kept procrastinating adding it. I had briefly tried to draw an animation for this in the past and I just couldn’t get the animation to look right. This time I spent more time and effort on it and I think it turned out pretty good now. Restructured the interaction system. I wanted parry and interact (the input used to talk to NPCs, pick up items, etc) to both use the right mouse button. For most of development I had temporarily set the interact button to a random key on the keyboard to prevent conflict. However, I now implemented a context-based system that detects whether or not the player is nearby an interactable object. If they are, then it executes an interaction, if not, it will parry. This required significant rewriting for the scripts attached to most interactable objects. However the system is now much cleaner and will be easier to maintain in the future. Interaction is now handled from a centralized singleton class, rather from each interactable item script independently. Added a dust trail effect to the player. When the player walks, dust particles will play behind them, making a nice visual effect. There are a couple of weird places the player can reach when using movement abilities accessed from the Beta Features mode. I added a couple little easter eggs to these places for the players who explore everything. Fixed a lot of bugs, including: Breakable objects having iframes that last for too long, effectively making them seem to have much more health than they should. Input not being disabled when the player first loads in, causing potential problems with the intro movement tutorial. Fixed issues with the new jump animations interrupting combat animations, which can cause combat animations to not play when they should. Renamed a couple files to make script names more cohesive. Fixed some collider bugs, including a particular spot where the player kept catching on a seam. Fixed an issue where the player sometimes didn’t count as being grounded when on the very edge of a platform."}, {"post_id": 66794, "ts": "2026-09-12T17:58:57Z", "hours": 6.3628, "text": "I implemented a data-driven tutorial system to my game! Whenever the player gains a new skill or ability, a short tutorial will now pop up explaining how to use the ability. I intentionally made this system super flexible so I can easily add more abilities in the future. Each tutorial is defined by a scriptable object with information including: Tutorial text contents and location on the screen Focused object (A vignette will appear on the screen centered around the object. Usually this is just set to the player but there are some special cases where it should be focused on something else.) Input the player needs to press to use their new ability and clear the tutorial. Overall, the game should be a lot more intuitive to play now. Players will no longer have to read through all the controls, instead the controls get gradually explained to them as they unlock more abilities. This is unrelated to the tutorial system, but I also updated my old dialogue system. I added a function to display fullscreen dialogue. This will be used in key points of the game, where it will fade to white and display some important lines of dialogue. So far, I used this for the game’s “prologue”, a short text-based intro that appears when you first create a new save file."}, {"post_id": 62381, "ts": "2026-09-05T18:28:47Z", "hours": 3.7819, "text": "I finally finished the 10th room of the game! This room introduces a ton of new mechanics in its level design. I’ve been working on the mechanics for this room for the last several devlogs, so it’s nice to finally have finished it! In this room, the player must navigate to 2 different levers that, when triggered, open a gate in the floor. Players can then fall down a chasm into an ancient battlefield room. Then they obtain the shield ability from a fallen soldier. Then some of the newest enemy types spawn in and the player must sucessfully defeat them. To survive the battle, the player needs to utilize the new shield ability which allows them to block attacks. I also added a beta features toggle to the pause menu. The toggle allows the player to use certain in-game abilities that are still in development, like sprinting, dashing, wall jumping, double jumping, lunge attacking, shield bouncing, and more."}, {"post_id": 60580, "ts": "2026-09-03T01:04:49Z", "hours": 6.3033, "text": "I’ve haven’t made too much progress on my project over the last little while because of classes starting :( But I’m finally devlogging some of the changes I’ve made over the last week or so. First, I refactored the combat system for the possibly the 4rd or 5th time since first starting the project (almost a year ago now!) This time around, I implemented an upwards and downwards attack, as well as better implementing the lunge attack. I also switched the attack logic to be partly animation-driven rather than coroutine-driven like it was before. Attack damage is now properly synced to the attack animation, and the weird state bugs I was having before are basically gone. Some parts of the new system still feel a little buggy, but overall I think the attack system is much better now. The second major thing I did was finishing implementing the pathfinding of one of the first “real” enemies (the crawler guys I already have don’t really count). The new enemy now tracks the player correctly. If no player is in range, it will pace back and forth and pause occasionally. It has ledge and wall detection. If the player is in attack range, it will attempt to attack the player. Currently the enemy code architecture isn’t structured very well, but I’m kinda rushing to quickly wrap up this stage of the project so I can ship soon! Now I just gotta polish the game a bit over the next couple days/weeks and then it should be ready to ship!"}, {"post_id": 51756, "ts": "2026-08-21T16:12:58Z", "hours": 3.6508, "text": "I added the UI interface for player customization. Currently this screen is only accessible from the pause screen, but in the future I will incorporate it into the gameplay so the player customize the character at specific locations throughout the world. I also fixed some issues with how the UI menus were structured. I made every screen into a unity Canvas Group. I also fixed some bugs where the player could get stuck in certain menu screens. Last but not least I added a new upward attack animation for the player, though I still need to implement the functionality."}, {"post_id": 49039, "ts": "2026-08-17T17:03:05Z", "hours": 3.8592, "text": "I started working on character customization mechanics! Many metroidvanias just use a static character with little to no customization options so I thought this would be a nice way to differentiate my game from other similar games. Basically for now the player can recolor the knight’s cape, helmet plume, and sword hilt. The knight sprites were originally colored blue, making it tricky to use simple color adjustment shaders to recolor it. Rather than going back and redrawing tons of sprites, I wrote a shader that detects saturated areas on the original sprites and overlays a new color on top. Overall it works pretty well now, and now I just need to add a menu to select a color scheme. I also spent like 30 mins working on enemy pathfinding mechanics for a new enemy type!"}, {"post_id": 41477, "ts": "2026-08-05T18:16:47Z", "hours": 2.3075, "text": "I finally fixed some problems I was having with the player’s collider catching on seams. This bug was pretty rare and not too much of an issue. However in certain parts of the map, mainly near any slopes, the slope’s collider has a tiny seam where it joins the rectangular tilemap collider. The old player collider would get stuck on this seam occasionally. After a lot of messing around with colliders and 2d physics materials, I fixed this issue by changing the player’s collider to a composite collider. The composite collider contains a capsule collider and a box collider. The rounded edges of the capsule allows the player to walk over top of seams easily, and the box collider makes it so the player doesnt slip off the edges of platforms."}, {"post_id": 40887, "ts": "2026-08-04T18:07:42Z", "hours": 2.0378, "text": "For the time tracked in this devlog, I mostly worked on environment decoration in the newest room of the game. I added a really nice looking torch sprite with a fire shader. I also added various details to the game world, like floating platforms in the background, torches, and ancient ruins. I also updated some of the level design. I added platforms to make certain areas possible to reach."}, {"post_id": 40223, "ts": "2026-08-03T17:01:11Z", "hours": 4.5128, "text": "I took a long break from Stardance to work on other projects, but I’m finally back with another devlog for my metroidvania. I mostly finished the art pass for the latest room of the game. I also fixed a bunch of unity inspector warnings that I’ve had for a looong time now and just never got around to fixing. The main warning I fixed were that some of the render textures I used for water reflections and fullscreen shockwaves didn’t have a depth buffer attached. While they did technically work, it wasn’t the ideal way to have the render textures set up. This was a relatively easy fix thankfully."}, {"post_id": 23558, "ts": "2026-07-06T16:23:47Z", "hours": 3.2408, "text": "I continued working on the art for the 9th and 10th rooms of the game. I also fixed some issues in my custom render feature that I use to render special effects, including a few potential memory leaks. I also reworked my “safe zone” mechanic that detects where the player should respawn if they fall onto spikes. Now it tracks specific safe respawn locations instead of the old logic, which was to track any zone where the player shouldn’t respawn."}, {"post_id": 16286, "ts": "2026-06-26T14:11:19Z", "hours": 2.4736, "text": "Continued working on level design. I’ve finished the level design for the entire first area of the game now! I added a room with another lever puzzle that introduces the shortcut mechanics to the player. I also added an area where the player will obtain the shield ability. Now I need to start filling in the art for the new rooms, and create the game’s first boss fight."}, {"post_id": 15107, "ts": "2026-06-24T15:26:36Z", "hours": 3.6742, "text": "Worked a bit on the art for the new rooms. I also added some new gameplay mechanics, like platforms that fall to a new location after the player hits them. I also fixed another instance where the combat animations desynced from the code logic."}, {"post_id": 13726, "ts": "2026-06-22T14:33:17Z", "hours": 3.62, "text": "For the last few hours of work, I’ve been working on level design! I’m very close now to finishing the level design of the first area of the game. I added some generic transversal rooms, a lever puzzle room, and a platforming room with spikes. Next, I’m going to add a room where the player can find the shield, which will grant the parry/block ability."}, {"post_id": 12055, "ts": "2026-06-19T17:43:15Z", "hours": 1.2886, "text": "Added levers! When the player toggles them, they can do various things like open gates, open shortcuts, and maybe even spawn enemies. In the future, I’m going to use them to build puzzle areas that will hopefully make the level design more standout and unique. I’m really happy with how the animations for the new mechanics turned out, especially the gate’s animations shown in the video."}, {"post_id": 11370, "ts": "2026-06-18T16:39:19Z", "hours": 0.66, "text": "This devlog is on the shorter side, but I finally fixed something that I’ve been meaning to fix for a while. Sometimes when spamming the attack button, the code running the attack logic got desynced from the visual animations, causing weird situations where the animation wouldn’t play for a few seconds, or would transition to the next state way too quickly. I was scared it would take hours to debug this problem, but it turned out to be super simple. I fixed it by simply making sure the animation’s exit time in the unity animator exactly matches the cooldown window defined in the code."}, {"post_id": 9629, "ts": "2026-06-16T01:06:14Z", "hours": 3.1986, "text": "Continued refining the stamina mechanics! I mostly finished hooking up the combat system to the stamina system. Attacking and blocking now deplete a set amount of stamina, and a successful, correctly timed block/parry restores a bunch of stamina. The stamina meter also now slowly refills over time, and refills much faster when near a save point. I also made the code and artwork for “stamina flowers” (still need to think of a cool name), which when broken will spawn a stamina orb that flies towards the player and refills a bunch of stamina when picked up. This involved pathfinding logic using trig functions that make the orb fly at the correct angle and velocity towards the player. I plan to use this pathfinding logic for future pickup items as well. Lastly, I added a particle effect that plays when the player’s stamina meter is full, and another effect that plays when it is close to empty. Overall the stamina system feels really polished now, and I feel like the combat is a lot better now with the added stamina mechanics!"}, {"post_id": 8159, "ts": "2026-06-13T16:36:08Z", "hours": 2.8875, "text": "Added a stamina mechanic! Attacking now requires stamina. When stamina is used up, it will slowly refill back to the maximum over time. In the future, I plan to make successfully parrying enemy attacks also refill some stamina. The hardest part of this was creating the visual stamina bar in the UI. I used a shader to offset the sprite’s UV depending on what percentage of stamina the player has remanining. The shader also applies a multiplier to the sprite color’s intensity to make the stamina meter glow more when it is closer to full."}, {"post_id": 6369, "ts": "2026-06-10T18:44:22Z", "hours": 5.2822, "text": "First devlog on Stardance! You might remember this project from flavortown, and I’m going to keep working on it for stardance. I’ve added a ton of stuff to the game in the last month, like 3 or 4 new player abilities, new animations, and polishing various things based on feedback I received. The ~5 hours in this devlog were mostly me trying to set up a system where I can have 2 post processing profiles active at once, but affecting different layers. I used this to create an intense bloom effect that only renders on certain sprites, specifically the spark particles in combat. I finally got it working using render features and render graphs, and I’m super happy with the result."}]...
|
Title: Stormfall by @myth0 | Stardance
Devlogs:
F Title: Stormfall by @myth0 | Stardance
Devlogs:
First devlog on Stardance! You might remember this project from flavortown, and I’m going to keep working on it for stardance. I’ve added a ton of stuff to the game in the last month, like 3 or 4 new player abilities, new animations, and polishing various things based on feedback I received. The ~5 hours in this devlog were mostly me trying to set up a system where I can have 2 post processing profiles active at once, but affecting different layers. I used this to create an intense bloom effect that only renders on certain sprites, specifically the spark particles in combat. I finally got it working using render features and render graphs, and I’m super happy with the result.
Added a stamina mechanic! Attacking now requires stamina. When stamina is used up, it will slowly refill back to the maximum over time. In the future, I plan to make successfully parrying enemy attacks also refill some stamina. The hardest part of this was creating the visual stamina bar in the UI. I used a shader to offset the sprite’s UV depending on what percentage of stamina the player has remanining. The shader also applies a multiplier to the sprite color’s intensity to make the stamina meter glow more when it is closer to full.
Continued refining the stamina mechanics! I mostly finished hooking up the combat system to the stamina system. Attacking and blocking now deplete a set amount of stamina, and a successful, correctly timed block/parry restores a bunch of stamina. The stamina meter also now slowly refills over time, and refills much faster when near a save point. I also made the code and artwork for “stamina flowers” (still need to think of a cool name), which when broken will spawn a stamina orb that flies towards the player and refills a bunch of stamina when picked up. This involved pathfinding logic using trig functions that make the orb fly at the correct angle and velocity towards the player. I plan to use this pathfinding logic for future pickup items as well. Lastly, I added a particle effect that plays when the player’s stamina meter is full, and another effect that plays when it is close to empty. Overall the stamina system feels really polished now, and I feel like the combat is a lot better now with the added stamina mechanics!
This devlog is on the shorter side, but I finally fixed something that I’ve been meaning to fix for a while. Sometimes when spamming the attack button, the code running the attack logic got desynced from the visual animations, causing weird situations where the animation wouldn’t play for a few seconds, or would transition to the next state way too quickly. I was scared it would take hours to debug this problem, but it turned out to be super simple. I fixed it by simply making sure the animation’s exit time in the unity animator exactly matches the cooldown window defined in the code.
Added levers! When the player toggles them, they can do various things like open gates, open shortcuts, and maybe even spawn enemies. In the future, I’m going to use them to build puzzle areas that will hopefully make the level design more standout and unique. I’m really happy with how the animations for the new mechanics turned out, especially the gate’s animations shown in the video.
For the last few hours of work, I’ve been working on level design! I’m very close now to finishing the level design of the first area of the game. I added some generic transversal rooms, a lever puzzle room, and a platforming room with spikes. Next, I’m going to add a room where the player can find the shield, which will grant the parry/block ability.
Worked a bit on the art for the new rooms. I also added some new gameplay mechanics, like platforms that fall to a new location after the player hits them. I also fixed another instance where the combat animations desynced from the code logic.
Continued working on level design. I’ve finished the level design for the entire first area of the game now! I added a room with another lever puzzle that introduces the shortcut mechanics to the player. I also added an area where the player will obtain the shield ability. Now I need to start filling in the art for the new rooms, and create the game’s first boss fight.
I continued working on the art for the 9th and 10th rooms of the game. I also fixed some issues in my custom render feature that I use to render special effects, including a few potential memory leaks. I also reworked my “safe zone” mechanic that detects where the player should respawn if they fall onto spikes. Now it tracks specific safe respawn locations instead of the old logic, which was to track any zone where the player shouldn’t respawn.
I took a long break from Stardance to work on other projects, but I’m finally back with another devlog for my metroidvania. I mostly finished the art pass for the latest room of the game. I also fixed a bunch of unity inspector warnings that I’ve had for a looong time now and just never got around to fixing. The main warning I fixed were that some of the render textures I used for water reflections and fullscreen shockwaves didn’t have a depth buffer attached. While they did technically work, it wasn’t the ideal way to have the render textures set up. This was a relatively easy fix thankfully.
For the time tracked in this devlog, I mostly worked on environment decoration in the newest room of the game. I added a really nice looking torch sprite with a fire shader. I also added various details to the game world, like floating platforms in the background, torches, and ancient ruins. I also updated some of the level design. I added platforms to make certain areas possible to reach.
I finally fixed some problems I was having with the player’s collider catching on seams. This bug was pretty rare and not too much of an issue. However in certain parts of the map, mainly near any slopes, the slope’s collider has a tiny seam where it joins the rectangular tilemap collider. The old player collider would get stuck on this seam occasionally. After a lot of messing around with colliders and 2d physics materials, I fixed this issue by changing the player’s collider to a composite collider. The composite collider contains a capsule collider and a box collider. The rounded edges of the capsule allows the player to walk over top of seams easily, and the box collider makes it so the player doesnt slip off the edges of platforms.
I started working on character customization mechanics! Many metroidvanias just use a static character with little to no customization options so I thought this would be a nice way to differentiate my game from other similar games. Basically for now the player can recolor the knight’s cape, helmet plume, and sword hilt. The knight sprites were originally colored blue, making it tricky to use simple color adjustment shaders to recolor it. Rather than going back and redrawing tons of sprites, I wrote a shader that detects saturated areas on the original sprites and overlays a new color on top. Overall it works pretty well now, and now I just need to add a menu to select a color scheme. I also spent like 30 mins working on enemy pathfinding mechanics for a new enemy type!
I added the UI interface for player customization. Currently this screen is only accessible from the pause screen, but in the future I will incorporate it into the gameplay so the player customize the character at specific locations throughout the world. I also fixed some issues with how the UI menus were structured. I made every screen into a unity Canvas Group. I also fixed some bugs where the player could get stuck in certain menu screens. Last but not least I added a new upward attack animation for the player, though I still need to implement the functionality.
I’ve haven’t made too much progress on my project over the last little while because of classes starting :( But I’m finally devlogging some of the changes I’ve made over the last week or so. First, I refactored the combat system for the possibly the 4rd or 5th time since first starting the project (almost a year ago now!) This time around, I implemented an upwards and downwards attack, as well as better implementing the lunge attack. I also switched the attack logic to be partly animation-driven rather than coroutine-driven like it was before. Attack damage is now properly synced to the attack animation, and the weird state bugs I was having before are basically gone. Some parts of the new system still feel a little buggy, but overall I think the attack system is much better now. The second major thing I did was finishing implementing the pathfinding of one of the first “real” enemies (the crawler guys I already have don’t really count). The new enemy now tracks the player correctly. If no player is in range, it will pace back and forth and pause occasionally. It has ledge and wall detection. If the player is in attack range, it will attempt to attack the player. Currently the enemy code architecture isn’t structured very well, but I’m kinda rushing to quickly wrap up this stage of the project so I can ship soon! Now I just gotta polish the game a bit over the next couple days/weeks and then it should be ready to ship!
I finally finished the 10th room of the game! This room introduces a ton of new mechanics in its level design. I’ve been working on the mechanics for this room for the last several devlogs, so it’s nice to finally have finished it! In this room, the player must navigate to 2 different levers that, when triggered, open a gate in the floor. Players can then fall down a chasm into an ancient battlefield room. Then they obtain the shield ability from a fallen soldier. Then some of the newest enemy types spawn in and the player must sucessfully defeat them. To survive the battle, the player needs to utilize the new shield ability which allows them to block attacks. I also added a beta features toggle to the pause menu. The toggle allows the player to use certain in-game abilities that are still in development, like sprinting, dashing, wall jumping, double jumping, lunge attacking, shield bouncing, and more.
I implemented a data-driven tutorial system to my game! Whenever the player gains a new skill or ability, a short tutorial will now pop up explaining how to use the ability. I intentionally made this system super flexible so I can easily add more abilities in the future. Each tutorial is defined by a scriptable object with information including: Tutorial text contents and location on the screen Focused object (A vignette will appear on the screen centered around the object. Usually this is just set to the player but there are some special cases where it should be focused on something else.) Input the player needs to press to use their new ability and clear the tutorial. Overall, the game should be a lot more intuitive to play now. Players will no longer have to read through all the controls, instead the controls get gradually explained to them as they unlock more abilities. This is unrelated to the tutorial system, but I also updated my old dialogue system. I added a function to display fullscreen dialogue. This will be used in key points of the game, where it will fade to white and display some important lines of dialogue. So far, I used this for the game’s “prologue”, a short text-based intro that appears when you first create a new save file.
I did a ton of stuff over the last 5 hours of work! Here’s some of the main things I added: Added a jump animation to the player! This is a feature that many people have requested, but I kept procrastinating adding it. I had briefly tried to draw an animation for this in the past and I just couldn’t get the animation to look right. This time I spent more time and effort on it and I think it turned out pretty good now. Restructured the interaction system. I wanted parry and interact (the input used to talk to NPCs, pick up items, etc) to both use the right mouse button. For most of development I had temporarily set the interact button to a random key on the keyboard to prevent conflict. However, I now implemented a context-based system that detects whether or not the player is nearby an interactable object. If they are, then it executes an interaction, if not, it will parry. This required significant rewriting for the scripts attached to most interactable objects. However the system is now much cleaner and will be easier to maintain in the future. Interaction is now handled from a centralized singleton class, rather from each interactable item script independently. Added a dust trail effect to the player. When the player walks, dust particles will play behind them, making a nice visual effect. There are a couple of weird places the player can reach when using movement abilities accessed from the Beta Features mode. I added a couple little easter eggs to these places for the players who explore everything. Fixed a lot of bugs, including: Breakable objects having iframes that last for too long, effectively making them seem to have much more health than they should. Input not being disabled when the player first loads in, causing potential problems with the intro movement tutorial. Fixed issues with the new jump animations interrupting combat animations, which can cause combat animations to not play when they should. Renamed a couple files to make script names more cohesive. Fixed some collider bugs, including a particular spot where the player kept catching on a seam. Fixed an issue where the player sometimes didn’t count as being grounded when on the very edge of a platform.
In the last several hours, I made a whole bunch of progress. First I fixed a whole bunch of relatively minor bugs. Things like getting stuck on ability obtained screens, minor potential scene loading issues, and scenes unloading when the player revives after falling on spikes. I added a screen with an autosave notice. It wasnt really nessecary but makes the game look professional. Updated some small things like the game’s splash screen, internal name, and game icon. Added a custom cursor when in the game window. I added a knockback system! Enemies now actually get knocked back when hit. I used an interface that I attached to the enemy health manager script to create this system. I added a new music track for the village area that the player can find after finishing the first gameplay area. Then I actually started working on the village area. I used existing sprites to make a castle-like structure for the player to pass through. I also made a really nice animated flag sprite for the village. I worked on level design for the 2nd major area of the game. I’m about halfway done the level design for this area at the moment! And since stardance is going for an extra month, I’ll probably have time to ship the 2nd area now!
Wow, its been a while since I devlogged on here! I’m back with some more progress on my metroidvania. In the last few hours I started refining the art and level design for the game’s 2nd area. I added a bunch of sprites like tilesets, rock formations, animated dead bushes, and spikes. Then I started assembling the area in the editor. It took me a while to get the area’s art to match what I had imagined without creating visual clutter on the screen. I think it looks pretty good now and Im proud of how it turned out! I also learned a lot from building the previous area and so this time I made a ton of art/environment prefabs right away. This is going to save me a loooot of time when filling in the art for the rest of the area. I also greyboxed a bunch of the level design. I have the level design built for about 1/2 of the area now. This area is where the player unlocks wall jump, and it’s also going to have some fun wind mechanics that can boost the player’s jump distance (I still need to code this). I’m trying to build the level design to complement these features so that the area has a unique play style compared to the first area.
I added this cool wind gust shader to my game! Eventually I’m going to have gameplay mechanics where wind pushes the player, which can boost (or limit) the player’s jump distance. For now I just focused on the visuals for this mechanic and I still need to implement the physics. To make the visual effect, I intially tried a unity particle system based approach. This looked really bad however so I made a shader for the wind instead. Basically the shader scrolls the X UV offset on a gradient noise node. The tiling of the gradient noise is super stretched out so it looks like streaks of wind instead of dots. It was simple to make and turned out pretty good! Now time to implement the physics…...
|
1792778012.0932453
|
1793382812.0932453
|
|
48127
|
W-labs project #1, ARIA & SEG4 by @JoonHyuk | W-labs project #1, ARIA & SEG4 by @JoonHyuk | Stardance...
|
JoonHyuk
|
0
|
75.29
|
0
|
[]
|
[{"post_id": 77266, "ts": "202 [{"post_id": 77266, "ts": "2026-10-06T11:04:21Z", "hours": 12.2397, "text": "Devlog: From bigram to building my own tokenizer Last time I had a bigram model trained on The Wizard of Oz that mostly made gibberish. Since then ARIA has gone through three versions, and I ended up writing most of the pipeline from scratch. ARIA-01 / 02: a real transformer I replaced the bigram with a character-level GPT: 8 layers, 512-dim embeddings, 8 attention heads, 256-character context, trained on web text on my RTX 5060 Ti. Bumped block_size from 8 to 256 so the model can actually see whole sentences Added bf16 autocast, which cut VRAM use roughly in half Found out the hard way that when VRAM fills up, Windows quietly spills into system RAM and training gets about 20x slower. Batch 128 was taking 6 to 9 seconds per step; batch 64 was 0.35 seconds Fixed a bunch of bugs along the way, like my argparse -batch_size flag secretly setting block_size , and eval running 500 batches every 250 steps Final pretraining loss was about 1.30 per character, and it started writing real English sentences (that didn’t make sense yet). Teaching it to chat The base model only continues text, so I fine-tuned it on Alpaca formatted as User: ... / ARIA: ... conversations, with a lower learning rate so it wouldn’t forget English. Loss went down to about 0.91. Then I had to fix the chat script: wrapping prompts in the right format, cutting replies at the end of a turn, and adding temperature + top-k sampling so it stopped picking random characters. First real reply to “How do you make a cookie?”: You make a cookie are both a cookie. Grammatically broken, but it’s an actual answer, in the right place, that stops on its own. The pipeline works. Writing my own BPE tokenizer The biggest limit was being character-level: the model wasted most of its capacity on spelling, and 256 characters isn’t much context. So I wrote a byte-level BPE tokenizer from scratch instead of using a library: get_stats and merge to find and merge the most common pairs a training loop with stop conditions (no more merging pairs that only appear once) encode / decode with a round-trip test, plus save/load for the merges GPT-2 style regex pre-splitting so tokens can’t cross word boundaries (before this, I was getting tokens like \"is to \" and \"00 MPa \" ) a cache in encode that made it about 2.3x faster on small text and much more on big files Trained on about 1MB of educational text plus chat data, with 2048 tokens. It learned real word pieces like \" economic\" , \" School\" and \"rying\" , and gets about 3x compression. Since it’s byte-level, there are no unknown characters anymore, so Korean works too. ARIA-03 I encoded 500MB of fineweb-edu into 169.6M tokens , saved as uint16 binary and loaded with np.memmap . Then I rewrote the model: Fused attention with F.scaled_dot_product_attention instead of 8 separate heads, about 3x faster per step Pre-norm blocks and GELU Weight tying between the embedding and output layer Warmup + cosine learning-rate schedule state_dict checkpoints with optimizer state and step count, so a crash doesn’t wipe a run Test run: loss started at 7.71 (right at ln(2048) , which is what random guessing should give) and reached 4.27 after 1000 steps, with train and test matching the whole time. Next Full 30,000-step pretraining run (about 3 passes over the data) Chat fine-tune on the new tokenizer Later: tool use, like search through the Naver Search API, a separate vision-based security AI for home cameras, and an agent that writes and uploads Arduino code"}, {"post_id": 58867, "ts": "2026-08-31T13:22:00Z", "hours": 10.8503, "text": "Kind of starting to take form……. I am making a bigram language model first, and I am making it a lot better than I thought. I am using the wizard of oz to train it, but it shows mostly giberish but it is really good. Also I did more recap on the functions in PyTorch so I could use it in other projects too!"}, {"post_id": 57339, "ts": "2026-08-29T13:47:00Z", "hours": 8.3517, "text": "ADDING MORE FUNCTIONS AND LEARNING DOT PRODUCT This is going to be a short one, since all I did was get used to the pytorch library, and all the math. Also, the dot product and the matrix mult was not that bad! I did all my functions and all that I need for the llm. The importants are softmax, concat and stuff like this. I really like where this project is going and where it is taking me! SO STAY TUNED IN!"}, {"post_id": 55001, "ts": "2026-08-26T13:04:19Z", "hours": 43.8486, "text": "A new project, New lab This is a whole new project GUYS! This project is called ARIA. ARIA can hear your voice, run it through an custom, built from scratch LLM, and talk it out. All I did today was only math that would make me understand LLMs better and also code a teeny tiney bit, but I still like it! Follow allow my journey! Also this is a lab of mine that I made by myself! So my really good projects are probably going to be here! (Some other projects that are really good MIGHT not be here so check my other projects to! (Sorry that there are incomplete projects))"}]...
|
Title: W-labs project #1, ARIA & SEG4 by @Joon Title: W-labs project #1, ARIA & SEG4 by @JoonHyuk | Stardance
Devlogs:
A new project, New lab This is a whole new project GUYS! This project is called ARIA. ARIA can hear your voice, run it through an custom, built from scratch LLM, and talk it out. All I did today was only math that would make me understand LLMs better and also code a teeny tiney bit, but I still like it! Follow allow my journey! Also this is a lab of mine that I made by myself! So my really good projects are probably going to be here! (Some other projects that are really good MIGHT not be here so check my other projects to! (Sorry that there are incomplete projects))
ADDING MORE FUNCTIONS AND LEARNING DOT PRODUCT This is going to be a short one, since all I did was get used to the pytorch library, and all the math. Also, the dot product and the matrix mult was not that bad! I did all my functions and all that I need for the llm. The importants are softmax, concat and stuff like this. I really like where this project is going and where it is taking me! SO STAY TUNED IN!
Kind of starting to take form……. I am making a bigram language model first, and I am making it a lot better than I thought. I am using the wizard of oz to train it, but it shows mostly giberish but it is really good. Also I did more recap on the functions in PyTorch so I could use it in other projects too!
Devlog: From bigram to building my own tokenizer Last time I had a bigram model trained on The Wizard of Oz that mostly made gibberish. Since then ARIA has gone through three versions, and I ended up writing most of the pipeline from scratch. ARIA-01 / 02: a real transformer I replaced the bigram with a character-level GPT: 8 layers, 512-dim embeddings, 8 attention heads, 256-character context, trained on web text on my RTX 5060 Ti. Bumped block_size from 8 to 256 so the model can actually see whole sentences Added bf16 autocast, which cut VRAM use roughly in half Found out the hard way that when VRAM fills up, Windows quietly spills into system RAM and training gets about 20x slower. Batch 128 was taking 6 to 9 seconds per step; batch 64 was 0.35 seconds Fixed a bunch of bugs along the way, like my argparse -batch_size flag secretly setting block_size , and eval running 500 batches every 250 steps Final pretraining loss was about 1.30 per character, and it started writing real English sentences (that didn’t make sense yet). Teaching it to chat The base model only continues text, so I fine-tuned it on Alpaca formatted as User: ... / ARIA: ... conversations, with a lower learning rate so it wouldn’t forget English. Loss went down to about 0.91. Then I had to fix the chat script: wrapping prompts in the right format, cutting replies at the end of a turn, and adding temperature + top-k sampling so it stopped picking random characters. First real reply to “How do you make a cookie?”: You make a cookie are both a cookie. Grammatically broken, but it’s an actual answer, in the right place, that stops on its own. The pipeline works. Writing my own BPE tokenizer The biggest limit was being character-level: the model wasted most of its capacity on spelling, and 256 characters isn’t much context. So I wrote a byte-level BPE tokenizer from scratch instead of using a library: get_stats and merge to find and merge the most common pairs a training loop with stop conditions (no more merging pairs that only appear once) encode / decode with a round-trip test, plus save/load for the merges GPT-2 style regex pre-splitting so tokens can’t cross word boundaries (before this, I was getting tokens like "is to " and "00 MPa " ) a cache in encode that made it about 2.3x faster on small text and much more on big files Trained on about 1MB of educational text plus chat data, with 2048 tokens. It learned real word pieces like " economic" , " School" and "rying" , and gets about 3x compression. Since it’s byte-level, there are no unknown characters anymore, so Korean works too. ARIA-03 I encoded 500MB of fineweb-edu into 169.6M tokens , saved as uint16 binary and loaded with np.memmap . Then I rewrote the model: Fused attention with F.scaled_dot_product_attention instead of 8 separate heads, about 3x faster per step Pre-norm blocks and GELU Weight tying between the embedding and output layer Warmup + cosine learning-rate schedule state_dict checkpoints with optimizer state and step count, so a crash doesn’t wipe a run Test run: loss started at 7.71 (right at ln(2048) , which is what random guessing should give) and reached 4.27 after 1000 steps, with train and test matching the whole time. Next Full 30,000-step pretraining run (about 3 passes over the data) Chat fine-tune on the new tokenizer Later: tool use, like search through the Naver Search API, a separate vision-based security AI for home cameras, and an agent that writes and uploads Arduino code...
|
1792540428.3649168
|
1793145228.3649168
|
|
32700
|
NetLink by @Leon36 | Stardance
|
Leon36
|
2
|
75.0
|
1132
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T14:54:33Z", "hours": 64.0, "multiplier": 16.47, "payout": 982, "blessing": "neutral", "text": "NetLink connect to your network from everywhere without a VPN I made a Web based “OS” to connect to your network without a VPN and accses your resources with protocols like sftp or ssh. I also build a desktop client to emulate a VPN on your pc, so you can accses your network with your own programms Technologys I used WebSockets to transfer data between the client and the Server. For the frontend I choose React, for the backend I used TypeScript.", "repo": "https://github.com/leonst036/NetLink", "demo": "https://netlink.legaming.tech/"}, {"ship_num": 2, "ts": "2026-07-14T19:45:47Z", "hours": 11.0, "multiplier": 14.76, "payout": 150, "blessing": "neutral", "text": "I built a project called NetLink! It lets you connect to your home network from anywhere. Right now, it supports access via VNC, SSH, and SFTP. It uses WebSockets and web based apps to establish the connection. Everything is routed through a relay node, so you don’t need to open any ports on your router. In the demo version, you can set up your own PC as a local server to try it out (active for 24 hours). If you want to use it long-term, you can easily self-host the project on your own hardware (GitHub Readme). I’m planning to add support for more protocols soon. If you have any feedback or ideas on how to improve the project, feel free to leave a comment or send me a DM! Heads up: If you’re using the demo, it might take a few moments to load all your devices.", "repo": "https://github.com/leonst036/NetLink", "demo": "https://netlink.legaming.tech/"}]...
|
[{"post_id": 78081, "ts": "202 [{"post_id": 78081, "ts": "2026-10-09T14:48:26Z", "hours": 6.1889, "text": "Summary: Polished NetLink for a ship Fixed some bugs Remade some screens Made a demo version Made some security fixes"}, {"post_id": 58474, "ts": "2026-08-30T21:50:58Z", "hours": 2.4225, "text": "Summary: Made some bugfixes That’s pretty much all. I found some small thing I didn’t like and fixed them."}, {"post_id": 53323, "ts": "2026-08-23T19:58:03Z", "hours": 6.5603, "text": "Summary: Made NetConnect a programm for Linux to bring you Network to you everywhere (without VPN) I made this using Go and a virtual network device wich act like a spit tunnel vpn, to extract all request from you subnet e.g. 192.168.1.0/24 sends it over a WebSocket to the NetLink relay server and to its target server. I’m not fully done with this, but right now it’s working. Maybe I’ll do a version for windows soon. How you can install it is defined in the NetConnect Repo ONLY FOR LINUX"}, {"post_id": 52016, "ts": "2026-08-22T01:39:34Z", "hours": 6.1189, "text": "Summaray: Refactored netgraph and settings app Yeah, I refactored it. That’s it. I gues I put these applications as picture :-|"}, {"post_id": 49947, "ts": "2026-08-18T22:48:47Z", "hours": 13.9178, "text": "Summary: Refactored NetStore, gave the NetStore it’s own Repo and started making a Minecraft Server Manager. I just refactored the I gues 1200 line longe NetStore app, and I have so much to refactor left. I started the Minecraft Server Manager before the refactoring but it wasn’t in my usual hackatime project, it was in a new one, and my stupid ass thought it was just a technical mistake that the time wasn’t tracked."}, {"post_id": 46375, "ts": "2026-08-13T15:30:43Z", "hours": 3.2525, "text": "Summary: Moved all build-in apps into the NetStore That’s pretty much all…"}, {"post_id": 46019, "ts": "2026-08-12T22:06:19Z", "hours": 1.8247, "text": "Summary: Made a traffic monitor for the NetStore This Devlog isn’t gona be that long, I just made a smal traffic monitor. And some small improvements."}, {"post_id": 45387, "ts": "2026-08-11T20:17:00Z", "hours": 2.0261, "text": "Summary: Secured NetStore and published it. I secured the NetStore so far that I can release it on the main branch. Right now it isn’t in the demo, so you can test it only when you install it by yourself (wich is very easy with the new install script)"}, {"post_id": 44059, "ts": "2026-08-09T16:06:18Z", "hours": 6.2664, "text": "Summary: Added a Docker Manager and done some fixes with the NetStore In my last devlog I made the NetStore, and this is the first application by myself. It’s used to manage your dockers from everywhere (What a wonder, the docker manager can manage docker). It isn’t perfect right now, so it’s not an alternative to something like Portainer or Coolify, but for simple tasks, it’s good enough. Primarily I made this application to add features to the NetStore (I added a lot, only for this application) and of course I found some bugs. The NetStore itself isn’t secured yet (Right now I only added Deno), but I’m working on it!"}, {"post_id": 43289, "ts": "2026-08-08T13:55:07Z", "hours": 3.1814, "text": "Summary: Added NetStore to create custom applications I added an application that allows you to create your own custom applications. I will use this Store to build additional apps myself for niche use cases (e.g., Docker management or local server containers) that will be fetched directly from GitHub. Key features: Custom Routes: Register your own custom backend routes. Frontend: Build and design your own user interface. Local Code: Execute custom code on the local server. IMPORTANT: DO NOT USE NETSTORE IN PRODUCTION OR DEPLOYMENT ENVIRONMENTS. IT IS CURRENTLY NOT SECURE. If you choose to use it anyway, you do so at your own risk. It’s on the dev Branch. I’d recommend to use it only in your local Network"}, {"post_id": 40183, "ts": "2026-08-03T16:15:22Z", "hours": 5.7364, "text": "I fixed some Bugs in the frontend and made some improvements in the backend."}, {"post_id": 33121, "ts": "2026-07-22T18:59:08Z", "hours": 1.8814, "text": "I just refactored the Project I optimized the structure of the local server and the relay. In the frontend, apps will load just when opening them wich is very good for the performance"}, {"post_id": 31896, "ts": "2026-07-20T17:40:45Z", "hours": 4.185, "text": "I completely remade the frontend! It’s now a hybrid of Material 3 and modern Glassmorphism. The overhaul took well over 4 hours though a good chunk was done at school (untracked since I wasn’t logged into Hackatime). Overall, I’m really happy with how the new look turned out! There are probably a few subtle UI bugs hiding in the new design, but I’ll squash those as I find them."}, {"post_id": 28489, "ts": "2026-07-14T19:25:14Z", "hours": 2.3664, "text": "I just finished a few bugs and created an demo enviroment. If you wanna try it, I’ll explain everything in the ship description."}, {"post_id": 27126, "ts": "2026-07-12T12:17:35Z", "hours": 3.7031, "text": "NetLink features a web-based operating system designed to enhance the user experience with VNC and SFTP. I plan to add support for additional protocols, such as RDP, in the future"}, {"post_id": 25976, "ts": "2026-07-10T14:54:42Z", "hours": 1.5586, "text": "Added dynamic SSH server selection. The network scan was a bit difficult. It’s not the prettiest solution to ping every device, but it works!"}, {"post_id": 25492, "ts": "2026-07-09T20:04:51Z", "hours": 2.8922, "text": "Streaming a SSH Session over the relay server"}]...
|
Title: NetLink by @Leon36 | Stardance
Devlogs:
St Title: NetLink by @Leon36 | Stardance
Devlogs:
Streaming a SSH Session over the relay server
Added dynamic SSH server selection. The network scan was a bit difficult. It’s not the prettiest solution to ping every device, but it works!
NetLink features a web-based operating system designed to enhance the user experience with VNC and SFTP. I plan to add support for additional protocols, such as RDP, in the future
I just finished a few bugs and created an demo enviroment. If you wanna try it, I’ll explain everything in the ship description.
I completely remade the frontend! It’s now a hybrid of Material 3 and modern Glassmorphism. The overhaul took well over 4 hours though a good chunk was done at school (untracked since I wasn’t logged into Hackatime). Overall, I’m really happy with how the new look turned out! There are probably a few subtle UI bugs hiding in the new design, but I’ll squash those as I find them.
I just refactored the Project I optimized the structure of the local server and the relay. In the frontend, apps will load just when opening them wich is very good for the performance
I fixed some Bugs in the frontend and made some improvements in the backend.
Summary: Added NetStore to create custom applications I added an application that allows you to create your own custom applications. I will use this Store to build additional apps myself for niche use cases (e.g., Docker management or local server containers) that will be fetched directly from GitHub. Key features: Custom Routes: Register your own custom backend routes. Frontend: Build and design your own user interface. Local Code: Execute custom code on the local server. IMPORTANT: DO NOT USE NETSTORE IN PRODUCTION OR DEPLOYMENT ENVIRONMENTS. IT IS CURRENTLY NOT SECURE. If you choose to use it anyway, you do so at your own risk. It’s on the dev Branch. I’d recommend to use it only in your local Network
Summary: Added a Docker Manager and done some fixes with the NetStore In my last devlog I made the NetStore, and this is the first application by myself. It’s used to manage your dockers from everywhere (What a wonder, the docker manager can manage docker). It isn’t perfect right now, so it’s not an alternative to something like Portainer or Coolify, but for simple tasks, it’s good enough. Primarily I made this application to add features to the NetStore (I added a lot, only for this application) and of course I found some bugs. The NetStore itself isn’t secured yet (Right now I only added Deno), but I’m working on it!
Summary: Secured NetStore and published it. I secured the NetStore so far that I can release it on the main branch. Right now it isn’t in the demo, so you can test it only when you install it by yourself (wich is very easy with the new install script)
Summary: Made a traffic monitor for the NetStore This Devlog isn’t gona be that long, I just made a smal traffic monitor. And some small improvements.
Summary: Moved all build-in apps into the NetStore That’s pretty much all…
Summary: Refactored NetStore, gave the NetStore it’s own Repo and started making a Minecraft Server Manager. I just refactored the I gues 1200 line longe NetStore app, and I have so much to refactor left. I started the Minecraft Server Manager before the refactoring but it wasn’t in my usual hackatime project, it was in a new one, and my stupid ass thought it was just a technical mistake that the time wasn’t tracked.
Summaray: Refactored netgraph and settings app Yeah, I refactored it. That’s it. I gues I put these applications as picture :-|
Summary: Made NetConnect a programm for Linux to bring you Network to you everywhere (without VPN) I made this using Go and a virtual network device wich act like a spit tunnel vpn, to extract all request from you subnet e.g. 192.168.1.0/24 sends it over a WebSocket to the NetLink relay server and to its target server. I’m not fully done with this, but right now it’s working. Maybe I’ll do a version for windows soon. How you can install it is defined in the NetConnect Repo ONLY FOR LINUX
Summary: Made some bugfixes That’s pretty much all. I found some small thing I didn’t like and fixed them.
Summary: Polished NetLink for a ship Fixed some bugs Remade some screens Made a demo version Made some security fixes
Ships:
I built a project called NetLink! It lets you connect to your home network from anywhere. Right now, it supports access via VNC, SSH, and SFTP. It uses WebSockets and web based apps to establish the connection. Everything is routed through a relay node, so you don’t need to open any ports on your router. In the demo version, you can set up your own PC as a local server to try it out (active for 24 hours). If you want to use it long-term, you can easily self-host the project on your own hardware (GitHub Readme). I’m planning to add support for more protocols soon. If you have any feedback or ideas on how to improve the project, feel free to leave a comment or send me a DM! Heads up: If you’re using the demo, it might take a few moments to load all your devices.
NetLink connect to your network from everywhere without a VPN I made a Web based “OS” to connect to your network without a VPN and accses your resources with protocols like sftp or ssh. I also build a desktop client to emulate a VPN on your pc, so you can accses your network with your own programms Technologys I used WebSockets to transfer data between the client and the Server. For the frontend I choose React, for the backend I used TypeScript....
|
1792990307.4654815
|
1793076707.4654815
|
|
50574
|
prête app by @253_Mathilde_IYKYK | Stardance
|
253_Mathilde_IYKYK
|
1
|
75.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T18:35:10Z", "hours": 75.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "You do not need to install anything to rate. You do not need to be an android user. The README is full of information and screenshots that show the app in action. So first of all: This project is and was hugeeeee for me personally.I worked on it for about 51 days and made over 700 commits. I never really coded such big projects before stardance and I never coded an actual app in my life. All the graphics were made by me and I gave my best with storytelling (I wrote a devlog about every 2 hours). I really gave my best and poured my soul in here so I am really, really asking for GOOD feedback. That means giving actual tips, reporting bugs because there are ones not because you were too lazy to read the instructions. There are instructions in the README but I’ll also write them here for you. So what is prête: Prête is a PWA which means I coded everything in HTML, CSS and JS just like a website but transformed it into an app. If you want to do something like that → check the README. If you want to not install the app but still want to rate it → check the README. It is a get-ready-app that helps you to reduce stress for the future or to leave the house in a rush without stress. It tells you what to do and has things like weather (automatic location response),notifications,last index memory (only when closing completely!!) and much more. This is the first ever version of it and as you have read it was a long way but I am open to make it even longer! Bug report is open on github and I am also open to more ideas and wishes. The problem that I had: I always felt stressed while leaving,forgot stuff and startetd with a bad mood in the day or even in an event. I was always grumpy before even arriving. I just couldn’t remember everything and I felt really demotivated. I tried everything:apps that remind you with notifications, to do lists and post it. Nothing worked. I really sat down and thought about what you ACTUALLY needed. The installation: It is pretty simple: Scan the QR-code below or go to the Releases in the repo. Download the version which is marked with the green icon “Latest”. Download it and go to your files (there is a chance that your phone asks you before that if you want to install it ,if that happens just click yes). When you are in the file manager just click on it and then install. There may be a malware scan but then you are in. Open the app and click on the allow button when the app asks you to send notifications. Everything is pretty self-explanatory and Mira will tell you what to do but you never know: Choose the mode you want to use and do as Mira tells you. Please notice that the fast mode has no configuration and just gives you a task and a time. When you are using the actual mode follow the instructions and type in your times. After that choose a bag and then your bag stuff. You can scroll down on the bag stuff site to see more options. Now you should be on the clothing site: Select your outfit (scroll to the left in each row to show more clothing options). Click on the little cloud at the top to show the weather for today and next week. Click on it again to close it. Click on the little book to open the notes feature. Click in the pink area and start typing. To close the keyboard press ENTER and hit the save button. Click on the little book to close the notes feature. Continue your configuration and again: scroll down to show more options. You now reached the changing screen. Follow the instructions (close the app etc.). When you restarted the app just follow Mira. As you can see it is super simple. A superrrrrrr good explained version is in the README and for those who hate reading: there is a vd which you can watch instead!! Please report bugs on github and not in your rating (so I can fix them as fast as I can) and maybe star the repo. Thanks sooo much for staying with me through this long way and supporting me: @amateur_tech_guy @Makkonen @nokira @madzia @OrangeJuice", "repo": "https://github.com/253-Mathilde/Get-ready-app", "demo": "https://github.com/253-Mathilde/Get-ready-app/releases"}]...
|
[{"post_id": 79110, "ts": "202 [{"post_id": 79110, "ts": "2026-10-12T18:18:16Z", "hours": 1.1128, "text": "Guys, it is time to ship (just worked a little bit more on the README) this is the last devlog for the first-ever version! Thank you all for staying through the whole process. I hope this app helps some people and is actually useful. Thanks soooooooooooooooooooooo much for these 52 days <3"}, {"post_id": 78435, "ts": "2026-10-10T19:58:49Z", "hours": 0.7103, "text": "So I will not lie—this was such a pain. But guys, the app sends notifications (with a custom icon), is signed, and is finally released on GitHub (discussion is already open for bug report), and the Google application is sent. The workflow is flowing as smoothly as hell, and the app is working in fullscreen with no mistakes in the UI. This took wayyyyyyy longer than these 40 minutes, but I am just happy that it works. I will not ship because the Google application is still in the queue. This application is important because without it you need to go to your settings and then turn off a feature, then install the app and scan it. So you know this is not a virus, but people won’t install it because I said, “Just trust me.” …..I am super proud and also upgraded the README(there will be an instructions part too, but I have to do school and want to get some sleep). Thanks for reading <3"}, {"post_id": 78287, "ts": "2026-10-10T09:32:34Z", "hours": 2.2506, "text": "I now offically can say: We got our first ever release on github (currently unsigned) and we may ship until monday. There are some small bugs I still have to fix but I am working as fast as I can and alone the fact that the github workflow works is just awesome. As you can see I upgraded the README and really gave my best. Ik I may change some pictures in the galerie and add another text but it is mainly finished. I think that we can actually pull that of!! We are now active for exactly 50 days,have 721 commits on github and over 500 deployments. I never builded an app and just feel sooo proud right now. For the apple version: There may be one in the future but I currently do not have an apple license so that won’t work. We’ll see about that then when I got my rating in and see how much people like this. Thanks for reading <3 and check it out in real life at https://github.com/253-Mathilde/Get-ready-app/blob/4bd1e18a9797cce640851d943a61a1cf5060b6c8/README.md and leave a star :)"}, {"post_id": 77913, "ts": "2026-10-08T18:53:59Z", "hours": 2.9261, "text": "Woahhhh guys, I now officially can say that the sites are done. We just need the .apk signed (should I also do an Apple version? Please tell me in the comments) and a README plus some graphics for, like, “presentation matters”. Just so you can get it: this project is now active for 48 days, and even though I love it and everything, it is really draining me. I coded the last sites and fixed the JS, so now we won’t have negative numbers. I went through all 20 HTML files for grammar, and I also went to the JS for the notification grammar. Any wishes, ideas or things you absolutely hate in the comments!! I still cannot believe that we are here, and thanks for reading <3 FOR ALL THE PEOPLE THAT ACTUALLY READ THIS AND STAYED FOR ALL THESE DAYS: I CANNOT THANK YOU ENOUGH!"}, {"post_id": 77398, "ts": "2026-10-06T19:58:16Z", "hours": 2.2125, "text": "So I worked a little bit, and now we only need 2 more screens and the README. Please ignore the drawing in the vd this is just to save my location because it stands in the weather application. As you can see, I made the dressing screen with the actual weather to dress like you needed, and I added a screen with a timer for your hair. I am currently working on the screen that tells you to brush your teeth, and then we will need the screen that helps you with your bag. And of course the finishing screen. I am working on the README while doing all of that, so yeah, school is killing me, but at least we have a break in 2 weeks. Thanks for reading and staying with this project <3"}, {"post_id": 76181, "ts": "2026-10-02T16:42:43Z", "hours": 2.4836, "text": "Sooooooo I finished the finishing site :) . This is where we are at now, and I think it is good? Kinda perfect too? A little bit unsure about that at the moment, so as always, feedback is welcome. I also started working on the fast mode (the button works, and I started working on the design). And yesssss, I know it looks pretty bad right now, but I hope you can see the vision because this also has a different colour theme because of the different stress levels (yes, the colours aren’t chosen randomly,colour theory is a REAL thing). Also, I’m pretty sure no one will read this because who is here after 42 days? But please start at GitHub and tell me if you want to get in the README, and when we are talking about the README. I also upgraded that, so now you know I made it. Here is the link: https://github.com/253-Mathilde/Get-ready-app , and thanks for reading <3"}, {"post_id": 75285, "ts": "2026-09-29T17:13:13Z", "hours": 2.0372, "text": "Okay, so I am giving my best on the finishing screen. Ik ik, the button is not correct, and there will be more things, but I wanted to know what you think of the vd before I continue working on it. Please leave a comment! Don’t forget to star ( https://github.com/253-Mathilde/Get-ready-app ) and thanks for reading <3"}, {"post_id": 74389, "ts": "2026-09-27T09:30:24Z", "hours": 2.1381, "text": "I cannot believe it. You need to wake me nowwww. The last site for the actual mode is finished (we only need the “winning screen” and, of course, the fast mode now). This literally means that we coded 13 sites. Each of these screens has its own code and stuff and the animation with the bag grabbing… In my opinion it looks great, and even the JS already works on both sites, and the heading changes on the one site (from “Grab your tote bag” to “Grab your backpack,” for example), and yeah, what can I say, I’ll try to do the finishing animation today (I have a lot of homework, so I would have started the fast mode, but yk). It is only the fast mode, one screen, and a README until we finish (sounds long, but it isn’t because this is about a week, and this project has gone for 37 days now, so yeah). It would really help if you starred on my project and appreciated my longgggggggggg working progress https://github.com/253-Mathilde/Get-ready-app . Also please leave feedback ! Thanks for reading <3."}, {"post_id": 74087, "ts": "2026-09-26T17:14:41Z", "hours": 1.2114, "text": "Okay so I upgraded my README because this now makes it possible to like read in your flow without searching 100 years fot that exact part. I also started working on the animation for the bag grabbing site but I don’t want to tell you too early because this animation is actually killing me (my WIFI stopped working about 10 times) but yeah what do we think about this upgrade in the README (there will be about 8 of these unfolding idk-how-to-call-them-things). As always please leave a star https://github.com/253-Mathilde/Get-ready-app .Thanks for reading<3"}, {"post_id": 73582, "ts": "2026-09-25T13:04:33Z", "hours": 1.4192, "text": "And boom the extra task site is finished. I am sooo overjoyed I mean look how it turned out and the JS is already working and these little checkboxes just look adorable. I also love the font just everything wowwww. We won’t talk about the JS because that was such a hustle but let’s just ignore that. We now have the dressing screen and the extra task screen. Next thing is the bag grabbing screen and then it is time for the stuff that goes in your bag. These are just 2 screens plus some pretty easy ones like finishing screen and stuff and these will be mostly html and css so now more local storageeeeeee. And yeah I almost forgot: I did add a little timer again and yeah I would love it if you could starr my project on https://253-mathilde.github.io/Get-ready-app/ and thank you for staying with me so long this project is now active for about 33 days and we are close to hitting over 500 commits and actions. Thanks for reading <3"}, {"post_id": 73275, "ts": "2026-09-24T18:39:15Z", "hours": 2.9233, "text": "Heyyy I actually have kinda a big update! (Sr for not being active had to do #sticky-ysws ) but now we offically have the changing site to the extra site,the custom charachter,thecustom heading,the custom paper and the super duper cool checkboxes. Styling them was pretty hard but I mean it was soooo worth it. I just love the little blue (idk the english word lolll) and everything. And yesss I’ll do the JS that they only show when you have as many extras and stuff and there will be custom text to your task. So it will be like a custom text writing thingy. Yk like you actually wrote a to-do list. ALso don’t tell me about the grammar I ‘ll change it okayyyyy. And now because you are a super true one and read until here you will go here: ( https://253-mathilde.github.io/Get-ready-app/ ) and star my repo!! Thank you sooo much for that. I’ll give my best and I hope you like the to-do note thingy idea! Thanks for reading <3"}, {"post_id": 71879, "ts": "2026-09-21T18:04:04Z", "hours": 2.0825, "text": "Yayyyy I finally did it and added a timer (it also changes the time proportional to the clothes you selected based on their time). And I also worked on my README wich is (as always) so much work but let’s do it! I also set up the next site which is super plain at the moment but at least the JS to that site works. I also setted up notification but they don’t work in the apk because my coverter does not support that. Any simple ideas (everything online I found was way to complicated and like I just want a simple notification). Buttt I may add a vibration when the timer is done so you notice it more. Any ideas in the comment and thanks for reading <3"}, {"post_id": 70618, "ts": "2026-09-19T13:55:22Z", "hours": 2.1961, "text": "Omggggg, I think I am obsessed! I mean, just look how cute this looks, with all the details and the working note thingy and the WORKING JS that gets everything out of local storage and in local storage, that moves the items to their places and even displays your note (or the little note from Mira if you forgot to write one). This was such a struggle, but I mean, it works. Now we only need a little timer at the top to remind you of the time (I try to do it tonight, but there’s a lot of school, yk), but when this is done, we have kind of the base for all the other sites. We are sooo behind schedule, but let’s just ignore that. Please give me feedback on what you think (it is super-duper okay if you dislike it; sometimes my taste is a little bit off). Btw, the numbers are negative because I skipped the preview questions. Thanks for reading <3"}, {"post_id": 70253, "ts": "2026-09-18T20:13:58Z", "hours": 2.2108, "text": "Well I am actually kinda dying but I mean the next site now has it’s own design ,an open closet (the clothes are coming soon they will be like the ones when you choose on a hanger yk) and I already started working on the JS for the note taking thingy ,now we need to display the note that we left ourselves (it is going to be in the green box) and we got the styling for the Next button for kinda the next sites. Btw do we think packing our back is the last thing to do (In my opinion yes but idk what do YOU normally do). I don’t think that I’ll do more today. Please help me with your opinion in the comments. Thanks for reading <3"}, {"post_id": 70138, "ts": "2026-09-18T15:23:36Z", "hours": 3.0231, "text": "Uhhh, the first actual mode site is finished (the animation is 100% made from me, tell me what you think). It is a pretty simple site that tells you to go to your wardrobe, and the site also has its own next button style. Pretty simple, but yk, I just love details. I also force myself to work as much as I can today because I don’t have school. Giving everything and thanks for reading <3"}, {"post_id": 69680, "ts": "2026-09-17T15:54:48Z", "hours": 2.4714, "text": "So I can finally work now (still sick, but at least I can type), so here we are. I made the so-called 0-screen that tells you your getting-ready-start time, and as you can see, it already works. That means my JS actually saves everything in local storage and gets it out of local storage! Super duper proud because I am normally so bad at JS. Hope you also like the design of the start button. I’ll work on the next site now (this is the hardest because once I get that site, all the others will work kind of the same)! Thanks for reading <3"}, {"post_id": 68138, "ts": "2026-09-14T16:05:02Z", "hours": 2.3517, "text": "Okay, so we are one day behind schedule, but that shouldn’t be such a big problem (had other coding stuff to do, not for any ysws). I made the extra time site where you can get extra time for eating, showering, doom scrolling, hair styling, makeup, teeth brushing, and cleaning, as well as a buffer where you can get 10 minutes to stay safe. I also made the super hard and complicated JS part that made me crash out that gets you back to the site that you were on when you close the app. Now it is time for the screens that tell you what to do! Thanks for reading <3"}, {"post_id": 66579, "ts": "2026-09-12T12:43:06Z", "hours": 1.8792, "text": "The clothes site is finished!!! I am so happy and also a little bit proud because this site has pretty cool mini features that are supposed to help you as much as you can. You now can select your outfit for the event, and while doing so, check the weather or leave your future self a note. The weather gets your location automatically and also shows for the next 6 days so you can actually plan for events that aren’t tomorrow. I also love that little cloud hidden feature, and I already started working on the last site for the normal mode: the extra time screen. Here you can choose extra time for stuff like brushing your teeth, doing your hair, or eating something. After this site we will do the screens that tell you what to do with a timer, etc. We are a little bit short on time, so I really have to lock in on the weekends because stardance is only 2 weeks (I know it is a little bit more, but I may be able to squeeze in a super small project). So the plan is to finish the screen this weekend with the extra time and to finish all the other screens until the upcoming Friday. That should make it possible to do the fast mode on the weekend (I probably will need longer for that, but yk). So yeah, that is basically the plan and thanks for reading <3"}, {"post_id": 66024, "ts": "2026-09-11T15:50:21Z", "hours": 1.8733, "text": "I really gave my best, guys, and I haven’t finished. But today I’ll just work on the README more because the styling of that was pretty tricky, and I really struggled with that moving cloud thing, but I think it is such a cute feature. I think I won’t do an edit and delete button, yk. Just resave it and then it updates. That’s enough because I am sick today, but that won’t keep us from working, and I give my best on the README now. Love the new stardance update, btw, and thanks fro reading <3"}, {"post_id": 65409, "ts": "2026-09-10T15:02:28Z", "hours": 1.4522, "text": "I made the JS for the clothing site! Now I only need to do the styling with CSS and the notes feature. The notes feature is for yourself (so you can help yourself with notes like the blue shirt from my sister, or so you can specify which piece you want to help yourself with in the next morning) I also need to improve some little details (pretty time-consuming, but I always love details, and I’ll keep adding them). I also made another APK for testing, and it looked sooo good on my phone. Thanks for reading <3"}, {"post_id": 64832, "ts": "2026-09-09T14:46:35Z", "hours": 2.8642, "text": "Finally the layout for this site is finished. It was quite a struggle and took super long for just 3 div containers, but I think it was so worth it. I know, I know the graphics for the clothes are not perfect, and we need more items, but I can change that later. Now the whole thing needs to work with the JS and such stuff. I still need to do some more sites with stuff to add, and then it’s time for the really hard part: getting everything out of local storage, building in a timer, showing your personal notes … We aren’t even there, but don’t demotivate ourselves now, and I’ll just keep working and giving my best (squeezing every bit of time I have in!) Thanks for reading <3"}, {"post_id": 63582, "ts": "2026-09-07T14:36:31Z", "hours": 3.1719, "text": "Ofc you expect something big now; I mean, 3 hours come onnnn. Nah nah, in 3 h I build a 15 px x 15 px square. Sureeee. My patience is actually killing me, but never mind. I added the weather application to my project (I mean that little gif next to the heading). When you click on it, it opens the weather for today and for the next 6 days (y’know, if you are planning your outfit, you need to know if it’s cold or warm…). That works with summary and such stuff. Never heard of it and don’t really get it, buttttt it works, and that thing made its way into my brain (but I’ll never work with it again). I’ll start working on the clothes now (yk graphics …). If you have any wishes for that, tell me, please! Right now it is the plan to add a feature where you can leave yourself a note to help you find that exact piece, a t-shirt, a sweater, a long shirt, a top, a skirt, shorts, jeans, a long skirt, a dress, high heels, sneakers, basic shoes, autumn boots and, ofc, winter boots. Thanks for reading <3"}, {"post_id": 62792, "ts": "2026-09-06T09:45:54Z", "hours": 2.0819, "text": "It was quite a struggle doing the JS and the whole styling (I added more items, and the whole layout was suuuuper bad when selecting an item). And when we are talking about selecting, it works!!! I made a selection mode and timed every item. I also added a local storage system on this and the site before. That system basically saves numbers, and at the end the app can read these numbers and tell you, when you planned your event, you wanted this jacket… Like, it doesn’t work, but that’s kind of the plan, and I also spent a lot of time on that (thanks to YT, I managed to do it, and to be patient, ~~that’s basically a lie). I also worked on the README more because I always write pretty long ones, but this will be longer (I really try to keep it short, but there is so much to explain). As already said, I added more items, but if you have more: Tell me and I’ll add it. Right now we have keys (5 min), money (5 min), a phone (1 min), a charger (3 min), writing stuff (5 min), a passport (7 min), lip balm (1 min), earphones (6 min), bubble gum (2 min), food (10 min), random bag stuff (yk stuff that is in every bag and kind of stays there) (2 min), books (8 min) and tech stuff (yk laptop or iPad) (7 min). The time for every item stands in the () and please tell me if you think that this is too much or if I should add more. Thanks for reading <3"}, {"post_id": 62288, "ts": "2026-09-05T16:15:50Z", "hours": 1.4372, "text": "So I kind of feel like flying because you can see the results so fast! I just made the next screen (not the JS, just the styling and the graphics, but I mean), and I think it looks sooo good (please tell me if I am wrong)! We now have keys, money, a phone, a charger, writing stuff, a passport, lip balm, earphones and chewing gum. Is there anything else I should add (something super duper important that needs to be in your bag)? Oh, and I also made it scrollable, and everything matches the pixel vibe! When you say that there are enough items, I’ll do the JS, and btw, I tried to make it for all kinds of events ( a passport for travel or writing stuff for college or school…). PLEASE GIVE ME FEEDBACK, and thanks for reading <3"}, {"post_id": 61757, "ts": "2026-09-04T20:18:13Z", "hours": 2.3014, "text": "I am sooooooo happy because now the selected and deselected mode AND the math work (it selects and then removes 5 minutes from your starting time, and when you deselect it, it adds 5 minutes). Btw, do we think 5 minutes for finding a bag is enough (not the stuff inside, just the empty bag, but I myself always need so long, especially in the morning), and I also changed the CSS so it looks good while selecting and while deselecting, and yeah, I may change the time if you say less or more, but then this screen is finished. Soooo happy because I always work with a lot of files, which is really confusing for me, yes, but so I only have short amounts of code and can debug really well! Thanks for reading <3."}, {"post_id": 60888, "ts": "2026-09-03T15:10:54Z", "hours": 1.2142, "text": "I made a banner for the README, and I started working on the next site. I am sooooo happy because you now can really see where we are going and what my vision is. The third site is static right now, and only the home button (and the next button if a next site would exist). I also want the elements to change colour when you click on them, but yeah, I think it looks pretty cool, and as always: I need feedback; write me on Slack or leave a comment! Thanks for reading <3"}, {"post_id": 59778, "ts": "2026-09-01T18:30:16Z", "hours": 1.4356, "text": "Okay, so I made a video for the README and promoting and stuff because presentation matters… (I genuinely can’t hear it anymore), but yeah, I also made the next site (it is completely white at the moment now, but like, it changes the site correctly, and my JS with all the sound effects works). I also researched a little on how to make push notifications, but everything seems a little complicated, but if it’s complicated, I still have to do it, but maybe it gets easier because everything is based on HTML, CSS and JS and just converted. Idk I have to do more research. If you know something: please leave a comment! Thanks for reading <3"}, {"post_id": 58364, "ts": "2026-08-30T19:22:25Z", "hours": 2.1006, "text": "Okay, so I fixed the sound (it took pretty long, but in the end it was just that the site loaded too fast). And I also changed the sources in the whole project, yk, so now everything works. That little piece of ../ is really annoying me because of all the GitHub stuff and the file structure, but I want to keep it structured so people can really understand my repo and yes, pretty productive day and we now can officially start working on the next sites where you choose your bag, your clothes, etc. Thanks for reading. <3"}, {"post_id": 58099, "ts": "2026-08-30T13:33:42Z", "hours": 2.5019, "text": "The math works!!!! It took me a lot of trying and thinking (yk, it has to be local storage because it is a new site with a new index but the same Java, so there is 0 room for mistakes), but now it tells you the time that you need to start. I also fixed the next button and started working on the sound effects. I also decided that I won’t do background music because I personally hate that in apps because if I get ready, I don’t want a loop of music; I want my playlist chosen by my mood. So it’ll be a sound when you click on the home button and a sound if you click on the next button (so you feel a little proud and have a happy moment and a motivation to do the next step). I will do the next screens now, and every time you select an item or whatever, it will subtract time for everything (brushing your teeth minus 3 minutes, putting on clothes 10 minutes …). So happy that it works, and hope you like the design with the next button. Thanks for reading <3"}, {"post_id": 57256, "ts": "2026-08-29T11:20:36Z", "hours": 1.7206, "text": "Ohh, okay, so first of all, I love the new Stardance streak update (here I come, but I am so said that I lost my over 40 days’ streak at the end of the holidays). And then, as you can see, I fixed the next button, and I started working on the JS, because now it is time for the fun part: the whole math, because yesss, that is a lot of math (yk, with the hours, the minutes, the planning, and the time calculated that you need to do this or that). I am giving my best, and unfortunately the whole thing is getting so big that my converter doesn’t take it any more, and I need a new one (any tips in the comments, please; I need one from a zip file to APK). Yeah, thanks for reading and let’s see how far I can get with the JS today <3"}, {"post_id": 55763, "ts": "2026-08-27T19:09:04Z", "hours": 3.4947, "text": "Okay, so this really took forever because of all these pages, and they are all in folders, and you need to get out of the folder, and you need to link it right, and the JS…long story short: it is annoying and testing me, but never mind. As you can see, I added a third screen (nope, the second one is not finished, but I needed it to program the next button). Tomorrow I will do some graphic stuff because right now the button is somehow gone and just a frame (I just converted it to an SVG). And yeah, basically if you have tips on how to do the whole thing with all the screens better (because you also need to pay attention to the app, yk, not everything that works in your browser works in the app). Thanks for reading <3"}, {"post_id": 54619, "ts": "2026-08-25T17:21:02Z", "hours": 1.2203, "text": "Okay, so nope, I’m not dead, just busy with school. And because I live in a country with a pretty hard school system, this really takes forever, but I know how it looks: I was lazy. Nope, I wrote a 3-site report about the plan and watched YouTube videos for my Java knowledge 24/7, and as you can see, I installed it, and I think the app icon looks great in real life. I just built the first screen with the input field for the arrival time and need some help: The font size is perfect for the number but not for the placeholder. I did write code for these two but somehow it doesn’t work input[type=“number”] { font-size: 30px; colour: #f5df3d; } input::placeholder { font-size: 60px; colour: #f5df3d; } It would be great if someone helped me. Hope you like the first app screen, and I am giving my best here to give this project all I have. I just got a superstar for my other project, Neverland OS, and I am so thankful and would like to say a big thank you to all the supporters. I hope this project also gets so much feedback, and I am giving my best (I have never built an app before). Thanks for reading <3, and I’m so happy that installing on my phone worked"}, {"post_id": 51154, "ts": "2026-08-20T17:26:24Z", "hours": 1.2733, "text": "Okay, so today I started working on the second screen and the like timer thing (on this screen you are going to tell the app what time you need to arrive), and then the app will tell you at the end (when everything is chosen (for example, what should be in my bag)) when to get up. Omg, that sounds so bad, but idk how to explain it any better. I also changed the font of the text on the home screen, and I downloaded the first-ever APK file for testing, so it doesn’t have a key at the moment. I will share a screen of how it looks on a real phone when I install that. A lot of research today, and school starts again in 3 days, so I have a lot of other stuff to do, but as always, I am giving Stardance every hour I have. Thanks for reading, and I hope you see the vision <3."}, {"post_id": 50597, "ts": "2026-08-19T20:13:49Z", "hours": 3.9386, "text": "Okay, so I really hate writing for such big amounts of time, but whatever. I changed the whole design and added a pre-loader and a home button. I also changed Mira and the text box at the bottom. Like, look at it yourself, I changed everything; my brainstorming stays the same, just the design is different because I think the other one was kinda ugly. I also made another site today for a YSWS where you get lights so Idk if it’s forbidden to share that here but that also took 6 hours (so you get why I am only making such small amounts of progress) https://253-mathilde.github.io/Ocean/ and yeah, thanks for reading <3 Ohh and always open for feedback to the new design"}, {"post_id": 49747, "ts": "2026-08-18T17:46:32Z", "hours": 2.0439, "text": "Okay, so as you can see, I started brainstorming. I draw every screen and then program every screen step by step so it doesn’t get confusing and debugging is easier with smaller amounts of code. As you can see, I also made the welcome or start screen (I started it; don’t worry, it isn’t finished) and made the screen change once you click on Mira (the starfruit), and I made it go back when you click on text on the second screen. I also figured everything out for the screen, yk, so that it will look good on a phone, and I am programming everything for the dimensions of an iPhone 12 Pro, so it shouldn’t change much on other phones. Hope you can see the vision with these pretty bad drawings and thanks for reading <3"}, {"post_id": 49443, "ts": "2026-08-18T09:04:32Z", "hours": 0.9714, "text": "First of all: I am so happy to finally use lapse because now everything counts. Okay, back to the project: ‘prête’ (meaning something like ‘ready’ but it sounds better) is an app that tells you what to do to get ready. It helps you to reduce stress, etc. I’ve never made an app before, so this is going to be so much work. I just made something like a figure and the app icon, and I also set up Hackatime in VS, so now everything works and I can just work. I already have so many ideas, so I need to sort my head and watch a million YouTube videos to start because I also have no experience with programming for a phone. Let’s do it. Thanks for reading <3"}]...
|
Title: prête app by @253_Mathilde_IYKYK | Stardanc Title: prête app by @253_Mathilde_IYKYK | Stardance
Devlogs:
First of all: I am so happy to finally use lapse because now everything counts. Okay, back to the project: ‘prête’ (meaning something like ‘ready’ but it sounds better) is an app that tells you what to do to get ready. It helps you to reduce stress, etc. I’ve never made an app before, so this is going to be so much work. I just made something like a figure and the app icon, and I also set up Hackatime in VS, so now everything works and I can just work. I already have so many ideas, so I need to sort my head and watch a million YouTube videos to start because I also have no experience with programming for a phone. Let’s do it. Thanks for reading <3
Okay, so as you can see, I started brainstorming. I draw every screen and then program every screen step by step so it doesn’t get confusing and debugging is easier with smaller amounts of code. As you can see, I also made the welcome or start screen (I started it; don’t worry, it isn’t finished) and made the screen change once you click on Mira (the starfruit), and I made it go back when you click on text on the second screen. I also figured everything out for the screen, yk, so that it will look good on a phone, and I am programming everything for the dimensions of an iPhone 12 Pro, so it shouldn’t change much on other phones. Hope you can see the vision with these pretty bad drawings and thanks for reading <3
Okay, so I really hate writing for such big amounts of time, but whatever. I changed the whole design and added a pre-loader and a home button. I also changed Mira and the text box at the bottom. Like, look at it yourself, I changed everything; my brainstorming stays the same, just the design is different because I think the other one was kinda ugly. I also made another site today for a YSWS where you get lights so Idk if it’s forbidden to share that here but that also took 6 hours (so you get why I am only making such small amounts of progress) https://253-mathilde.github.io/Ocean/ and yeah, thanks for reading <3 Ohh and always open for feedback to the new design
Okay, so today I started working on the second screen and the like timer thing (on this screen you are going to tell the app what time you need to arrive), and then the app will tell you at the end (when everything is chosen (for example, what should be in my bag)) when to get up. Omg, that sounds so bad, but idk how to explain it any better. I also changed the font of the text on the home screen, and I downloaded the first-ever APK file for testing, so it doesn’t have a key at the moment. I will share a screen of how it looks on a real phone when I install that. A lot of research today, and school starts again in 3 days, so I have a lot of other stuff to do, but as always, I am giving Stardance every hour I have. Thanks for reading, and I hope you see the vision <3.
Okay, so nope, I’m not dead, just busy with school. And because I live in a country with a pretty hard school system, this really takes forever, but I know how it looks: I was lazy. Nope, I wrote a 3-site report about the plan and watched YouTube videos for my Java knowledge 24/7, and as you can see, I installed it, and I think the app icon looks great in real life. I just built the first screen with the input field for the arrival time and need some help: The font size is perfect for the number but not for the placeholder. I did write code for these two but somehow it doesn’t work input[type=“number”] { font-size: 30px; colour: #f5df3d; } input::placeholder { font-size: 60px; colour: #f5df3d; } It would be great if someone helped me. Hope you like the first app screen, and I am giving my best here to give this project all I have. I just got a superstar for my other project, Neverland OS, and I am so thankful and would like to say a big thank you to all the supporters. I hope this project also gets so much feedback, and I am giving my best (I have never built an app before). Thanks for reading <3, and I’m so happy that installing on my phone worked
Okay, so this really took forever because of all these pages, and they are all in folders, and you need to get out of the folder, and you need to link it right, and the JS…long story short: it is annoying and testing me, but never mind. As you can see, I added a third screen (nope, the second one is not finished, but I needed it to program the next button). Tomorrow I will do some graphic stuff because right now the button is somehow gone and just a frame (I just converted it to an SVG). And yeah, basically if you have tips on how to do the whole thing with all the screens better (because you also need to pay attention to the app, yk, not everything that works in your browser works in the app). Thanks for reading <3
Ohh, okay, so first of all, I love the new Stardance streak update (here I come, but I am so said that I lost my over 40 days’ streak at the end of the holidays). And then, as you can see, I fixed the next button, and I started working on the JS, because now it is time for the fun part: the whole math, because yesss, that is a lot of math (yk, with the hours, the minutes, the planning, and the time calculated that you need to do this or that). I am giving my best, and unfortunately the whole thing is getting so big that my converter doesn’t take it any more, and I need a new one (any tips in the comments, please; I need one from a zip file to APK). Yeah, thanks for reading and let’s see how far I can get with the JS today <3
The math works!!!! It took me a lot of trying and thinking (yk, it has to be local storage because it is a new site with a new index but the same Java, so there is 0 room for mistakes), but now it tells you the time that you need to start. I also fixed the next button and started working on the sound effects. I also decided that I won’t do background music because I personally hate that in apps because if I get ready, I don’t want a loop of music; I want my playlist chosen by my mood. So it’ll be a sound when you click on the home button and a sound if you click on the next button (so you feel a little proud and have a happy moment and a motivation to do the next step). I will do the next screens now, and every time you select an item or whatever, it will subtract time for everything (brushing your teeth minus 3 minutes, putting on clothes 10 minutes …). So happy that it works, and hope you like the design with the next button. Thanks for reading <3
Okay, so I fixed the sound (it took pretty long, but in the end it was just that the site loaded too fast). And I also changed the sources in the whole project, yk, so now everything works. That little piece of ../ is really annoying me because of all the GitHub stuff and the file structure, but I want to keep it structured so people can really understand my repo and yes, pretty productive day and we now can officially start working on the next sites where you choose your bag, your clothes, etc. Thanks for reading. <3
Okay, so I made a video for the README and promoting and stuff because presentation matters… (I genuinely can’t hear it anymore), but yeah, I also made the next site (it is completely white at the moment now, but like, it changes the site correctly, and my JS with all the sound effects works). I also researched a little on how to make push notifications, but everything seems a little complicated, but if it’s complicated, I still have to do it, but maybe it gets easier because everything is based on HTML, CSS and JS and just converted. Idk I have to do more research. If you know something: please leave a comment! Thanks for reading <3
I made a banner for the README, and I started working on the next site. I am sooooo happy because you now can really see where we are going and what my vision is. The third site is static right now, and only the home button (and the next button if a next site would exist). I also want the elements to change colour when you click on them, but yeah, I think it looks pretty cool, and as always: I need feedback; write me on Slack or leave a comment! Thanks for reading <3
I am sooooooo happy because now the selected and deselected mode AND the math work (it selects and then removes 5 minutes from your starting time, and when you deselect it, it adds 5 minutes). Btw, do we think 5 minutes for finding a bag is enough (not the stuff inside, just the empty bag, but I myself always need so long, especially in the morning), and I also changed the CSS so it looks good while selecting and while deselecting, and yeah, I may change the time if you say less or more, but then this screen is finished. Soooo happy because I always work with a lot of files, which is really confusing for me, yes, but so I only have short amounts of code and can debug really well! Thanks for reading <3.
So I kind of feel like flying because you can see the results so fast! I just made the next screen (not the JS, just the styling and the graphics, but I mean), and I think it looks sooo good (please tell me if I am wrong)! We now have keys, money, a phone, a charger, writing stuff, a passport, lip balm, earphones and chewing gum. Is there anything else I should add (something super duper important that needs to be in your bag)? Oh, and I also made it scrollable, and everything matches the pixel vibe! When you say that there are enough items, I’ll do the JS, and btw, I tried to make it for all kinds of events ( a passport for travel or writing stuff for college or school…). PLEASE GIVE ME FEEDBACK, and thanks for reading <3
It was quite a struggle doing the JS and the whole styling (I added more items, and the whole layout was suuuuper bad when selecting an item). And when we are talking about selecting, it works!!! I made a selection mode and timed every item. I also added a local storage system on this and the site before. That system basically saves numbers, and at the end the app can read these numbers and tell you, when you planned your event, you wanted this jacket… Like, it doesn’t work, but that’s kind of the plan, and I also spent a lot of time on that (thanks to YT, I managed to do it, and to be patient, ~~that’s basically a lie). I also worked on the README more because I always write pretty long ones, but this will be longer (I really try to keep it short, but there is so much to explain). As already said, I added more items, but if you have more: Tell me and I’ll add it. Right now we have keys (5 min), money (5 min), a phone (1 min), a charger (3 min), writing stuff (5 min), a passport (7 min), lip balm (1 min), earphones (6 min), bubble gum (2 min), food (10 min), random bag stuff (yk stuff that is in every bag and kind of stays there) (2 min), books (8 min) and tech stuff (yk laptop or iPad) (7 min). The time for every item stands in the () and please tell me if you think that this is too much or if I should add more. Thanks for reading <3
Ofc you expect something big now; I mean, 3 hours come onnnn. Nah nah, in 3 h I build a 15 px x 15 px square. Sureeee. My patience is actually killing me, but never mind. I added the weather application to my project (I mean that little gif next to the heading). When you click on it, it opens the weather for today and for the next 6 days (y’know, if you are planning your outfit, you need to know if it’s cold or warm…). That works with summary and such stuff. Never heard of it and don’t really get it, buttttt it works, and that thing made its way into my brain (but I’ll never work with it again). I’ll start working on the clothes now (yk graphics …). If you have any wishes for that, tell me, please! Right now it is the plan to add a feature where you can leave yourself a note to help you find that exact piece, a t-shirt, a sweater, a long shirt, a top, a skirt, shorts, jeans, a long skirt, a dress, high heels, sneakers, basic shoes, autumn boots and, ofc, winter boots. Thanks for reading <3
Finally the layout for this site is finished. It was quite a struggle and took super long for just 3 div containers, but I think it was so worth it. I know, I know the graphics for the clothes are not perfect, and we need more items, but I can change that later. Now the whole thing needs to work with the JS and such stuff. I still need to do some more sites with stuff to add, and then it’s time for the really hard part: getting everything out of local storage, building in a timer, showing your personal notes … We aren’t even there, but don’t demotivate ourselves now, and I’ll just keep working and giving my best (squeezing every bit of time I have in!) Thanks for reading <3
I made the JS for the clothing site! Now I only need to do the styling with CSS and the notes feature. The notes feature is for yourself (so you can help yourself with notes like the blue shirt from my sister, or so you can specify which piece you want to help yourself with in the next morning) I also need to improve some little details (pretty time-consuming, but I always love details, and I’ll keep adding them). I also made another APK for testing, and it looked sooo good on my phone. Thanks for reading <3
I really gave my best, guys, and I haven’t finished. But today I’ll just work on the README more because the styling of that was pretty tricky, and I really struggled with that moving cloud thing, but I think it is such a cute feature. I think I won’t do an edit and delete button, yk. Just resave it and then it updates. That’s enough because I am sick today, but that won’t keep us from working, and I give my best on the README now. Love the new stardance update, btw, and thanks fro reading <3
The clothes site is finished!!! I am so happy and also a little bit proud because this site has pretty cool mini features that are supposed to help you as much as you can. You now can select your outfit for the event, and while doing so, check the weather or leave your future self a note. The weather gets your location automatically and also shows for the next 6 days so you can actually plan for events that aren’t tomorrow. I also love that little cloud hidden feature, and I already started working on the last site for the normal mode: the extra time screen. Here you can choose extra time for stuff like brushing your teeth, doing your hair, or eating something. After this site we will do the screens that tell you what to do with a timer, etc. We are a little bit short on time, so I really have to lock in on the weekends because stardance is only 2 weeks (I know it is a little bit more, but I may be able to squeeze in a super small project). So the plan is to finish the screen this weekend with the extra time and to finish all the other screens until the upcoming Friday. That should make it possible to do the fast mode on the weekend (I probably will need longer for that, but yk). So yeah, that is basically the plan and thanks for reading <3
Okay, so we are one day behind schedule, but that shouldn’t be such a big problem (had other coding stuff to do, not for any ysws). I made the extra time site where you can get extra time for eating, showering, doom scrolling, hair styling, makeup, teeth brushing, and cleaning, as well as a buffer where you can get 10 minutes to stay safe. I also made the super hard and complicated JS part that made me crash out that gets you back to the site that you were on when you close the app. Now it is time for the screens that tell you what to do! Thanks for reading <3
So I can finally work now (still sick, but at least I can type), so here we are. I made the so-called 0-screen that tells you your getting-ready-start time, and as you can see, it already works. That means my JS actually saves everything in local storage and gets it out of local storage! Super duper proud because I am normally so bad at JS. Hope you also like the design of the start button. I’ll work on the next site now (this is the hardest because once I get that site, all the others will work kind of the same)! Thanks for reading <3
Uhhh, the first actual mode site is finished (the animation is 100% made from me, tell me what you think). It is a pretty simple site that tells you to go to your wardrobe, and the site also has its own next button style. Pretty simple, but yk, I just love details. I also force myself to work as much as I can today because I don’t have school. Giving everything and thanks for reading <3
Well I am actually kinda dying but I mean the next site now has it’s own design ,an open closet (the clothes are coming soon they will be like the ones when you choose on a hanger yk) and I already started working on the JS for the note taking thingy ,now we need to display the note that we left ourselves (it is going to be in the green box) and we got the styling for the Next button for kinda the next sites. Btw do we think packing our back is the last thing to do (In my opinion yes but idk what do YOU normally do). I don’t think that I’ll do more today. Please help me with your opinion in the comments. Thanks for reading <3
Omggggg, I think I am obsessed! I mean, just look how cute this looks, with all the details and the working note thingy and the WORKING JS that gets everything out of local storage and in local storage, that moves the items to their places and even displays your note (or the little note from Mira if you forgot to write one). This was such a struggle, but I mean, it works. Now we only need a little timer at the top to remind you of the time (I try to do it tonight, but there’s a lot of school, yk), but when this is done, we have kind of the base for all the other sites. We are sooo behind schedule, but let’s just ignore that. Please give me feedback on what you think (it is super-duper okay if you dislike it; sometimes my taste is a little bit off). Btw, the numbers are negative because I skipped the preview questions. Thanks for reading <3
Yayyyy I finally did it and added a timer (it also changes the time proportional to the clothes you selected based on their time). And I also worked on my README wich is (as always) so much work but let’s do it! I also set up the next site which is super plain at the moment but at least the JS to that site works. I also setted up notification but they don’t work in the apk because my coverter does not support that. Any simple ideas (everything online I found was way to complicated and like I just want a simple notification). Buttt I may add a vibration when the timer is done so you notice it more. Any ideas in the comment and thanks for reading <3
Heyyy I actually have kinda a big update! (Sr for not being active had to do #sticky-ysws ) but now we offically have the changing site to the extra site,the custom charachter,thecustom heading,the custom paper and the super duper cool checkboxes. Styling them was pretty hard but I mean it was soooo worth it. I just love the little blue (idk the english word lolll) and everything. And yesss I’ll do the JS that they only show when you have as many extras and stuff and there will be custom text to your task. So it will be like a custom text writing thingy. Yk like you actually wrote a to-do list. ALso don’t tell me about the grammar I ‘ll change it okayyyyy. And now because you are a super true one and read until here you will go here: ( https://253-mathilde.github.io/Get-ready-app/ ) and star my repo!! Thank you sooo much for that. I’ll give my best and I hope you like the to-do note thingy idea! Thanks for reading <3
And boom the extra task site is finished. I am sooo overjoyed I mean look how it turned out and the JS is already working and these little checkboxes just look adorable. I also love the font just everything wowwww. We won’t talk about the JS because that was such a hustle but let’s just ignore that. We now have the dressing screen and the extra task screen. Next thing is the bag grabbing screen and then it is time for the stuff that goes in your bag. These are just 2 screens plus some pretty easy ones like finishing screen and stuff and these will be mostly html and css so now more local storageeeeeee. And yeah I almost forgot: I did add a little timer again and yeah I would love it if you could starr my project on https://253-mathilde.github.io/Get-ready-app/ and thank you for staying with me so long this project is now active for about 33 days and we are close to hitting over 500 commits and actions. Thanks for reading <3
Okay so I upgraded my README because this now makes it possible to like read in your flow without searching 100 years fot that exact part. I also started working on the animation for the bag grabbing site but I don’t want to tell you too early because this animation is actually killing me (my WIFI stopped working about 10 times) but yeah what do we think about this upgrade in the README (there will be about 8 of these unfolding idk-how-to-call-them-things). As always please leave a star https://github.com/253-Mathilde/Get-ready-app .Thanks for reading<3
I cannot believe it. You need to wake me nowwww. The last site for the actual mode is finished (we only need the “winning screen” and, of course, the fast mode now). This literally means that we coded 13 sites. Each of these screens has its own code and stuff and the animation with the bag grabbing… In my opinion it looks great, and even the JS already works on both sites, and the heading changes on the one site (from “Grab your tote bag” to “Grab your backpack,” for example), and yeah, what can I say, I’ll try to do the finishing animation today (I have a lot of homework, so I would have started the fast mode, but yk). It is only the fast mode, one screen, and a README until we finish (sounds long, but it isn’t because this is about a week, and this project has gone for 37 days now, so yeah). It would really help if you starred on my project and appreciated my longgggggggggg working progress https://github.com/253-Mathilde/Get-ready-app . Also please leave feedback ! Thanks for reading <3.
Okay, so I am giving my best on the finishing screen. Ik ik, the button is not correct, and there will be more things, but I wanted to know what you think of the vd before I continue working on it. Please leave a comment! Don’t forget to star ( https://github.com/253-Mathilde/Get-ready-app ) and thanks for reading <3
Sooooooo I finished the finishing site :) . This is where we are at now, and I think it is good? Kinda perfect too? A little bit unsure about that at the moment, so as always, feedback is welcome. I also started working on the fast mode (the button works, and I started working on the design). And yesssss, I know it looks pretty bad right now, but I hope you can see the vision because this also has a different colour theme because of the different stress levels (yes, the colours aren’t chosen randomly,colour theory is a REAL thing). Also, I’m pretty sure no one will read this because who is here after 42 days? But please start at GitHub and tell me if you want to get in the README, and when we are talking about the README. I also upgraded that, so now you know I made it. Here is the link: https://github.com/253-Mathilde/Get-ready-app , and thanks for reading <3
So I worked a little bit, and now we only need 2 more screens and the README. Please ignore the drawing in the vd this is just to save my location because it stands in the weather application. As you can see, I made the dressing screen with the actual weather to dress like you needed, and I added a screen with a timer for your hair. I am currently working on the screen that tells you to brush your teeth, and then we will need the screen that helps you with your bag. And of course the finishing screen. I am working on the README while doing all of that, so yeah, school is killing me, but at least we have a break in 2 weeks. Thanks for reading and staying with this project <3
Woahhhh guys, I now officially can say that the sites are done. We just need the .apk signed (should I also do an Apple version? Please tell me in the comments) and a README plus some graphics for, like, “presentation matters”. Just so you can get it: this project is now active for 48 days, and even though I love it and everything, it is really draining me. I coded the last sites and fixed the JS, so now we won’t have negative numbers. I went through all 20 HTML files for grammar, and I also went to the JS for the notification grammar. Any wishes, ideas or things you absolutely hate in the comments!! I still cannot believe that we are here, and thanks for reading <3 FOR ALL THE PEOPLE THAT ACTUALLY READ THIS AND STAYED FOR ALL THESE DAYS: I CANNOT THANK YOU ENOUGH!
I now offically can say: We got our first ever release on github (currently unsigned) and we may ship until monday. There are some small bugs I still have to fix but I am working as fast as I can and alone the fact that the github workflow works is just awesome. As you can see I upgraded the README and really gave my best. Ik I may change some pictures in the galerie and add another text but it is mainly finished. I think that we can actually pull that of!! We are now active for exactly 50 days,have 721 commits on github and over 500 deployments. I never builded an app and just feel sooo proud right now. For the apple version: There may be one in the future but I currently do not have an apple license so that won’t work. We’ll see about that then when I got my rating in and see how much people like this. Thanks for reading <3 and check it out in real life at https://github.com/253-Mathilde/Get-ready-app/blob/4bd1e18a9797cce640851d943a61a1cf5060b6c8/README.md and leave a star :)
So I will not lie—this was such a pain. But guys, the app sends notifications (with a custom icon), is signed, and is finally released on GitHub (discussion is already open for bug report), and the Google application is sent. The workflow is flowing as smoothly as hell, and the app is working in fullscreen with no mistakes in the UI. This took wayyyyyyy longer than these 40 minutes, but I am just happy that it works. I will not ship because the Google application is still in the queue. This application is important because without it you need to go to your settings and then turn off a feature, then install the app and scan it. So you know this is not a virus, but people won’t install it because I said, “Just trust me.” …..I am super proud and also upgraded the README(there will be an instructions part too, but I have to do school and want to get some sleep). Thanks for reading <3
Guys, it is time to ship (just worked a little bit more on the README) this is the last devlog for the first-ever version! Thank you all for staying through the whole process. I hope this app helps some people and is actually useful. Thanks soooooooooooooooooooooo much for these 52 days <3
Ships:
You do not need to install anything to rate. You do not need to be an android user. The README is full of information and screenshots that show the app in action. So first of all: This project is and was hugeeeee for me personally.I worked on it for about 51 days and made over 700 commits. I never really coded such big projects before stardance and I never coded an actual app in my life. All the graphics were made by me and I gave my best with storytelling (I wrote a devlog about every 2 hours). I really gave my best and poured my soul in here so I am really, really asking for GOOD feedback. That means giving actual tips, reporting bugs because there are ones not because you were too lazy to read the instructions. There are instructions in the README but I’ll also write them here for you. So what is prête: Prête is a PWA which means I coded everything in HTML, CSS and JS just like a website but transformed it into an app. If you want to do something like that → check the README. If you want to not install the app but still want to rate it → check the README. It is a get-ready-app that helps you to reduce stress for the future or to leave the house in a rush without stress. It tells you what to do and has things like weather (automatic location response),notifications,last index memory (only when closing completely!!) and much more. This is the first ever version of it and as you have read it was a long way but I am open to make it even longer! Bug report is open on github and I am also open to more ideas and wishes. The problem that I had: I always felt stressed while leaving,forgot stuff and startetd with a bad mood in the day or even in an event. I was always grumpy before even arriving. I just couldn’t remember everything and I felt really demotivated. I tried everything:apps that remind you with notifications, to do lists and post it. Nothing worked. I really sat down and thought about what you ACTUALLY needed. The installation: It is pretty simple: Scan the QR-code below or go to the Releases in the repo. Download the version which is marked with the green icon “Latest”. Download it and go to your files (there is a chance that your phone asks you before that if you want to install it ,if that happens just click yes). When you are in the file manager just click on it and then install. There may be a malware scan but then you are in. Open the app and click on the allow button when the app asks you to send notifications. Everything is pretty self-explanatory and Mira will tell you what to do but you never know: Choose the mode you want to use and do as Mira tells you. Please notice that the fast mode has no configuration and just gives you a task and a time. When you are using the actual mode follow the instructions and type in your times. After that choose a bag and then your bag stuff. You can scroll down on the bag stuff site to see more options. Now you should be on the clothing site: Select your outfit (scroll to the left in each row to show more clothing options). Click on the little cloud at the top to show the weather for today and next week. Click on it again to close it. Click on the little book to open the notes feature. Click in the pink area and start typing. To close the keyboard press ENTER and hit the save button. Click on the little book to close the notes feature. Continue your configuration and again: scroll down to show more options. You now reached the changing screen. Follow the instructions (close the app etc.). When you restarted the app just follow Mira. As you can see it is super simple. A superrrrrrr good explained version is in the README and for those who hate reading: there is a vd which you can watch instead!! Please report bugs on github and not in your rating (so I can fix them as fast as I can) and maybe star the repo. Thanks sooo much for staying with me through this long way and supporting me: @amateur_tech_guy @Makkonen @nokira @madzia @OrangeJuice...
|
1793047955.7569633
|
1793134355.7569633
|
|
57404
|
Tiger OS by @Rayan123-4 | Stardance
|
Rayan123-4
|
3
|
75.0
|
447
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T03:15:51Z", "hours": 18.0, "multiplier": 18.42, "payout": 332, "blessing": "neutral", "text": "What did I make I made TigerOS, a web based operating system that it completely run on the web. It’s themed around tigers as you can see, and has many interesting features such a as a, weather API, a tiger habitat and population graph, a classic calculator, a tiger earth three.js simulator and many more amazing experiences to explore through. It is made using JavaScript, HTML, and CSS. What was chalenging The most challenging part of making this project for me was the JavaScript. I am quite new to JavaScript and coding things like the earth using three.js was very new to be and it took some time and learning. Also I the styling wasn’t nessisary hard, however I would say that I am not the best at it, so it took also some time to get it too look nice. What am I most proud of I am most proud of making advanced features to my webOS such as a, tiger habitat and population graph and a 3d earth and stars using three.js. I am proud of learning more about JavaScript syntax and how to properly debugg and fix stuff when I have a problem. What should people know about my project It runs completely on the web, so no installing or any local host is needed. Just click on the link either in my project description or in the README.md. I would suggest reading though my README and other devlogs, I know that they are a bit long, so you don’t need to read all of them just skim through and get the jist of what I have done. Thank you for taking the time to read through, It would be really helpful for me if your left good reviews and ratings, that would help me further improve on my coding journey.", "repo": "https://github.com/rayan123-4/My-WebOS-Stardance", "demo": "https://stardancetigeros.site/"}, {"ship_num": 2, "ts": "2026-09-27T23:41:52Z", "hours": 50.0, "multiplier": 2.32, "payout": 115, "blessing": "neutral", "text": "I made TigerOS, a tiger themed WebOS made for the WebOS Stardance mission. I made it using HTML, CSS, and Javascript. It has many features such as, a real time weather app, a working calculator app, a snake game app, a paint canvas app, sounds, special effects, and the list goes on. The most challenging part of making this, was getting everything to work smoothly how I want it with no errors. Probably the hardest thing that I made was the weather API app, since I had never worked with an API before it was very challenging, but I learnt a lot. I am very proud of how it came out, and that all my apps and features work to how I want it. I didn’t think I would make it this far to have so many cool stuff, but I am very happy with my final product. I suggest that anyone wanting to try out my site, they should test out all of the apps and the features. I also encourage you to find the hidden secret feature. However, it should be pretty obvious to find. Test out all of the weather apps, and even try to beat my high score of 25 on the tiger snake game. Please take some time to explore TigerOS and leave a thoughtful review, as any feedback would really help me to improve. Thanks Stardance, for setting up this oportunity for me and everyone else.", "repo": "https://github.com/rayan123-4/My-WebOS-Stardance", "demo": "https://stardancetigeros.site/"}, {"ship_num": 3, "ts": "2026-09-04T21:53:15Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first WebOS. It was very difficult and challenging to make, but the jams guide made it much more easier to get started with and finish. The site currently has 2 apps, but there will be more to come in the future.", "repo": "https://github.com/rayan123-4/My-WebOS-Stardance", "demo": "https://stardancetigeros.site/"}]...
|
[{"post_id": 82515, "ts": "202 [{"post_id": 82515, "ts": "2026-10-25T03:07:17Z", "hours": 0.7139, "text": "Devlog 52: Just tiding up my code with comments and editing the README.md Just tiding up my code, adding comments and making sure it all looks nice for the ship. I have learn a lot from making this project and I am happy with how it turned out. This will be my final devlog, and so please give me good ratings and feedback, so that I can learn and improve."}, {"post_id": 82137, "ts": "2026-10-24T02:07:18Z", "hours": 0.8194, "text": "Devlog 51: Adding stars, realistic tilt, and better quality textures to the 3D earth. I added 2000 stars to the earth window and even made a realistic tilt for the earth, like how it is in real life. I think that the stars made a big impact on the overall feel of the window, and makes it look much better. I also added a 8k quality texture onto the earth model instead of a 2k quality texture, so that the earth would be more clearer to see."}, {"post_id": 81962, "ts": "2026-10-23T06:09:26Z", "hours": 2.1297, "text": "Devlog 50: Adding new 3D Tiger Earth window. I added a new window made with three.js, that is a 3D globe of the world that is, movable, rotatable, and zoom in able. I also added a feature where you can stop the rotation, so that its easier to view (And find the hidden Tiger). First I made the 3D circle and of the globe and then added the texture and animations. What did I learn and what was difficult. This is my first time making a project like a 3D thing, so I was a bit new to this. Now I have learnt much more about how to make 3D projects like this and I hope I can make many more simulation projects like this in the future."}, {"post_id": 81186, "ts": "2026-10-20T07:19:14Z", "hours": 2.155, "text": "Devlog 49: Adding tiger population chart window and UI polishing. I added a new window that shows the tiger population in the countries Russia, Nepal, and India. The data points are the milestones of there tiger conservation across 2010 to 2016 to 2022. The chart is a line graph and the 3 line variables are the countries. The chart looks very good and I am happy with how it turned out. I also polished more of my webOS using nice fonts such as “Fira Sans”, “Bold”, and “Italic”. I styled it and made sure across my webOS there was a orange, black, and white theme, like the tigers colors. What did I learn and what was difficult The most difficult part of it was debugging everything when I found errors. I learnt the functions for making a graph in JavaScript and how to get data and put it into a graph using code, while still making it look nice. This helps me a lot especially for more projects I might do in the future using data and statistics."}, {"post_id": 79494, "ts": "2026-10-14T09:29:47Z", "hours": 1.8556, "text": "Devlog 48: Updating the CSS styling and improving the interface visibility. I edited the CSS stying adding more things such as box-shadow and different color border. I made sure the web os looked good and wasn’t too heavily colored, that might make the text less easy to read. I also fixed the minimize button in the link window since it was off centered, because of the small size of it compared to the normal window sized ones. Difficulty: For me to be honest, this was difficult not because of like syntax and stuff, but because I’m not very good at styling. I tried to like make it pop and look extra good, and I think I have done well."}, {"post_id": 77180, "ts": "2026-10-05T23:23:31Z", "hours": 1.5567, "text": "Devlog 47: Add text on icon hover, that displays window name. I made it so that when you hover over the icons in the icon bar, it will show the name of the window that the icon is connected to. This makes it easier for users to know what icon goes to which window, without guesses based on the icon image. What did I learn and what was difficult. At first I thought that making this would only need a bit of HTML and CSS, and normally it would. However I came upon a problem and CSS wasn’t fixing it, nor was the HTML, so I had to adapt and use Javascript to fix my error. Eventually it worked out in the end, and not much Javascipt was actually needed. This helped me to learn how to fix errors outside of the box, and too try different ways to fix them. This helped me learn more about problem solving and debugging, which will help me in future projects."}, {"post_id": 76578, "ts": "2026-10-04T01:22:56Z", "hours": 0.6781, "text": "Devlog 46: Edited some of the CSS styling on the windows and top bar. I edited the CSS styling on things like the, text, the windows, and the top bar. I used functions such as, text-shadow and box-shadow, to make text and windows stand out and look much nicer. I also edited the border color and size of many things to make them either pop or, look better in between colors. Things like animations scale and filter, also helped make it look much more appealing. What did I learn and how difficult was it I learnt more about CSS styling and how to make project look extra nice. I was playing around with the CSS learning new mechanics and functions, to help make different things and parts of project look more nicer and clean. This was fairly easy and I didn’t have any trouble with doing so."}, {"post_id": 76381, "ts": "2026-10-03T11:06:48Z", "hours": 1.8306, "text": "Devlog 45: Added a lot of in depth comments to my Javascript file. And adding a download button to the paint window. I went through my Javascript code and worked on improving my comments and adding more, where they were needed. I focused on being very descriptive with my comments, explaining what things do and how. I also added some hover animations to the paint board buttons. Download button added I added a download button to my paint window. I made it so when the user clicks the button, the browser download trigger is activated and the image is downloaded. I did this in Javascript using toDataURL(). Diffuculty Making the comments was fairly easy, as I just went to important parts with no comments and added explanations about them. Also the Javascript for the download button wasn’t too hard, and I think I am learning more and more about Javascript, which is helping make it easier and easier."}, {"post_id": 75997, "ts": "2026-10-01T23:50:08Z", "hours": 0.9978, "text": "Devlog 44: Fixed a z-index error, adjusted the colors and styling I found a z-index error in the Javascript file, where the images when opened, wouldn’t go to the highest z-index, so I just added z-index 99 when window open. I also mainly adjusted the colors, experimenting in CSS, to get the best design and the best text to background ratio in CSS. Difficulty Not too bad, because I didn’t have to go through hidden Javascript syntax errors and stuff, so it was mostly stuff I could just look around for a bit until I find the missing parenthesis or something."}, {"post_id": 75845, "ts": "2026-10-01T10:11:49Z", "hours": 0.7925, "text": "Devlog 43: Fix camera animation Fixing the camera animation, making it so the user cannot spam open the window, making the animation run for however many times the user tapped the icon. Difficulty It wasn’t too hard to do, just needed to make some simple if statement to check if the window had been opened. Edited Also adjusted some styling in the map window making the text hover change in css."}, {"post_id": 75429, "ts": "2026-09-30T02:17:24Z", "hours": 0.7275, "text": "Devlog 42: Minimizer button Added a minimizer button to all of the windows. I made it so that when users press the button, the hover filter glow will show on the corrisponding icon, to let users know the window is open. Difficulty This was fairly simple to do, and I just had to make some code for it in the same place near the close button in the Javascript."}, {"post_id": 75148, "ts": "2026-09-29T09:16:19Z", "hours": 1.8561, "text": "Devlog 41: Styling the windows, making it look nice Fixed some of the styling on the windows, specifically on the manual window and the welcome window, since my rating said they looked like a power point. Trying to make my website look much cleaner and have a better design."}, {"post_id": 75046, "ts": "2026-09-29T00:06:01Z", "hours": 1.8983, "text": "Devlog 40: Camera Animation Added Added a camera flash animation when you open the gallery app. It was quiet hard to make flash show after the camera image, but it works well."}, {"post_id": 74671, "ts": "2026-09-27T23:27:05Z", "hours": 0.6822, "text": "Devlog 39: May be Last Devlog This is going to probably be my final devlog until I ship. I have enjoyed making this project and I hope that I can maybe make it better in the future. This video shows all of my windows and stuff."}, {"post_id": 74374, "ts": "2026-09-27T08:22:51Z", "hours": 0.7228, "text": "Devlog 38: Finishing touches Adding finishing touches to my WebOS such as fixing code to work better. Making it so if you tap a window that is behind another window, it gets moved to the front. And some other fixes."}, {"post_id": 74260, "ts": "2026-09-27T02:46:44Z", "hours": 1.2206, "text": "Devlog 37: Icon hover response Finsished making the icons hover display to stay on the icon image, if the corrisponding window is still open. Once the window is closed the style goes back to normal, but still if you hover it will have the style."}, {"post_id": 73487, "ts": "2026-09-25T07:05:36Z", "hours": 0.6139, "text": "Devlog 36: Adding a link window Creating a link window that has multiple links. The window is closable and it uses the same functions as the other windows except that you cannot drag it."}, {"post_id": 73053, "ts": "2026-09-24T08:54:47Z", "hours": 1.0725, "text": "Devlog 35: Fixed many usability errors that I had such as Making boundaries for dragging the window. Making the scroll app bar optimize for different window sizes. Fixing a bug where you can play all roar sounds at once and they overlap. And a few random glitched that I found while trying to fix these."}, {"post_id": 72578, "ts": "2026-09-23T08:39:47Z", "hours": 0.3111, "text": "Devlog 34: Adding information to manual window Just adding some more information to my Manual, for the new things that I have made. This is where users can find information about different features in my website. I wrote it all myself."}, {"post_id": 72139, "ts": "2026-09-22T09:13:19Z", "hours": 1.8511, "text": "Devlog 33: Adding undo button to paint window Added the undo button and made it so that it will undo lines, fill, and clear. This means that if you accidently fill your work or clear it you can press undo and it will bring it back :). Works for multiple times, because it saves it in a array. I am very happy with how it came out, because it was quite challenging to make."}, {"post_id": 72113, "ts": "2026-09-22T06:08:49Z", "hours": 1.085, "text": "Devlog 32: Adding the paint window My Tiger Masterpiece! Finally finished making the paint board window. I also fixed a few bugs that I had with the drag header, and it not working. Im going to add the title to this soon and also I will add an undo button incase you accedently delete your Tiger mona lisa."}, {"post_id": 71686, "ts": "2026-09-21T09:48:24Z", "hours": 2.8558, "text": "Devlog 31: Making the drawing window function Making drawing window. Don’t mind why it looks weird right now, I will fix it later. Also I spent a lot of time trying to fix some hidden error I didn’t know where it was and I was totally confused, so I went back a commit and put my working code back and it fixed. I think I am going to wrap up my project soon, so that I don’t create more project breaking errors."}, {"post_id": 71121, "ts": "2026-09-20T10:10:32Z", "hours": 0.9147, "text": "Devlog 30: Finally made the calculator window Idk how I managed to make it, but maybe the tutorial I was watching before was just not it. However, this one is: ( https://youtu.be/KM8PIiqq97c?si=RgpvGnOKA7ZbfZoQ ). Anyone wanting to make a good calculator, check out that tutorial because he saved me! Thanks KennyYipCoding on youtube. Also surprisingly simple."}, {"post_id": 71089, "ts": "2026-09-20T08:57:41Z", "hours": 4.3286, "text": "Devlog 29: Struggling on the calculator window 4 hours down the drain. I worked for 4 hours trying to get a simple thing like a calculator to work. Some how it kept not working even when I followed a tutorial correctly. I will try again tomorrow maybe with a different tutorial, but honestly idk what happend. Also part of it was me trying to code in python and that turned out a disaster, but then I went to JavaScript and still didn’t work??. I know it might seem weird and also stardance if your reading this you can like delete the 4 hours or whatever from my thing Incase idk if this is fraud or something."}, {"post_id": 70477, "ts": "2026-09-19T08:14:43Z", "hours": 1.3042, "text": "Devlog 28: Added achievement alert Added some nice animations to stuff and added a achievement/alert for the snake game, when you hit a specific score."}, {"post_id": 70364, "ts": "2026-09-19T01:39:36Z", "hours": 2.1081, "text": "Devlog 27: Designing the snake game window Design on the Tiger Snake Game app is finished. I added the instructions in the manual app, but the game is pretty simple to play. I added a skin feature in case the stripes moving are a bit hard on some peoples eyes. I added the high score tracker which saves your high score even if you close the tab. And just fixed the lay out made it look nice."}, {"post_id": 70309, "ts": "2026-09-18T22:15:48Z", "hours": 3.1364, "text": "Devlog 26: Finished adding the tiger snake game Finished making my Tiger snake game. I watched a very good and easy tutorial, link: ( https://youtu.be/Je0B3nHhKmM?si=DQiSr36gDDSM3Psj ) I still need to design it more to make it look more like a real Tiger snake, like the logo if you can see all the way down there. I think also I could make some Instructions and a highscore button, so that will be for next time."}, {"post_id": 69938, "ts": "2026-09-18T03:03:26Z", "hours": 0.63, "text": "Devlog 25: Secret button editing Just added the hover glow to the secret button so you can be more sure your on something special. So far I think my project is close to the end and I just need to do now fixing up to make perfect . And maybe even an extra feature. This is what the front of my page looks like (there more apps and features, the app side bar is scrollable, as you can see from my other devlogs)."}, {"post_id": 69069, "ts": "2026-09-16T10:01:51Z", "hours": 1.5325, "text": "Devlog 24: Added the secret button Finished Adding the Secret feature! I cannot show you yet because it’s secret, but you could try and find it on my site (It’s not that hard its pretty obvious to find the secret). Also I added a ding when you find the secret and as you can see the alert in the image at the bottom, so you will know if you found it."}, {"post_id": 68559, "ts": "2026-09-15T10:07:36Z", "hours": 2.4817, "text": "Devlog 23: Making the weather window look nice Made the weather app have a default weather image now, but when the user inputs city it will change to the correct one. Also as you can see I made the handle a starling, and also in the bottom right corner there is 3 of them. The handle starling is for all of the windows and is how you drag, by holding it. That is for something I am making right now, however I am not finsihed yet. Just trying to make my website look as good as possible right now, while keeping the simple theme. (edit: I actually just realized that this devlog is exactly 1 second longer than the previous one)."}, {"post_id": 67978, "ts": "2026-09-14T09:38:41Z", "hours": 2.4814, "text": "Devlog 22: Designing the manual window, welcome window, and other windows Finished designing the manual app. It looks not too bad. Also I edit the welcome window bit, but I still have some work to do, to make it stand out. This took a while as I was playing around with the CSS also fixing other windows and stuff."}, {"post_id": 67070, "ts": "2026-09-13T03:43:12Z", "hours": 0.9197, "text": "Devlog 21: Adding content to manual window Just added some information into the Manual app. Im not finished yet, I still need to make it look nicer. I will add some images and stuff to it next."}, {"post_id": 66369, "ts": "2026-09-12T05:10:30Z", "hours": 2.5203, "text": "Devlog 20: Added icon side bar, making new window, and fixing roar sound errors Finished making the side bar with the icons. The side bar is scrollable, because I had too many icons and so that keeps them stored there better. I also started making the manual window, but I haven’t added any content yet. I also fixed some errors such as, the roar sound button would keep playing, even when the window was closed, so I thought it might be better if it stopped the sound when the sound window is closed. I also fixed some other errors and stuff, but everything looks good now."}, {"post_id": 65841, "ts": "2026-09-11T07:50:12Z", "hours": 0.9428, "text": "Devlog 19: Real working weather window added Finally finished the weather window. It was very hard to do for me. I’m not done yet I still need to edit it to make the design look more good. The api works, and it runs smoothly. Need to change a few things also like the app icon side bar. Used a bit of AI to learn how to set up the api, since I was using a different one than the tutorial, it was much harder, but still uses same main core code. Overall I am happy with how It turned out. There’s still a lot to improve on, however I learn a lot from this."}, {"post_id": 65744, "ts": "2026-09-11T03:05:00Z", "hours": 0.3494, "text": "Devlog 18: Adding fun fact window app icon Adding fun fact window app icon, and fixing some other stuff finished up the window. This is for the old weather window that I gave up on, that is now gonna be a weather fun fact window. I will still have both windows, its just one will be for a fun fact and one for a working API weather app."}, {"post_id": 65297, "ts": "2026-09-10T10:38:52Z", "hours": 0.8128, "text": "Devlog 17: Trying to make Working Weather window again Trying again to make a real working weather window. Im still gonna keep the other one as like a cool fact, but this one is gonna work. I have found a good tutorial and I am really trying to make this work."}, {"post_id": 65212, "ts": "2026-09-10T05:52:50Z", "hours": 1.5169, "text": "Devlog 16: Scratch the weather API idea Slight change in idea. No more weather api. Its a static window that shows the hottest day in Madhya Pradesh, home to the highest population of tigers in an Indian state. Looks pretty nice though."}, {"post_id": 65078, "ts": "2026-09-09T23:01:26Z", "hours": 1.1167, "text": "Devlog 15: Started trying to make weather window Just started making a new weather window. I’m 15 minutes through the tutorial and now I need to add the api. I have never used an API before so this might be hard."}, {"post_id": 64670, "ts": "2026-09-09T08:08:11Z", "hours": 2.3972, "text": "Devlog 14: Adding comments to js and making new window Finally finished sorting out my code so its easier to move and navigate around, using comments and stuff. I also made this Tiger information window, that shows some interesting information and facts about tigers. The window is scrollable and there is more information below this. Took me a while to do all of this and find information and stuff, but it looks like it turned out not too bad."}, {"post_id": 64472, "ts": "2026-09-08T21:55:55Z", "hours": 0.9753, "text": "Devlog 13: Adding comments to my CSS Just sorting out my CSS so its easier to read. Adding comments and making specific parts for different windows and features so that they are easy to find."}, {"post_id": 64030, "ts": "2026-09-08T04:39:41Z", "hours": 1.3342, "text": "Devlog 12: Added start up animation Made an animation on site startup. The text comes in from the left and then the tiger drops down. It wasn’t too hard, but I did find some struggle. I used Canva to make the design for the banner here and in my README are the credits to all of the photos and resources I have used from other people."}, {"post_id": 63439, "ts": "2026-09-07T09:04:16Z", "hours": 2.1725, "text": "Devlog 11: Added dark/light mode switcher feature Just made a dark/light mode switcher in the settings window. Also if you close the tab it will stay the way you left it (This is the same for the background switcher as well). I also fixed many of the errors that I had, such as it not saving."}, {"post_id": 62754, "ts": "2026-09-06T08:40:59Z", "hours": 0.5739, "text": "Devlog 10: Making an images and audio file, and fixing a few errors Just fixing an few errors and tidying things up. I had a few errors in my code so I just fixed that and then made my images and audio files more neater."}, {"post_id": 62556, "ts": "2026-09-06T00:26:52Z", "hours": 2.5967, "text": "Devlog 9: Added a settings window with a background changer Finally finished the settings window. Its a background changer and it took so long to make and even longer to layout. The background changer works perfectly and looks good in both backgrounds. Was a bit hard though."}, {"post_id": 62022, "ts": "2026-09-05T07:17:22Z", "hours": 1.5619, "text": "Devlog 8: Added a new tiger map window Added Tiger species habitat map. It shows where different Tiger species live and a bit more info. (Image from Wildlife foundation in Thailand (WFFT))."}, {"post_id": 61964, "ts": "2026-09-05T04:49:42Z", "hours": 0.9481, "text": "Devlog 7: Added multiple sound effects Added some different Tiger species sounds to the window, so you can see the slight differences and similarities. First Devlog after first ship."}, {"post_id": 61803, "ts": "2026-09-04T21:49:12Z", "hours": 0.4042, "text": "Devlog 6: Readme added Readme Added now ready to ship (There is more to the Readme than the image shows). The README includes information about my website and how I made it."}, {"post_id": 61420, "ts": "2026-09-04T10:10:11Z", "hours": 1.6531, "text": "Devlog 5: New window added - roar sound effect Added a working Tiger roar sound effect button to a new window. When you press the button is makes a roar sound effect."}, {"post_id": 61318, "ts": "2026-09-04T05:17:55Z", "hours": 2.0894, "text": "Devlog 4: Adding tiger gallery window Added a new photo gallery window to my site. There is also now a close button that closes the window, and I finished the tutorial this is just what I made instead of the tutorials other window, but it uses the same properties."}, {"post_id": 60735, "ts": "2026-09-03T09:19:54Z", "hours": 2.0831, "text": "Devlog 3: Adding drag and open buttons Added the drag buttons to the window, also added the open button as you can see in the top left corner. I made this In JavaScript using event listeners .On part 4 of the guide."}, {"post_id": 60545, "ts": "2026-09-02T23:07:05Z", "hours": 0.3536, "text": "Devlog 2: Adding the working date/time Adding a working date/time at the top right corner. It updates live according to where you live. Still on the tutorial."}, {"post_id": 60127, "ts": "2026-09-02T09:31:06Z", "hours": 0.4903, "text": "Devlog 1: The start of my WebOS Making my first WebOS. Finished part one of the tutorial. here’s what it looks like right now."}]...
|
Title: Tiger OS by @Rayan123-4 | Stardance
Devlog Title: Tiger OS by @Rayan123-4 | Stardance
Devlogs:
Devlog 1: The start of my WebOS Making my first WebOS. Finished part one of the tutorial. here’s what it looks like right now.
Devlog 2: Adding the working date/time Adding a working date/time at the top right corner. It updates live according to where you live. Still on the tutorial.
Devlog 3: Adding drag and open buttons Added the drag buttons to the window, also added the open button as you can see in the top left corner. I made this In JavaScript using event listeners .On part 4 of the guide.
Devlog 4: Adding tiger gallery window Added a new photo gallery window to my site. There is also now a close button that closes the window, and I finished the tutorial this is just what I made instead of the tutorials other window, but it uses the same properties.
Devlog 5: New window added - roar sound effect Added a working Tiger roar sound effect button to a new window. When you press the button is makes a roar sound effect.
Devlog 6: Readme added Readme Added now ready to ship (There is more to the Readme than the image shows). The README includes information about my website and how I made it.
Devlog 7: Added multiple sound effects Added some different Tiger species sounds to the window, so you can see the slight differences and similarities. First Devlog after first ship.
Devlog 8: Added a new tiger map window Added Tiger species habitat map. It shows where different Tiger species live and a bit more info. (Image from Wildlife foundation in Thailand (WFFT)).
Devlog 9: Added a settings window with a background changer Finally finished the settings window. Its a background changer and it took so long to make and even longer to layout. The background changer works perfectly and looks good in both backgrounds. Was a bit hard though.
Devlog 10: Making an images and audio file, and fixing a few errors Just fixing an few errors and tidying things up. I had a few errors in my code so I just fixed that and then made my images and audio files more neater.
Devlog 11: Added dark/light mode switcher feature Just made a dark/light mode switcher in the settings window. Also if you close the tab it will stay the way you left it (This is the same for the background switcher as well). I also fixed many of the errors that I had, such as it not saving.
Devlog 12: Added start up animation Made an animation on site startup. The text comes in from the left and then the tiger drops down. It wasn’t too hard, but I did find some struggle. I used Canva to make the design for the banner here and in my README are the credits to all of the photos and resources I have used from other people.
Devlog 13: Adding comments to my CSS Just sorting out my CSS so its easier to read. Adding comments and making specific parts for different windows and features so that they are easy to find.
Devlog 14: Adding comments to js and making new window Finally finished sorting out my code so its easier to move and navigate around, using comments and stuff. I also made this Tiger information window, that shows some interesting information and facts about tigers. The window is scrollable and there is more information below this. Took me a while to do all of this and find information and stuff, but it looks like it turned out not too bad.
Devlog 15: Started trying to make weather window Just started making a new weather window. I’m 15 minutes through the tutorial and now I need to add the api. I have never used an API before so this might be hard.
Devlog 16: Scratch the weather API idea Slight change in idea. No more weather api. Its a static window that shows the hottest day in Madhya Pradesh, home to the highest population of tigers in an Indian state. Looks pretty nice though.
Devlog 17: Trying to make Working Weather window again Trying again to make a real working weather window. Im still gonna keep the other one as like a cool fact, but this one is gonna work. I have found a good tutorial and I am really trying to make this work.
Devlog 18: Adding fun fact window app icon Adding fun fact window app icon, and fixing some other stuff finished up the window. This is for the old weather window that I gave up on, that is now gonna be a weather fun fact window. I will still have both windows, its just one will be for a fun fact and one for a working API weather app.
Devlog 19: Real working weather window added Finally finished the weather window. It was very hard to do for me. I’m not done yet I still need to edit it to make the design look more good. The api works, and it runs smoothly. Need to change a few things also like the app icon side bar. Used a bit of AI to learn how to set up the api, since I was using a different one than the tutorial, it was much harder, but still uses same main core code. Overall I am happy with how It turned out. There’s still a lot to improve on, however I learn a lot from this.
Devlog 20: Added icon side bar, making new window, and fixing roar sound errors Finished making the side bar with the icons. The side bar is scrollable, because I had too many icons and so that keeps them stored there better. I also started making the manual window, but I haven’t added any content yet. I also fixed some errors such as, the roar sound button would keep playing, even when the window was closed, so I thought it might be better if it stopped the sound when the sound window is closed. I also fixed some other errors and stuff, but everything looks good now.
Devlog 21: Adding content to manual window Just added some information into the Manual app. Im not finished yet, I still need to make it look nicer. I will add some images and stuff to it next.
Devlog 22: Designing the manual window, welcome window, and other windows Finished designing the manual app. It looks not too bad. Also I edit the welcome window bit, but I still have some work to do, to make it stand out. This took a while as I was playing around with the CSS also fixing other windows and stuff.
Devlog 23: Making the weather window look nice Made the weather app have a default weather image now, but when the user inputs city it will change to the correct one. Also as you can see I made the handle a starling, and also in the bottom right corner there is 3 of them. The handle starling is for all of the windows and is how you drag, by holding it. That is for something I am making right now, however I am not finsihed yet. Just trying to make my website look as good as possible right now, while keeping the simple theme. (edit: I actually just realized that this devlog is exactly 1 second longer than the previous one).
Devlog 24: Added the secret button Finished Adding the Secret feature! I cannot show you yet because it’s secret, but you could try and find it on my site (It’s not that hard its pretty obvious to find the secret). Also I added a ding when you find the secret and as you can see the alert in the image at the bottom, so you will know if you found it.
Devlog 25: Secret button editing Just added the hover glow to the secret button so you can be more sure your on something special. So far I think my project is close to the end and I just need to do now fixing up to make perfect . And maybe even an extra feature. This is what the front of my page looks like (there more apps and features, the app side bar is scrollable, as you can see from my other devlogs).
Devlog 26: Finished adding the tiger snake game Finished making my Tiger snake game. I watched a very good and easy tutorial, link: ( https://youtu.be/Je0B3nHhKmM?si=DQiSr36gDDSM3Psj ) I still need to design it more to make it look more like a real Tiger snake, like the logo if you can see all the way down there. I think also I could make some Instructions and a highscore button, so that will be for next time.
Devlog 27: Designing the snake game window Design on the Tiger Snake Game app is finished. I added the instructions in the manual app, but the game is pretty simple to play. I added a skin feature in case the stripes moving are a bit hard on some peoples eyes. I added the high score tracker which saves your high score even if you close the tab. And just fixed the lay out made it look nice.
Devlog 28: Added achievement alert Added some nice animations to stuff and added a achievement/alert for the snake game, when you hit a specific score.
Devlog 29: Struggling on the calculator window 4 hours down the drain. I worked for 4 hours trying to get a simple thing like a calculator to work. Some how it kept not working even when I followed a tutorial correctly. I will try again tomorrow maybe with a different tutorial, but honestly idk what happend. Also part of it was me trying to code in python and that turned out a disaster, but then I went to JavaScript and still didn’t work??. I know it might seem weird and also stardance if your reading this you can like delete the 4 hours or whatever from my thing Incase idk if this is fraud or something.
Devlog 30: Finally made the calculator window Idk how I managed to make it, but maybe the tutorial I was watching before was just not it. However, this one is: ( https://youtu.be/KM8PIiqq97c?si=RgpvGnOKA7ZbfZoQ ). Anyone wanting to make a good calculator, check out that tutorial because he saved me! Thanks KennyYipCoding on youtube. Also surprisingly simple.
Devlog 31: Making the drawing window function Making drawing window. Don’t mind why it looks weird right now, I will fix it later. Also I spent a lot of time trying to fix some hidden error I didn’t know where it was and I was totally confused, so I went back a commit and put my working code back and it fixed. I think I am going to wrap up my project soon, so that I don’t create more project breaking errors.
Devlog 32: Adding the paint window My Tiger Masterpiece! Finally finished making the paint board window. I also fixed a few bugs that I had with the drag header, and it not working. Im going to add the title to this soon and also I will add an undo button incase you accedently delete your Tiger mona lisa.
Devlog 33: Adding undo button to paint window Added the undo button and made it so that it will undo lines, fill, and clear. This means that if you accidently fill your work or clear it you can press undo and it will bring it back :). Works for multiple times, because it saves it in a array. I am very happy with how it came out, because it was quite challenging to make.
Devlog 34: Adding information to manual window Just adding some more information to my Manual, for the new things that I have made. This is where users can find information about different features in my website. I wrote it all myself.
Devlog 35: Fixed many usability errors that I had such as Making boundaries for dragging the window. Making the scroll app bar optimize for different window sizes. Fixing a bug where you can play all roar sounds at once and they overlap. And a few random glitched that I found while trying to fix these.
Devlog 36: Adding a link window Creating a link window that has multiple links. The window is closable and it uses the same functions as the other windows except that you cannot drag it.
Devlog 37: Icon hover response Finsished making the icons hover display to stay on the icon image, if the corrisponding window is still open. Once the window is closed the style goes back to normal, but still if you hover it will have the style.
Devlog 38: Finishing touches Adding finishing touches to my WebOS such as fixing code to work better. Making it so if you tap a window that is behind another window, it gets moved to the front. And some other fixes.
Devlog 39: May be Last Devlog This is going to probably be my final devlog until I ship. I have enjoyed making this project and I hope that I can maybe make it better in the future. This video shows all of my windows and stuff.
Devlog 40: Camera Animation Added Added a camera flash animation when you open the gallery app. It was quiet hard to make flash show after the camera image, but it works well.
Devlog 41: Styling the windows, making it look nice Fixed some of the styling on the windows, specifically on the manual window and the welcome window, since my rating said they looked like a power point. Trying to make my website look much cleaner and have a better design.
Devlog 42: Minimizer button Added a minimizer button to all of the windows. I made it so that when users press the button, the hover filter glow will show on the corrisponding icon, to let users know the window is open. Difficulty This was fairly simple to do, and I just had to make some code for it in the same place near the close button in the Javascript.
Devlog 43: Fix camera animation Fixing the camera animation, making it so the user cannot spam open the window, making the animation run for however many times the user tapped the icon. Difficulty It wasn’t too hard to do, just needed to make some simple if statement to check if the window had been opened. Edited Also adjusted some styling in the map window making the text hover change in css.
Devlog 44: Fixed a z-index error, adjusted the colors and styling I found a z-index error in the Javascript file, where the images when opened, wouldn’t go to the highest z-index, so I just added z-index 99 when window open. I also mainly adjusted the colors, experimenting in CSS, to get the best design and the best text to background ratio in CSS. Difficulty Not too bad, because I didn’t have to go through hidden Javascript syntax errors and stuff, so it was mostly stuff I could just look around for a bit until I find the missing parenthesis or something.
Devlog 45: Added a lot of in depth comments to my Javascript file. And adding a download button to the paint window. I went through my Javascript code and worked on improving my comments and adding more, where they were needed. I focused on being very descriptive with my comments, explaining what things do and how. I also added some hover animations to the paint board buttons. Download button added I added a download button to my paint window. I made it so when the user clicks the button, the browser download trigger is activated and the image is downloaded. I did this in Javascript using toDataURL(). Diffuculty Making the comments was fairly easy, as I just went to important parts with no comments and added explanations about them. Also the Javascript for the download button wasn’t too hard, and I think I am learning more and more about Javascript, which is helping make it easier and easier.
Devlog 46: Edited some of the CSS styling on the windows and top bar. I edited the CSS styling on things like the, text, the windows, and the top bar. I used functions such as, text-shadow and box-shadow, to make text and windows stand out and look much nicer. I also edited the border color and size of many things to make them either pop or, look better in between colors. Things like animations scale and filter, also helped make it look much more appealing. What did I learn and how difficult was it I learnt more about CSS styling and how to make project look extra nice. I was playing around with the CSS learning new mechanics and functions, to help make different things and parts of project look more nicer and clean. This was fairly easy and I didn’t have any trouble with doing so.
Devlog 47: Add text on icon hover, that displays window name. I made it so that when you hover over the icons in the icon bar, it will show the name of the window that the icon is connected to. This makes it easier for users to know what icon goes to which window, without guesses based on the icon image. What did I learn and what was difficult. At first I thought that making this would only need a bit of HTML and CSS, and normally it would. However I came upon a problem and CSS wasn’t fixing it, nor was the HTML, so I had to adapt and use Javascript to fix my error. Eventually it worked out in the end, and not much Javascipt was actually needed. This helped me to learn how to fix errors outside of the box, and too try different ways to fix them. This helped me learn more about problem solving and debugging, which will help me in future projects.
Devlog 48: Updating the CSS styling and improving the interface visibility. I edited the CSS stying adding more things such as box-shadow and different color border. I made sure the web os looked good and wasn’t too heavily colored, that might make the text less easy to read. I also fixed the minimize button in the link window since it was off centered, because of the small size of it compared to the normal window sized ones. Difficulty: For me to be honest, this was difficult not because of like syntax and stuff, but because I’m not very good at styling. I tried to like make it pop and look extra good, and I think I have done well.
Devlog 49: Adding tiger population chart window and UI polishing. I added a new window that shows the tiger population in the countries Russia, Nepal, and India. The data points are the milestones of there tiger conservation across 2010 to 2016 to 2022. The chart is a line graph and the 3 line variables are the countries. The chart looks very good and I am happy with how it turned out. I also polished more of my webOS using nice fonts such as “Fira Sans”, “Bold”, and “Italic”. I styled it and made sure across my webOS there was a orange, black, and white theme, like the tigers colors. What did I learn and what was difficult The most difficult part of it was debugging everything when I found errors. I learnt the functions for making a graph in JavaScript and how to get data and put it into a graph using code, while still making it look nice. This helps me a lot especially for more projects I might do in the future using data and statistics.
Devlog 50: Adding new 3D Tiger Earth window. I added a new window made with three.js, that is a 3D globe of the world that is, movable, rotatable, and zoom in able. I also added a feature where you can stop the rotation, so that its easier to view (And find the hidden Tiger). First I made the 3D circle and of the globe and then added the texture and animations. What did I learn and what was difficult. This is my first time making a project like a 3D thing, so I was a bit new to this. Now I have learnt much more about how to make 3D projects like this and I hope I can make many more simulation projects like this in the future.
Devlog 51: Adding stars, realistic tilt, and better quality textures to the 3D earth. I added 2000 stars to the earth window and even made a realistic tilt for the earth, like how it is in real life. I think that the stars made a big impact on the overall feel of the window, and makes it look much better. I also added a 8k quality texture onto the earth model instead of a 2k quality texture, so that the earth would be more clearer to see.
Devlog 52: Just tiding up my code with comments and editing the README.md Just tiding up my code, adding comments and making sure it all looks nice for the ship. I have learn a lot from making this project and I am happy with how it turned out. This will be my final devlog, and so please give me good ratings and feedback, so that I can learn and improve.
Ships:
I made my first WebOS. It was very difficult and challenging to make, but the jams guide made it much more easier to get started with and finish. The site currently has 2 apps, but there will be more to come in the future.
I made TigerOS, a tiger themed WebOS made for the WebOS Stardance mission. I made it using HTML, CSS, and Javascript. It has many features such as, a real time weather app, a working calculator app, a snake game app, a paint canvas app, sounds, special effects, and the list goes on. The most challenging part of making this, was getting everything to work smoothly how I want it with no errors. Probably the hardest thing that I made was the weather API app, since I had never worked with an API before it was very challenging, but I learnt a lot. I am very proud of how it came out, and that all my apps and features work to how I want it. I didn’t think I would make it this far to have so many cool stuff, but I am very happy with my final product. I suggest that anyone wanting to try out my site, they should test out all of the apps and the features. I also encourage you to find the hidden secret feature. However, it should be pretty obvious to find. Test out all of the weather apps, and even try to beat my high score of 25 on the tiger snake game. Please take some time to explore TigerOS and leave a thoughtful review, as any feedback would really help me to improve. Thanks Stardance, for setting up this oportunity for me and everyone else.
What did I make I made TigerOS, a web based operating system that it completely run on the web. It’s themed around tigers as you can see, and has many interesting features such a as a, weather API, a tiger habitat and population graph, a classic calculator, a tiger earth three.js simulator and many more amazing experiences to explore through. It is made using JavaScript, HTML, and CSS. What was chalenging The most challenging part of making this project for me was the JavaScript. I am quite new to JavaScript and coding things like the earth using three.js was very new to be and it took some time and learning. Also I the styling wasn’t nessisary hard, however I would say that I am not the best at it, so it took also some time to get it too look nice. What am I most proud of I am most proud of making advanced features to my webOS such as a, tiger habitat and population graph and a 3d earth and stars using three.js. I am proud of learning more about JavaScript syntax and how to properly debugg and fix stuff when I have a problem. What should people know about my project It runs completely on the web, so no installing or any local host is needed. Just click on the link either in my project description or in the README.md. I would suggest reading though my README and other devlogs, I know that they are a bit long, so you don’t need to read all of them just skim through and get the jist of what I have done. Thank you for taking the time to read through, It would be really helpful for me if your left good reviews and ratings, that would help me further improve on my coding journey....
|
1792983020.3252306
|
1793069420.3252306
|
|
44426
|
EchoEarth by @beshoysimon0 | Stardance
|
beshoysimon0
|
1
|
74.87
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T06:59:12Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I worked on making EchoEarth more production-ready by improving the core report-to-impact flow, strengthening the backend, handling edge cases, and testing how the different parts of the platform work together. The hardest part was making sure that reports, AI analysis, missions, evidence, verification, and impact stay consistent throughout the entire process. I’m proud that EchoEarth is now much more than a UI — it’s a connected system that turns environmental problems into community action. You can try the full experience through the project link above.", "repo": "https://github.com/beshoy2011/echoearth", "demo": "https://echoearth-orcin.vercel.app/"}]...
|
[{"post_id": 48544, "ts": "202 [{"post_id": 48544, "ts": "2026-08-16T23:42:53Z", "hours": 50.4344, "text": "I’m working on EchoEarth 🌍 — a platform that helps communities connect with verified cleanup heroes and turn local environmental action into something visible, trusted, and rewarding.I’m currently improving the platform and adding features that make it easier for people to discover, support, and take part in real cleanup efforts."}, {"post_id": 46129, "ts": "2026-08-13T04:15:36Z", "hours": 21.4356, "text": "Devlog #4 — 21 Hours In 🌍21 hours of work on EchoEarth so far.I’ve been fixing bugs, improving the UI, adding features, and making the project better step by step.Still a lot to do, but I’m happy with how it’s going.Back to coding. 🚀"}, {"post_id": 43126, "ts": "2026-08-08T06:57:13Z", "hours": 1.6847, "text": "Making EchoEarth Production-ReadyThis session was focused on strengthening EchoEarth behind the scenes.I worked on the engineering side of the project: improving reliability, validating critical API and database flows, strengthening error handling, and adding more automated testing around the report → AI → mission → verification → impact lifecycle.I also reviewed the project for edge cases like duplicate requests, invalid states, failed AI responses, upload failures, and concurrent actions.The goal wasn’t to add more features.It was to make the features that already exist more reliable, testable, and ready for real users."}, {"post_id": 43077, "ts": "2026-08-08T04:39:37Z", "hours": 0.7017, "text": "Today I worked on the final polish for EchoEarth before the competition demo. I focused on improving the first impression, making the Report → AI → Mission → Verification → Impact flow much clearer, and making the demo easier for a reviewer to understand within a minute.I also worked on improving the UX, loading and error states, mobile responsiveness, accessibility, and overall visual consistency without adding unnecessary features or changing the existing architecture.The goal was simple: make EchoEarth feel less like a prototype and more like a real product that people can actually trust and use."}, {"post_id": 42325, "ts": "2026-08-07T00:20:29Z", "hours": 0.9514, "text": "🚀 Building EchoEarth’s AI Cleanup Intelligence Today I focused on improving the core experience of EchoEarth, an AI-powered platform that helps communities report environmental issues and connects them with verified cleanup heroes. ✅ Progress made Designed the reporting workflow for litter, illegal dumping, and pollution incidents. Improved the AI pipeline that categorizes reports and determines their priority. Worked on the database structure for storing reports, locations, images, and cleanup status. Refined the user experience to make reporting faster and easier. Fixed several bugs and optimized the overall project architecture. 🔜 Next steps Integrate interactive maps for real-time incident tracking. Add volunteer and organization dashboards. Implement AI-generated recommendations for the fastest cleanup strategy. Begin testing with real-world environmental scenarios. Every update brings EchoEarth one step closer to making cities cleaner through the power of AI and community collaboration. 🌍♻️"}]...
|
Title: EchoEarth by @beshoysimon0 | Stardance
Dev Title: EchoEarth by @beshoysimon0 | Stardance
Devlogs:
🚀 Building EchoEarth’s AI Cleanup Intelligence Today I focused on improving the core experience of EchoEarth, an AI-powered platform that helps communities report environmental issues and connects them with verified cleanup heroes. ✅ Progress made Designed the reporting workflow for litter, illegal dumping, and pollution incidents. Improved the AI pipeline that categorizes reports and determines their priority. Worked on the database structure for storing reports, locations, images, and cleanup status. Refined the user experience to make reporting faster and easier. Fixed several bugs and optimized the overall project architecture. 🔜 Next steps Integrate interactive maps for real-time incident tracking. Add volunteer and organization dashboards. Implement AI-generated recommendations for the fastest cleanup strategy. Begin testing with real-world environmental scenarios. Every update brings EchoEarth one step closer to making cities cleaner through the power of AI and community collaboration. 🌍♻️
Today I worked on the final polish for EchoEarth before the competition demo. I focused on improving the first impression, making the Report → AI → Mission → Verification → Impact flow much clearer, and making the demo easier for a reviewer to understand within a minute.I also worked on improving the UX, loading and error states, mobile responsiveness, accessibility, and overall visual consistency without adding unnecessary features or changing the existing architecture.The goal was simple: make EchoEarth feel less like a prototype and more like a real product that people can actually trust and use.
Making EchoEarth Production-ReadyThis session was focused on strengthening EchoEarth behind the scenes.I worked on the engineering side of the project: improving reliability, validating critical API and database flows, strengthening error handling, and adding more automated testing around the report → AI → mission → verification → impact lifecycle.I also reviewed the project for edge cases like duplicate requests, invalid states, failed AI responses, upload failures, and concurrent actions.The goal wasn’t to add more features.It was to make the features that already exist more reliable, testable, and ready for real users.
Devlog #4 — 21 Hours In 🌍21 hours of work on EchoEarth so far.I’ve been fixing bugs, improving the UI, adding features, and making the project better step by step.Still a lot to do, but I’m happy with how it’s going.Back to coding. 🚀
I’m working on EchoEarth 🌍 — a platform that helps communities connect with verified cleanup heroes and turn local environmental action into something visible, trusted, and rewarding.I’m currently improving the platform and adding features that make it easier for people to discover, support, and take part in real cleanup efforts.
Ships:
I worked on making EchoEarth more production-ready by improving the core report-to-impact flow, strengthening the backend, handling edge cases, and testing how the different parts of the platform work together. The hardest part was making sure that reports, AI analysis, missions, evidence, verification, and impact stay consistent throughout the entire process. I’m proud that EchoEarth is now much more than a UI — it’s a connected system that turns environmental problems into community action. You can try the full experience through the project link above....
|
1792882033.3696225
|
1793746033.3696225
|
|
36706
|
hariharan ( portfolio ) by @hariharann | Stardance
|
hariharann
|
1
|
74.68
|
895
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T13:57:49Z", "hours": 50.0, "multiplier": 19.0, "payout": 895, "blessing": "neutral", "text": "this is my portfolio have been building for months now honestly lost count then and there i pop in and build every asset u saw was hand drawn by me and enhanced using AI just explore and have fun i have lots of easter eggs which my close friends wud understand but try out !", "repo": "https://github.com/nothariharan/portfolio_v1", "demo": "https://hariharann.me/"}]...
|
[{"post_id": 82222, "ts": "202 [{"post_id": 82222, "ts": "2026-10-24T10:00:18Z", "hours": 5.305, "text": "again .. u guessed it A REDRAWWWW !! and this time it was a ai generated image i did not notice which i generated a whole 2 months ago 😭🥀🥀 it was the claude background i had but now i redrew it and its much better now as well honestly earlier it was a normal art slop now i redrew on classic pixel art set and now its much better few other addiitons : added few new musics try finding them all hehe started working on new set of mascot for my main portfolio section as of now its few of the retro-classic gifs which i found from interent archive lol also the buttons are now proper pixel UI as well earlier it was images and it was adding load to website now it loads in <1 second so tahts good"}, {"post_id": 81551, "ts": "2026-10-21T17:42:30Z", "hours": 0.9397, "text": "again few re-design ( not redrawing ) on few of em changed hacktober fest -> my oss journey includes all the different orgs i have worked in or contributed towards and the art i changed from github mascot to a VERY popular meme lol YC indian icon swapped for hackathon wins i realised i cant keep updating the logo to tell the latest number of wins too lazy so now its an oscar award ALL THESE RE DESIGNS ARE MADE ON CANVA SO PLEASE DONT TELL THEM THEY ARE AI AGAIN also the 1B tokens part of my card now is a cron job yay ! after every week ends ( a week before ) sends api request to all the various sources i use to get an estimate on tokens used and displays it the graph was simple UI library - ReCharts just had to tweak teh typography and background a bit"}, {"post_id": 81447, "ts": "2026-10-21T09:53:29Z", "hours": 6.765, "text": "redrew the art nothing more ai ml logo is just bunch of tools i commonly used pout together and made into a pixel art devops is literally first image i found when i typed ’ mario cloud pipes ’ and thenn ’ fine-tuned’ (lol) a bit exploring logo is straight outta undertale webapp is bunch of pixel logos i found in google put togehter and edited the alignment and added applicaitons into them ( this took almost 3 days and i think the time logged here is also being addiitive from my previous devlog for some reason the code refactoring) hopefully this is my final AND PLEASE DONT ACCUSE ME OF USING AI FOR MY ART ANYMORE BRO"}, {"post_id": 80309, "ts": "2026-10-17T07:18:24Z", "hours": 2.6703, "text": "rewriteee !!! last time the whole src was pretty much slop stacked on slop with like almost 1000 loc lmao ai writes straight shi so i refacotered and have it as modules now what did i actually change pages and layouts. / and the portfolio routes so the structure is something i can follow again. the main card. front, back, boot, the whole data file. portfolio sections under that. projects, experience, skills, honors. the site itself. nav, player, contact note, the rest of the pages ppl actually land on. hooks and lib as well. sound, boot, the transition. routing got a bit of the same treatment so it isnt a maze later css ? hahahahha i never touch that i aint wriitngg 7 lines of tailwind vro 😭🥀 why ? i wasnt chasing a new feature here. i wanted code i can open 10 years and still understand and update as this is not a side project its a portfolio and that lives with us cleaned the spots where the same idea was written three different ways. optimized the messy bits so it isnt doing extra work for no reason. left self notes in the files so future me doesnt hav to reverse engineer a tuesday night. basically just making the whole codebase feel like mine instead of generated slop which agents even cant write on as times go on and to make up for stardance criteria :« MOST IMPORTANTLY 🥀🥀🥀 wrote the whole thing in zed ( wanted to try it out as my friend was hyping it and how i wud love it coz i use vim and stuff a lot ) but then realized i did not config it to calculate the hacktime there goes around 12 hrs of coding ’, / but the code is still there and i actually liked zed asw so a win - win hope review goes well atleast this time"}, {"post_id": 78283, "ts": "2026-10-10T08:36:17Z", "hours": 8.9992, "text": "spent past few weeks re writing code making it clean and proper for shipping it re wrote main auth libs and stuff and proper documentation as well re wrote docs as well throughout the codebase everywhere on how everything works and added lots of small tiny easter eggs for yall to find as well lol ANDD THE MOST IMPORTANTLY people are claiming the assets in my portfolio to be AI made and i am not declining but its not like its fully AI i am an artist myself ( deviant artist for 2 years now ) I use AI to make the flow of making assets faster and simpler these are proof as to how every single asset in my portfolio was originaly drew by me AND THEN only enhanced by AI i hope this clarifies it u can see the number of iterations i did for every asset u see in my portfolio lol its not like i just prompted and got it and u can also verify the date all these are months old"}, {"post_id": 72060, "ts": "2026-09-22T03:05:17Z", "hours": 7.5725, "text": "MUSIC ON THE CARD ( and /portfolio too ) last time the whole post was just the card walking itself into /portfolio now the thing actually has loops on it which is where most of the new hours went into last time card was silent besides menu beeps and /portfolio was just a dark page u dumped into with no way to switch anything now chiptune loops sitting under the whole site and u can actually change / mute / skip without it feeling like a website widget slapped on TRAINERR CARD HUD spherical change music button ( pixel / SNES ) mute next to zoom plaque says MUSIC PLAYING when a loop is actually running not MUSIC: OFF while audio is screaming in the back lol MUSIC: MUTED if u just dropped the volume MAINNN PORTFOLIO PLAYER /portfolio got its own player not the card sprites play / pause prev / next mute scrubber u can drag eq cover so it feels like a now-playing island not a text strip mute does not pause it just goes quiet so the loop keeps walking WIPE SOUND those short theme clips on the card → /portfolio wipe are gone now its just a whoosh ( air rush ) both ways so the transition doesnt start playing a whole song for 4 seconds lol THE POOL theme 2 · 3 · 5 · 6 · 7 · 8 loopin aand these musics are totally not nintendo proprietary music 👀👀👀👀👀👀 short ones stayed out of the pool becoz they were stings not BGM track ends → next one. prev past 3s restarts the same loop"}, {"post_id": 58594, "ts": "2026-08-31T02:12:38Z", "hours": 3.7481, "text": "TRANSITION Animation btwn card <-> portfolio last time was the whole phone layout existing for real ( not a shrunk desk card ) now the trainer card actually feels like a physical thing and then it walks itself into /portfolio which is where most of the hours went into basically MAIN PORTFOLIO used to just be a button that dumped u onto a dark page with a white flash or a camera zoom or this nasty navy wipe and none of that felt like the card doing anything it just felt like a website changing pages lol what 🚢🚢 IT TILTS LIKE A REAL CARD ( only the corners tho ) used to track the whole surface so hovering name / stack / sprite would wobble the gba shell for no reason 🥀 now the inner band stays dead flat and only the outer corners actually slant so it feels like ur pressing a sticker not stirring a tray of water back face freezes the tilt too becoz DATA FILE tabs sliding off ur cursor mid click is a special kind of rage also it makes noise now 8-bit menu ticks off the web audio api ( no mp3s sitting in public/ being dramatic ) hover / flip / select all do that tiny gba chirp SOUND: ON in the corner if u want it · MUTED if u dont · it remembers so thats there THE CARD ITSELF EXTENDS ( not a zoom not a clone ) LITTLE SIDE QUESTS ( still counts ) local compiles were crawling becoz turbopack decided my entire home folder was the project lol pinned it to this repo so it stops watching my whole machine also slapped vercel analytics on the layout so i can actually see if ppl flip the card or bounce ( mainly just the dashboard for now but eh ) whats next unless i get distracted🍽️ image weight is STILL the villain like last time i said this and then i went and built a wipe instead theres still a lot of honor heroes stickers logos sprites on that card and first open on mobile still feels heavy even after the card finally behaves next pass is probably ( for real this time ig ) avif / webp everywhere the front still cheats with fat pngs lazy the back face until u actually flip stop shipping dead 1–2mb honor experiments in public/ preload only first paint chrome compress the shit out of everything basically lol until we meet again :DD give me some ideas people 👀 if u want that first paint to stop feeling like a backpack"}, {"post_id": 45841, "ts": "2026-08-12T15:51:31Z", "hours": 6.8419, "text": "📱 view is here last time phones were just getting a shrunk desktop trainer card and everything was breaking all over the place now the whole thing flips into a real portrait layout worked on this for past few days had to redo few assets , shift around the components and stuff as well basically the card used to pretend it was mobile by scaling the gba shell down and that never worked coz the chrome spacing flip hit targets and honors art were all sized for landscape 🥀 so on a phone it felt like looking through a tiny window at a desk site lol what 🚢🚢 REAL MOBILE SHELL ( not a zoom hack ) front face got its own phone composition each main section has proper new made assets DATA FILE back also got a real narrow pass tabs go PROJ / EXP / HONORS / SKILLS so they dont wrap into mush honors stickers sit in a 2×2 instead of a crushed 4-up skills become a bigger stacked grid experience stops overlapping itself on tall thin viewports shell size morphs soft when u rotate or cross the breakpoint so it doesnt hard-cut mid flip so thats there also buttons on the back were flipping the card with them 🥀 OPEN PROOF · tabs · stickers · hari.md · project links all used to bubble into the flip handler so u tap proof and the whole card yeets around now controls + a little near-miss margin dont flip and empty chrome / honor copy / description panels still do which is what u actually want on mobile when ur thumb is hunting for free space tokens furnace had a full-bleed invisible github link over the whole painted art so tapping the logos took u to github for no reason — killed that. furnace art is view only now HONORS ON A PHONE ( redid all assets ) YC banner was cropping the building crown so shifted object-position a bit lower in the same frame ( no bigger no smaller just move the art ) hackathon highlights used to jam two tiny win chips into a crushed grid and the bottom row was getting clipped so that became one clean VIEW ALL PROJECTS HERE button that dumps into /portfolio?tab=projects LITTLE SIDE QUESTS ( still counts ) added OG image to the website , made the website title dynamic according to how u are using it ( jus try it tbh hard to explain ) whats next unless i get distracted🍽️ image weight is still the villain theres a lot of honor heroes stickers logos sprites on that card and first open on mobile still feels heavy even after the layout finally makes sense next pass is probably avif / webp everywhere the front still cheats with fat pngs lazy the back face until u actually flip stop shipping dead 1–2mb honor experiments in public/ preload only first paint chrome still needs to be done includes need to compress the shit out of everything basically lol until we meet again :DD"}, {"post_id": 43272, "ts": "2026-08-08T13:10:53Z", "hours": 6.6503, "text": "HONORs revamp and hari.md for AI 🥞🥞 last time the trainer card DATA FILE was cool but something did not sit right with me so did a revamp and oh boy now the whole honors strip got another pass and then i finally shipped something ive been talking about for a while which is hari.md MAINNN CHANGE the red MAIN PORTFOLIO button is gone. its a black hari.md now and it dumps u into /portfolio/hari which is basically just a huge markdown context dump on me · school · internship · wins · DNFs · projects · stack · how i actually work. like 800+ lines . agents and ppl can read the whole thing without guessing from random cards. so thats there also nav has hari.md on the main portfolio now so its not only a card footer secret THE 1B+ TOKENS SAGA (this took way too many attempts lol) honestly the tokens honor was the whole pain point first it was html pieces and overlays and conveyors and then it looked fake then we tried splitting the stage and putting brand logos in the flow and that also fought the layout then the whole idea flipped — stop reconstructing pixel art in react and just ship ONE card image ( avif → webp → png ) inside the honor chrome and that finally worked. furnace on top HOW IT FLOWS under it with the real tool marks: Claude Code · Cursor · Codex · ChatGPT · OpenCode · Hermes Agent · DeepSeek had to regenerate a few times becoz the first versions had cute fake mascots instead of actual logos and then the aspect ratio was wrong so the panel was clipping top and bottom. now it sits in the same rounded accent border the other honors use so it doesnt look like a raw screenshot floating in the cream CARD IS COOKING AGAIN whats done so farr honors feel more finished footer is smaller and sits lower across every tab tokens art is framed proper hari.md is live on prod too cooking rn 🍽️ theres a shit ton of images on my card now so i need to optimze it optimizing the card load becoz theres a LOT of images on there and first open still feels heavy. next pass is probably: avif / webp for the front tiles + stickers stop shipping dead 1–2mb pngs preload only first paint lazy the back face until u flip still needs to be done includes asset compression across the card maybe defer honor / project sprites until flip kill unused diorama / blast pngs from the deploy more sprite polish later ig [ inspired from pokemon cards and also my second brain vault hopefully the 1B furnace doesnt melt the vercel bill 🥀🥀 ] give me some ideas people 👀 if u want the card to load snappier without killing the pixel look thx for readin :DDDDD"}, {"post_id": 40500, "ts": "2026-08-04T02:27:07Z", "hours": 9.3564, "text": "more data file yipeee!!! follow up to the last card post becoz the back face was still half vibes and half unfinished morph energy 🗣️🗣️ last time the trainer card front felt finished and /portfolio got ripped into proper routes now most of the hours went into the DATA FILE back — honors experience polish tokens furnace and making that whole sticker row actually mean something instead of placeholder energy HONORSSSS ( the spicy part of the card ) last time honors was basically morphing diorama worlds stacked on top of each other and it got heavy farr too fast now the whole thing is one clean mock layout left tile + rank bar title / tag / short sub middle content (text or shots or furnace flow) OPEN PROOF as a real top right button same height metrics footer on every honor so nothing jumps around so thats there also revamped all of the sub sections under HONORS as well do check em out EXPERIENCE ON THE CARD experience order got inverted too work and internships first education last so stealth → rinexis → freelancing show before the college rows which is where that whole professional read should start under anyway SMALLER CARD POLISH ( still counts ) card tilt and front chrome got hardened earlier landing zoom opened more so the DATA FILE can actually breathe mobile nav + denser /portfolio home summary noun pixel icons vendored locally so the free trial dying doesnt blank the metrics row later basically just making the whole fire red trainer card + DATA FILE feel like one finished product instead of two half done faces COOKING RN 🍽️ few things which still needs to be done includes more sprites cleaner idle loops wallpapers personal AI assistant on the front with access to the - knowledge vault so it can answer questions about me directly automated scripts fetching github projects and linkedin posts maybe sqlite later if the file based blog starts feeling too small sprites are work in progress soon to come again lol [ my pokemon partner is soon to come on the portfolio 🥀🥀asw ( might do that after the first ship ) ] MOST IMPORTANT THING I AM GONNA BE LOOKING FORWARD TO IS - trying to reduce the lag coz of lots of images in the card ( if yall have any recommendations do let me know ) live at the trainer card on the site · flip with A · HONORS tab · ← → through the stickers"}, {"post_id": 36850, "ts": "2026-07-29T05:14:46Z", "hours": 2.9336, "text": "CARD IS COMPLETE ( for now ig ) whats done so farr 🗣️🗣️ last time the trainer card was basically the whole show and the /portfolio page was just a dark shell with sections stacked under it now the whole thing got ripped apart and rebuilt properly which is where most of the hours went into MAINNN PORTFOLIO REVAMP ( basically the professional section of portfolio ) /portfolio is not one long dump anymore it is a summary home and then dedicated routes for projects experience skills achievements blog and stuff so ppl can deep link into the part they care about without scrolling forever content is real now too not placeholder vibes project cards with screenshots experience filled in skills with proper brand icons honors and achievements actually listed so thats there also shipped a file based blog under /portfolio/blog which is mainly just markdown posts for now but eh its the first step toward that whole knowledge vault thing i was talking about earlier ( no db here coz i write and redeploy directly :))) ) THE ‘SPRITEEEEE’ the card front finally has a proper custom mascot sprite instead of whatever placeholder energy was sitting there before spent a decent chunk of time on standing and sitting frames and idle loops and lining the feet up so it doesnt float weird in the box [ inspired from pokemon sprites hopefully wudnt get sued or sm 🥀🥀] still cooking more frames and cleaner loops but the main card already feels way more alive with it on there few other changes as well focus badges on the card revamped ( honestly i wanna change this section but no idea what to do give me some ideas people 👀 ) project icons and skill tiles card polish spacing layout CURRENTLY panel and stuff basically just making the whole fire red trainer card feel finished instead of half done cooking rn 🍽️ few things which still needs to be done includes more sprites icons wallpapers personal AI assistant on the front page with access to my knowledge vault so it can answer questions about me directly automated scripts fetching github projects and linkedin posts maybe sqlite later if the file based blog starts feeling too small sprites are work in progress soon to come again lol [ my pokemon partner is soon to come on the portfolio ]"}, {"post_id": 30530, "ts": "2026-07-18T05:44:39Z", "hours": 12.5261, "text": "from planning gym on fire red to building a pokemon card portfolio lol Where We At Now this was originally started in macondo now in stardance for age related issues ( yes i am old 🥀) and now some version of it is working ig The Front Face recreated the fire red gba trainer card layout. looks super clean. gba trainer card header flanked by white pokeballs stats capsules: name (hariharan), money (role: ai & web dev), pokedex (projects: 24/150), time (exp: 1+ year), started date (oct 2024) trainer sprite: custom mascot sprite in a rounded box badges row: slot 1 holds a custom pixel-art yc logo badge, other slots are empty placeholders Interactive Card Mechanics 3d tilt: card rotates on hover tracking mouse coordinates zoom controls: plus/minus snap scale buttons with spring physics float animation: slow sine-wave bobbing that pauses on hover so buttons are stable targets The Back Face flips over to show a custom data file. 4 slanting columns: projects, experience, honors, skills columns expand on hover and show custom retro backgrounds dynamic details block at the bottom updates based on hovered column buttons to enter the main portfolio The Wild Transition & Main Page white flash transition: entering the portfolio flashes screen white like a wild pokemon fight entry minimal portfolio: dark theme, hero, about, experience, projects, skills, honors reverse easter egg: back to trainer card button in footer triggers reverse flash transition deep links: coming from a card back tab scrolls smoothly straight to that section on layout mount and the minimal main portfolio: few things which still needs to be done includes: proper sprites for my character , icons , wallpapers, etc proper minimal version of my website with proper routing sectiosn and a file based storage on sqlite or something like that ( mainly to save blogs and shi ) autmoated script fetching from my github projects and linkedin posts ANDDD MOST IMPORTANTLY : NEED TO BUILD MYSELF AN PERSONAL AI ASSISTANT in front page whihc has access to my knowledge vault and answers all questions about me directly as a portfolio sub assistant the sprites are work in progress soon to come"}]...
|
Title: hariharan ( portfolio ) by @hariharann | St Title: hariharan ( portfolio ) by @hariharann | Stardance
Devlogs:
from planning gym on fire red to building a pokemon card portfolio lol Where We At Now this was originally started in macondo now in stardance for age related issues ( yes i am old 🥀) and now some version of it is working ig The Front Face recreated the fire red gba trainer card layout. looks super clean. gba trainer card header flanked by white pokeballs stats capsules: name (hariharan), money (role: ai & web dev), pokedex (projects: 24/150), time (exp: 1+ year), started date (oct 2024) trainer sprite: custom mascot sprite in a rounded box badges row: slot 1 holds a custom pixel-art yc logo badge, other slots are empty placeholders Interactive Card Mechanics 3d tilt: card rotates on hover tracking mouse coordinates zoom controls: plus/minus snap scale buttons with spring physics float animation: slow sine-wave bobbing that pauses on hover so buttons are stable targets The Back Face flips over to show a custom data file. 4 slanting columns: projects, experience, honors, skills columns expand on hover and show custom retro backgrounds dynamic details block at the bottom updates based on hovered column buttons to enter the main portfolio The Wild Transition & Main Page white flash transition: entering the portfolio flashes screen white like a wild pokemon fight entry minimal portfolio: dark theme, hero, about, experience, projects, skills, honors reverse easter egg: back to trainer card button in footer triggers reverse flash transition deep links: coming from a card back tab scrolls smoothly straight to that section on layout mount and the minimal main portfolio: few things which still needs to be done includes: proper sprites for my character , icons , wallpapers, etc proper minimal version of my website with proper routing sectiosn and a file based storage on sqlite or something like that ( mainly to save blogs and shi ) autmoated script fetching from my github projects and linkedin posts ANDDD MOST IMPORTANTLY : NEED TO BUILD MYSELF AN PERSONAL AI ASSISTANT in front page whihc has access to my knowledge vault and answers all questions about me directly as a portfolio sub assistant the sprites are work in progress soon to come
CARD IS COMPLETE ( for now ig ) whats done so farr 🗣️🗣️ last time the trainer card was basically the whole show and the /portfolio page was just a dark shell with sections stacked under it now the whole thing got ripped apart and rebuilt properly which is where most of the hours went into MAINNN PORTFOLIO REVAMP ( basically the professional section of portfolio ) /portfolio is not one long dump anymore it is a summary home and then dedicated routes for projects experience skills achievements blog and stuff so ppl can deep link into the part they care about without scrolling forever content is real now too not placeholder vibes project cards with screenshots experience filled in skills with proper brand icons honors and achievements actually listed so thats there also shipped a file based blog under /portfolio/blog which is mainly just markdown posts for now but eh its the first step toward that whole knowledge vault thing i was talking about earlier ( no db here coz i write and redeploy directly :))) ) THE ‘SPRITEEEEE’ the card front finally has a proper custom mascot sprite instead of whatever placeholder energy was sitting there before spent a decent chunk of time on standing and sitting frames and idle loops and lining the feet up so it doesnt float weird in the box [ inspired from pokemon sprites hopefully wudnt get sued or sm 🥀🥀] still cooking more frames and cleaner loops but the main card already feels way more alive with it on there few other changes as well focus badges on the card revamped ( honestly i wanna change this section but no idea what to do give me some ideas people 👀 ) project icons and skill tiles card polish spacing layout CURRENTLY panel and stuff basically just making the whole fire red trainer card feel finished instead of half done cooking rn 🍽️ few things which still needs to be done includes more sprites icons wallpapers personal AI assistant on the front page with access to my knowledge vault so it can answer questions about me directly automated scripts fetching github projects and linkedin posts maybe sqlite later if the file based blog starts feeling too small sprites are work in progress soon to come again lol [ my pokemon partner is soon to come on the portfolio ]
more data file yipeee!!! follow up to the last card post becoz the back face was still half vibes and half unfinished morph energy 🗣️🗣️ last time the trainer card front felt finished and /portfolio got ripped into proper routes now most of the hours went into the DATA FILE back — honors experience polish tokens furnace and making that whole sticker row actually mean something instead of placeholder energy HONORSSSS ( the spicy part of the card ) last time honors was basically morphing diorama worlds stacked on top of each other and it got heavy farr too fast now the whole thing is one clean mock layout left tile + rank bar title / tag / short sub middle content (text or shots or furnace flow) OPEN PROOF as a real top right button same height metrics footer on every honor so nothing jumps around so thats there also revamped all of the sub sections under HONORS as well do check em out EXPERIENCE ON THE CARD experience order got inverted too work and internships first education last so stealth → rinexis → freelancing show before the college rows which is where that whole professional read should start under anyway SMALLER CARD POLISH ( still counts ) card tilt and front chrome got hardened earlier landing zoom opened more so the DATA FILE can actually breathe mobile nav + denser /portfolio home summary noun pixel icons vendored locally so the free trial dying doesnt blank the metrics row later basically just making the whole fire red trainer card + DATA FILE feel like one finished product instead of two half done faces COOKING RN 🍽️ few things which still needs to be done includes more sprites cleaner idle loops wallpapers personal AI assistant on the front with access to the - knowledge vault so it can answer questions about me directly automated scripts fetching github projects and linkedin posts maybe sqlite later if the file based blog starts feeling too small sprites are work in progress soon to come again lol [ my pokemon partner is soon to come on the portfolio 🥀🥀asw ( might do that after the first ship ) ] MOST IMPORTANT THING I AM GONNA BE LOOKING FORWARD TO IS - trying to reduce the lag coz of lots of images in the card ( if yall have any recommendations do let me know ) live at the trainer card on the site · flip with A · HONORS tab · ← → through the stickers
HONORs revamp and hari.md for AI 🥞🥞 last time the trainer card DATA FILE was cool but something did not sit right with me so did a revamp and oh boy now the whole honors strip got another pass and then i finally shipped something ive been talking about for a while which is hari.md MAINNN CHANGE the red MAIN PORTFOLIO button is gone. its a black hari.md now and it dumps u into /portfolio/hari which is basically just a huge markdown context dump on me · school · internship · wins · DNFs · projects · stack · how i actually work. like 800+ lines . agents and ppl can read the whole thing without guessing from random cards. so thats there also nav has hari.md on the main portfolio now so its not only a card footer secret THE 1B+ TOKENS SAGA (this took way too many attempts lol) honestly the tokens honor was the whole pain point first it was html pieces and overlays and conveyors and then it looked fake then we tried splitting the stage and putting brand logos in the flow and that also fought the layout then the whole idea flipped — stop reconstructing pixel art in react and just ship ONE card image ( avif → webp → png ) inside the honor chrome and that finally worked. furnace on top HOW IT FLOWS under it with the real tool marks: Claude Code · Cursor · Codex · ChatGPT · OpenCode · Hermes Agent · DeepSeek had to regenerate a few times becoz the first versions had cute fake mascots instead of actual logos and then the aspect ratio was wrong so the panel was clipping top and bottom. now it sits in the same rounded accent border the other honors use so it doesnt look like a raw screenshot floating in the cream CARD IS COOKING AGAIN whats done so farr honors feel more finished footer is smaller and sits lower across every tab tokens art is framed proper hari.md is live on prod too cooking rn 🍽️ theres a shit ton of images on my card now so i need to optimze it optimizing the card load becoz theres a LOT of images on there and first open still feels heavy. next pass is probably: avif / webp for the front tiles + stickers stop shipping dead 1–2mb pngs preload only first paint lazy the back face until u flip still needs to be done includes asset compression across the card maybe defer honor / project sprites until flip kill unused diorama / blast pngs from the deploy more sprite polish later ig [ inspired from pokemon cards and also my second brain vault hopefully the 1B furnace doesnt melt the vercel bill 🥀🥀 ] give me some ideas people 👀 if u want the card to load snappier without killing the pixel look thx for readin :DDDDD
📱 view is here last time phones were just getting a shrunk desktop trainer card and everything was breaking all over the place now the whole thing flips into a real portrait layout worked on this for past few days had to redo few assets , shift around the components and stuff as well basically the card used to pretend it was mobile by scaling the gba shell down and that never worked coz the chrome spacing flip hit targets and honors art were all sized for landscape 🥀 so on a phone it felt like looking through a tiny window at a desk site lol what 🚢🚢 REAL MOBILE SHELL ( not a zoom hack ) front face got its own phone composition each main section has proper new made assets DATA FILE back also got a real narrow pass tabs go PROJ / EXP / HONORS / SKILLS so they dont wrap into mush honors stickers sit in a 2×2 instead of a crushed 4-up skills become a bigger stacked grid experience stops overlapping itself on tall thin viewports shell size morphs soft when u rotate or cross the breakpoint so it doesnt hard-cut mid flip so thats there also buttons on the back were flipping the card with them 🥀 OPEN PROOF · tabs · stickers · hari.md · project links all used to bubble into the flip handler so u tap proof and the whole card yeets around now controls + a little near-miss margin dont flip and empty chrome / honor copy / description panels still do which is what u actually want on mobile when ur thumb is hunting for free space tokens furnace had a full-bleed invisible github link over the whole painted art so tapping the logos took u to github for no reason — killed that. furnace art is view only now HONORS ON A PHONE ( redid all assets ) YC banner was cropping the building crown so shifted object-position a bit lower in the same frame ( no bigger no smaller just move the art ) hackathon highlights used to jam two tiny win chips into a crushed grid and the bottom row was getting clipped so that became one clean VIEW ALL PROJECTS HERE button that dumps into /portfolio?tab=projects LITTLE SIDE QUESTS ( still counts ) added OG image to the website , made the website title dynamic according to how u are using it ( jus try it tbh hard to explain ) whats next unless i get distracted🍽️ image weight is still the villain theres a lot of honor heroes stickers logos sprites on that card and first open on mobile still feels heavy even after the layout finally makes sense next pass is probably avif / webp everywhere the front still cheats with fat pngs lazy the back face until u actually flip stop shipping dead 1–2mb honor experiments in public/ preload only first paint chrome still needs to be done includes need to compress the shit out of everything basically lol until we meet again :DD
TRANSITION Animation btwn card <-> portfolio last time was the whole phone layout existing for real ( not a shrunk desk card ) now the trainer card actually feels like a physical thing and then it walks itself into /portfolio which is where most of the hours went into basically MAIN PORTFOLIO used to just be a button that dumped u onto a dark page with a white flash or a camera zoom or this nasty navy wipe and none of that felt like the card doing anything it just felt like a website changing pages lol what 🚢🚢 IT TILTS LIKE A REAL CARD ( only the corners tho ) used to track the whole surface so hovering name / stack / sprite would wobble the gba shell for no reason 🥀 now the inner band stays dead flat and only the outer corners actually slant so it feels like ur pressing a sticker not stirring a tray of water back face freezes the tilt too becoz DATA FILE tabs sliding off ur cursor mid click is a special kind of rage also it makes noise now 8-bit menu ticks off the web audio api ( no mp3s sitting in public/ being dramatic ) hover / flip / select all do that tiny gba chirp SOUND: ON in the corner if u want it · MUTED if u dont · it remembers so thats there THE CARD ITSELF EXTENDS ( not a zoom not a clone ) LITTLE SIDE QUESTS ( still counts ) local compiles were crawling becoz turbopack decided my entire home folder was the project lol pinned it to this repo so it stops watching my whole machine also slapped vercel analytics on the layout so i can actually see if ppl flip the card or bounce ( mainly just the dashboard for now but eh ) whats next unless i get distracted🍽️ image weight is STILL the villain like last time i said this and then i went and built a wipe instead theres still a lot of honor heroes stickers logos sprites on that card and first open on mobile still feels heavy even after the card finally behaves next pass is probably ( for real this time ig ) avif / webp everywhere the front still cheats with fat pngs lazy the back face until u actually flip stop shipping dead 1–2mb honor experiments in public/ preload only first paint chrome compress the shit out of everything basically lol until we meet again :DD give me some ideas people 👀 if u want that first paint to stop feeling like a backpack
MUSIC ON THE CARD ( and /portfolio too ) last time the whole post was just the card walking itself into /portfolio now the thing actually has loops on it which is where most of the new hours went into last time card was silent besides menu beeps and /portfolio was just a dark page u dumped into with no way to switch anything now chiptune loops sitting under the whole site and u can actually change / mute / skip without it feeling like a website widget slapped on TRAINERR CARD HUD spherical change music button ( pixel / SNES ) mute next to zoom plaque says MUSIC PLAYING when a loop is actually running not MUSIC: OFF while audio is screaming in the back lol MUSIC: MUTED if u just dropped the volume MAINNN PORTFOLIO PLAYER /portfolio got its own player not the card sprites play / pause prev / next mute scrubber u can drag eq cover so it feels like a now-playing island not a text strip mute does not pause it just goes quiet so the loop keeps walking WIPE SOUND those short theme clips on the card → /portfolio wipe are gone now its just a whoosh ( air rush ) both ways so the transition doesnt start playing a whole song for 4 seconds lol THE POOL theme 2 · 3 · 5 · 6 · 7 · 8 loopin aand these musics are totally not nintendo proprietary music 👀👀👀👀👀👀 short ones stayed out of the pool becoz they were stings not BGM track ends → next one. prev past 3s restarts the same loop
spent past few weeks re writing code making it clean and proper for shipping it re wrote main auth libs and stuff and proper documentation as well re wrote docs as well throughout the codebase everywhere on how everything works and added lots of small tiny easter eggs for yall to find as well lol ANDD THE MOST IMPORTANTLY people are claiming the assets in my portfolio to be AI made and i am not declining but its not like its fully AI i am an artist myself ( deviant artist for 2 years now ) I use AI to make the flow of making assets faster and simpler these are proof as to how every single asset in my portfolio was originaly drew by me AND THEN only enhanced by AI i hope this clarifies it u can see the number of iterations i did for every asset u see in my portfolio lol its not like i just prompted and got it and u can also verify the date all these are months old
rewriteee !!! last time the whole src was pretty much slop stacked on slop with like almost 1000 loc lmao ai writes straight shi so i refacotered and have it as modules now what did i actually change pages and layouts. / and the portfolio routes so the structure is something i can follow again. the main card. front, back, boot, the whole data file. portfolio sections under that. projects, experience, skills, honors. the site itself. nav, player, contact note, the rest of the pages ppl actually land on. hooks and lib as well. sound, boot, the transition. routing got a bit of the same treatment so it isnt a maze later css ? hahahahha i never touch that i aint wriitngg 7 lines of tailwind vro 😭🥀 why ? i wasnt chasing a new feature here. i wanted code i can open 10 years and still understand and update as this is not a side project its a portfolio and that lives with us cleaned the spots where the same idea was written three different ways. optimized the messy bits so it isnt doing extra work for no reason. left self notes in the files so future me doesnt hav to reverse engineer a tuesday night. basically just making the whole codebase feel like mine instead of generated slop which agents even cant write on as times go on and to make up for stardance criteria :« MOST IMPORTANTLY 🥀🥀🥀 wrote the whole thing in zed ( wanted to try it out as my friend was hyping it and how i wud love it coz i use vim and stuff a lot ) but then realized i did not config it to calculate the hacktime there goes around 12 hrs of coding ’, / but the code is still there and i actually liked zed asw so a win - win hope review goes well atleast this time
redrew the art nothing more ai ml logo is just bunch of tools i commonly used pout together and made into a pixel art devops is literally first image i found when i typed ’ mario cloud pipes ’ and thenn ’ fine-tuned’ (lol) a bit exploring logo is straight outta undertale webapp is bunch of pixel logos i found in google put togehter and edited the alignment and added applicaitons into them ( this took almost 3 days and i think the time logged here is also being addiitive from my previous devlog for some reason the code refactoring) hopefully this is my final AND PLEASE DONT ACCUSE ME OF USING AI FOR MY ART ANYMORE BRO
again few re-design ( not redrawing ) on few of em changed hacktober fest -> my oss journey includes all the different orgs i have worked in or contributed towards and the art i changed from github mascot to a VERY popular meme lol YC indian icon swapped for hackathon wins i realised i cant keep updating the logo to tell the latest number of wins too lazy so now its an oscar award ALL THESE RE DESIGNS ARE MADE ON CANVA SO PLEASE DONT TELL THEM THEY ARE AI AGAIN also the 1B tokens part of my card now is a cron job yay ! after every week ends ( a week before ) sends api request to all the various sources i use to get an estimate on tokens used and displays it the graph was simple UI library - ReCharts just had to tweak teh typography and background a bit
again .. u guessed it A REDRAWWWW !! and this time it was a ai generated image i did not notice which i generated a whole 2 months ago 😭🥀🥀 it was the claude background i had but now i redrew it and its much better now as well honestly earlier it was a normal art slop now i redrew on classic pixel art set and now its much better few other addiitons : added few new musics try finding them all hehe started working on new set of mascot for my main portfolio section as of now its few of the retro-classic gifs which i found from interent archive lol also the buttons are now proper pixel UI as well earlier it was images and it was adding load to website now it loads in <1 second so tahts good
Ships:
this is my portfolio have been building for months now honestly lost count then and there i pop in and build every asset u saw was hand drawn by me and enhanced using AI just explore and have fun i have lots of easter eggs which my close friends wud understand but try out !...
|
1793004881.3465424
|
1793091281.3465424
|
|
25212
|
Untitled by @sainiavinash234 | Stardance
|
sainiavinash234
|
0
|
74.65
|
0
|
[]
|
[{"post_id": 19888, "ts": "202 [{"post_id": 19888, "ts": "2026-07-01T09:52:50Z", "hours": 74.6469, "text": "I locked in for around 70 hours and built the entire public website for WhisperMe, a voice-first social app where people can share short audio thoughts instead of text. The site explains the product, shows the vision clearly, and gives people a way to join the waitlist. I worked on the full website experience, including the design, layout, copy, responsive sections, waitlist flow, and overall polish. I wanted it to feel exciting, trustworthy, and like a real product people would want to try. if you like it then join the waitlist = https://www.whisperme.co/join-beta"}]...
|
Title: Untitled by @sainiavinash234 | Stardance
D Title: Untitled by @sainiavinash234 | Stardance
Devlogs:
I locked in for around 70 hours and built the entire public website for WhisperMe, a voice-first social app where people can share short audio thoughts instead of text. The site explains the product, shows the vision clearly, and gives people a way to join the waitlist. I worked on the full website experience, including the design, layout, copy, responsive sections, waitlist flow, and overall polish. I wanted it to feel exciting, trustworthy, and like a real product people would want to try. if you like it then join the waitlist = https://www.whisperme.co/join-beta...
|
1792673525.8147812
|
1793278325.8147812
|
|
28563
|
Project Prometheus by @leonardo_g_bracciale | Star Project Prometheus by @leonardo_g_bracciale | Stardance...
|
leonardo_g_bracciale
|
0
|
74.24
|
0
|
[]
|
[{"post_id": 40712, "ts": "202 [{"post_id": 40712, "ts": "2026-08-04T12:41:44Z", "hours": 36.1247, "text": "Stuck :(: I don’t know how to write a frontend so I am trying to get Claude to do it but it’s just not giving me what I want. it has been going on like this for a while now which sucks. I think I might just release a terminal version at this point and ship on Stardance."}, {"post_id": 29575, "ts": "2026-07-16T16:38:29Z", "hours": 11.6653, "text": "A LOT HAS CHANGED. Alright so I realized my current capabilities couldn’t make the project I wanted so I used a coding LLM from Nvidia to help. It wrote the entire frontend for me because I have noooooooo clue how to write a frontend. It also modernized how messages are displayed to the user. So for those that don’t know, tokens are essentially parts of words, 1 token being around 3/4th’s of a word. In the past, the model would generate tokens and then deliver them all at once in one output. However, the appearance to the user was that the program was freezing up because after putting in their input nothing happened. This make it so text appears in realtime, or well close to it, as the LLM is making a response."}, {"post_id": 26668, "ts": "2026-07-11T16:39:30Z", "hours": 9.1478, "text": "MEMORY SYSTEM OVERHAUL. Alright for those following along, I previously had a system where I would store memory inside a JSON file. However, I have been researching how real agents store memory and they seem to do it very differently. In short, they store memory by embedding text into a vector. This process is done by turning a string into a vector with 800+ dimensions, like: <v1, v2, v3……. v800>. This way the model can find similar meaning setences, ideas, etc. using what it does best, numbers. It matches the vector to the next closest vectors to it when searching through memory. This makes finding things in memory wayyyyyyyyyyyy easier and faster because the model can both find stuff in memory that may not have any matching keywords but mean the same thing(like “I am broke” and “I have no money” would be plotted next to each other even though the main keywords aren’t shared between each other, this is a rough example though) and it can also do it in a way more efficient manner. This is called semantic searching(searching by meaning, not keywords). I also have an SQLite database, mostly used for project data. The model stores stuff like project id and summaries about projects in neat, clean rows. This helps the model find stuff better because it can now search by id, but it also makes it easier for me to see stuff :)."}, {"post_id": 25384, "ts": "2026-07-09T17:22:55Z", "hours": 3.3036, "text": "THIS TOOK FOREVERRRRRRRRRRRRRR. What I did is I made it so the model went from getting the User’s input and guessing on what to do next each iteration to making a predetermined plan and then each iteration would complete a step of the plan and that would be notified to the model, then it works on the next step of the plan and so forth. The terminal output associated with this Devlog would definitely help explain this a little more. To summarize though, I basically revamped the architecture of program to make it so that each time a request is made by the User, the model makes a plan of execution in steps and then iterates through the plan to complete the request."}, {"post_id": 24162, "ts": "2026-07-07T15:28:31Z", "hours": 2.4842, "text": "I am improving the long-term memory but it overall seems to be going fine. I added a way to prevent the conversation history from overflowing, which comes in the form of an if-statement in my main loop to check how large the conversation has gotten, and if it has passed 100 messages, it summarizes the oldest 50 but keeps the newer 50. I am noticing however that my computer has started slowing down considerably when making post requests to the model. I think I am going to try to find a way to stop using such a large context window but this has gotten rather out of hand. I do want this to be accessible to the average person, so I intend to somehow lessen the load when running locally. Saying this, at this time I am not sure how yet so I am going to have to go research that."}, {"post_id": 23065, "ts": "2026-07-05T20:03:11Z", "hours": 0.5842, "text": "LONG-TERM MEMORY!!!!! Well kind of…. I added a way for the model to remember information between sessions, but there is a caveat. The user has to tell the model in the first place that it should remember something. Otherwise that information will be stored in RAM and be wiped when restarting the program. Unless specifically prompted, the model won’t use the remember tool to store information. But this is still pretttttttty nice. All memory is stored in a memory.json file which the model can access and search through to find stuff."}, {"post_id": 22939, "ts": "2026-07-05T16:28:00Z", "hours": 1.225, "text": "I know this is just a huge block of text but we’re actually getting somewhere!!!!!! The model can know reason after tool results and use that to generate responses!!!! It’s a rather simple thing but important. For example, in one of my tests I asked it to create a file called numbers.txt and put the numbers 1,2,3,4,5 in it. Then I asked it to read the file and tell me the sum. The flow looks like this: Input -> Tool Call(write_file) -> process tool result and check against original user input -> Tool Call(read_file) -> process tool result -> check against original user request -> reasoning -> response!!!! EDIT: the screenshot is an image of the results of some tests I ran."}, {"post_id": 22414, "ts": "2026-07-04T21:30:07Z", "hours": 1.1747, "text": "BIIIIIIIG NEWS!!!!! The terminal response says it all , but the logic is working very well. Just fixed the little bug at the end where the model returned too JSON messages so that should go away, but if you look at the top right of the image the test2.txt file actually generated. This means my model is using the tools correctly and is starting to get the hang of it. WHAT I LEARNED: building the prompt you send to the model after each user input is VERYYYY important. You kind of have to spoon feed models information, or else they don’t know what to do. ESPECIALLLLY with a smaller model. EDIT: I also changed models to a slightly bigger one from Ollama, the gemma3:12b model. I highly recommend Ollama for projects such as this, as it is free to download and run a tonnnnnn of local models on it. This is a list of all of the models that are available: https://ollama.com/library ."}, {"post_id": 21758, "ts": "2026-07-03T21:05:09Z", "hours": 0.9903, "text": "I am trying to give it functionality to add stuff to files and it worked but it’s still rather shaky. I mean at least it worked!!!!! The debugging on this is veryyyyyy annoying. I still don’t know why it is putting “Your final answer here” in chat all the time but I am going to fix it!"}, {"post_id": 21577, "ts": "2026-07-03T16:35:27Z", "hours": 1.8208, "text": "I made it so it can launch apps for me! The process goes something like this: User Input -> AI decides if it needs tool and what tool to use -> Tool Output -> AI takes output and decides if its sufficient or it needs another tool -> Tool result or final response -> final response. Reallllly happy with this new update to it."}, {"post_id": 21016, "ts": "2026-07-02T19:35:53Z", "hours": 4.3086, "text": "BIG NEWS!! So I completed some early tools, most of them being based on file management. I added support for the agent to make multiple tool calls as well if necessary. So essentially what it does is that it takes the user’s input, decides what tool to use, uses it, evaluates the result of the tool against the user’s original request and decides if it has sufficient information to respond to the user’s request or if it needs more tool calls. In this scenario, the user asks to find a file in a folder. The model first uses the search_projects tool to find the folder, and then uses that information to find a file!!!!!! Currently focusing on allowing it to launch apps, so far it can launch notebook :)."}, {"post_id": 19417, "ts": "2026-06-30T18:52:38Z", "hours": 0.6458, "text": "I am currently trying to give it access to make certain decisions to open tools for me. I successfully got it to open youtube for me!"}, {"post_id": 19337, "ts": "2026-06-30T16:49:45Z", "hours": 0.7617, "text": "Currently just finished linking a local model from Ollama, llama3, to my project in the terminal. I eventually want to end up developing my own model because I am not entirely satisfied with the power of this model but for right now this is going prettttttty well."}]...
|
Title: Project Prometheus by @leonardo_g_bracciale Title: Project Prometheus by @leonardo_g_bracciale | Stardance
Devlogs:
Currently just finished linking a local model from Ollama, llama3, to my project in the terminal. I eventually want to end up developing my own model because I am not entirely satisfied with the power of this model but for right now this is going prettttttty well.
I am currently trying to give it access to make certain decisions to open tools for me. I successfully got it to open youtube for me!
BIG NEWS!! So I completed some early tools, most of them being based on file management. I added support for the agent to make multiple tool calls as well if necessary. So essentially what it does is that it takes the user’s input, decides what tool to use, uses it, evaluates the result of the tool against the user’s original request and decides if it has sufficient information to respond to the user’s request or if it needs more tool calls. In this scenario, the user asks to find a file in a folder. The model first uses the search_projects tool to find the folder, and then uses that information to find a file!!!!!! Currently focusing on allowing it to launch apps, so far it can launch notebook :).
I made it so it can launch apps for me! The process goes something like this: User Input -> AI decides if it needs tool and what tool to use -> Tool Output -> AI takes output and decides if its sufficient or it needs another tool -> Tool result or final response -> final response. Reallllly happy with this new update to it.
I am trying to give it functionality to add stuff to files and it worked but it’s still rather shaky. I mean at least it worked!!!!! The debugging on this is veryyyyyy annoying. I still don’t know why it is putting “Your final answer here” in chat all the time but I am going to fix it!
BIIIIIIIG NEWS!!!!! The terminal response says it all , but the logic is working very well. Just fixed the little bug at the end where the model returned too JSON messages so that should go away, but if you look at the top right of the image the test2.txt file actually generated. This means my model is using the tools correctly and is starting to get the hang of it. WHAT I LEARNED: building the prompt you send to the model after each user input is VERYYYY important. You kind of have to spoon feed models information, or else they don’t know what to do. ESPECIALLLLY with a smaller model. EDIT: I also changed models to a slightly bigger one from Ollama, the gemma3:12b model. I highly recommend Ollama for projects such as this, as it is free to download and run a tonnnnnn of local models on it. This is a list of all of the models that are available: https://ollama.com/library .
I know this is just a huge block of text but we’re actually getting somewhere!!!!!! The model can know reason after tool results and use that to generate responses!!!! It’s a rather simple thing but important. For example, in one of my tests I asked it to create a file called numbers.txt and put the numbers 1,2,3,4,5 in it. Then I asked it to read the file and tell me the sum. The flow looks like this: Input -> Tool Call(write_file) -> process tool result and check against original user input -> Tool Call(read_file) -> process tool result -> check against original user request -> reasoning -> response!!!! EDIT: the screenshot is an image of the results of some tests I ran.
LONG-TERM MEMORY!!!!! Well kind of…. I added a way for the model to remember information between sessions, but there is a caveat. The user has to tell the model in the first place that it should remember something. Otherwise that information will be stored in RAM and be wiped when restarting the program. Unless specifically prompted, the model won’t use the remember tool to store information. But this is still pretttttttty nice. All memory is stored in a memory.json file which the model can access and search through to find stuff.
I am improving the long-term memory but it overall seems to be going fine. I added a way to prevent the conversation history from overflowing, which comes in the form of an if-statement in my main loop to check how large the conversation has gotten, and if it has passed 100 messages, it summarizes the oldest 50 but keeps the newer 50. I am noticing however that my computer has started slowing down considerably when making post requests to the model. I think I am going to try to find a way to stop using such a large context window but this has gotten rather out of hand. I do want this to be accessible to the average person, so I intend to somehow lessen the load when running locally. Saying this, at this time I am not sure how yet so I am going to have to go research that.
THIS TOOK FOREVERRRRRRRRRRRRRR. What I did is I made it so the model went from getting the User’s input and guessing on what to do next each iteration to making a predetermined plan and then each iteration would complete a step of the plan and that would be notified to the model, then it works on the next step of the plan and so forth. The terminal output associated with this Devlog would definitely help explain this a little more. To summarize though, I basically revamped the architecture of program to make it so that each time a request is made by the User, the model makes a plan of execution in steps and then iterates through the plan to complete the request.
MEMORY SYSTEM OVERHAUL. Alright for those following along, I previously had a system where I would store memory inside a JSON file. However, I have been researching how real agents store memory and they seem to do it very differently. In short, they store memory by embedding text into a vector. This process is done by turning a string into a vector with 800+ dimensions, like: <v1, v2, v3……. v800>. This way the model can find similar meaning setences, ideas, etc. using what it does best, numbers. It matches the vector to the next closest vectors to it when searching through memory. This makes finding things in memory wayyyyyyyyyyyy easier and faster because the model can both find stuff in memory that may not have any matching keywords but mean the same thing(like “I am broke” and “I have no money” would be plotted next to each other even though the main keywords aren’t shared between each other, this is a rough example though) and it can also do it in a way more efficient manner. This is called semantic searching(searching by meaning, not keywords). I also have an SQLite database, mostly used for project data. The model stores stuff like project id and summaries about projects in neat, clean rows. This helps the model find stuff better because it can now search by id, but it also makes it easier for me to see stuff :).
A LOT HAS CHANGED. Alright so I realized my current capabilities couldn’t make the project I wanted so I used a coding LLM from Nvidia to help. It wrote the entire frontend for me because I have noooooooo clue how to write a frontend. It also modernized how messages are displayed to the user. So for those that don’t know, tokens are essentially parts of words, 1 token being around 3/4th’s of a word. In the past, the model would generate tokens and then deliver them all at once in one output. However, the appearance to the user was that the program was freezing up because after putting in their input nothing happened. This make it so text appears in realtime, or well close to it, as the LLM is making a response.
Stuck :(: I don’t know how to write a frontend so I am trying to get Claude to do it but it’s just not giving me what I want. it has been going on like this for a while now which sucks. I think I might just release a terminal version at this point and ship on Stardance....
|
1792518756.019316
|
1793123556.019316
|
|
32967
|
Dionysiaca by @anujkishan918 | Stardance
|
anujkishan918
|
0
|
74.07
|
0
|
[]
|
[{"post_id": 34155, "ts": "202 [{"post_id": 34155, "ts": "2026-07-24T17:40:51Z", "hours": 7.9667, "text": "Final Devlog(hopefully :) ):This project taught me a lot more than just how to use Godot.When I started, I thought game development was mostly about writing code and making mechanics work. Somewhere along the way, I realized it’s just as much about knowing when to simplify, when to step away, and when to stop chasing the “perfect” feature.There were days when everything clicked and I made more progress than I expected. There were also days where I spent hours fixing one tiny bug, hit burnout, or even forgot to post a devlog and paid the price for it. Looking back, those moments are just as much a part of this project as the finished features.I’m really happy with where the game is now. It’s gone from a few scattered ideas to something you can actually play, with combat, enemies, checkpoints, UI, and a world that finally feels alive. I even managed to hide a little Easter egg that I hope someone smiles at when they find it.This definitely isn’t the end of the project,just the end of this chapter. More than anything, I’m a lot more confident in Godot and in my ability to build something from scratch."}, {"post_id": 33597, "ts": "2026-07-23T17:29:46Z", "hours": 15.4361, "text": "Devlog #8I completely forgot to post yesterday’s devlog, and that mistake ended up costing me 5 hours. It was definitely frustrating, but I guess that’s part of sticking to a challenge like this—building the game is only half the job, documenting the journey matters too.On the development side, I made good progress despite the setback. I refactored parts of the enemy AI state machine to make transitions between Patrol, Chase, and Attack states more reliable, reducing animation glitches during combat. I also fine-tuned hitbox timings and attack cooldowns so enemy encounters feel more responsive and fair. Along the way, I fixed a few collision issues where enemies could occasionally get stuck against TileMap edges.To keep the project maintainable, I reorganized several scenes and scripts, reducing duplicate logic and making it easier to add future enemy types. It wasn’t the most exciting work, but it made the codebase much cleaner.Losing five hours hurt, but the game itself is in a much stronger state than it was a few days ago. Every bug fixed and every system cleaned up is another step toward the first playable milestone."}, {"post_id": 30265, "ts": "2026-07-17T18:13:14Z", "hours": 8.0667, "text": "Devlog #7: Today felt like a turning point after the slowdown earlier this week. With the scope now under control, I was able to focus on making meaningful progress instead of constantly jumping between unfinished features.I expanded Level 1 by adding new combat encounters and refining enemy placement to create a smoother difficulty curve. I also continued polishing the combat system by improving attack responsiveness, animation transitions, and enemy interactions, making each fight feel more satisfying and consistent.Beyond gameplay, I cleaned up parts of the project structure, removing temporary code and reorganizing scenes to make future development easier. It’s one of those changes players will never notice, but it makes a huge difference when building and maintaining the game.For the first time, the game feels like a complete vertical slice rather than a collection of separate systems. There’s still plenty to build, but the foundation is solid, and I’m getting closer to the first milestone with every session."}, {"post_id": 29595, "ts": "2026-07-16T17:10:18Z", "hours": 6.8856, "text": "Devlog #6The past two days have been rough. I hit a pretty major burnout, which I guess is just part of being a maker. I got caught up trying to implement too many features at once, and instead of making steady progress, I ended up overwhelming myself. To top it off, I lost my 17-day streak, which was a little frustrating.Oddly enough, watching Project Hail Mary helped me reset my mindset. The optimism and overall vibe of the movie reminded me why I enjoy building things in the first place. Sometimes stepping away for a bit is exactly what you need.With a clearer head, I decided to scale back a few features and focus on what actually matters for the first milestone. That decision has made development feel much more manageable, and I genuinely think the game is now very close to reaching that milestone.I also snuck in a small secret Easter egg that I hope players discover and enjoy. It’s a tiny detail, but I think little surprises like that make a game feel more memorable."}, {"post_id": 27774, "ts": "2026-07-13T16:59:42Z", "hours": 1.2333, "text": "Devlog #5 Not a huge development day, but I made some quality-of-life improvements. I designed the game’s starting UI and also refined the existing boss fight interface to make it cleaner and more consistent with the overall visual style. Small UI changes like these go a long way in making the game feel more polished.Tomorrow, I’ll get back to gameplay development and continue working on Level 1."}, {"post_id": 27275, "ts": "2026-07-12T18:28:19Z", "hours": 8.6497, "text": "Devlog #4Today’s work was focused on refining the first combat encounter rather than adding lots of new content. I expanded the enemy AI by improving its patrol and chase behavior, making transitions between states much smoother and more predictable. I also spent time adjusting hitboxes, attack ranges, and movement speeds so fights feel fair while still requiring good timing from the player.I added the first environmental obstacle to the level and made sure it integrates correctly with the existing TileMap and collision layers. Most of the day, however, was spent debugging. Small issues like animation interruptions, collision edge cases, and state transitions took longer than expected, but fixing them has made the gameplay feel noticeably more polished.While Level 1 is still a work in progress, each iteration is making the core gameplay loop more enjoyable. My next goal is to add another enemy type and continue building out the encounters so the level gradually introduces more challenging combat scenarios."}, {"post_id": 26694, "ts": "2026-07-11T17:12:22Z", "hours": 9.2842, "text": "Today was all about bringing Level 1 to life. After finishing the layout yesterday, I shifted my focus from building the environment to implementing gameplay. I integrated the first enemy into the level, created its AI state machine, and connected it to the player’s combat system so encounters now feel like actual gameplay instead of isolated mechanics.A significant part of the day went into tuning collision detection, attack timing, and animation synchronization. Since the player now has both light and charged heavy attacks, I had to ensure the enemy reacts correctly to different attack windows without breaking the animation flow. I also refined the checkpoint logic so the shrine is now properly integrated into the gameplay loop.What I’m happiest about is that the project is finally starting to feel like a game rather than a collection of individual systems. The combat, movement, checkpoint, and level all exist together in a single playable experience. Tomorrow I’ll focus on expanding enemy behavior, adding more encounters, and introducing environmental obstacles to improve the pacing and challenge of Level 1."}, {"post_id": 26104, "ts": "2026-07-10T18:06:59Z", "hours": 8.6167, "text": "Today was one of my biggest learning days with Godot so far. I spent most of my time understanding how the engine handles player mechanics, animation state transitions, and level construction, and I am very happy with the progress I made.The achievement I’m most proud of today was creating and integrating a completely new charged heavy attack for the player. Instead of simply reusing an existing animation, I designed a custom pixel-art sprite sheet that matches the style of the rest of the character animations and successfully integrated it into my animation state machine. I updated the player controller to support a dedicated HEAVY_ATTACK state with its own animation timing, input handling, and state transitions, ensuring it behaves independently from the normal attack combo while remaining compatible with the rest of the combat system.On the level design side, I completed the entire layout for Level 1 using Godot’s TileMap system. This involved constructing the full traversable floor, shaping the terrain, and ensuring the level can support future gameplay systems such as combat encounters, checkpoints, and environmental hazards. Moving to a TileMap-based workflow has already made level creation significantly more efficient and scalable compared to manually placing collision objects.Although the level is not yet populated with enemies, I implemented the first checkpoint by placing a shrine/statue that will serve as the player’s respawn point. Since checkpoint systems are a core part of Souls-inspired games, getting this foundation in place was an important milestone for the overall gameplay loop.Tomorrow’s goal is to begin populating the level with enemy AI, obstacles, and combat encounters. Once those systems are in place, Level 1 will become fully playable from start to finish, allowing me to start balancing exploration, difficulty progression, and combat pacing."}, {"post_id": 25350, "ts": "2026-07-09T16:12:56Z", "hours": 7.9333, "text": "Devlog #1 — Finally Starting My First Godot GameI’ve finally started working on my first 2D pixel art game with Godot. The idea for this game has been in my head for a long time. It’s based on a part of Greek mythology that doesn’t get talked about very often, and I’ve wanted to turn that story into a game for years. But before I could even think about making that game properly, I knew I first had to learn how to make games.Most of my time this week actually wasn’t spent inside Godot. It went into all the background work that people usually don’t see. I spent hours finding, generating, and organizing pixel art assets, making sure they worked well together and were all roughly the same style and scale. I sorted everything into folders for characters, enemies, tilesets, UI, backgrounds, and animations so the project wouldn’t become a mess later on.Learning Godot was honestly harder than I expected. I watched quite a few YouTube tutorials and read different guides, but I always felt like I was just copying what someone else was doing instead of understanding it. What finally helped was Godot’s own Learn to Code with Godot course/app and this one is really hands on . It starts with the basics and slowly introduces GDScript, nodes, scenes, signals, variables, loops, and functions. After working through it, I finally felt like I understood why things worked instead of just memorizing code.Once I felt comfortable enough, I created the project, imported all of my assets, set up the project for pixel-perfect rendering, and gave it a temporary (very goofy) name that will definitely change later. I also built a simple title screen and a basic HUD. One of my favorite moments was getting the menus fully navigable with just the keyboard—it made the game feel like an actual game instead of just a collection of sprites on the screen.This first milestone wasn’t really about gameplay. It was about building a solid starting point and getting familiar with Godot’s workflow. Even though there isn’t much to “play” yet, I learned a lot about how scenes are structured, how nodes fit together, and how everything in Godot connects.Next, I’m moving on to the second milestone, where the real fun begins. The plan is to build the first playable side-scrolling level inspired by games like Dead Cells. I’ll be focusing on the core mechanics player movement, jumping, collisions, animations, camera movement, enemy behavior, combat, and interactions. If I can get those systems feeling good, I’ll have a strong foundation to start building the rest of the game on."}]...
|
Title: Dionysiaca by @anujkishan918 | Stardance
D Title: Dionysiaca by @anujkishan918 | Stardance
Devlogs:
Devlog #1 — Finally Starting My First Godot GameI’ve finally started working on my first 2D pixel art game with Godot. The idea for this game has been in my head for a long time. It’s based on a part of Greek mythology that doesn’t get talked about very often, and I’ve wanted to turn that story into a game for years. But before I could even think about making that game properly, I knew I first had to learn how to make games.Most of my time this week actually wasn’t spent inside Godot. It went into all the background work that people usually don’t see. I spent hours finding, generating, and organizing pixel art assets, making sure they worked well together and were all roughly the same style and scale. I sorted everything into folders for characters, enemies, tilesets, UI, backgrounds, and animations so the project wouldn’t become a mess later on.Learning Godot was honestly harder than I expected. I watched quite a few YouTube tutorials and read different guides, but I always felt like I was just copying what someone else was doing instead of understanding it. What finally helped was Godot’s own Learn to Code with Godot course/app and this one is really hands on . It starts with the basics and slowly introduces GDScript, nodes, scenes, signals, variables, loops, and functions. After working through it, I finally felt like I understood why things worked instead of just memorizing code.Once I felt comfortable enough, I created the project, imported all of my assets, set up the project for pixel-perfect rendering, and gave it a temporary (very goofy) name that will definitely change later. I also built a simple title screen and a basic HUD. One of my favorite moments was getting the menus fully navigable with just the keyboard—it made the game feel like an actual game instead of just a collection of sprites on the screen.This first milestone wasn’t really about gameplay. It was about building a solid starting point and getting familiar with Godot’s workflow. Even though there isn’t much to “play” yet, I learned a lot about how scenes are structured, how nodes fit together, and how everything in Godot connects.Next, I’m moving on to the second milestone, where the real fun begins. The plan is to build the first playable side-scrolling level inspired by games like Dead Cells. I’ll be focusing on the core mechanics player movement, jumping, collisions, animations, camera movement, enemy behavior, combat, and interactions. If I can get those systems feeling good, I’ll have a strong foundation to start building the rest of the game on.
Today was one of my biggest learning days with Godot so far. I spent most of my time understanding how the engine handles player mechanics, animation state transitions, and level construction, and I am very happy with the progress I made.The achievement I’m most proud of today was creating and integrating a completely new charged heavy attack for the player. Instead of simply reusing an existing animation, I designed a custom pixel-art sprite sheet that matches the style of the rest of the character animations and successfully integrated it into my animation state machine. I updated the player controller to support a dedicated HEAVY_ATTACK state with its own animation timing, input handling, and state transitions, ensuring it behaves independently from the normal attack combo while remaining compatible with the rest of the combat system.On the level design side, I completed the entire layout for Level 1 using Godot’s TileMap system. This involved constructing the full traversable floor, shaping the terrain, and ensuring the level can support future gameplay systems such as combat encounters, checkpoints, and environmental hazards. Moving to a TileMap-based workflow has already made level creation significantly more efficient and scalable compared to manually placing collision objects.Although the level is not yet populated with enemies, I implemented the first checkpoint by placing a shrine/statue that will serve as the player’s respawn point. Since checkpoint systems are a core part of Souls-inspired games, getting this foundation in place was an important milestone for the overall gameplay loop.Tomorrow’s goal is to begin populating the level with enemy AI, obstacles, and combat encounters. Once those systems are in place, Level 1 will become fully playable from start to finish, allowing me to start balancing exploration, difficulty progression, and combat pacing.
Today was all about bringing Level 1 to life. After finishing the layout yesterday, I shifted my focus from building the environment to implementing gameplay. I integrated the first enemy into the level, created its AI state machine, and connected it to the player’s combat system so encounters now feel like actual gameplay instead of isolated mechanics.A significant part of the day went into tuning collision detection, attack timing, and animation synchronization. Since the player now has both light and charged heavy attacks, I had to ensure the enemy reacts correctly to different attack windows without breaking the animation flow. I also refined the checkpoint logic so the shrine is now properly integrated into the gameplay loop.What I’m happiest about is that the project is finally starting to feel like a game rather than a collection of individual systems. The combat, movement, checkpoint, and level all exist together in a single playable experience. Tomorrow I’ll focus on expanding enemy behavior, adding more encounters, and introducing environmental obstacles to improve the pacing and challenge of Level 1.
Devlog #4Today’s work was focused on refining the first combat encounter rather than adding lots of new content. I expanded the enemy AI by improving its patrol and chase behavior, making transitions between states much smoother and more predictable. I also spent time adjusting hitboxes, attack ranges, and movement speeds so fights feel fair while still requiring good timing from the player.I added the first environmental obstacle to the level and made sure it integrates correctly with the existing TileMap and collision layers. Most of the day, however, was spent debugging. Small issues like animation interruptions, collision edge cases, and state transitions took longer than expected, but fixing them has made the gameplay feel noticeably more polished.While Level 1 is still a work in progress, each iteration is making the core gameplay loop more enjoyable. My next goal is to add another enemy type and continue building out the encounters so the level gradually introduces more challenging combat scenarios.
Devlog #5 Not a huge development day, but I made some quality-of-life improvements. I designed the game’s starting UI and also refined the existing boss fight interface to make it cleaner and more consistent with the overall visual style. Small UI changes like these go a long way in making the game feel more polished.Tomorrow, I’ll get back to gameplay development and continue working on Level 1.
Devlog #6The past two days have been rough. I hit a pretty major burnout, which I guess is just part of being a maker. I got caught up trying to implement too many features at once, and instead of making steady progress, I ended up overwhelming myself. To top it off, I lost my 17-day streak, which was a little frustrating.Oddly enough, watching Project Hail Mary helped me reset my mindset. The optimism and overall vibe of the movie reminded me why I enjoy building things in the first place. Sometimes stepping away for a bit is exactly what you need.With a clearer head, I decided to scale back a few features and focus on what actually matters for the first milestone. That decision has made development feel much more manageable, and I genuinely think the game is now very close to reaching that milestone.I also snuck in a small secret Easter egg that I hope players discover and enjoy. It’s a tiny detail, but I think little surprises like that make a game feel more memorable.
Devlog #7: Today felt like a turning point after the slowdown earlier this week. With the scope now under control, I was able to focus on making meaningful progress instead of constantly jumping between unfinished features.I expanded Level 1 by adding new combat encounters and refining enemy placement to create a smoother difficulty curve. I also continued polishing the combat system by improving attack responsiveness, animation transitions, and enemy interactions, making each fight feel more satisfying and consistent.Beyond gameplay, I cleaned up parts of the project structure, removing temporary code and reorganizing scenes to make future development easier. It’s one of those changes players will never notice, but it makes a huge difference when building and maintaining the game.For the first time, the game feels like a complete vertical slice rather than a collection of separate systems. There’s still plenty to build, but the foundation is solid, and I’m getting closer to the first milestone with every session.
Devlog #8I completely forgot to post yesterday’s devlog, and that mistake ended up costing me 5 hours. It was definitely frustrating, but I guess that’s part of sticking to a challenge like this—building the game is only half the job, documenting the journey matters too.On the development side, I made good progress despite the setback. I refactored parts of the enemy AI state machine to make transitions between Patrol, Chase, and Attack states more reliable, reducing animation glitches during combat. I also fine-tuned hitbox timings and attack cooldowns so enemy encounters feel more responsive and fair. Along the way, I fixed a few collision issues where enemies could occasionally get stuck against TileMap edges.To keep the project maintainable, I reorganized several scenes and scripts, reducing duplicate logic and making it easier to add future enemy types. It wasn’t the most exciting work, but it made the codebase much cleaner.Losing five hours hurt, but the game itself is in a much stronger state than it was a few days ago. Every bug fixed and every system cleaned up is another step toward the first playable milestone.
Final Devlog(hopefully :) ):This project taught me a lot more than just how to use Godot.When I started, I thought game development was mostly about writing code and making mechanics work. Somewhere along the way, I realized it’s just as much about knowing when to simplify, when to step away, and when to stop chasing the “perfect” feature.There were days when everything clicked and I made more progress than I expected. There were also days where I spent hours fixing one tiny bug, hit burnout, or even forgot to post a devlog and paid the price for it. Looking back, those moments are just as much a part of this project as the finished features.I’m really happy with where the game is now. It’s gone from a few scattered ideas to something you can actually play, with combat, enemies, checkpoints, UI, and a world that finally feels alive. I even managed to hide a little Easter egg that I hope someone smiles at when they find it.This definitely isn’t the end of the project,just the end of this chapter. More than anything, I’m a lot more confident in Godot and in my ability to build something from scratch....
|
1792940076.0374951
|
1793804076.0374951
|
|
369
|
Macro | Self hosting for beginners! by @sudo | Sta Macro | Self hosting for beginners! by @sudo | Stardance...
|
sudo
|
1
|
74.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T21:15:58Z", "hours": 74.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I got to admit, I did get kind of lazy in the end when I used AI to finish it, but I thought it was a cool project.", "repo": "https://github.com/blueprintnerd/Macro", "demo": "https://github.com/blueprintnerd/Macro/releases"}]...
|
[{"post_id": 19504, "ts": "202 [{"post_id": 19504, "ts": "2026-06-30T20:36:00Z", "hours": 0.4108, "text": "finished. shipping"}, {"post_id": 19272, "ts": "2026-06-30T15:18:17Z", "hours": 14.9336, "text": "Finally almost finished. It’s june 30th, and new month new project so I’m going to put this project on hold and work on my other one. I designed a new logo for Macro, but I need to refine it (Currently kind of chopped)"}, {"post_id": 14790, "ts": "2026-06-24T01:01:33Z", "hours": 8.1036, "text": "I finished with the setup for my app. it took forever, but here’s what i did: First, you enter an IP address (to manage another comptuer). I’ve made the app automatically scan all of the computer’s ports to find the ports that Macro are on. For the setup, I’ve basically implemented changed the entire thing. it installs prerequisites, and then after that, you add your filepaths, choose a search backend, and then it automatically create a background process"}, {"post_id": 13387, "ts": "2026-06-21T22:41:40Z", "hours": 10.4611, "text": "I deleted everything and started over. I used Gemini CLI once and then it’s like the first time you use AI it starts snowballing. I got rid of everything and I started by focusing on the setup. I proudly spent 5 hours working on a welcome screen. I used a textual UI, which was somewhat easy y implement. The hard part was implementing the connections to the server. I created a somewhat user friendly UI and I unified everything into one platform. The manager is now used to manage macro servers and create one, and all of the clients are now web hosted"}, {"post_id": 11003, "ts": "2026-06-18T00:57:40Z", "hours": 10.2319, "text": "Today I implemented a new website and Ive restructured the entire thing to be half web based so you don’t have to only have another laptop to use it. I was going to test it but I’ll have to make time for it. as it turns out there is a huge difference between the iPad Pro and base iPad, so my browser froze as soon as I tried opening live preview. I’ll do all this again tomorrow lol ✌️"}, {"post_id": 7121, "ts": "2026-06-11T22:02:41Z", "hours": 5.0997, "text": "I learned I was nowhere near done at all. I basically need to switch the UI library to be compatible with the system I’m using, and I still have to write the clients for the server. I only have one app that’s halfway done, and that’s the music client. I still have a lot to do, along with that, Google is going to discontinue firebase spark for no reason except that anytime they realize that users like an app, they either discontinue it or make it worse with ads"}, {"post_id": 6525, "ts": "2026-06-10T23:35:44Z", "hours": 5.0561, "text": "Ididntget much done because my laptop was broken and I didn’t have a way to test my apps in firebase studio but i a tried to add an authentication system that uses the client API to automatically authenticate users"}, {"post_id": 6125, "ts": "2026-06-10T09:30:54Z", "hours": 2.2461, "text": "So I kind of broke my only laptop but it’s all chill because I have an iPad."}, {"post_id": 5628, "ts": "2026-06-09T14:36:19Z", "hours": 4.1578, "text": "I started working on the music client (there are 4) and I decided to go with a unconventional architecture for this one this time. Instead of having the now playing screen link with the app like a normal person, I have a API to handle it. I have multiple endpoints to play/pause/otherwise control music and the API can provide the song progress and name. As you can see, the UI is quite ugly. I’ll have to start theming the screens today"}, {"post_id": 4227, "ts": "2026-06-07T13:53:12Z", "hours": 5.3772, "text": "I created a basic client to test out the API with, I don’t mean for it to ship with this client. I’m just doing it. I’ve decided on a file numbering system, where each file gets its own number. if a file is deleted, it’s number is kept and marked as deleted until a file with the same metadata returns. I got some errors when I was going to screenshot my code, but since I don’t work on sundays, I can’t fix it until monday. I got rid of the splash screen because I realized people don’t want to see it."}, {"post_id": 2672, "ts": "2026-06-05T10:51:00Z", "hours": 6.9425, "text": "I’m creating a free plex alternative. I’ve always wanted to get into self hosting and stuff, and now that stardance is starting, now is my chance to create my app and ditch streaming like I’ve wanted to do. I’m thinking like one app can be photos, another for videos, one for music, and one for storage. it sounds like a good idea in theory but it might be hard to implement. Anyway, with flavortown I had good project ideas but the implementation and design weren’t all there, so this time around I’m going to focus only on that. This will likely be my only project this time around so I’m going to make it my best one. I haven’t got much done, because I’ve been studying topics and stuff but here I have the setup screen. I’m taking inspiration from Google’s material design 3 for the aesthetic."}, {"post_id": 332, "ts": "2026-06-01T17:05:33Z", "hours": 1.0647, "text": "I designed a splash screen for my app’s server counterpart"}]...
|
Title: Macro | Self hosting for beginners! by @sud Title: Macro | Self hosting for beginners! by @sudo | Stardance
Devlogs:
I designed a splash screen for my app’s server counterpart
I’m creating a free plex alternative. I’ve always wanted to get into self hosting and stuff, and now that stardance is starting, now is my chance to create my app and ditch streaming like I’ve wanted to do. I’m thinking like one app can be photos, another for videos, one for music, and one for storage. it sounds like a good idea in theory but it might be hard to implement. Anyway, with flavortown I had good project ideas but the implementation and design weren’t all there, so this time around I’m going to focus only on that. This will likely be my only project this time around so I’m going to make it my best one. I haven’t got much done, because I’ve been studying topics and stuff but here I have the setup screen. I’m taking inspiration from Google’s material design 3 for the aesthetic.
I created a basic client to test out the API with, I don’t mean for it to ship with this client. I’m just doing it. I’ve decided on a file numbering system, where each file gets its own number. if a file is deleted, it’s number is kept and marked as deleted until a file with the same metadata returns. I got some errors when I was going to screenshot my code, but since I don’t work on sundays, I can’t fix it until monday. I got rid of the splash screen because I realized people don’t want to see it.
I started working on the music client (there are 4) and I decided to go with a unconventional architecture for this one this time. Instead of having the now playing screen link with the app like a normal person, I have a API to handle it. I have multiple endpoints to play/pause/otherwise control music and the API can provide the song progress and name. As you can see, the UI is quite ugly. I’ll have to start theming the screens today
So I kind of broke my only laptop but it’s all chill because I have an iPad.
Ididntget much done because my laptop was broken and I didn’t have a way to test my apps in firebase studio but i a tried to add an authentication system that uses the client API to automatically authenticate users
I learned I was nowhere near done at all. I basically need to switch the UI library to be compatible with the system I’m using, and I still have to write the clients for the server. I only have one app that’s halfway done, and that’s the music client. I still have a lot to do, along with that, Google is going to discontinue firebase spark for no reason except that anytime they realize that users like an app, they either discontinue it or make it worse with ads
Today I implemented a new website and Ive restructured the entire thing to be half web based so you don’t have to only have another laptop to use it. I was going to test it but I’ll have to make time for it. as it turns out there is a huge difference between the iPad Pro and base iPad, so my browser froze as soon as I tried opening live preview. I’ll do all this again tomorrow lol ✌️
I deleted everything and started over. I used Gemini CLI once and then it’s like the first time you use AI it starts snowballing. I got rid of everything and I started by focusing on the setup. I proudly spent 5 hours working on a welcome screen. I used a textual UI, which was somewhat easy y implement. The hard part was implementing the connections to the server. I created a somewhat user friendly UI and I unified everything into one platform. The manager is now used to manage macro servers and create one, and all of the clients are now web hosted
I finished with the setup for my app. it took forever, but here’s what i did: First, you enter an IP address (to manage another comptuer). I’ve made the app automatically scan all of the computer’s ports to find the ports that Macro are on. For the setup, I’ve basically implemented changed the entire thing. it installs prerequisites, and then after that, you add your filepaths, choose a search backend, and then it automatically create a background process
Finally almost finished. It’s june 30th, and new month new project so I’m going to put this project on hold and work on my other one. I designed a new logo for Macro, but I need to refine it (Currently kind of chopped)
finished. shipping
Ships:
I got to admit, I did get kind of lazy in the end when I used AI to finish it, but I thought it was a cool project....
|
1793000878.6084008
|
1793087278.6084008
|
|
1029
|
Origin Engine by @aloyak | Stardance
|
aloyak
|
1
|
74.0
|
1696
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T14:54:41Z", "hours": 74.0, "multiplier": 19.01, "payout": 1696, "blessing": "neutral", "text": "I made a custom game engine from scratch! it has a fast opengl pixelart renderer, builtin physics, lighting, an entity-component system, a spatial audio system, terrain system, it can load and save scenes on the fly, supports many 3d asset extensions… Its what i used to create my other big project! (JSP) the engine is cross-platform and works right out of the box for linux, windows and web!! and also it comes with a lightweight level editor and ive also made a website for it Hope you like it!! made with <3 from @aloyak", "repo": "https://github.com/aloyak/origin", "demo": "https://origin.aloyak.dev/"}]...
|
[{"post_id": 57380, "ts": "202 [{"post_id": 57380, "ts": "2026-08-29T14:44:05Z", "hours": 5.4342, "text": "ORIGIN ENGINE version 0.19.3 First ship is coming up soon! Even tho ive been working on really exciting stuff, i really would like to focus on actually learning and having a deep enough understanding of vulkan and other stuff like the best engine’s architecture before actually logging and building something open and usable, thats why i feel this is a good place to finally ship this project as it is and maybe come back to it at some point Pre-ship checklist! I’ve updated the website! now you have a few new sections with new information like the game i build using this engine and other cool stuff! published a new version to the github releases page (0.19.3 i think), with the binaries for the demo game and the sandbox for both windows and linux! the web build is still there on the website but it is marked as legacy tho Its been super fun to work on this and ive learnt a lot but i really really really think i could make something so much better with all the knowledge i now have and with some serious research, this is pretty much what ive explained in most of all the previous devlogs (the last 2 or 3) I’ve been working on applying some of the stuff ive been working on to the engine, like the new renderer class its now pretty much ported nicely! ive also tested that everything worked cross platform and yay! the project is very ready to hold any new game or project you might wanna do with it, although i might wanna make a quick tutorial on how to work with the engine on a github repo cuz its not very intuitive Known issue I’ve been trying to add support to the engine for builtin shaders but ive realized that its a super deeper problem than what i was expecting, id honestly do something like making all the shaders be done with something like slang and then compile them to spirv without any glsl intermediary PD: the video you see is a demo scene you can find at assets/scenes/physics.scene if you wanna try it by yourself!!!"}, {"post_id": 54613, "ts": "2026-08-25T17:11:59Z", "hours": 10.0381, "text": "ORIGIN ENGINE I’ve finally managed to port enough of the original engine to setup an imgui layer to have this little built-in launcher! it currently only works when using opengl, but its completely supported by both the windowing backends (glfw & sdl3) Its hard to make videos like this on a steamdeck so please like lol. Other stuff I completely restructured the new engine architecture to be a layered system, the engine holds a stack of layers and updates them independently! each layer holds stuff like OnAttach OnLateUpdate OnEvent etc, which is a much better approach compared to what we had before! I created a completely new custom file system, as the sandbox and games use completely different files and base directories, you can now mount/dismount different “aliases” for each program, so you can find your assets easily with custom virtual paths like sandbox://settings.json or project://scenes/scene.json Literally ported the scene/entity system right from the previous version, but it is a lot smaller currently, because the previous one wasnt really good, we now can load scenes from a file but now those get added to a scene stack, which is a lot more efficient if you wanna load them again! Overall the project’s code quality is so much better too!! After these bases are set im gonna be focusing on getting a full render layer working with at least opengl, even tho the vulkan renderer is already setup… PD: Origin Zero is just the new “protoype” name i gave it, just like with when i started this project i called it Origin “Zeus” lmao"}, {"post_id": 53290, "ts": "2026-08-23T19:02:52Z", "hours": 9.1458, "text": "ORIGIN ENGINE I’m sorry in advance that these and probably the next few devlogs wont have very exiting things or new and awesome information but sometimes you gotta focus on boring structural stuff that its just not really fun… The new Project-Based System The engine is now very dependent on the sandbox editor, sort of like a symbiotic relationship between the sandbox and your code editor, because thats where you will not only handle your assets but also play the game. The previous version just had the sandbox to be a tiny map editor tool that not even i would use half of the time The project (also called environment) then would have its own “environment” literally where all your assets would be included, with very little naming restrictions, this would make working on the project super easy and itd be easy too to use git with it (maybe build a builtin git UI??? it could be cool) I’ve already built the base for it and I’ve already added support for ImGui only for the OpenGL backend, i was thinking of adding a different UI system but this one will do for now :))"}, {"post_id": 51278, "ts": "2026-08-20T20:19:45Z", "hours": 8.3647, "text": "ORIGIN ENGINE A NEW UPDATE! I’m building a huge update for the origin engine! it might even be considered a new engine all together. The same philosophy is still there but I’m re-writting and refactoring the base structure of the whole engine. For now this refactor is close source tho, ill publish it once its ready for ship! What we currently have: I have the structure already though: A new project-based system where all the shader compilation and asset handling is done for each project, this + a simple abstraction layer should allow the sandbox to be a hugely more important tool as you will be able to play your game right in the editor! Compile time switch between SDL3 or GLFW for windowing, input is not yet “ported” if you consider it that way What i wanna add but may be difficult Runtime api switching between OpenGL, Vulkan and DirectX3D 11. even tho for now i have a super basic abstraction layer and only opengl is even able to initialize so….. maybe too hard i hope i manage to do it tho , was thinking of doing a similar thing for switching between physics engines like bullet3, physicsX or Box3D, this is very much in the future of course Project export/ editor previews This is a major step and im learning a lot!! but its very difficult to handle new stuff like vulkan with other new c++ architectural stuff, hope it goes well"}, {"post_id": 50196, "ts": "2026-08-19T10:21:29Z", "hours": 7.615, "text": "ORIGIN ENGINE Another update to the best game engine there is that starts with the letter “O” (i think). Today’s devlog is small, bust most likely will be start of a new series of very much needed updates to the engine!. It’s important to note that most of the things ive been working on are not yet finished :(( New stuff! New things that are completely finished: Fix the sandbox UI, it was missing imgui flags from previous bug fixes i had to do because the docking branch of imgui was broken, they fixed it so i just rolled back! Cleaned up the rendering class, specially important for the new updates im working on, because im gonna need to do a hell lot of abstraction! Things im working on Im taking the current base of the engine to make a new “modular” system just for the love of the game, the most basic thing ive done is to allow the user to choose between SDL3 or GLFW for windowing, although input is currently only handled with SDL3 regardless…. There’s a lot of exiting stuff coming SOON^(TM), hope you like them!! (vulkan?, probably not lmfao) PD: yes! this is the origin engine running nicely in a steamdeck!!!"}, {"post_id": 41213, "ts": "2026-08-05T09:19:15Z", "hours": 6.7264, "text": "ORIGIN ENGINE Yippi another round of improvements to the best and certainty not over engineered game engine out there! Out of all the things ive been working on with the engine ive only really finished one, but it was rather a big change tho NEW input system I’ve added a new action-based input system that handles by itself connected devices (because we now support gamepads!!! ), input modes and preferences, keybinds and settings all in one simple system The new system instead of reading “raw” input from SDL3 now instead has a wrapper that sets all input to “actions”. All actions have assigned a certain key/button/axis etc… It allows you to use keyboard/mouse and gamepad all at the same time Games can now have support for handheld devices like your steamdeck! Support for precompiled shaders (GLSL -> SPV) This is still work in progress!! The engine itself supports the compiled GLSL files very quickly but the problem is to get those shaders to compile in the first place The shader class gets the relative path for the shader, before actually compiling it, it checks if theres a file with the same name but that ends with “.spv”, in that case it uses that one Right now theres not an easy utility script that will handle compilation for you, that needs to be done next!! Dynamically Chunked Terrain Collisions Very early and of course WIP, I still haven’t done much but i have a pretty good idea of how this will work: You bake the local position of all the vertex of a terrain model and then, when you require it, you get all the triangles close to the player in real time (with a basic “chunked” system), then Bullet3 generates that mesh collider rather quickly as the mesh is not so big (this will probably require multi-threading ). More on this on the next devlog Other small changes Fixed the sandbox not having docking enabled Added ImPlot3D to project, might use it at some point PD: This picture is from my other project that you should check out! It showcases the new terrain system (WIP)"}, {"post_id": 33210, "ts": "2026-07-22T22:17:42Z", "hours": 8.1519, "text": "ORIGIN ENGINE I’ve been adding some quality of life changes that make working with this engine a lot easier, which means more abstraction in some cases which is not always the best but whatever. Ive also worked very hard on fixing and improving the physics (even considered porting it to now use Box3D instead of Bullet3, but that will probably happen in the far future, and Bullet3 will be kept as a fallback) What have i been working on i see you ask? Added the ParentEntityComponent , a very simple work around for the lack of parent-child entities on my engine, this will probably be deprecated sooner or later but its a decent solution instead of doing all the work all at once Added GetRefreshRate to window class, so for example, your game can set the target fps based on this Changes to physics system (Bullet3) Fixed a super hard to find bug where models vertex and physics-engine vertex would have shifter coords and would make the objects act weird on real time, this is such a huge change, it makes physics really good to play with, see the video!! Added functions to apply force, impulse and torque to a dynamic rigidbody Added the teleport function for kinematic rigidbodies Added getLinearVelocity and getAngularVelocity Added options to freeze rotation on independent axis HUGE: allow the engine to support different physics worlds to live in one same game in real time! this needs some work tho, not featured in the video PD: This is getting super nice but also growing in complexity, once i finish with my game i will surely start improving the overall structure and start thinking about more serious changes, maybe another graphics api????"}, {"post_id": 27690, "ts": "2026-07-13T14:02:40Z", "hours": 9.3322, "text": "ORIGIN ENGINE Yippie! another update to the engine powering my game, i’ve added quite a lot of things but also managed to clean up some dead code in the way. The most excinting new thing is probably the new postprocessing layer system! this is what ive added in the past 3 weeks: Postprocessing layer: you can now code different vertex & fragment shaders that drawn on top of the main buffer, you can stack as many as youd like in order to create many new cool effects spent hours trying to fix the sandbox editor’s rendering being completely broken, took about 3-4 days lol added new getters to camera like a directly inversed view matrix or setMat4() and setTexture() functions with shaders add localToWorld() and worldToLocal() to the transform class fixed specular lighting leaking to some dark areas fix handle untextured materials in model import added a built-in user settings save/load system based on json serialization refactor a part of the audio system to now have built-in fade ins/out, volume control and async background music The biggest change coming up would probably be to develop a dynamic rendering system that allows me to use different cameras rendering at the same time, as I’ll probably need it for JSP PD: this engine is being used for my current main project (almost 100 hours!), please check it out! JSP: https://stardance.hackclub.com/projects/14066"}, {"post_id": 11317, "ts": "2026-06-18T14:52:15Z", "hours": 9.5539, "text": "ORIGIN ENGINE This is my custom engine that im using for my other big project, the Janitor Space Program (go check it out!: https://stardance.hackclub.com/projects/14066 ), most of these changes come from having to create or update an engine feature so that the game im building is easier and faster to develop, and in the meantime im also upgrading this engine to something more powerful and mature, although i feel like im making it also a bit more complex or spaghetti, ill work on that later over this last 2 weeks ive added so many features like: improved logging library, allows you to use formatting directly support for embedded textures in .fbx models added a lookAt() method to the camera component fixed web support for the audio system added more features and functions to the in-house math library, like the cross and dot products, a 4x4 Matrix and other small stuff scenes now can be either “.json” or “.scene” sandbox: shortcut to align an entity to the sandbox scene view camera added color tint to the skybox component added quick line rendering for fast debugging, probably needs refactoring tho added LateLoop() , which obviously happens after Loop() and its mainly used for UI and stuff added setTargetFps() so that gpu doesnt work to 100% if vsync is disabled changed the builtin shaders path to assets/shaders/builtin wip: added imgui support to the web builds Most relevant new features: added instanced rendering! still sort of a WIP added real-time texture editing, allows the cpu to have ownership of a texture instead of the gpu and do whatever it wants with it, currently just paint it wip: huge refactoring of the render class to allow for different postprocessing layers to render on top of each other with custom shaders, this allows for any kind of postprocessing effect to be made without much issue, i managed to get a simple vignette shader working quickly! the render class still needs some cleanup tho This was fun but if they gave me an euro for every seg fault ive endured elon musk would be small next to me. i love to see how this small side project i started long ago is now something a lot bigger than i expected, this literally started as a learnopengl tutorial :))"}]...
|
Title: Origin Engine by @aloyak | Stardance
Devlo Title: Origin Engine by @aloyak | Stardance
Devlogs:
ORIGIN ENGINE This is my custom engine that im using for my other big project, the Janitor Space Program (go check it out!: https://stardance.hackclub.com/projects/14066 ), most of these changes come from having to create or update an engine feature so that the game im building is easier and faster to develop, and in the meantime im also upgrading this engine to something more powerful and mature, although i feel like im making it also a bit more complex or spaghetti, ill work on that later over this last 2 weeks ive added so many features like: improved logging library, allows you to use formatting directly support for embedded textures in .fbx models added a lookAt() method to the camera component fixed web support for the audio system added more features and functions to the in-house math library, like the cross and dot products, a 4x4 Matrix and other small stuff scenes now can be either “.json” or “.scene” sandbox: shortcut to align an entity to the sandbox scene view camera added color tint to the skybox component added quick line rendering for fast debugging, probably needs refactoring tho added LateLoop() , which obviously happens after Loop() and its mainly used for UI and stuff added setTargetFps() so that gpu doesnt work to 100% if vsync is disabled changed the builtin shaders path to assets/shaders/builtin wip: added imgui support to the web builds Most relevant new features: added instanced rendering! still sort of a WIP added real-time texture editing, allows the cpu to have ownership of a texture instead of the gpu and do whatever it wants with it, currently just paint it wip: huge refactoring of the render class to allow for different postprocessing layers to render on top of each other with custom shaders, this allows for any kind of postprocessing effect to be made without much issue, i managed to get a simple vignette shader working quickly! the render class still needs some cleanup tho This was fun but if they gave me an euro for every seg fault ive endured elon musk would be small next to me. i love to see how this small side project i started long ago is now something a lot bigger than i expected, this literally started as a learnopengl tutorial :))
ORIGIN ENGINE Yippie! another update to the engine powering my game, i’ve added quite a lot of things but also managed to clean up some dead code in the way. The most excinting new thing is probably the new postprocessing layer system! this is what ive added in the past 3 weeks: Postprocessing layer: you can now code different vertex & fragment shaders that drawn on top of the main buffer, you can stack as many as youd like in order to create many new cool effects spent hours trying to fix the sandbox editor’s rendering being completely broken, took about 3-4 days lol added new getters to camera like a directly inversed view matrix or setMat4() and setTexture() functions with shaders add localToWorld() and worldToLocal() to the transform class fixed specular lighting leaking to some dark areas fix handle untextured materials in model import added a built-in user settings save/load system based on json serialization refactor a part of the audio system to now have built-in fade ins/out, volume control and async background music The biggest change coming up would probably be to develop a dynamic rendering system that allows me to use different cameras rendering at the same time, as I’ll probably need it for JSP PD: this engine is being used for my current main project (almost 100 hours!), please check it out! JSP: https://stardance.hackclub.com/projects/14066
ORIGIN ENGINE I’ve been adding some quality of life changes that make working with this engine a lot easier, which means more abstraction in some cases which is not always the best but whatever. Ive also worked very hard on fixing and improving the physics (even considered porting it to now use Box3D instead of Bullet3, but that will probably happen in the far future, and Bullet3 will be kept as a fallback) What have i been working on i see you ask? Added the ParentEntityComponent , a very simple work around for the lack of parent-child entities on my engine, this will probably be deprecated sooner or later but its a decent solution instead of doing all the work all at once Added GetRefreshRate to window class, so for example, your game can set the target fps based on this Changes to physics system (Bullet3) Fixed a super hard to find bug where models vertex and physics-engine vertex would have shifter coords and would make the objects act weird on real time, this is such a huge change, it makes physics really good to play with, see the video!! Added functions to apply force, impulse and torque to a dynamic rigidbody Added the teleport function for kinematic rigidbodies Added getLinearVelocity and getAngularVelocity Added options to freeze rotation on independent axis HUGE: allow the engine to support different physics worlds to live in one same game in real time! this needs some work tho, not featured in the video PD: This is getting super nice but also growing in complexity, once i finish with my game i will surely start improving the overall structure and start thinking about more serious changes, maybe another graphics api????
ORIGIN ENGINE Yippi another round of improvements to the best and certainty not over engineered game engine out there! Out of all the things ive been working on with the engine ive only really finished one, but it was rather a big change tho NEW input system I’ve added a new action-based input system that handles by itself connected devices (because we now support gamepads!!! ), input modes and preferences, keybinds and settings all in one simple system The new system instead of reading “raw” input from SDL3 now instead has a wrapper that sets all input to “actions”. All actions have assigned a certain key/button/axis etc… It allows you to use keyboard/mouse and gamepad all at the same time Games can now have support for handheld devices like your steamdeck! Support for precompiled shaders (GLSL -> SPV) This is still work in progress!! The engine itself supports the compiled GLSL files very quickly but the problem is to get those shaders to compile in the first place The shader class gets the relative path for the shader, before actually compiling it, it checks if theres a file with the same name but that ends with “.spv”, in that case it uses that one Right now theres not an easy utility script that will handle compilation for you, that needs to be done next!! Dynamically Chunked Terrain Collisions Very early and of course WIP, I still haven’t done much but i have a pretty good idea of how this will work: You bake the local position of all the vertex of a terrain model and then, when you require it, you get all the triangles close to the player in real time (with a basic “chunked” system), then Bullet3 generates that mesh collider rather quickly as the mesh is not so big (this will probably require multi-threading ). More on this on the next devlog Other small changes Fixed the sandbox not having docking enabled Added ImPlot3D to project, might use it at some point PD: This picture is from my other project that you should check out! It showcases the new terrain system (WIP)
ORIGIN ENGINE Another update to the best game engine there is that starts with the letter “O” (i think). Today’s devlog is small, bust most likely will be start of a new series of very much needed updates to the engine!. It’s important to note that most of the things ive been working on are not yet finished :(( New stuff! New things that are completely finished: Fix the sandbox UI, it was missing imgui flags from previous bug fixes i had to do because the docking branch of imgui was broken, they fixed it so i just rolled back! Cleaned up the rendering class, specially important for the new updates im working on, because im gonna need to do a hell lot of abstraction! Things im working on Im taking the current base of the engine to make a new “modular” system just for the love of the game, the most basic thing ive done is to allow the user to choose between SDL3 or GLFW for windowing, although input is currently only handled with SDL3 regardless…. There’s a lot of exiting stuff coming SOON^(TM), hope you like them!! (vulkan?, probably not lmfao) PD: yes! this is the origin engine running nicely in a steamdeck!!!
ORIGIN ENGINE A NEW UPDATE! I’m building a huge update for the origin engine! it might even be considered a new engine all together. The same philosophy is still there but I’m re-writting and refactoring the base structure of the whole engine. For now this refactor is close source tho, ill publish it once its ready for ship! What we currently have: I have the structure already though: A new project-based system where all the shader compilation and asset handling is done for each project, this + a simple abstraction layer should allow the sandbox to be a hugely more important tool as you will be able to play your game right in the editor! Compile time switch between SDL3 or GLFW for windowing, input is not yet “ported” if you consider it that way What i wanna add but may be difficult Runtime api switching between OpenGL, Vulkan and DirectX3D 11. even tho for now i have a super basic abstraction layer and only opengl is even able to initialize so….. maybe too hard i hope i manage to do it tho , was thinking of doing a similar thing for switching between physics engines like bullet3, physicsX or Box3D, this is very much in the future of course Project export/ editor previews This is a major step and im learning a lot!! but its very difficult to handle new stuff like vulkan with other new c++ architectural stuff, hope it goes well
ORIGIN ENGINE I’m sorry in advance that these and probably the next few devlogs wont have very exiting things or new and awesome information but sometimes you gotta focus on boring structural stuff that its just not really fun… The new Project-Based System The engine is now very dependent on the sandbox editor, sort of like a symbiotic relationship between the sandbox and your code editor, because thats where you will not only handle your assets but also play the game. The previous version just had the sandbox to be a tiny map editor tool that not even i would use half of the time The project (also called environment) then would have its own “environment” literally where all your assets would be included, with very little naming restrictions, this would make working on the project super easy and itd be easy too to use git with it (maybe build a builtin git UI??? it could be cool) I’ve already built the base for it and I’ve already added support for ImGui only for the OpenGL backend, i was thinking of adding a different UI system but this one will do for now :))
ORIGIN ENGINE I’ve finally managed to port enough of the original engine to setup an imgui layer to have this little built-in launcher! it currently only works when using opengl, but its completely supported by both the windowing backends (glfw & sdl3) Its hard to make videos like this on a steamdeck so please like lol. Other stuff I completely restructured the new engine architecture to be a layered system, the engine holds a stack of layers and updates them independently! each layer holds stuff like OnAttach OnLateUpdate OnEvent etc, which is a much better approach compared to what we had before! I created a completely new custom file system, as the sandbox and games use completely different files and base directories, you can now mount/dismount different “aliases” for each program, so you can find your assets easily with custom virtual paths like sandbox://settings.json or project://scenes/scene.json Literally ported the scene/entity system right from the previous version, but it is a lot smaller currently, because the previous one wasnt really good, we now can load scenes from a file but now those get added to a scene stack, which is a lot more efficient if you wanna load them again! Overall the project’s code quality is so much better too!! After these bases are set im gonna be focusing on getting a full render layer working with at least opengl, even tho the vulkan renderer is already setup… PD: Origin Zero is just the new “protoype” name i gave it, just like with when i started this project i called it Origin “Zeus” lmao
ORIGIN ENGINE version 0.19.3 First ship is coming up soon! Even tho ive been working on really exciting stuff, i really would like to focus on actually learning and having a deep enough understanding of vulkan and other stuff like the best engine’s architecture before actually logging and building something open and usable, thats why i feel this is a good place to finally ship this project as it is and maybe come back to it at some point Pre-ship checklist! I’ve updated the website! now you have a few new sections with new information like the game i build using this engine and other cool stuff! published a new version to the github releases page (0.19.3 i think), with the binaries for the demo game and the sandbox for both windows and linux! the web build is still there on the website but it is marked as legacy tho Its been super fun to work on this and ive learnt a lot but i really really really think i could make something so much better with all the knowledge i now have and with some serious research, this is pretty much what ive explained in most of all the previous devlogs (the last 2 or 3) I’ve been working on applying some of the stuff ive been working on to the engine, like the new renderer class its now pretty much ported nicely! ive also tested that everything worked cross platform and yay! the project is very ready to hold any new game or project you might wanna do with it, although i might wanna make a quick tutorial on how to work with the engine on a github repo cuz its not very intuitive Known issue I’ve been trying to add support to the engine for builtin shaders but ive realized that its a super deeper problem than what i was expecting, id honestly do something like making all the shaders be done with something like slang and then compile them to spirv without any glsl intermediary PD: the video you see is a demo scene you can find at assets/scenes/physics.scene if you wanna try it by yourself!!!
Ships:
I made a custom game engine from scratch! it has a fast opengl pixelart renderer, builtin physics, lighting, an entity-component system, a spatial audio system, terrain system, it can load and save scenes on the fly, supports many 3d asset extensions… Its what i used to create my other big project! (JSP) the engine is cross-platform and works right out of the box for linux, windows and web!! and also it comes with a lightweight level editor and ive also made a website for it Hope you like it!! made with <3 from @aloyak...
|
1792990527.5510185
|
1793076927.5510185
|
|
34098
|
Rust 6502 by @Wirenux | Stardance
|
Wirenux
|
3
|
74.0
|
1354
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T17:19:09Z", "hours": 7.0, "multiplier": 18.98, "payout": 127, "blessing": "neutral", "text": "Rust 6502 A MOS 6502 emulator TUI with a lot of features Before reading this Ship you should take a look at Ship 1 & Ship 2 What did you add ? Here is a list of everything that I have added since the last Ship Features Breakpoints : press “F” to set a breakpoint at any address, the emulator halts the moment PC reaches it Watchpoints : same idea, but for memory Conditional Breakpoints : halt execution when a register (AC, XR, YR, SP) meets a comparison (!=, ==, >=, <=, >, <) against a target value Step Back : press “B” to rewind execution one instruction at a time, restoring the CPU and memory exactly as they were before Random Number Generator : a memory-mapped register at $BFF3 that returns a random byte from the host PC on every read, so ASM programs can have real random number Keybind Panel : a popup listing every keyboard shortcut and control, and removed the old footer keybind list to make room for it Demo Program Snake : updated to pull apple placement from the new RNG instead of the old pseudo random method ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What was challenging ? Wiring the conditional breakpoint into the run loop without breaking the existing breakpoint/watchpoint checks was harder than I though. Also getting a dropdown-style menu to choose the operator working in Ratatui was tought since there’s no native dropdown widget. So I ended up building a little spinner (▲ value ▼) that cycles through the operators instead ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What are you proud of ? I’m proud that my emulator now has real debugging tools like : breakpoints, watchpoints, conditional breakpoints, and step-back. What should people know so they can test your project ? A Nerd Font is recommended in your terminal for a better rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! Things to try Load snake_demo.bin and play :D Set a breakpoint on an address inside a demo program (check the keybind panel for the shortcut!) and watch execution halt exactly there Try a conditional breakpoint : for example, halt whenever XR == 0F and watch it stop right when the register hits that value Press “B” to step backward and rewind the CPU state instruction by instruction Press the keybind panel shortcut to see the full list of controls", "repo": "https://github.com/wirenux/Rust-6502", "demo": "https://crates.io/crates/rust6502"}, {"ship_num": 2, "ts": "2026-08-08T15:59:06Z", "hours": 28.0, "multiplier": 17.86, "payout": 504, "blessing": "neutral", "text": "=== Rust 6502 === A MOS 6502 emulator TUI with a lot of features ============================================ Before reading this Ship you should take a look at Ship #1 == What did you add ? == Here is a list of everything that I have added since the last Ship = Features = Serial Monitor : you connect to localhost:8080 using netcat. Useful for the Apple 1 OS or for debugging with text. The monitor can be used to display text but also to send text like a keyboard (useful for the Apple 1 OS) PS/2 Keyboard : a full PS/2 keyboard emulation (used in Snake) Use the UI with a Mouse: On the Home Menu and in the Emulator you can click on button, toggle, scroll, etc… Interrupt : IRQ & NMI Tips in the Settings Panel Modify speed with Hz & MHz (like a real 6502 chip) Reset Vector: The emulator will look at $FFFC & $FFFD to find the start address of the program (when the Force Address toggle is off) Set PC Address: keyboard shortcut to change the position of the PC (Program Counter) = Demo Program = Apple 1 OS (Wozmon) : I have modified the orginal Apple 1 code to fit my emulator, like Serial Monitor address, Keyboard etc… Snake : Just the Snake game ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ Keyboard Demo: Print every key press on the screen using a custom font Serial Monitor Demo: Show how the Serial Monitor works == What was challenging ? == The most challenging part of this 2nd ship was creating a Serial Monitor that works via a local port, and making a PS/2 Keyboard emulation. And of course, modifying the Apple 1 OS to make it work on this emulator ! (I was having a lot of bugs, so I rewrite a big part of the OS) ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ == What are you proud of ? == I am really proud of my self for the implementation of the Serial monitor that run on different CPU thread than the emulator itself and the fact that it work via the local network. And beyond everything the fact that my emulator can run : games, utility and the Apple 1 OS !!! ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ I’m also really proud that it’s officially published on crates.io. == What should people know so they can test your project ? == Note: A Nerd Font is recommended in your terminal emulator for a proper rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: ================== cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! == Things to try == Load snake_demo.bin to play at a classic game using the 32x32 screen and the PS/2 keyboard emulation Load wozmon.bin to use the Apple 1 OS ! You should see the documentation related to Wozmon : https://github.com/wirenux/Rust-6502/blob/main/AppleI.md Load keyboard_demo.bin to see every key you press show up on the 32x32 screen using a custom font The Debugger: go to the Settings menu inside the TUI and slow down the CPU speed. Then watch the Memory Viewer and Disassembler track exactly what the code is doing in real-time!", "repo": "https://github.com/wirenux/Rust-6502", "demo": "https://crates.io/crates/rust6502"}, {"ship_num": 3, "ts": "2026-07-23T16:03:44Z", "hours": 39.0, "multiplier": 19.83, "payout": 723, "blessing": "neutral", "text": "=== Rust 6502 === A legendary 8-bit CPU right in your terminal! 🦀 ᕙ( •̀ ᗜ •́ )ᕗ == What did you make ? == I built a fully functional emulator for the MOS 6502 (the microprocessor that powered the Apple II, Commodre 64, and the NES) from scratch using Rust ! Instead of a standard graphical window, I built a Terminal User Interface (TUI) using Ratatui. Here is what’s inside: Full CPU Emulation: Execute 6502 machine code with live register (AC, XR, YR, SP) and status flag tracking Virtual Screen: A 32x32 memory-mapped display ($0200-$05FF) rendered right in the terminal using Unicode Half-Block and a custom 16-color palette Live Disassembler & Hex Viewer: Watch the RAM change in real-time and see the raw binary machine code translated back into readable assembly instructions on the fly Built-in File Browser: A visual menu with Nerd Font icons to navigate your system and load compiled .bin ROMs Available on crates.io : You can download it via Cargo == What was challenging ? == The Disassembler: Writing a disassembler that parses raw .bin files is tricky because they don’t have headers. I ran into a massive issue where my image data (using the color byte $0A) was being read by the disassembler as infinite ASL A (Shift Left) instructions! I had to engineer a way for the disassembler to properly halt when it hit a BRK instruction so it wouldn’t try to execute my pixel art. Terminal UI Architecture: Designing a dashboard (hex grids, scrolling stacks, changing colors) required a really solid state-management architecture to keep the UI smooth and responsive while the CPU loop spins at thousands of instructions per second. == What are you proud of ? == I am proud of using this project to learn Rust in a fun way! ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ I’m also really proud that it’s officially published on crates.io, meaning anyone can install and run my emulator with a single command == What should people know so they can test your project ? == Note: A Nerd Font is recommended in your terminal emulator for a proper rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! == Things to try == Load hackclub_logo_demo.bin to see the terminal render a 32x32 pixel art logo using 6502 assembly Load rainbow_demo.bin to watch a shifting color gradient animation directly manipulating video memory. Load helloworld_demo.bin to watch a centered Hello world message The Debugger: go to the Settings menu inside the TUI and slow down the CPU speed. Then watch the Memory Viewer and Disassembler track exactly what the code is doing in real-time!", "repo": "https://github.com/wirenux/Rust-6502", "demo": "https://crates.io/crates/rust6502"}]...
|
[{"post_id": 53188, "ts": "202 [{"post_id": 53188, "ts": "2026-08-23T17:01:36Z", "hours": 1.3231, "text": "+ 1h20 So… this might be the last devlog for this project. I just released the v1.3.0 . And here is what I added since the last devlog : A RNG documentation Snake now use a real RNG I recorded the Asciinema .cast file Update the python tools to generate memory diagrams Update the Memory documentation So next step is the 3rd Ship"}, {"post_id": 52497, "ts": "2026-08-22T17:18:02Z", "hours": 1.6328, "text": "+ 1h35 ! This might be the last feature I add to Rust 6502. Since I ran out of idea and for me the project seem to be finished. Anyway, here are the things I added : A RNG address : $BFF3 . The program just read from it and get a random value via the Host computer ( 4feb4d8 ) A conditional breakpoint : A top bar in the Breakpoint popup to add a conditional breakpoint (like : If AC != 0F -> Break) ( 1b7bc81 )"}, {"post_id": 51750, "ts": "2026-08-21T16:03:37Z", "hours": 1.4139, "text": "+1h 25 min ! Since the last time I have added the keybind panel. Where there is… all the keybinds I also remove the keybind on the footer to only get Keybind “K”"}, {"post_id": 48226, "ts": "2026-08-16T15:08:41Z", "hours": 0.8658, "text": "Okay so… I have added the Breakpoint and the Watchpoint . When you set the breakpoint to $C00C the CPU will stop before running the instruction at $C00C. The watchpoint stop if a value at an address at been changed."}, {"post_id": 47602, "ts": "2026-08-15T16:26:45Z", "hours": 0.8536, "text": "I added the step-back function. It work by pressing “B”, it’s just rewinding the emulator up to 500 opcode. Only work when moving in step-by-step mode (with Enter)"}, {"post_id": 45822, "ts": "2026-08-12T15:29:34Z", "hours": 0.5942, "text": "v1.2.0 Here are the changes attached to this release : fix: a bug on windows, with ghost key press ( c3c6009 ) add: a Scroll bar on the file explorer ( 94b2abb )"}, {"post_id": 43337, "ts": "2026-08-08T15:14:19Z", "hours": 0.2753, "text": "YAY Now rust6502 Version 1.1.0 is released ! On github with all the demo file and on crates.io / cargo !"}, {"post_id": 43315, "ts": "2026-08-08T14:47:20Z", "hours": 2.8169, "text": "Here is what I have done in 2h 50 . First I wrote a lot of docs, for the keyboard, Serial Monitor, Wozmon etc… This was so boring . But at least now I will be ready to ship soon ! Second, I have fixed the Wozmon list content of address. Before when you was doing FF00.FFFF it was just showing the byte at $FF00 and the byte at $FFFF now it list all the byte between !"}, {"post_id": 43203, "ts": "2026-08-08T10:26:46Z", "hours": 0.2706, "text": "New little update ! I have created a Python tools to create memory map for my emulator docs !"}, {"post_id": 43187, "ts": "2026-08-08T09:47:21Z", "hours": 0.5125, "text": "Little update ! I have added tips in the settings menu. The change randomly using the UNIX Epoch value"}, {"post_id": 42870, "ts": "2026-08-07T20:34:53Z", "hours": 0.6192, "text": "Little update, I added a Program Counter (PC) input to move it in when running a program. I also added a cursor for the start input on the Home Screen !"}, {"post_id": 42844, "ts": "2026-08-07T19:42:37Z", "hours": 1.9044, "text": "After 1h50 I have added a Snake demo program that use the PS/2 keyboard !!! I also make a demo program to test the Serial Monitor using netcat nc"}, {"post_id": 42206, "ts": "2026-08-06T20:22:37Z", "hours": 3.5697, "text": "Wow, just WOW. I have added a serial monitor, and Apple 1 OS Serial Monitor Here is the way the monitor work, you load character to $BFE0 like this : lda #'A' sta $BFE0 Then you run the program in the emulator like normal, then you open another terminal and you connect to localhost port 8080 using netcat nc like this : nc 127.0.0.1 8080 And now if you already launch the program, when you connect to localhost ( 127.0.0.1 is localhost) you will see a A in your terminal ! You can also type in the serial monitor ! Here is a code that show the number of characters typed by using the pixels in the 32x32 screen ! start: ldx #$FF txs ldx #$00 main_loop: bit $BFE1 bpl main_loop lda $BFE0 sta $BFE0 lda #WHITE_COLOR sta $0200, x inx jmp main_loop Apple 1 This is a very damn big part. To be short, I have recreated the Apple 1 OS (Wozmon) created by Steve Wozniak. In short I took the code given in the Apple 1 User Manual, modify it to use the Serial Monitor and Keyboard, fix some issue with the prompt. I can even run the classic program from the manual to print all the available characters. With Wozmon you can also write and read data from the memory so you can show some pixel on the screen ! Here is the program running and the serial monitor."}, {"post_id": 41544, "ts": "2026-08-05T20:29:50Z", "hours": 4.6692, "text": "Okay soo….. it’s been 4 hours and 35 minutes . I have done so much and not that much at the same time (I know it’s weird ) I have added a demo program who print the pressed character ! I have spend 2 hours on a little bug but yeah now it’s working ! So with the program I drew all the key on a PS/2 keyboard . I also fixed some little inattention problem in my code. I also created a little python script to help me convert .png drawing into raw .inc value ! ( Did you find the secret phrase ?)"}, {"post_id": 40862, "ts": "2026-08-04T17:37:24Z", "hours": 0.6206, "text": "Now there is all the number & lower case letter (a-z) & and the Space bar icon !"}, {"post_id": 40720, "ts": "2026-08-04T13:13:58Z", "hours": 0.6008, "text": "I want to create a ASM program who print the pressed key to the screen, and for that I need to create the font/image for each key. There is ~100 key . So here is the first one !"}, {"post_id": 40191, "ts": "2026-08-03T16:23:25Z", "hours": 2.2289, "text": "Wow that was… difficult . But now there is a PS/2 keyboard Emulation ! The I/O port is map on $BFF0-$BBF2. The PS/2 keyboard work with 3 addresses $BFF0 : KBD_DATA $BFF1 : KBD_STATUS $BFF2 : KBD_ACK To activate to keyboard in the emulator you can press on the screen container and to exit it just click anywhere else ! (The number you can see in the memory viewer at $0000 is the code from different key !) Maybe next time I will create a program to see each letter"}, {"post_id": 39675, "ts": "2026-08-02T20:07:26Z", "hours": 1.4747, "text": "YAY ! Now there is mouse control on the home screen, this mean that you can click every where to change the focus and in the file explorer you can double-click to open a folder and double-click to open a file directly, you can also with a simple click enable or disable Force Address Mode"}, {"post_id": 38319, "ts": "2026-07-31T17:15:48Z", "hours": 8.67, "text": "Ok so… it’s been 8h40 . I have done a lot (I mean it’s logic it’s been 8h and 40 minutes) In time order I have done : Replace self.pc + 1 to self.pc.wrapping_add(1) so it’s like on the real 6502 if the current PC is $FFFF and you add 1 it will be $0000 . Added a panic hook, before when the program was crashing (for a bad ASM program by example) the terminal was still in RAW mode (so if you click, move the mouse etc… it will print a bunch of garbage number) but now it exit the raw mode in a clean way ! Remove unused import Change the start of the Stack Pointer to $1FFF Added a memory reset function Write a bunch of test programs Replace IPS (instruction per seconds) by Hz and MHz like in real life (so i’ve adapted the UI for the change) Now the disassembler disassemble the whole program (neat right ? ) using .len() . (yes before it was an hard-coded number Optimize the screen render method. Before I was refreshing the screen even if nothings has been changed, now i check if somethings have been changed to update the screen Added address of each “quarter” of the screen in the screen documentation Fixed foreground and background color of the Frequency selector (on the Home Screen) Write a program to test IRQ and NMI Keybinds the I and N key to IRQ and NMI Changed the Hello World program to be rainbow The emulator will look by it self to the reset vector ( $FFFC and $FFFD ) to set the PC at the correct address Added a force address toggle to… force the the start address When the force addr toggle is off you can’t modify the start Addr and it’s darker Every file or folder who start by a . (dot) is not shown in the file selector Moved the hackclub logo raw binary data to a .inc file Added a self crashing test program (Next time I might add a PS/2 keyboard emulation… )"}, {"post_id": 33529, "ts": "2026-07-23T15:42:24Z", "hours": 0.2847, "text": "Last devlogs before Ship #1 Wow 37h of work. I have made an Asciinema video, Youtube video and update the README.md Wish me luck !"}, {"post_id": 33447, "ts": "2026-07-23T12:32:34Z", "hours": 0.8183, "text": "I have been writing a LOT of documentation on how to create a 6502 ASM program, Screen documentation. And the project is now published in version 1.0.0 on Github and Cargo https://github.com/wirenux/Rust-6502 https://crates.io/crates/rust6502"}, {"post_id": 33416, "ts": "2026-07-23T10:42:45Z", "hours": 0.8144, "text": "I have added a new program called HackClub Logo First, I have draw the hackclub logo in aseprite with a 32x32 pixel file using my custom color palette. Second, I have created a simple python script who take a .png in input and output ASM raw data for the image (using my color palette). Third, I have create a simple ASM program to print the logo on the screen !"}, {"post_id": 33164, "ts": "2026-07-22T20:28:05Z", "hours": 0.3019, "text": "WOW 35H 🎉 I have added a file : DemoProgram.md to show all the demo program"}, {"post_id": 33159, "ts": "2026-07-22T20:10:35Z", "hours": 3.8867, "text": "WOW 4h 😅 I have done the full README.md, documentation about the screen, color palette and fix some little bugs."}, {"post_id": 32560, "ts": "2026-07-21T20:27:52Z", "hours": 0.6103, "text": "Little bug fix: Now when we select a file in the Home File Selector the filename appear in the Opcode container. I have also reorganize the tui.rs code !"}, {"post_id": 32540, "ts": "2026-07-21T19:47:40Z", "hours": 0.3697, "text": "WOW already 30 hours ?! 😅 I now have added the home logo ! I also changed the step for the speed selection on Home Menu from 500 to 100 for each step"}, {"post_id": 32522, "ts": "2026-07-21T19:16:08Z", "hours": 2.0906, "text": "Wow that was damn hard 😭. But the Home Menu is finally here 🎉. There is the logo (might change). The select file container with full navigation (folder, parent directory, file), Icon (require a Nerd Font) and Colors. The selected file path update in real time with the absolute path of the file. The start address automatically change if the file selected is a demo file (end with “_demo.bin”) to $C000. The start address it editable with Alpha numeric character (hexadecimal). And the emulation speed work ! There is control on the footer bar."}, {"post_id": 32416, "ts": "2026-07-21T16:21:09Z", "hours": 1.2358, "text": "New demo program… HelloWorld_demo ! Print Hello World ! centered on the screen all in pure 6502 Assembly. I also modified the way the disassembler work, now even if there is a BRK it will continue to read the file until the end. The ASM part was really really haaarrddd."}, {"post_id": 32338, "ts": "2026-07-21T13:23:35Z", "hours": 0.4014, "text": "Now if I press R I can reset the program. I also modify the footer bar"}, {"post_id": 32323, "ts": "2026-07-21T12:48:13Z", "hours": 0.5539, "text": "I have update the color from word to RGB value so if a different terminal theme is applied the color are the same. I also added a footer bar with the keybinds."}, {"post_id": 32296, "ts": "2026-07-21T11:32:52Z", "hours": 1.4164, "text": "New panel 🥁🥁🥁…. the ✨ SETTINGS ✨ ! In this panel there is a smaller version of the Logo and the settings to modify the speed of the CPU. There is also the link to the github repo and stardance project"}, {"post_id": 31921, "ts": "2026-07-20T18:22:48Z", "hours": 0.2858, "text": "Now the name of the file currently running is in the title. I also finished the rainbow program to fill the whole screen."}, {"post_id": 31910, "ts": "2026-07-20T18:01:58Z", "hours": 1.7158, "text": "New feature 🥁🥁🥁 ✨ THE SCREEN ✨ This was very very hard. The screen use the Unicode half-block character “▀”, to write to the screen you just need to send value like this : LDA #$02 ; load \"02\" into the accumulator STA $0200 ; store it at memory address $0200 (the 1st pixel) Here the 02 is the color RED. Here is the color palette: fn palette_color ( index : u8 ) -> Color { match index & 0x0F { 0 => Color :: Black , 1 => Color :: White , 2 => Color :: Red , 3 => Color :: Cyan , 4 => Color :: Magenta , 5 => Color :: Green , 6 => Color :: Blue , 7 => Color :: Yellow , 8 => Color :: Rgb ( 255 , 165 , 0 ), // Orange 9 => Color :: Rgb ( 153 , 76 , 0 ), // Brown 10 => Color :: DarkGray , 11 => Color :: Gray , 12 => Color :: LightRed , 13 => Color :: LightBlue , 14 => Color :: LightGreen , _ => Color :: Reset , // 15 transparent } } The color may vary between terminal theme. I also had created an ASM program to print a rainbow on the 1st quarter of the screen. I also added the feature that when a BRK instruction is hit the program turn to HALT mode (in the UI). I also added the indentation system to BEQ, BNE, BCC, BCS, BMI, BPL, BVC, BVS. I also added a new way of calculating the speed of the program."}, {"post_id": 31806, "ts": "2026-07-20T14:10:36Z", "hours": 0.4183, "text": "Choosing between a variety of logo (2 first screen shot are in Apple Terminal the last is in ghostty with a Catpuccin Mocha theme)"}, {"post_id": 31786, "ts": "2026-07-20T13:41:37Z", "hours": 0.9217, "text": "I have added a top bar in the memory container with the last part of the address (to be more easy to read). I also fixed all the scroll bar from scrolling outside the container and just see nothings"}, {"post_id": 31761, "ts": "2026-07-20T12:25:55Z", "hours": 0.3808, "text": "I have fixed the cursor in the Stack Container to scroll automaticly when needed and when running. I also optimised the code !"}, {"post_id": 31735, "ts": "2026-07-20T11:29:19Z", "hours": 1.0997, "text": "A lot has been going on ! I have added the Memory Viewer, Scroll bar to the Stack Viewer and Memory Viewer (work with the 🥁…. SCROLL WHEEL !). I also reduce the space taken by the opcode list so we can see the memory viewer !"}, {"post_id": 31230, "ts": "2026-07-19T13:48:00Z", "hours": 0.4708, "text": "I have added a Stack Viewer on the left ! The container scroll it self when the “cursor”/current position of the Stack Pointer (SP). I also have fix the text for the SP in the register container"}, {"post_id": 30873, "ts": "2026-07-18T20:31:08Z", "hours": 0.5025, "text": "I have tried to implement multi-threading but realize that it’s not worth it for a simple emulator like this one."}, {"post_id": 30853, "ts": "2026-07-18T20:00:15Z", "hours": 0.4039, "text": "I have clean the code a little bit 🧹 and added a RUN or PAUSED indicator :"}, {"post_id": 30789, "ts": "2026-07-18T17:52:51Z", "hours": 1.2636, "text": "The UI is going forward one step after another ! I have changed a some little like the place where is the Flag Container, now it’s on the left side. And I also have added a LOT a things like: Register Container (under the Flag Container) Now when there is a JMP (or any type or jump like RST, etc…) the code indent it self Up and Down key move the cursor 🥁…. ✨UP & DOWN ✨ New color for the ADDR in the Opcode container Things I have removed: BYTES section in the Opcode container because I don’t think it’s really useful"}, {"post_id": 30680, "ts": "2026-07-18T13:37:25Z", "hours": 0.2903, "text": "YAY now the Flags can be shown ! Green Bold when active and Dark Gray classic when not"}, {"post_id": 30669, "ts": "2026-07-18T13:18:54Z", "hours": 0.5522, "text": "I have made a program to disassemble the program so the code could be shown in the TUI. And it work !"}, {"post_id": 30661, "ts": "2026-07-18T12:46:07Z", "hours": 1.1003, "text": "I am now making the TUI part of this emulator ! I am using Ratatui to make the TUI. This mean I have to change all the printing part of my existing program"}, {"post_id": 30627, "ts": "2026-07-18T10:52:26Z", "hours": 0.465, "text": "YAY Now EVERY opcode and EVERY addressing mode are implemented 🎉 (wow 1478 lines of pure opcodes)"}, {"post_id": 30355, "ts": "2026-07-17T20:40:38Z", "hours": 0.2844, "text": "I have fix some little print in 3-4 instruction and the IRQ function"}, {"post_id": 30342, "ts": "2026-07-17T20:21:23Z", "hours": 1.0506, "text": "I’m being closer and closer of getting all opcode and all Addressing mode implemented Here are the list of opcode I have implemented and there Addressing Mode: ADC Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y AND Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y CMP Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y EOR Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y I also fixed the CLD instruction. I was doing a : cpu .sr | = ! CPU :: DECIMAL_FLAG ; but the right one was this: cpu .sr &= ! CPU :: DECIMAL_FLAG ;"}, {"post_id": 29763, "ts": "2026-07-16T21:06:40Z", "hours": 0.9353, "text": "New opcode time ! LDY ZeroPageX STA ZeroPageX AbsoluteY IndirectX IndirectY STX ZeroPageY Absolute STY ZeroPageX Absolute"}, {"post_id": 29468, "ts": "2026-07-16T13:13:24Z", "hours": 1.3792, "text": "Add interruption with NMI + IRQ. Add option to the user to start at a specific address"}, {"post_id": 29172, "ts": "2026-07-15T21:55:25Z", "hours": 0.4572, "text": "New opcode STA Absolute X"}, {"post_id": 29083, "ts": "2026-07-15T18:53:21Z", "hours": 0.73, "text": "I’ve just passed 40min to fix an interruption problem to final look back and see that my original code what working perfectly fine 😭 . I’ve also change my build tools to ca65 + ld65"}, {"post_id": 29035, "ts": "2026-07-15T18:04:18Z", "hours": 0.5122, "text": "YAY I have added a BUNCH of new Opcodes : BCS BCC BPL BIT with ZeroPage & Absolute BMI BVC BVS"}, {"post_id": 29003, "ts": "2026-07-15T17:27:28Z", "hours": 0.6717, "text": "New opcode TXS (transfer X to stack pointer) TSX (transfer stack pointer to X) ldx_absolute_Y lda_indirect_x lda_indirect_y ldx_zeropage_y New Addressing Mode: AbsoluteY ZeroPageY IndirectX IndirectY"}, {"post_id": 28387, "ts": "2026-07-14T16:45:14Z", "hours": 0.4636, "text": "✨ NEW OPCODE ✨ : PHP (Push Processor Status: push current value of all the flag to the stack) PLP (Pull Processor Status: pull current value of all the flag to the stack) But I have also add a memory dump with page (at the end of a program) to debug ! (1st screenshot) and i also add a fixed (address) memory viewer when running (2nd screenshot)"}, {"post_id": 28368, "ts": "2026-07-14T16:14:05Z", "hours": 0.3953, "text": "There now is 4 new opcode: ROR ROL ROR Memory ROL Memory"}, {"post_id": 28355, "ts": "2026-07-14T15:47:50Z", "hours": 0.7244, "text": "New Opcode : PLA (Pull Accumulator) PHA (Push Accumulator) ASL memory LSR memory"}, {"post_id": 27919, "ts": "2026-07-13T20:54:45Z", "hours": 0.3947, "text": "The now is new opcode ! : EOR ORA AND LDA (ZeroPageX) And some new AddressingMode : ZeroPageX AbsoluteX"}, {"post_id": 27728, "ts": "2026-07-13T15:22:17Z", "hours": 0.7697, "text": "Now there is a pop_stack function who return the top value of the stack (Last In First Out). I’ve also added those opcode : JSR RST And made this test code :"}, {"post_id": 27647, "ts": "2026-07-13T12:27:38Z", "hours": 1.7306, "text": "I’ve done a LOT of work. Added Opcodes: BEQ BNE SBC Immediate + Zeropage I’ve also done a lot of refractorisation. Code before : match opcode { 0x18 => { self .sr &= ! CPU :: CARRY_FLAG ; self .set_instr ( format! ( \"{:02X}\" , opcode ), \"CLC\" .to_string (), 2 ); }, // ... } VS now : match opcode { 0x18 => self .clc ( opcode ), // ... } So now every opcode have his own function !"}, {"post_id": 27367, "ts": "2026-07-12T21:19:13Z", "hours": 0.5197, "text": "I’ve added those instruction: ADC (Add with Carry) CLC (Clear Carry Flag) SEC (Set Carry Flag) I’ve also made this little ASM 6502 program to test those opcode .org $8000 START: SEC ; to test CLC LDA #$FF ; A = 255 CLC ; Clear Carry Flag before addition ADC #$02 ; 255 + 2 = 1, Carry is now 1 (0x01FF + 0x0002 = 0x0201) STA $20 ; Store Low Byte result (01) at $20 LDA #$00 ; Load 0 for the high byte ADC #$00 ; 0 + 0 + 1 (Carry from previous instruction) = 1 STA $21 ; Store High Byte result (01) at $21 ; SEC use SEC ; Carry = 1 LDA #$01 ; A = 1 ADC #$00 ; 1 + 0 + 1 (Carry) = 2 BRK And it work just fine !"}, {"post_id": 27343, "ts": "2026-07-12T20:41:04Z", "hours": 0.885, "text": "I’ve added a bunch of opcode like : STA, STX, STY (Zero Page, Absolute) LDX, LDY (Immediate, Zero Page, Absolute) JMP (Absolute), JMP (Indirect) (the screen shot is a new program that i’ve made and test on virtual 6502 and my project)"}, {"post_id": 27311, "ts": "2026-07-12T19:40:23Z", "hours": 0.3989, "text": "I’ve added a new UI and AddressingMode"}, {"post_id": 27261, "ts": "2026-07-12T17:42:19Z", "hours": 4.3097, "text": "Hi ! Right now in my project I have added : Bus with ram read & write function load from file function CPU All registry (a, x, y, sp, pc, sr) reset cpu function update Z & N flag function clock_tick with those opcode in it : BRK; DEY; TXA; TYA; TAY; LDA; TAX; INY; DEX; INX; NOP (1st screenshot is official emulator 2nd is mine)"}]...
|
Title: Rust 6502 by @Wirenux | Stardance
Devlogs: Title: Rust 6502 by @Wirenux | Stardance
Devlogs:
Hi ! Right now in my project I have added : Bus with ram read & write function load from file function CPU All registry (a, x, y, sp, pc, sr) reset cpu function update Z & N flag function clock_tick with those opcode in it : BRK; DEY; TXA; TYA; TAY; LDA; TAX; INY; DEX; INX; NOP (1st screenshot is official emulator 2nd is mine)
I’ve added a new UI and AddressingMode
I’ve added a bunch of opcode like : STA, STX, STY (Zero Page, Absolute) LDX, LDY (Immediate, Zero Page, Absolute) JMP (Absolute), JMP (Indirect) (the screen shot is a new program that i’ve made and test on virtual 6502 and my project)
I’ve added those instruction: ADC (Add with Carry) CLC (Clear Carry Flag) SEC (Set Carry Flag) I’ve also made this little ASM 6502 program to test those opcode .org $8000 START: SEC ; to test CLC LDA #$FF ; A = 255 CLC ; Clear Carry Flag before addition ADC #$02 ; 255 + 2 = 1, Carry is now 1 (0x01FF + 0x0002 = 0x0201) STA $20 ; Store Low Byte result (01) at $20 LDA #$00 ; Load 0 for the high byte ADC #$00 ; 0 + 0 + 1 (Carry from previous instruction) = 1 STA $21 ; Store High Byte result (01) at $21 ; SEC use SEC ; Carry = 1 LDA #$01 ; A = 1 ADC #$00 ; 1 + 0 + 1 (Carry) = 2 BRK And it work just fine !
I’ve done a LOT of work. Added Opcodes: BEQ BNE SBC Immediate + Zeropage I’ve also done a lot of refractorisation. Code before : match opcode { 0x18 => { self .sr &= ! CPU :: CARRY_FLAG ; self .set_instr ( format! ( "{:02X}" , opcode ), "CLC" .to_string (), 2 ); }, // ... } VS now : match opcode { 0x18 => self .clc ( opcode ), // ... } So now every opcode have his own function !
Now there is a pop_stack function who return the top value of the stack (Last In First Out). I’ve also added those opcode : JSR RST And made this test code :
The now is new opcode ! : EOR ORA AND LDA (ZeroPageX) And some new AddressingMode : ZeroPageX AbsoluteX
New Opcode : PLA (Pull Accumulator) PHA (Push Accumulator) ASL memory LSR memory
There now is 4 new opcode: ROR ROL ROR Memory ROL Memory
✨ NEW OPCODE ✨ : PHP (Push Processor Status: push current value of all the flag to the stack) PLP (Pull Processor Status: pull current value of all the flag to the stack) But I have also add a memory dump with page (at the end of a program) to debug ! (1st screenshot) and i also add a fixed (address) memory viewer when running (2nd screenshot)
New opcode TXS (transfer X to stack pointer) TSX (transfer stack pointer to X) ldx_absolute_Y lda_indirect_x lda_indirect_y ldx_zeropage_y New Addressing Mode: AbsoluteY ZeroPageY IndirectX IndirectY
YAY I have added a BUNCH of new Opcodes : BCS BCC BPL BIT with ZeroPage & Absolute BMI BVC BVS
I’ve just passed 40min to fix an interruption problem to final look back and see that my original code what working perfectly fine 😭 . I’ve also change my build tools to ca65 + ld65
New opcode STA Absolute X
Add interruption with NMI + IRQ. Add option to the user to start at a specific address
New opcode time ! LDY ZeroPageX STA ZeroPageX AbsoluteY IndirectX IndirectY STX ZeroPageY Absolute STY ZeroPageX Absolute
I’m being closer and closer of getting all opcode and all Addressing mode implemented Here are the list of opcode I have implemented and there Addressing Mode: ADC Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y AND Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y CMP Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y EOR Zeropage Zeropage X Absolute Absolute X Absolute Y Indirect X Indirect Y I also fixed the CLD instruction. I was doing a : cpu .sr | = ! CPU :: DECIMAL_FLAG ; but the right one was this: cpu .sr &= ! CPU :: DECIMAL_FLAG ;
I have fix some little print in 3-4 instruction and the IRQ function
YAY Now EVERY opcode and EVERY addressing mode are implemented 🎉 (wow 1478 lines of pure opcodes)
I am now making the TUI part of this emulator ! I am using Ratatui to make the TUI. This mean I have to change all the printing part of my existing program
I have made a program to disassemble the program so the code could be shown in the TUI. And it work !
YAY now the Flags can be shown ! Green Bold when active and Dark Gray classic when not
The UI is going forward one step after another ! I have changed a some little like the place where is the Flag Container, now it’s on the left side. And I also have added a LOT a things like: Register Container (under the Flag Container) Now when there is a JMP (or any type or jump like RST, etc…) the code indent it self Up and Down key move the cursor 🥁…. ✨UP & DOWN ✨ New color for the ADDR in the Opcode container Things I have removed: BYTES section in the Opcode container because I don’t think it’s really useful
I have clean the code a little bit 🧹 and added a RUN or PAUSED indicator :
I have tried to implement multi-threading but realize that it’s not worth it for a simple emulator like this one.
I have added a Stack Viewer on the left ! The container scroll it self when the “cursor”/current position of the Stack Pointer (SP). I also have fix the text for the SP in the register container
A lot has been going on ! I have added the Memory Viewer, Scroll bar to the Stack Viewer and Memory Viewer (work with the 🥁…. SCROLL WHEEL !). I also reduce the space taken by the opcode list so we can see the memory viewer !
I have fixed the cursor in the Stack Container to scroll automaticly when needed and when running. I also optimised the code !
I have added a top bar in the memory container with the last part of the address (to be more easy to read). I also fixed all the scroll bar from scrolling outside the container and just see nothings
Choosing between a variety of logo (2 first screen shot are in Apple Terminal the last is in ghostty with a Catpuccin Mocha theme)
New feature 🥁🥁🥁 ✨ THE SCREEN ✨ This was very very hard. The screen use the Unicode half-block character “▀”, to write to the screen you just need to send value like this : LDA #$02 ; load "02" into the accumulator STA $0200 ; store it at memory address $0200 (the 1st pixel) Here the 02 is the color RED. Here is the color palette: fn palette_color ( index : u8 ) -> Color { match index & 0x0F { 0 => Color :: Black , 1 => Color :: White , 2 => Color :: Red , 3 => Color :: Cyan , 4 => Color :: Magenta , 5 => Color :: Green , 6 => Color :: Blue , 7 => Color :: Yellow , 8 => Color :: Rgb ( 255 , 165 , 0 ), // Orange 9 => Color :: Rgb ( 153 , 76 , 0 ), // Brown 10 => Color :: DarkGray , 11 => Color :: Gray , 12 => Color :: LightRed , 13 => Color :: LightBlue , 14 => Color :: LightGreen , _ => Color :: Reset , // 15 transparent } } The color may vary between terminal theme. I also had created an ASM program to print a rainbow on the 1st quarter of the screen. I also added the feature that when a BRK instruction is hit the program turn to HALT mode (in the UI). I also added the indentation system to BEQ, BNE, BCC, BCS, BMI, BPL, BVC, BVS. I also added a new way of calculating the speed of the program.
Now the name of the file currently running is in the title. I also finished the rainbow program to fill the whole screen.
New panel 🥁🥁🥁…. the ✨ SETTINGS ✨ ! In this panel there is a smaller version of the Logo and the settings to modify the speed of the CPU. There is also the link to the github repo and stardance project
I have update the color from word to RGB value so if a different terminal theme is applied the color are the same. I also added a footer bar with the keybinds.
Now if I press R I can reset the program. I also modify the footer bar
New demo program… HelloWorld_demo ! Print Hello World ! centered on the screen all in pure 6502 Assembly. I also modified the way the disassembler work, now even if there is a BRK it will continue to read the file until the end. The ASM part was really really haaarrddd.
Wow that was damn hard 😭. But the Home Menu is finally here 🎉. There is the logo (might change). The select file container with full navigation (folder, parent directory, file), Icon (require a Nerd Font) and Colors. The selected file path update in real time with the absolute path of the file. The start address automatically change if the file selected is a demo file (end with “_demo.bin”) to $C000. The start address it editable with Alpha numeric character (hexadecimal). And the emulation speed work ! There is control on the footer bar.
WOW already 30 hours ?! 😅 I now have added the home logo ! I also changed the step for the speed selection on Home Menu from 500 to 100 for each step
Little bug fix: Now when we select a file in the Home File Selector the filename appear in the Opcode container. I have also reorganize the tui.rs code !
WOW 4h 😅 I have done the full README.md, documentation about the screen, color palette and fix some little bugs.
WOW 35H 🎉 I have added a file : DemoProgram.md to show all the demo program
I have added a new program called HackClub Logo First, I have draw the hackclub logo in aseprite with a 32x32 pixel file using my custom color palette. Second, I have created a simple python script who take a .png in input and output ASM raw data for the image (using my color palette). Third, I have create a simple ASM program to print the logo on the screen !
I have been writing a LOT of documentation on how to create a 6502 ASM program, Screen documentation. And the project is now published in version 1.0.0 on Github and Cargo https://github.com/wirenux/Rust-6502 https://crates.io/crates/rust6502
Last devlogs before Ship #1 Wow 37h of work. I have made an Asciinema video, Youtube video and update the README.md Wish me luck !
Ok so… it’s been 8h40 . I have done a lot (I mean it’s logic it’s been 8h and 40 minutes) In time order I have done : Replace self.pc + 1 to self.pc.wrapping_add(1) so it’s like on the real 6502 if the current PC is $FFFF and you add 1 it will be $0000 . Added a panic hook, before when the program was crashing (for a bad ASM program by example) the terminal was still in RAW mode (so if you click, move the mouse etc… it will print a bunch of garbage number) but now it exit the raw mode in a clean way ! Remove unused import Change the start of the Stack Pointer to $1FFF Added a memory reset function Write a bunch of test programs Replace IPS (instruction per seconds) by Hz and MHz like in real life (so i’ve adapted the UI for the change) Now the disassembler disassemble the whole program (neat right ? ) using .len() . (yes before it was an hard-coded number Optimize the screen render method. Before I was refreshing the screen even if nothings has been changed, now i check if somethings have been changed to update the screen Added address of each “quarter” of the screen in the screen documentation Fixed foreground and background color of the Frequency selector (on the Home Screen) Write a program to test IRQ and NMI Keybinds the I and N key to IRQ and NMI Changed the Hello World program to be rainbow The emulator will look by it self to the reset vector ( $FFFC and $FFFD ) to set the PC at the correct address Added a force address toggle to… force the the start address When the force addr toggle is off you can’t modify the start Addr and it’s darker Every file or folder who start by a . (dot) is not shown in the file selector Moved the hackclub logo raw binary data to a .inc file Added a self crashing test program (Next time I might add a PS/2 keyboard emulation… )
YAY ! Now there is mouse control on the home screen, this mean that you can click every where to change the focus and in the file explorer you can double-click to open a folder and double-click to open a file directly, you can also with a simple click enable or disable Force Address Mode
Wow that was… difficult . But now there is a PS/2 keyboard Emulation ! The I/O port is map on $BFF0-$BBF2. The PS/2 keyboard work with 3 addresses $BFF0 : KBD_DATA $BFF1 : KBD_STATUS $BFF2 : KBD_ACK To activate to keyboard in the emulator you can press on the screen container and to exit it just click anywhere else ! (The number you can see in the memory viewer at $0000 is the code from different key !) Maybe next time I will create a program to see each letter
I want to create a ASM program who print the pressed key to the screen, and for that I need to create the font/image for each key. There is ~100 key . So here is the first one !
Now there is all the number & lower case letter (a-z) & and the Space bar icon !
Okay soo….. it’s been 4 hours and 35 minutes . I have done so much and not that much at the same time (I know it’s weird ) I have added a demo program who print the pressed character ! I have spend 2 hours on a little bug but yeah now it’s working ! So with the program I drew all the key on a PS/2 keyboard . I also fixed some little inattention problem in my code. I also created a little python script to help me convert .png drawing into raw .inc value ! ( Did you find the secret phrase ?)
Wow, just WOW. I have added a serial monitor, and Apple 1 OS Serial Monitor Here is the way the monitor work, you load character to $BFE0 like this : lda #'A' sta $BFE0 Then you run the program in the emulator like normal, then you open another terminal and you connect to localhost port 8080 using netcat nc like this : nc 127.0.0.1 8080 And now if you already launch the program, when you connect to localhost ( 127.0.0.1 is localhost) you will see a A in your terminal ! You can also type in the serial monitor ! Here is a code that show the number of characters typed by using the pixels in the 32x32 screen ! start: ldx #$FF txs ldx #$00 main_loop: bit $BFE1 bpl main_loop lda $BFE0 sta $BFE0 lda #WHITE_COLOR sta $0200, x inx jmp main_loop Apple 1 This is a very damn big part. To be short, I have recreated the Apple 1 OS (Wozmon) created by Steve Wozniak. In short I took the code given in the Apple 1 User Manual, modify it to use the Serial Monitor and Keyboard, fix some issue with the prompt. I can even run the classic program from the manual to print all the available characters. With Wozmon you can also write and read data from the memory so you can show some pixel on the screen ! Here is the program running and the serial monitor.
After 1h50 I have added a Snake demo program that use the PS/2 keyboard !!! I also make a demo program to test the Serial Monitor using netcat nc
Little update, I added a Program Counter (PC) input to move it in when running a program. I also added a cursor for the start input on the Home Screen !
Little update ! I have added tips in the settings menu. The change randomly using the UNIX Epoch value
New little update ! I have created a Python tools to create memory map for my emulator docs !
Here is what I have done in 2h 50 . First I wrote a lot of docs, for the keyboard, Serial Monitor, Wozmon etc… This was so boring . But at least now I will be ready to ship soon ! Second, I have fixed the Wozmon list content of address. Before when you was doing FF00.FFFF it was just showing the byte at $FF00 and the byte at $FFFF now it list all the byte between !
YAY Now rust6502 Version 1.1.0 is released ! On github with all the demo file and on crates.io / cargo !
v1.2.0 Here are the changes attached to this release : fix: a bug on windows, with ghost key press ( c3c6009 ) add: a Scroll bar on the file explorer ( 94b2abb )
I added the step-back function. It work by pressing “B”, it’s just rewinding the emulator up to 500 opcode. Only work when moving in step-by-step mode (with Enter)
Okay so… I have added the Breakpoint and the Watchpoint . When you set the breakpoint to $C00C the CPU will stop before running the instruction at $C00C. The watchpoint stop if a value at an address at been changed.
+1h 25 min ! Since the last time I have added the keybind panel. Where there is… all the keybinds I also remove the keybind on the footer to only get Keybind “K”
+ 1h35 ! This might be the last feature I add to Rust 6502. Since I ran out of idea and for me the project seem to be finished. Anyway, here are the things I added : A RNG address : $BFF3 . The program just read from it and get a random value via the Host computer ( 4feb4d8 ) A conditional breakpoint : A top bar in the Breakpoint popup to add a conditional breakpoint (like : If AC != 0F -> Break) ( 1b7bc81 )
+ 1h20 So… this might be the last devlog for this project. I just released the v1.3.0 . And here is what I added since the last devlog : A RNG documentation Snake now use a real RNG I recorded the Asciinema .cast file Update the python tools to generate memory diagrams Update the Memory documentation So next step is the 3rd Ship
Ships:
=== Rust 6502 === A legendary 8-bit CPU right in your terminal! 🦀 ᕙ( •̀ ᗜ •́ )ᕗ == What did you make ? == I built a fully functional emulator for the MOS 6502 (the microprocessor that powered the Apple II, Commodre 64, and the NES) from scratch using Rust ! Instead of a standard graphical window, I built a Terminal User Interface (TUI) using Ratatui. Here is what’s inside: Full CPU Emulation: Execute 6502 machine code with live register (AC, XR, YR, SP) and status flag tracking Virtual Screen: A 32x32 memory-mapped display ($0200-$05FF) rendered right in the terminal using Unicode Half-Block and a custom 16-color palette Live Disassembler & Hex Viewer: Watch the RAM change in real-time and see the raw binary machine code translated back into readable assembly instructions on the fly Built-in File Browser: A visual menu with Nerd Font icons to navigate your system and load compiled .bin ROMs Available on crates.io : You can download it via Cargo == What was challenging ? == The Disassembler: Writing a disassembler that parses raw .bin files is tricky because they don’t have headers. I ran into a massive issue where my image data (using the color byte $0A) was being read by the disassembler as infinite ASL A (Shift Left) instructions! I had to engineer a way for the disassembler to properly halt when it hit a BRK instruction so it wouldn’t try to execute my pixel art. Terminal UI Architecture: Designing a dashboard (hex grids, scrolling stacks, changing colors) required a really solid state-management architecture to keep the UI smooth and responsive while the CPU loop spins at thousands of instructions per second. == What are you proud of ? == I am proud of using this project to learn Rust in a fun way! ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ I’m also really proud that it’s officially published on crates.io, meaning anyone can install and run my emulator with a single command == What should people know so they can test your project ? == Note: A Nerd Font is recommended in your terminal emulator for a proper rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! == Things to try == Load hackclub_logo_demo.bin to see the terminal render a 32x32 pixel art logo using 6502 assembly Load rainbow_demo.bin to watch a shifting color gradient animation directly manipulating video memory. Load helloworld_demo.bin to watch a centered Hello world message The Debugger: go to the Settings menu inside the TUI and slow down the CPU speed. Then watch the Memory Viewer and Disassembler track exactly what the code is doing in real-time!
=== Rust 6502 === A MOS 6502 emulator TUI with a lot of features ============================================ Before reading this Ship you should take a look at Ship #1 == What did you add ? == Here is a list of everything that I have added since the last Ship = Features = Serial Monitor : you connect to localhost:8080 using netcat. Useful for the Apple 1 OS or for debugging with text. The monitor can be used to display text but also to send text like a keyboard (useful for the Apple 1 OS) PS/2 Keyboard : a full PS/2 keyboard emulation (used in Snake) Use the UI with a Mouse: On the Home Menu and in the Emulator you can click on button, toggle, scroll, etc… Interrupt : IRQ & NMI Tips in the Settings Panel Modify speed with Hz & MHz (like a real 6502 chip) Reset Vector: The emulator will look at $FFFC & $FFFD to find the start address of the program (when the Force Address toggle is off) Set PC Address: keyboard shortcut to change the position of the PC (Program Counter) = Demo Program = Apple 1 OS (Wozmon) : I have modified the orginal Apple 1 code to fit my emulator, like Serial Monitor address, Keyboard etc… Snake : Just the Snake game ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ Keyboard Demo: Print every key press on the screen using a custom font Serial Monitor Demo: Show how the Serial Monitor works == What was challenging ? == The most challenging part of this 2nd ship was creating a Serial Monitor that works via a local port, and making a PS/2 Keyboard emulation. And of course, modifying the Apple 1 OS to make it work on this emulator ! (I was having a lot of bugs, so I rewrite a big part of the OS) ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ == What are you proud of ? == I am really proud of my self for the implementation of the Serial monitor that run on different CPU thread than the emulator itself and the fact that it work via the local network. And beyond everything the fact that my emulator can run : games, utility and the Apple 1 OS !!! ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ I’m also really proud that it’s officially published on crates.io. == What should people know so they can test your project ? == Note: A Nerd Font is recommended in your terminal emulator for a proper rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: ================== cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! == Things to try == Load snake_demo.bin to play at a classic game using the 32x32 screen and the PS/2 keyboard emulation Load wozmon.bin to use the Apple 1 OS ! You should see the documentation related to Wozmon : https://github.com/wirenux/Rust-6502/blob/main/AppleI.md Load keyboard_demo.bin to see every key you press show up on the 32x32 screen using a custom font The Debugger: go to the Settings menu inside the TUI and slow down the CPU speed. Then watch the Memory Viewer and Disassembler track exactly what the code is doing in real-time!
Rust 6502 A MOS 6502 emulator TUI with a lot of features Before reading this Ship you should take a look at Ship 1 & Ship 2 What did you add ? Here is a list of everything that I have added since the last Ship Features Breakpoints : press “F” to set a breakpoint at any address, the emulator halts the moment PC reaches it Watchpoints : same idea, but for memory Conditional Breakpoints : halt execution when a register (AC, XR, YR, SP) meets a comparison (!=, ==, >=, <=, >, <) against a target value Step Back : press “B” to rewind execution one instruction at a time, restoring the CPU and memory exactly as they were before Random Number Generator : a memory-mapped register at $BFF3 that returns a random byte from the host PC on every read, so ASM programs can have real random number Keybind Panel : a popup listing every keyboard shortcut and control, and removed the old footer keybind list to make room for it Demo Program Snake : updated to pull apple placement from the new RNG instead of the old pseudo random method ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What was challenging ? Wiring the conditional breakpoint into the run loop without breaking the existing breakpoint/watchpoint checks was harder than I though. Also getting a dropdown-style menu to choose the operator working in Ratatui was tought since there’s no native dropdown widget. So I ended up building a little spinner (▲ value ▼) that cycles through the operators instead ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What are you proud of ? I’m proud that my emulator now has real debugging tools like : breakpoints, watchpoints, conditional breakpoints, and step-back. What should people know so they can test your project ? A Nerd Font is recommended in your terminal for a better rendering of the UI icons on the Home page How to test: Install the emulator directly from crates.io by running: cargo install rust6502 Download all the .bin files on the GitHub Releases page. Launch the emulator by running rust6502 and use the built-in Home menu to select one of the demo .bin files! Things to try Load snake_demo.bin and play :D Set a breakpoint on an address inside a demo program (check the keybind panel for the shortcut!) and watch execution halt exactly there Try a conditional breakpoint : for example, halt whenever XR == 0F and watch it stop right when the register hits that value Press “B” to step backward and rewind the CPU state instruction by instruction Press the keybind panel shortcut to see the full list of controls...
|
1793101879.460157
|
1793188279.460157
|
|
38432
|
Servo Utility Platform by @Kacenta | Stardance
|
Kacenta
|
1
|
74.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T14:18:05Z", "hours": 74.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. GO HERE TO SEE VIDEO Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional , and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done.", "repo": "https://github.com/Denkata7622/Servo-Utility-Platform", "demo": ""}]...
|
[{"post_id": 73094, "ts": "202 [{"post_id": 73094, "ts": "2026-09-24T11:30:47Z", "hours": 7.7653, "text": "Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. (GO HERE TO SEE VIDEO: https://www.youtube.com/watch?v=IzWqsmjGq4U ) Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional, and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done."}, {"post_id": 69646, "ts": "2026-09-17T14:15:59Z", "hours": 7.7436, "text": "Devlog #7 - Getting Closer S.U.P. - v0.9.1 To be honest, i kinda lied last time… There is still a lot of work to do, espesially about the servoType handling Important Features Added Added WORKING Joystick Calibration + integrated additional calibration logic directly in joystick movement (toggable, of course) You can finally use the manualControl() with a fully calibrated custom profile . Changing the selected profile now updates automatically . Huge improvements to Selecting Servo Type. Now calibration works for both 90° and 180° servos. Added Servo Test Sweep ! Added a custom option in the main menu to change profiles Wrote the About me Section (Finally) Less Important Features Added Isolated updateSelectedProfile() in its own function so i can reuse it (like 100+ lines of code saved there…) Added debugger function (in “Debug” menu) for testing the joystick calibration Added a global int - actionDelay = 300ms. I have always added a delay(300) before changing display screens, starting/ending actions, ect.. to keep the app posished and remove the irritation of “fake”/“accidental” double, triple and spam clicks Fixed a bug in the normal joystick debugger function TODO [ ] Add support for 360 deg servos basically writing a custom new version of each function but for rotating servos because they are fundamentally different then positional servos (such as 90° and 180°) and don’t integrate well into the current ecosystem. [ ] Show which saved profile is for which servo type [ ] Film the video for the v1.0 release (we are really getting closer :D)."}, {"post_id": 65921, "ts": "2026-09-11T11:51:55Z", "hours": 10.3236, "text": "Devlog #6 - THE “ALMOST FINISHED” [Some original greeting here]! Time goes by, so does progress on this calibrator tool. I really started to like it to be honest. It has been really fun making all the additional systems around the calibration, such as the “Debug”, “Settings”, (soon “About” too), all the UI polish and case handling. Even the NVS storage setup (basically the real ESP32 storage instead of the RAM-like one it usually uses) teached me a lot and I’m proud of how far this project has come. But enough yapping. I FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with COINS so it doesn’t wiggle during servo movement. Just WILD XD So, what did i update in this 1 week? - Well… A LOT. If i had to list it: Made the settings finally work! Fixed a bug where option scroll started when there was no need at all Saved all settings, preferences and user profiles to permament NVS storage Changed ALL delay() instances with millis() (Where possible/wanted). Just this took like 4 hours :I (Like I said before) - FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with coins so it gets heavy enough to not wiggle during joystick movement :D Changed a breadboard because for some reason my jumper wires started losing lots of voltage and the connectors were really loose for some reason Polished the UI, A LOT. I probably plan to change from normal lists to Flipper Zero-style menu soon. Added a “Simulate Errors” feature in the “Debug” menu to test if my error and case handling works well Fixed multiple smaller bugs… I think that’s pretty much it, there could be more smaller things I don’t remember rn (sorry about that). Notes Sadly went a little above 10 hours this time D; - I sill have lots of things to do - mainly polish messages, small inconsistensies, ect. I kinda gave up on adding a keyboard - it is pretty unnecessary and will add a lot more cases to handle for almost no benefit. These days I will be filming the final video for the v1.0 release! I accept any ideas from you for future features and filming advice."}, {"post_id": 61815, "ts": "2026-09-04T22:00:19Z", "hours": 9.6508, "text": "Devlog #5 - Settings & Profile Storage ## Unknown - 5th September 2026 ### Version: v0.4.0-settinger Hello again! Yeah… I kinda forgot the journal existed again XD A LOT has changed since the last devlog, especially internally. The project is starting to feel less like a giant prototype held together by hopes and prayers and more like an actual tool. ### Main events - Finally started working properly on the Settings menu ! - Added persistent settings using the ESP32’s Preferences storage - Basically all the important environment variables are now stored, including: - - Servo / joystick pins - - Axis inversion and swapping - - Speed settings and multipliers - - Calibration parameters - - Joystick deadzones and offsets - - Debug mode - - Display and scrolling settings - - Calibration list information - - Various delays and timing values - Added saveSettings() and loadSettings() functions so I don’t have to hardcode everything every single time the board boots - Settings also have default values, so if there is no saved value yet, the program still has a working configuration - Started separating the stored data into different Preferences namespaces , so Settings and Servo Profiles don’t all get thrown into one giant storage section - Calibration Lists got actual persistent storage, meaning the calibration data doesn’t disappear every time the ESP32 restarts - Added more profile-related error handling - Continued expanding the 3-digit error code system , which is starting to look suspiciously like I accidentally created my own mini error protocol XD - Did a LOT more bug hunting and general code cleanup - Also spent way too much time making tiny UI things work properly because apparently I have decided that a 128x64 OLED deserves the same amount of attention as a full desktop application :I ### Some of the more important stuff The biggest thing here is probably the storage system. Before, most of the variables were basically just sitting in the code waiting for me to change them manually. Now I can save them to the ESP32 and load them again later. For example: settings . putDouble ( \"speedMultiplier\" , speedMultiplier ); and later: speedMultiplier = settings . getDouble ( \"speedMultiplier\" , 1 ); So if I change a setting, restart the board, and come back later, it stays changed. This also means I finally don’t have to keep scrolling to the top of a 1500+ line sketch every time I want to change something XD ### What’s next? - [ ] Actually TEST the full calibration workflow with a real servo - [ ] Add an X-axis animation to the Settings menu when changing variables - [ ] Add a way to name calibration list slots - [ ] Make the amount of list slots dynamically generated instead of hardcoded - - [ ] Add an “Add New Slot” option - [ ] Add an on-screen keyboard or find a decent library for one - [ ] Add a way to connect to the ESP32-S3’s second USB port and extract saved servo profiles as files - [ ] Keep murdering bugs until the project stops finding new ones ### Notes I’m starting to realize that the actual servo movement part was probably the easy bit. The annoying part is everything around it. Menus, storage, scrolling, profile management, error handling, input validation… At least it makes the project way more interesting :D"}, {"post_id": 53899, "ts": "2026-08-24T16:29:53Z", "hours": 7.9342, "text": "Devlog #4 - UI Polish Hello! Probably not one of the most impressive things, but a good UI is something people always respect (just subcounciously… ). Added prettyPrint() funtion, which essentially gives me the ability to parse any long message into separate pages with skippable delays. All you need to do is just click once you finished reading the page. For now I’m experimenting with the delay but 7.5 seconds feels natural for 64x128 display (probably around ~40 words). Sadly, I need to rework some of the functions for the calibration picker because there is just no way to go back to the main menu at this point.. Added some Display Error Function, which pretty much relies on prettyPrint(). Added some helper functions for things i consistently call to lower the ammount of same-purpose code and managed to bring the sketch down to ~1500 lines! The attached image is the skippable delay I kinda invented because I didn’t want to use milis() XD."}, {"post_id": 48030, "ts": "2026-08-16T10:02:26Z", "hours": 9.9022, "text": "Devlog #3 - Servo Profiles Hello everyone, We just hit a new milestone in the development of this project: Laser Calibration Profiles How do They Work? Right now we have a menu where you can choose between 3 calibration profiles each having a different ammount of samples ( the more, the better, but slower due to the higher ammount of measurements) Basic ( 5 samples ) [0, 45, 90, 135, 180] Accurate ( 9 samples ) [0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180] Servophile ( 17 samples ) [0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 123.75, 135, 146.25, 157.5, 168.75, 180] (I plan on adding a Super Servophile profile with 33 samples soon!) After choosing the profile (and - in the future - one of the 3 slots each list has), the user will go through with recording distances for each angle using a marking on the wall (use a pencil or just tape a paper and draw on it) That’s it! (At least for the manual input XD) Then the list with colleced measurements gets put in a script and thrown out as a list of angles. Now that’s it! Next Features I plan on adding an expected measurement section in the UI so the user has a better idea what the expected output should be during calibration (also helps with debugging ;) ) Turning the List of angles into a complex map that can directly transform digital angles to calibrated ones Actually using the calilbration profiles when moving servos Adding all environment variables to settings so you can change them during runtime!"}, {"post_id": 39364, "ts": "2026-08-02T09:24:02Z", "hours": 13.0031, "text": "Devlog #2 - The OLED Age SUP! It has been like a week since the last devlog… and a lot happened to be honest. (If you don’t wanna read, just go down to see the SUPER cinematic demo I made for you <3 ) If you read the first devlog, you might remember that the plan was basically: “Make the Servo move” “Then add a Joystick” and then: “Make an OLED Menu” Well, I just finished the OLED Menu! THE CODE This time I spent a LOT more time on the actual code structure (+4 hours wondering why jumper wires (the bare ones with no heads) drop so much voltage, but we don’t talk about that). The sketch has grown up to like ~700 lines, but more importantly, I started optimising it and making the code reusable instead of just putting everything into loop() . I have broken the code down into independent functions like: calculateOffCenter() offCenterToDirection() buildMenu() callMenuOption() drawScrollbar() ... So now everything is more optimised and easier to expand and debug! THE MENU Our menu now consists of: - \"Manual Control\" - \"Calibration\" - \"Debug\" - \"Settings\" I made buildMenu() take an array of options and their length, so I can reuse the same function for all menus. I also added a scrollbar (cause apparently four lines of text just wasn’t enough). Calibration Time This is where things got interesting. I started working on the Calibration menu. Right now it has: - Simple Calibr. - Pulse Width Calibr. - C.E.A. LASER Calibr. - 360deg Servo - 180deg Servo - Go Back Some of these are still placeholders, but LASER Calibration is halfway done. C.E.A. LASER CALIBRATION Yes. I finally found a purpose to my year old laser module :D The idea is pretty simple. Tape a laser to the servo head. Put a piece of paper on a wall. Point the laser at it. Move it a certain ammount of degrees (e.g. 5deg) Then use the distance between the 2 points to figure out how much degrees the servo ACTUALLY moved. And this is where the math comes in. If the servo is L centimeters away from the wall, and the laser spot moves X centimeters, we can calculate the angle with: θ = arctan(X / L) So instead of trusting the servo when sayin’: “Yeah, that’s 90° bro” S.U.P. is able to measure where the servo is actually located. And the best part is that the user doesn’t need to buy some expensive angle sensor (which is the whole idea of the project btw). You need: A laser A ruler A piece of paper A pencil A wall (I hope you have one C: ) That’s it. And I think that’s pretty damn cool. The current prototype goes through: 0° 45° 90° 135° 180° and lets me enter the measured distance (in cm ofc, no freedom units… ) with the joystick. It isn’t finished yet, but the basic system is working. What’s Next? Finish C.E.A. Laser Calibration Make the angle calculation automatic Add proper servo calibration profiles Work on Pulse Width Calibration Figure out 180° vs 360° servos Add joystick calibration Keep improving the OLED interface And hopefully make S.U.P. look less like a breadboard project and more like an actual tool."}, {"post_id": 35165, "ts": "2026-07-26T12:42:25Z", "hours": 7.8275, "text": "Devlog #1 - The Rise of S.U.P. Hello everyone, Welcome to the first ever Devlog of the Servo Utility Platform (aka. S.U.P.) This is the project I decided to make for Stardance , and the first ever solely non-AI-dependent one :D Overview So what even is S.U.P.? [ Demo can be found at the Bottom if you don’t like reading explanations :D] The Servo Utility Platform is, I won’t lie, nothing super wow . The idea is that instead of making a random test circuit every time I wanna test a new servo, I can use S.U.P. to quickly test it, calibrate it, and see if something is wrong with it. At least that’s the plan cuz right now it’s still a bunch of wires on a breadboard :D Hardware Used Currently, S.U.P. uses: ESP-WROOM-32 x1 Small I2C OLED 128x64 Display x1 Joystick Module x1 MG90S Servo Module x1 830-point Breadboard x1 A suspicious amount of jumper wires… The Beginning The first version was… really simple XD. It was literally an ESP32 shooting electricity through a wire and nothing more. [Check out the “Fancy This” picture at the bottom] The goal wasn’t to make something impressive. It was just to make sure I can do the simplest thing imaginable: “Can I make the servo move?” The answer was yes (thankfully XD). After that I added a Volume Knob ( potentiometer ). [Check the Picture that features it (it’s really sad that I can’t put the pictures in-between text)] This helped me control the servo angle , which made it more satisfying to play around with, but felt too weird. It felt like giving a static position to the servo, not making it move . The knob might work for a real 10$ servo tester but it’s just not my style . MEET: The Joystick So I replaced the potentiometer with his cooler Oklahoma bro: The Joystick . [A video of me “casually” testing the hardware can be found down below] And this is where it started feeling like the gadget of my dreams . Instead of: Pot position → Static Servo angle I first changed it to: Joystick Pot position → Static Servo angle wow! amazing! So I had to do a lil more work than changing one wire… The redesigned system was way better: Joystick x-axis position (still a pot just a fancy one ) → offCenter from 0 (we actaully use the middle of the pot as 0 and the ends as -1 and 1) → Velocity → Servo Speed Now moving the joystick slightly makes super small adjustments, while pushing it further makes the servo go wayy faster. To make this feel better, I made my own acceleration function instead of just using a simple linear movement. The final result feels surprisingly nice . Current Prototype Right now S.U.P. has: A working joystick-controlled servo system Acceleration-based movement Speed settings Adjustable servo limits Joystick deadzones A debugging system because manually adding and removing Serial.println() gets old really quickly :I [Now look at the Super Cinematic picture of that MG90S Servo] Things I Learned A few things I learned while making this: Joysticks are basically just two pots and a button The ESP32 ADC reads voltage , not “positions” Tuning acceleration functions is really worth it for making the movement feel good What’s Next? The next steps are: Add joystick calibration Find servo minimum and maximum angles (if even possible idk) Figure out how to detect 180° vs 360° servos Start building the OLED menu system (tbh sounds like the most interesting and hard part at the same time 🙏)"}]...
|
Title: Servo Utility Platform by @Kacenta | Starda Title: Servo Utility Platform by @Kacenta | Stardance
Devlogs:
Devlog #1 - The Rise of S.U.P. Hello everyone, Welcome to the first ever Devlog of the Servo Utility Platform (aka. S.U.P.) This is the project I decided to make for Stardance , and the first ever solely non-AI-dependent one :D Overview So what even is S.U.P.? [ Demo can be found at the Bottom if you don’t like reading explanations :D] The Servo Utility Platform is, I won’t lie, nothing super wow . The idea is that instead of making a random test circuit every time I wanna test a new servo, I can use S.U.P. to quickly test it, calibrate it, and see if something is wrong with it. At least that’s the plan cuz right now it’s still a bunch of wires on a breadboard :D Hardware Used Currently, S.U.P. uses: ESP-WROOM-32 x1 Small I2C OLED 128x64 Display x1 Joystick Module x1 MG90S Servo Module x1 830-point Breadboard x1 A suspicious amount of jumper wires… The Beginning The first version was… really simple XD. It was literally an ESP32 shooting electricity through a wire and nothing more. [Check out the “Fancy This” picture at the bottom] The goal wasn’t to make something impressive. It was just to make sure I can do the simplest thing imaginable: “Can I make the servo move?” The answer was yes (thankfully XD). After that I added a Volume Knob ( potentiometer ). [Check the Picture that features it (it’s really sad that I can’t put the pictures in-between text)] This helped me control the servo angle , which made it more satisfying to play around with, but felt too weird. It felt like giving a static position to the servo, not making it move . The knob might work for a real 10$ servo tester but it’s just not my style . MEET: The Joystick So I replaced the potentiometer with his cooler Oklahoma bro: The Joystick . [A video of me “casually” testing the hardware can be found down below] And this is where it started feeling like the gadget of my dreams . Instead of: Pot position → Static Servo angle I first changed it to: Joystick Pot position → Static Servo angle wow! amazing! So I had to do a lil more work than changing one wire… The redesigned system was way better: Joystick x-axis position (still a pot just a fancy one ) → offCenter from 0 (we actaully use the middle of the pot as 0 and the ends as -1 and 1) → Velocity → Servo Speed Now moving the joystick slightly makes super small adjustments, while pushing it further makes the servo go wayy faster. To make this feel better, I made my own acceleration function instead of just using a simple linear movement. The final result feels surprisingly nice . Current Prototype Right now S.U.P. has: A working joystick-controlled servo system Acceleration-based movement Speed settings Adjustable servo limits Joystick deadzones A debugging system because manually adding and removing Serial.println() gets old really quickly :I [Now look at the Super Cinematic picture of that MG90S Servo] Things I Learned A few things I learned while making this: Joysticks are basically just two pots and a button The ESP32 ADC reads voltage , not “positions” Tuning acceleration functions is really worth it for making the movement feel good What’s Next? The next steps are: Add joystick calibration Find servo minimum and maximum angles (if even possible idk) Figure out how to detect 180° vs 360° servos Start building the OLED menu system (tbh sounds like the most interesting and hard part at the same time 🙏)
Devlog #2 - The OLED Age SUP! It has been like a week since the last devlog… and a lot happened to be honest. (If you don’t wanna read, just go down to see the SUPER cinematic demo I made for you <3 ) If you read the first devlog, you might remember that the plan was basically: “Make the Servo move” “Then add a Joystick” and then: “Make an OLED Menu” Well, I just finished the OLED Menu! THE CODE This time I spent a LOT more time on the actual code structure (+4 hours wondering why jumper wires (the bare ones with no heads) drop so much voltage, but we don’t talk about that). The sketch has grown up to like ~700 lines, but more importantly, I started optimising it and making the code reusable instead of just putting everything into loop() . I have broken the code down into independent functions like: calculateOffCenter() offCenterToDirection() buildMenu() callMenuOption() drawScrollbar() ... So now everything is more optimised and easier to expand and debug! THE MENU Our menu now consists of: - "Manual Control" - "Calibration" - "Debug" - "Settings" I made buildMenu() take an array of options and their length, so I can reuse the same function for all menus. I also added a scrollbar (cause apparently four lines of text just wasn’t enough). Calibration Time This is where things got interesting. I started working on the Calibration menu. Right now it has: - Simple Calibr. - Pulse Width Calibr. - C.E.A. LASER Calibr. - 360deg Servo - 180deg Servo - Go Back Some of these are still placeholders, but LASER Calibration is halfway done. C.E.A. LASER CALIBRATION Yes. I finally found a purpose to my year old laser module :D The idea is pretty simple. Tape a laser to the servo head. Put a piece of paper on a wall. Point the laser at it. Move it a certain ammount of degrees (e.g. 5deg) Then use the distance between the 2 points to figure out how much degrees the servo ACTUALLY moved. And this is where the math comes in. If the servo is L centimeters away from the wall, and the laser spot moves X centimeters, we can calculate the angle with: θ = arctan(X / L) So instead of trusting the servo when sayin’: “Yeah, that’s 90° bro” S.U.P. is able to measure where the servo is actually located. And the best part is that the user doesn’t need to buy some expensive angle sensor (which is the whole idea of the project btw). You need: A laser A ruler A piece of paper A pencil A wall (I hope you have one C: ) That’s it. And I think that’s pretty damn cool. The current prototype goes through: 0° 45° 90° 135° 180° and lets me enter the measured distance (in cm ofc, no freedom units… ) with the joystick. It isn’t finished yet, but the basic system is working. What’s Next? Finish C.E.A. Laser Calibration Make the angle calculation automatic Add proper servo calibration profiles Work on Pulse Width Calibration Figure out 180° vs 360° servos Add joystick calibration Keep improving the OLED interface And hopefully make S.U.P. look less like a breadboard project and more like an actual tool.
Devlog #3 - Servo Profiles Hello everyone, We just hit a new milestone in the development of this project: Laser Calibration Profiles How do They Work? Right now we have a menu where you can choose between 3 calibration profiles each having a different ammount of samples ( the more, the better, but slower due to the higher ammount of measurements) Basic ( 5 samples ) [0, 45, 90, 135, 180] Accurate ( 9 samples ) [0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180] Servophile ( 17 samples ) [0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 123.75, 135, 146.25, 157.5, 168.75, 180] (I plan on adding a Super Servophile profile with 33 samples soon!) After choosing the profile (and - in the future - one of the 3 slots each list has), the user will go through with recording distances for each angle using a marking on the wall (use a pencil or just tape a paper and draw on it) That’s it! (At least for the manual input XD) Then the list with colleced measurements gets put in a script and thrown out as a list of angles. Now that’s it! Next Features I plan on adding an expected measurement section in the UI so the user has a better idea what the expected output should be during calibration (also helps with debugging ;) ) Turning the List of angles into a complex map that can directly transform digital angles to calibrated ones Actually using the calilbration profiles when moving servos Adding all environment variables to settings so you can change them during runtime!
Devlog #4 - UI Polish Hello! Probably not one of the most impressive things, but a good UI is something people always respect (just subcounciously… ). Added prettyPrint() funtion, which essentially gives me the ability to parse any long message into separate pages with skippable delays. All you need to do is just click once you finished reading the page. For now I’m experimenting with the delay but 7.5 seconds feels natural for 64x128 display (probably around ~40 words). Sadly, I need to rework some of the functions for the calibration picker because there is just no way to go back to the main menu at this point.. Added some Display Error Function, which pretty much relies on prettyPrint(). Added some helper functions for things i consistently call to lower the ammount of same-purpose code and managed to bring the sketch down to ~1500 lines! The attached image is the skippable delay I kinda invented because I didn’t want to use milis() XD.
Devlog #5 - Settings & Profile Storage ## Unknown - 5th September 2026 ### Version: v0.4.0-settinger Hello again! Yeah… I kinda forgot the journal existed again XD A LOT has changed since the last devlog, especially internally. The project is starting to feel less like a giant prototype held together by hopes and prayers and more like an actual tool. ### Main events - Finally started working properly on the Settings menu ! - Added persistent settings using the ESP32’s Preferences storage - Basically all the important environment variables are now stored, including: - - Servo / joystick pins - - Axis inversion and swapping - - Speed settings and multipliers - - Calibration parameters - - Joystick deadzones and offsets - - Debug mode - - Display and scrolling settings - - Calibration list information - - Various delays and timing values - Added saveSettings() and loadSettings() functions so I don’t have to hardcode everything every single time the board boots - Settings also have default values, so if there is no saved value yet, the program still has a working configuration - Started separating the stored data into different Preferences namespaces , so Settings and Servo Profiles don’t all get thrown into one giant storage section - Calibration Lists got actual persistent storage, meaning the calibration data doesn’t disappear every time the ESP32 restarts - Added more profile-related error handling - Continued expanding the 3-digit error code system , which is starting to look suspiciously like I accidentally created my own mini error protocol XD - Did a LOT more bug hunting and general code cleanup - Also spent way too much time making tiny UI things work properly because apparently I have decided that a 128x64 OLED deserves the same amount of attention as a full desktop application :I ### Some of the more important stuff The biggest thing here is probably the storage system. Before, most of the variables were basically just sitting in the code waiting for me to change them manually. Now I can save them to the ESP32 and load them again later. For example: settings . putDouble ( "speedMultiplier" , speedMultiplier ); and later: speedMultiplier = settings . getDouble ( "speedMultiplier" , 1 ); So if I change a setting, restart the board, and come back later, it stays changed. This also means I finally don’t have to keep scrolling to the top of a 1500+ line sketch every time I want to change something XD ### What’s next? - [ ] Actually TEST the full calibration workflow with a real servo - [ ] Add an X-axis animation to the Settings menu when changing variables - [ ] Add a way to name calibration list slots - [ ] Make the amount of list slots dynamically generated instead of hardcoded - - [ ] Add an “Add New Slot” option - [ ] Add an on-screen keyboard or find a decent library for one - [ ] Add a way to connect to the ESP32-S3’s second USB port and extract saved servo profiles as files - [ ] Keep murdering bugs until the project stops finding new ones ### Notes I’m starting to realize that the actual servo movement part was probably the easy bit. The annoying part is everything around it. Menus, storage, scrolling, profile management, error handling, input validation… At least it makes the project way more interesting :D
Devlog #6 - THE “ALMOST FINISHED” [Some original greeting here]! Time goes by, so does progress on this calibrator tool. I really started to like it to be honest. It has been really fun making all the additional systems around the calibration, such as the “Debug”, “Settings”, (soon “About” too), all the UI polish and case handling. Even the NVS storage setup (basically the real ESP32 storage instead of the RAM-like one it usually uses) teached me a lot and I’m proud of how far this project has come. But enough yapping. I FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with COINS so it doesn’t wiggle during servo movement. Just WILD XD So, what did i update in this 1 week? - Well… A LOT. If i had to list it: Made the settings finally work! Fixed a bug where option scroll started when there was no need at all Saved all settings, preferences and user profiles to permament NVS storage Changed ALL delay() instances with millis() (Where possible/wanted). Just this took like 4 hours :I (Like I said before) - FINALLY Taped the Laser module to the servo bracket! Also, I put it in a box of TicTac (image below XD) so it doesnt fall and give wrong reading. Then I filled the box with coins so it gets heavy enough to not wiggle during joystick movement :D Changed a breadboard because for some reason my jumper wires started losing lots of voltage and the connectors were really loose for some reason Polished the UI, A LOT. I probably plan to change from normal lists to Flipper Zero-style menu soon. Added a “Simulate Errors” feature in the “Debug” menu to test if my error and case handling works well Fixed multiple smaller bugs… I think that’s pretty much it, there could be more smaller things I don’t remember rn (sorry about that). Notes Sadly went a little above 10 hours this time D; - I sill have lots of things to do - mainly polish messages, small inconsistensies, ect. I kinda gave up on adding a keyboard - it is pretty unnecessary and will add a lot more cases to handle for almost no benefit. These days I will be filming the final video for the v1.0 release! I accept any ideas from you for future features and filming advice.
Devlog #7 - Getting Closer S.U.P. - v0.9.1 To be honest, i kinda lied last time… There is still a lot of work to do, espesially about the servoType handling Important Features Added Added WORKING Joystick Calibration + integrated additional calibration logic directly in joystick movement (toggable, of course) You can finally use the manualControl() with a fully calibrated custom profile . Changing the selected profile now updates automatically . Huge improvements to Selecting Servo Type. Now calibration works for both 90° and 180° servos. Added Servo Test Sweep ! Added a custom option in the main menu to change profiles Wrote the About me Section (Finally) Less Important Features Added Isolated updateSelectedProfile() in its own function so i can reuse it (like 100+ lines of code saved there…) Added debugger function (in “Debug” menu) for testing the joystick calibration Added a global int - actionDelay = 300ms. I have always added a delay(300) before changing display screens, starting/ending actions, ect.. to keep the app posished and remove the irritation of “fake”/“accidental” double, triple and spam clicks Fixed a bug in the normal joystick debugger function TODO [ ] Add support for 360 deg servos basically writing a custom new version of each function but for rotating servos because they are fundamentally different then positional servos (such as 90° and 180°) and don’t integrate well into the current ecosystem. [ ] Show which saved profile is for which servo type [ ] Film the video for the v1.0 release (we are really getting closer :D).
Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. (GO HERE TO SEE VIDEO: https://www.youtube.com/watch?v=IzWqsmjGq4U ) Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional, and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done.
Ships:
Devlog #8 - Actually Finished S.U.P. - v1.0 Okay, NOW it’s finished. GO HERE TO SEE VIDEO Last time I said we were getting close. Now I can finally confirm it! S.U.P. is finished. There was still a surprising amount of work left after v0.9.1, especially around handling different servo types. I ended up reworking a lot of the servo logic to make everything work together properly. Important Features Added Full support for different servo types , including 90° , 180° positional , and 360° continuous-rotation servos Added working pulse-width calibration for servo control Added working servo sweeps for testing positional servos Finished the servo type handling system Improved calibration logic so it works correctly with the selected servo type Finished saved profile handling , including persistent storage across resets Finished the joystick calibration system Completed the C.E.A. Laser Calibration system Finished the Settings , Debug , Calibration , Manual Control , and other menu systems Added and tested the final error handling and debugging tools Final Testing I tested the main workflows with real hardware instead of relying on a simulation (as I always have). The Demo Video The final demo video is finished and uploaded here: https://www.youtube.com/watch?v=IzWqsmjGq4U I tried to show the project itself rather than only talking about the code and development process. One thing I did not manage to include properly was footage of the full physical servo calibration process. The only calibration footage I kept was the joystick calibration. Everything works though :D. Sorry about that. The actual calibration system and everything else was still tested and works. I explain the missing footage in the video. Final Result S.U.P. started as a small ESP32 servo tester and grew into a much larger system than I originally expected. TODO There are still ideas I might work on in the future, but they are no longer required for the first release: Custom PCB Custom 3D Case Advanced diagnostics (I’ll have to open up the servo) General code cleanup and optimization For now, though: S.U.P. v1.0 is done....
|
1793004432.8485522
|
1793090832.8485522
|
|
56391
|
jam by @tiydwe | Stardance
|
tiydwe
|
1
|
74.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T03:15:45Z", "hours": 74.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Introducing JAM, a 2D puzzle game based off of creating and modifying road networks to get cars from here to there! In JAM, you build a road network and watch simulated cars try their best to traverse it. Then, you get feedback on your road network and try to make it better! If you want to play JAM, it is incredibly easy! Just follow the quickstart instructions in the README here https://github.com/tiydwe/jam ! JAM is the most challenging, in depth, project I’ve ever done, and I’m proud of it! JAM is built from scratch using C++ and the Simple and Fast Multimedia Library, without any game engine. I’ve learned and grown throughout building this project and many ways. For example, one thing I’m proud of is the underlying abstraction and code structure. I’ve spent countless hours making, learning, and struggling with proper memory management, ownership models, and relationships. Another example is the UI. Although the UI might look a bit simplistic, it was built entirely from basic primitives, without fancy game engine features. Getting the UI functional and good looking was a major challenge for me. After spending over 70 hours on JAM, I’m proud to say that this project has exceeded all of my expectations and been an amazing learning experience!", "repo": "https://github.com/tiydwe/jam", "demo": "https://github.com/tiydwe/jam/releases"}]...
|
[{"post_id": 74715, "ts": "202 [{"post_id": 74715, "ts": "2026-09-28T01:43:45Z", "hours": 1.7006, "text": "Added cars fade out animation Cars now fade out when they despawn and when they reach a destination! So when I sent this to a friend they got confused why cars kept disappearing, so I added this. When a car reaches the destination, the car will fade out green, but if the car despawns because it has no route it will fade out red. This was actually harder than it seems because my code was just basically freeing the car class as soon as the car reached the destination, but I changed the code so it would decrement a counter before deleting itself and use the counter to change the color of the car."}, {"post_id": 73808, "ts": "2026-09-26T02:02:07Z", "hours": 2.2122, "text": "Fixed some copyright issues (oops) and created first release So basically since the beginning of this project, I’ve been just putting ARIAL.TTF in the assets folder. It turns out that thats actually illigal and copyright infringement (oops), so I’ve switched to a different open-source font (and I included the license/attribution). I’ve also cleaned the repository history to remove any lingering font files so I’m not violating copyright or anything. Besides that, I’ve created the first release, v0.1.5 (the 4 before were all broken/tests/copyright font issues). I used AI to help me write the github actions workflow (because like literally NO ONE knows how to do that) and got builds for Linux, MacOS, and Windows. I’ve only tested it on windows so far, but I’ll try and test linux on a VM later. Anyway, I’ll be continuing to work on the game and make some UI/UX improvements."}, {"post_id": 73442, "ts": "2026-09-25T03:14:55Z", "hours": 0.9517, "text": "Improved the title screens, fixed some more bugs Bugs fixed / features added: Added another car type For some reason cars went backward, so I fixed the sprites Added title screen images"}, {"post_id": 72969, "ts": "2026-09-24T04:08:22Z", "hours": 1.5692, "text": "Tried adding buildings, but didn’t work out So I tried putting SimCity style buildings and it didn’t really go very well. I think its mainly because I’m not a good artist The roads aren’t axis aligned and I’m not going to do some crazy work to get all the buildings nicely lined up and angled like City Skylines. Other than that, I also updated the stats screen to make it look better and more easily show the requirements."}, {"post_id": 72903, "ts": "2026-09-24T00:11:43Z", "hours": 1.9867, "text": "Lots of new misc. features! I got some more friends to try my game and got lots of feedback. Here’s what I added: Crosswalks at intersections (makes them look so much better) Cars will show a no route icon if they can’t find a route (now players won’t get stuck wondering why cars arn’t moving) Hovering over cars will show their intended destination. Another level! I’ll keep working on more UI/UX upgrades. The game is looking a lot nicer now too!"}, {"post_id": 72524, "ts": "2026-09-23T04:09:01Z", "hours": 0.7831, "text": "Added some more UI features and fixed misc. bugs So I showed this to some of my friends and got some very helpful feedback especially on UX. Feature improvements: In the simulate window, I added a back button to go back and cancel the simulation so you no longer have to wait for the simulation to finish. When you are building the start of the road, it shows a preview of where the road will be to help with snapping Bugfixes: My buttons were previously accepting any clicks, even when the focus was not on the application, I fixed that by checking the focus of the application before accepting mouse clicks. Road snapping stayed the same distance from intersections even though there might be cases when the user wants to create a road near another road but not directly adjacent. I fixed this by multiplying the snap distance by the zoom factor to get a new corrected version. Overall, I don’t plan to make many more changes and will probably just add another 3-5 levels, work on the title screen, and get the game ready for shipping."}, {"post_id": 71412, "ts": "2026-09-20T19:39:32Z", "hours": 1.2444, "text": "Fixed a few problematic bugs and updated the buttons. There were two major bugs that I fixed today: Lane merging: Cars would often get stuck trying to merge when other cars also wanted to merge. This was because the merging positon was behind the actual car so they were in a deadlock. Fixed it by making sure to actualy update the new merge position if the car still has velocity. Button press: Pressing a button which switched to a new screen would press the button on the new screen directly under the press. This took me embarassly long to debug, mostly because evey time I put a breakpoint, the issue would go away. The fix was changing the initilization of a button from isPressed false to true, which was pretty funny considering I spent 30 minutes debugging this. I also updated the buttons and added a 4th level where cars are going both directions. It’s actually pretty hard to reach the target. I also changed the pathfinding to take into account the speed limit of the road and put penalties for going through routes with more intersections."}, {"post_id": 70974, "ts": "2026-09-20T04:32:09Z", "hours": 3.6283, "text": "Huge UI upgrade and fixed a few small bugs! I’ve added a background, two different car assets, and 3 different levels! I also upgraded the buttons (but I forgot to apply them to the simulation window, so you’ll see them in the next devlog). Additionally, I added dragging in the simulation window, which was in the Editor but not the Simulation for some reason. There were also two major bugs that I fixed today: Broken pathfinding on some cases: I was kind of stupid and had this weird edge case in a set where roads would not insert because the set thought they were equal because of a dumb comparison function, but that is fixed now. It took me way to long to fix this, but at least that’s done now. Cars always faced right (east): If you didn’t notice, in all my previous devlogs, the cars (which were just placeholder red squares) didn’t ever turn, which was kind of silly of me. Luckily, that was pretty easy to fix and I only had to change 3 functions."}, {"post_id": 70398, "ts": "2026-09-19T03:16:36Z", "hours": 1.6942, "text": "Added 3 new road types and updated visuals for the 4-lane road! Well, all 4 road types are now added so I can safely say that I am done with ALL the major parts of the game! Saving/Loading New game Title screen Editor window Simulation End-of-game window I also added anti-aliasing so the roads don’t look so jagged anymore. One lane roads were surprisingly easy (only like 2 easy bugs in the code) because most of the work I already did was generic enough to accept a road with 0 lanes on the left side. The rest of the time will be spent polishing everything up! Here’s my idea list so far: Add backgrounds so everything isn’t all black Change the color palette (those were supposed to be placeholder colors…) Add some more QOL features (i.e. shows if you are building the road before you click) Improve the car visuals (maybe add some random cars if its not to hard) Add audio! Do a bunch of testing to get it ready for shipping If you want to add any more to this list, just tell me."}, {"post_id": 69939, "ts": "2026-09-18T03:04:12Z", "hours": 2.1767, "text": "Added road hitboxes and placement restrictions! Roads can no longer be placed overlapping other roads! Implementing this feature might seem really easy, but actually it was really, really annoying. One main problem was that SFML doesn’t have a native way to check if two sprites/rectangleShapes are intersecting so I had too implment the Separating Axis Theorem to check if two arbitray rectangles are intersecting. I also had some issues with rotating (wrong origin), but thankfully I fixed that pretty quick. Anyway, I think the only thing left is to add all the road types (I’m planning on 1-lane one way, 2-lane one way, 2 lane road, 4 lane road, and maybe 6 lane road) and polish everything up!"}, {"post_id": 69474, "ts": "2026-09-17T04:09:40Z", "hours": 3.6081, "text": "Almost done core game + ui! I spend the last 4 hours working on the UI! So now when you start the game, you will see a simple title screen where you can start a new game from one of the levels (not shown in video) or load a saved game. Then you can go into the core gameplay loop: edit -> simulate -> stats screen (now shows pass/fail based on level conditions!). It was mostly tedious to write every single ui class, but at least I finished most of the UI. The remaining things that I need to do is add more road placement constraints (no overlapping), add more types of roads, and POLISH! I’ll be working on those for the next two weeks until the end of Stardance I guess."}, {"post_id": 68971, "ts": "2026-09-16T04:07:16Z", "hours": 3.555, "text": "Added game saving! Pretty self explanatory I guess? The UI is still pretty horrible, so I’m still going to have to work on that. I couldn’t figure out how to get choose a folder, so I’m just using the portable-file-dialogs library. The file saving is pretty straightforward, you just choose a folder and it saves there. The file format is pretty simple because it only saves the layout you made. Later, I’ll probably polish up the save dialogue and implement loading from the file. I might also work on the level selector screen or the stats screen to show how well you did!"}, {"post_id": 68848, "ts": "2026-09-15T21:12:46Z", "hours": 2.5681, "text": "Added road demolishing! Roads can now be demolished! Also, if you are in demolish mode and you hover over a road, it will highlight the road red. Some roads cannot be demolished, only roads that you placed can be demolished. This feature seems really simple but it was a huge pain to implement, mostly because of the crazy amount of pointers to other objects everywhere. Also, remember how I said I shouldn’t be using size_t for both physical and internal IDs, well that came back to bite me. I spent like an hour debugging that, but at least that’s fixed now!"}, {"post_id": 67846, "ts": "2026-09-14T03:37:33Z", "hours": 2.4819, "text": "Made intersections have some visuals! As you can see in the video, intersections now are filled grey and it actually looks okay. The main issue currently is that if an intersection only has two roads or if the roads are really close together, it causes the polygon to look quite skewed. I’ll probally be working on that next."}, {"post_id": 66941, "ts": "2026-09-12T22:21:13Z", "hours": 2.0508, "text": "Made cars move smoothly at intersections! This was an absolute nightmare to do. Mostly because my previous code was not designed at all to do this. I had to hack together a solution where below a certain threshold the car is in the intersection. This has some side effects of sometimes the car goes slow in the intersection and sometimes fast, but I think its reasonable (tighter curve = slower?). The biggest issue is that my code was designed assuming the two roads on the intersection were symmetrical (idk why i did that) so I had to basically re write the whole intersection code."}, {"post_id": 66333, "ts": "2026-09-12T03:20:36Z", "hours": 1.27, "text": "Fixed my BFS algorithm to use Dijkstra’s now! IDK why but earlier when I first made the BFS I was lazy and just used number of roads. Well, now it uses real road length to calculate distance. I had some problems involving queues and stuff, but it was pretty straightforward to get Dijkstra’s working. The video just shows a case where the old algorithm would choose the super long route because it had less roads, but now it correctly chooses the shorter route."}, {"post_id": 65765, "ts": "2026-09-11T03:46:40Z", "hours": 2.0719, "text": "I was feeling pretty tired today, so I didn’t add any major features and instead focuesd on quality of life stuff. As you can see in the video, the biggest improvements are the road preview and clicking [ESC] cancels building the road. The road preview also shows whether the road is valid. I had a ton of issues with the coordinate systems (there are like 3 different ones! pixels, global, view), but I was able to figure it out. There wasn’t anything very complicated, but next time I’ll add some kind of visuals at intersections and probally work on fixing BFS."}, {"post_id": 65179, "ts": "2026-09-10T03:54:45Z", "hours": 3.1253, "text": "You can now see basic stats once the simulation is done! The video also demonstrates additional features. The UI is still a bit simple, but that isn’t really the number one priority. To do this, I reworked the game loop to use a new state variable to control if the screen would show the editor, simulator, or stats window (notice how it no longer opens a new window). I came across some bugs involving cars going the wrong way on roads and the app crashing if I added a new intersection (that was because I mixed up internal and external IDs). Next, I think I will add a scoring system or a save load system. If you have any ideas on features that you think would make this better (besides the obvious), let me know!"}, {"post_id": 63886, "ts": "2026-09-07T21:57:33Z", "hours": 3.2367, "text": "Now roads can be drawn and it’s looking cool! As you can see in the recording, without drawing the roads, the cars just stop at the intersection because they cannot find any routes (gaps between roads are intersections, I’ll fix that later). By drawing a road, the cars can drive to their destination in the simulation. The biggest issue I had while coding this was mixing up physical IDs and internal IDs, which are not interchangable (I should have probally used a class or struct to represent IDs instead of a raw size_t). Next, I’ll work on making the intersections look better and maybe get some statistics on how well the cars preformed at the end of the simulation!"}, {"post_id": 63245, "ts": "2026-09-06T23:18:58Z", "hours": 1.535, "text": "Added some player controls and separated the editor window and simulation window. As you can see, the simulation now works okay and can be changed to 3 different speeds. I haven’t done too much, but next I will probally fix the roads meeting at the intersections."}, {"post_id": 62688, "ts": "2026-09-06T05:31:03Z", "hours": 5.7889, "text": "I know it doesn’t look like much, but this represents a lot or work and progress. I spent almost 6 hours to refactor my code to use a much cleaner ownership system that should completely prevent memory leaks and have much better separation of the static parts of simulation vs. parts that area ctually getting simulated. In a nutshell, what I did was make two classes, Layout and Simulation. Layout always exists and is the thing that is drawn on screen. Layout doesn’t have any cars or moving stuff and you can edit layout. When you start a simulation a NEW simulation object is created with all the cars which can simulated it. The clean split makes it a lot easier to know everything and edit/save stuff which might be usefull later. I had to do a lot of changing and if you look at the git commit basically every file was modified, but now the architecture is much cleaner. Next, I’ll work on adding the Simulate button and making a new window show up with the cars to simulate it."}, {"post_id": 61974, "ts": "2026-09-05T05:15:06Z", "hours": 3.2656, "text": "Made some progress, but then decided to revert back to yesterday So now I know why smart pointers are discouraged! So my ownership model was really screwed up and super confusing and I had some crazy memory problems and segmentation faults so I reverted back to yesterdays commit and am going to refactor the code to use SMART POINTERS (wow) and have a better ownership model. I feel pretty sad that I basically made no progress with 3 hours of work but I guess I learned something? SO the new plan is that Layout class will handle all things that are static in simulation and are just there (roads and intersections, both physical/logical) and Simulation will only handle all the cars and driving around. The EditorWindow class will have a pointer to (but now own) Layout so it can modify Layout but not Simulation. The SimulationWindow class will have a smart pointer to (and own) a simulation (fresh) and PhysicalCar s. This should help clarify ownership and prevent memory management issues."}, {"post_id": 61269, "ts": "2026-09-04T03:47:53Z", "hours": 5.1006, "text": "More visuals (multiple roads + intersection support) and LOADING PRESETS! I had to refactor a bunch of my code to use stuff allocated on the heap because I, stupidly, decided to initialize a bunch of my objects on the stack in a loop, causing a lot of the pointers to become hanging. Oh well, now I just have to make sure to remember to delete the allocated objects. Some plain and dirty presets can be loaded and the textures look pretty bad, but it will look a lot better pretty soon. I’m going to work on adding the first player interaction: allowing the player to add a road by clicking twice. I expect this might be a bit hard and school’s starting so it will probably be a while before I post another devlog (depending on how hard it is for me to add it) I also might try to get the road offsets and intersections better so it is more playable."}, {"post_id": 60024, "ts": "2026-09-02T03:57:47Z", "hours": 4.4422, "text": "Got some real visuals going! It’s a bit messy but if you look closely you can see the car follow the road (that road is supposed to be a 4 lane road but I didn’t draw it), switch onto a lane on the side, and keep accelerating. The framework has been built to easily expand to different types of roads like one way, 2 lane, 4 lane, etc. Next I’ll start working on getting the car to transition at intersections and finish the simulation portion. Then I can get started on working on the player interaction part!"}, {"post_id": 59324, "ts": "2026-09-01T01:34:13Z", "hours": 2.2528, "text": "Finally got the cars to be a little bit intelligent and traffic lights to actually work Traffic lights The traffic lights now enforce lane rules (cars must be on a certain lane when light is green to go to the next lane). The traffic lights are also auto generated in a bit of a “dumb” way. The traffic light just gives turns to each incoming road to go wherever they want and all other roads cannot go. Later, I might allow valid right turns, but that’s a problem for later. Car pathfinding Although I haven’t implemented the BFS search for the cars, given a route cars will now look ahead to the next intersection and randomly auto merge onto the lane (the cars are more likely to merge when they are closer to the intersection). This is to make sure that cars won’t all merge at the same time, which would be weird."}, {"post_id": 58657, "ts": "2026-08-31T04:38:04Z", "hours": 9.5722, "text": "Started my new video game, JAM JAM is a puzzle video game about solving traffic jams! I don’t have much experience writing video games so this will be a first for me (although I have plenty of regular c++ experience). So far I’ve just written the very very basic car driving logic and have it printed out to the debug console (I plan to add actual graphics once core logic is done). Currently I’ve got simple one-lane roads working and some really stupid intersections, but I’m working on multi-lane roads, merging, traffic light schedules, and cars actually waiting at intersections!"}]...
|
Title: jam by @tiydwe | Stardance
Devlogs:
Starte Title: jam by @tiydwe | Stardance
Devlogs:
Started my new video game, JAM JAM is a puzzle video game about solving traffic jams! I don’t have much experience writing video games so this will be a first for me (although I have plenty of regular c++ experience). So far I’ve just written the very very basic car driving logic and have it printed out to the debug console (I plan to add actual graphics once core logic is done). Currently I’ve got simple one-lane roads working and some really stupid intersections, but I’m working on multi-lane roads, merging, traffic light schedules, and cars actually waiting at intersections!
Finally got the cars to be a little bit intelligent and traffic lights to actually work Traffic lights The traffic lights now enforce lane rules (cars must be on a certain lane when light is green to go to the next lane). The traffic lights are also auto generated in a bit of a “dumb” way. The traffic light just gives turns to each incoming road to go wherever they want and all other roads cannot go. Later, I might allow valid right turns, but that’s a problem for later. Car pathfinding Although I haven’t implemented the BFS search for the cars, given a route cars will now look ahead to the next intersection and randomly auto merge onto the lane (the cars are more likely to merge when they are closer to the intersection). This is to make sure that cars won’t all merge at the same time, which would be weird.
Got some real visuals going! It’s a bit messy but if you look closely you can see the car follow the road (that road is supposed to be a 4 lane road but I didn’t draw it), switch onto a lane on the side, and keep accelerating. The framework has been built to easily expand to different types of roads like one way, 2 lane, 4 lane, etc. Next I’ll start working on getting the car to transition at intersections and finish the simulation portion. Then I can get started on working on the player interaction part!
More visuals (multiple roads + intersection support) and LOADING PRESETS! I had to refactor a bunch of my code to use stuff allocated on the heap because I, stupidly, decided to initialize a bunch of my objects on the stack in a loop, causing a lot of the pointers to become hanging. Oh well, now I just have to make sure to remember to delete the allocated objects. Some plain and dirty presets can be loaded and the textures look pretty bad, but it will look a lot better pretty soon. I’m going to work on adding the first player interaction: allowing the player to add a road by clicking twice. I expect this might be a bit hard and school’s starting so it will probably be a while before I post another devlog (depending on how hard it is for me to add it) I also might try to get the road offsets and intersections better so it is more playable.
Made some progress, but then decided to revert back to yesterday So now I know why smart pointers are discouraged! So my ownership model was really screwed up and super confusing and I had some crazy memory problems and segmentation faults so I reverted back to yesterdays commit and am going to refactor the code to use SMART POINTERS (wow) and have a better ownership model. I feel pretty sad that I basically made no progress with 3 hours of work but I guess I learned something? SO the new plan is that Layout class will handle all things that are static in simulation and are just there (roads and intersections, both physical/logical) and Simulation will only handle all the cars and driving around. The EditorWindow class will have a pointer to (but now own) Layout so it can modify Layout but not Simulation. The SimulationWindow class will have a smart pointer to (and own) a simulation (fresh) and PhysicalCar s. This should help clarify ownership and prevent memory management issues.
I know it doesn’t look like much, but this represents a lot or work and progress. I spent almost 6 hours to refactor my code to use a much cleaner ownership system that should completely prevent memory leaks and have much better separation of the static parts of simulation vs. parts that area ctually getting simulated. In a nutshell, what I did was make two classes, Layout and Simulation. Layout always exists and is the thing that is drawn on screen. Layout doesn’t have any cars or moving stuff and you can edit layout. When you start a simulation a NEW simulation object is created with all the cars which can simulated it. The clean split makes it a lot easier to know everything and edit/save stuff which might be usefull later. I had to do a lot of changing and if you look at the git commit basically every file was modified, but now the architecture is much cleaner. Next, I’ll work on adding the Simulate button and making a new window show up with the cars to simulate it.
Added some player controls and separated the editor window and simulation window. As you can see, the simulation now works okay and can be changed to 3 different speeds. I haven’t done too much, but next I will probally fix the roads meeting at the intersections.
Now roads can be drawn and it’s looking cool! As you can see in the recording, without drawing the roads, the cars just stop at the intersection because they cannot find any routes (gaps between roads are intersections, I’ll fix that later). By drawing a road, the cars can drive to their destination in the simulation. The biggest issue I had while coding this was mixing up physical IDs and internal IDs, which are not interchangable (I should have probally used a class or struct to represent IDs instead of a raw size_t). Next, I’ll work on making the intersections look better and maybe get some statistics on how well the cars preformed at the end of the simulation!
You can now see basic stats once the simulation is done! The video also demonstrates additional features. The UI is still a bit simple, but that isn’t really the number one priority. To do this, I reworked the game loop to use a new state variable to control if the screen would show the editor, simulator, or stats window (notice how it no longer opens a new window). I came across some bugs involving cars going the wrong way on roads and the app crashing if I added a new intersection (that was because I mixed up internal and external IDs). Next, I think I will add a scoring system or a save load system. If you have any ideas on features that you think would make this better (besides the obvious), let me know!
I was feeling pretty tired today, so I didn’t add any major features and instead focuesd on quality of life stuff. As you can see in the video, the biggest improvements are the road preview and clicking [ESC] cancels building the road. The road preview also shows whether the road is valid. I had a ton of issues with the coordinate systems (there are like 3 different ones! pixels, global, view), but I was able to figure it out. There wasn’t anything very complicated, but next time I’ll add some kind of visuals at intersections and probally work on fixing BFS.
Fixed my BFS algorithm to use Dijkstra’s now! IDK why but earlier when I first made the BFS I was lazy and just used number of roads. Well, now it uses real road length to calculate distance. I had some problems involving queues and stuff, but it was pretty straightforward to get Dijkstra’s working. The video just shows a case where the old algorithm would choose the super long route because it had less roads, but now it correctly chooses the shorter route.
Made cars move smoothly at intersections! This was an absolute nightmare to do. Mostly because my previous code was not designed at all to do this. I had to hack together a solution where below a certain threshold the car is in the intersection. This has some side effects of sometimes the car goes slow in the intersection and sometimes fast, but I think its reasonable (tighter curve = slower?). The biggest issue is that my code was designed assuming the two roads on the intersection were symmetrical (idk why i did that) so I had to basically re write the whole intersection code.
Made intersections have some visuals! As you can see in the video, intersections now are filled grey and it actually looks okay. The main issue currently is that if an intersection only has two roads or if the roads are really close together, it causes the polygon to look quite skewed. I’ll probally be working on that next.
Added road demolishing! Roads can now be demolished! Also, if you are in demolish mode and you hover over a road, it will highlight the road red. Some roads cannot be demolished, only roads that you placed can be demolished. This feature seems really simple but it was a huge pain to implement, mostly because of the crazy amount of pointers to other objects everywhere. Also, remember how I said I shouldn’t be using size_t for both physical and internal IDs, well that came back to bite me. I spent like an hour debugging that, but at least that’s fixed now!
Added game saving! Pretty self explanatory I guess? The UI is still pretty horrible, so I’m still going to have to work on that. I couldn’t figure out how to get choose a folder, so I’m just using the portable-file-dialogs library. The file saving is pretty straightforward, you just choose a folder and it saves there. The file format is pretty simple because it only saves the layout you made. Later, I’ll probably polish up the save dialogue and implement loading from the file. I might also work on the level selector screen or the stats screen to show how well you did!
Almost done core game + ui! I spend the last 4 hours working on the UI! So now when you start the game, you will see a simple title screen where you can start a new game from one of the levels (not shown in video) or load a saved game. Then you can go into the core gameplay loop: edit -> simulate -> stats screen (now shows pass/fail based on level conditions!). It was mostly tedious to write every single ui class, but at least I finished most of the UI. The remaining things that I need to do is add more road placement constraints (no overlapping), add more types of roads, and POLISH! I’ll be working on those for the next two weeks until the end of Stardance I guess.
Added road hitboxes and placement restrictions! Roads can no longer be placed overlapping other roads! Implementing this feature might seem really easy, but actually it was really, really annoying. One main problem was that SFML doesn’t have a native way to check if two sprites/rectangleShapes are intersecting so I had too implment the Separating Axis Theorem to check if two arbitray rectangles are intersecting. I also had some issues with rotating (wrong origin), but thankfully I fixed that pretty quick. Anyway, I think the only thing left is to add all the road types (I’m planning on 1-lane one way, 2-lane one way, 2 lane road, 4 lane road, and maybe 6 lane road) and polish everything up!
Added 3 new road types and updated visuals for the 4-lane road! Well, all 4 road types are now added so I can safely say that I am done with ALL the major parts of the game! Saving/Loading New game Title screen Editor window Simulation End-of-game window I also added anti-aliasing so the roads don’t look so jagged anymore. One lane roads were surprisingly easy (only like 2 easy bugs in the code) because most of the work I already did was generic enough to accept a road with 0 lanes on the left side. The rest of the time will be spent polishing everything up! Here’s my idea list so far: Add backgrounds so everything isn’t all black Change the color palette (those were supposed to be placeholder colors…) Add some more QOL features (i.e. shows if you are building the road before you click) Improve the car visuals (maybe add some random cars if its not to hard) Add audio! Do a bunch of testing to get it ready for shipping If you want to add any more to this list, just tell me.
Huge UI upgrade and fixed a few small bugs! I’ve added a background, two different car assets, and 3 different levels! I also upgraded the buttons (but I forgot to apply them to the simulation window, so you’ll see them in the next devlog). Additionally, I added dragging in the simulation window, which was in the Editor but not the Simulation for some reason. There were also two major bugs that I fixed today: Broken pathfinding on some cases: I was kind of stupid and had this weird edge case in a set where roads would not insert because the set thought they were equal because of a dumb comparison function, but that is fixed now. It took me way to long to fix this, but at least that’s done now. Cars always faced right (east): If you didn’t notice, in all my previous devlogs, the cars (which were just placeholder red squares) didn’t ever turn, which was kind of silly of me. Luckily, that was pretty easy to fix and I only had to change 3 functions.
Fixed a few problematic bugs and updated the buttons. There were two major bugs that I fixed today: Lane merging: Cars would often get stuck trying to merge when other cars also wanted to merge. This was because the merging positon was behind the actual car so they were in a deadlock. Fixed it by making sure to actualy update the new merge position if the car still has velocity. Button press: Pressing a button which switched to a new screen would press the button on the new screen directly under the press. This took me embarassly long to debug, mostly because evey time I put a breakpoint, the issue would go away. The fix was changing the initilization of a button from isPressed false to true, which was pretty funny considering I spent 30 minutes debugging this. I also updated the buttons and added a 4th level where cars are going both directions. It’s actually pretty hard to reach the target. I also changed the pathfinding to take into account the speed limit of the road and put penalties for going through routes with more intersections.
Added some more UI features and fixed misc. bugs So I showed this to some of my friends and got some very helpful feedback especially on UX. Feature improvements: In the simulate window, I added a back button to go back and cancel the simulation so you no longer have to wait for the simulation to finish. When you are building the start of the road, it shows a preview of where the road will be to help with snapping Bugfixes: My buttons were previously accepting any clicks, even when the focus was not on the application, I fixed that by checking the focus of the application before accepting mouse clicks. Road snapping stayed the same distance from intersections even though there might be cases when the user wants to create a road near another road but not directly adjacent. I fixed this by multiplying the snap distance by the zoom factor to get a new corrected version. Overall, I don’t plan to make many more changes and will probably just add another 3-5 levels, work on the title screen, and get the game ready for shipping.
Lots of new misc. features! I got some more friends to try my game and got lots of feedback. Here’s what I added: Crosswalks at intersections (makes them look so much better) Cars will show a no route icon if they can’t find a route (now players won’t get stuck wondering why cars arn’t moving) Hovering over cars will show their intended destination. Another level! I’ll keep working on more UI/UX upgrades. The game is looking a lot nicer now too!
Tried adding buildings, but didn’t work out So I tried putting SimCity style buildings and it didn’t really go very well. I think its mainly because I’m not a good artist The roads aren’t axis aligned and I’m not going to do some crazy work to get all the buildings nicely lined up and angled like City Skylines. Other than that, I also updated the stats screen to make it look better and more easily show the requirements.
Improved the title screens, fixed some more bugs Bugs fixed / features added: Added another car type For some reason cars went backward, so I fixed the sprites Added title screen images
Fixed some copyright issues (oops) and created first release So basically since the beginning of this project, I’ve been just putting ARIAL.TTF in the assets folder. It turns out that thats actually illigal and copyright infringement (oops), so I’ve switched to a different open-source font (and I included the license/attribution). I’ve also cleaned the repository history to remove any lingering font files so I’m not violating copyright or anything. Besides that, I’ve created the first release, v0.1.5 (the 4 before were all broken/tests/copyright font issues). I used AI to help me write the github actions workflow (because like literally NO ONE knows how to do that) and got builds for Linux, MacOS, and Windows. I’ve only tested it on windows so far, but I’ll try and test linux on a VM later. Anyway, I’ll be continuing to work on the game and make some UI/UX improvements.
Added cars fade out animation Cars now fade out when they despawn and when they reach a destination! So when I sent this to a friend they got confused why cars kept disappearing, so I added this. When a car reaches the destination, the car will fade out green, but if the car despawns because it has no route it will fade out red. This was actually harder than it seems because my code was just basically freeing the car class as soon as the car reached the destination, but I changed the code so it would decrement a counter before deleting itself and use the counter to change the color of the car.
Ships:
Introducing JAM, a 2D puzzle game based off of creating and modifying road networks to get cars from here to there! In JAM, you build a road network and watch simulated cars try their best to traverse it. Then, you get feedback on your road network and try to make it better! If you want to play JAM, it is incredibly easy! Just follow the quickstart instructions in the README here https://github.com/tiydwe/jam ! JAM is the most challenging, in depth, project I’ve ever done, and I’m proud of it! JAM is built from scratch using C++ and the Simple and Fast Multimedia Library, without any game engine. I’ve learned and grown throughout building this project and many ways. For example, one thing I’m proud of is the underlying abstraction and code structure. I’ve spent countless hours making, learning, and struggling with proper memory management, ownership models, and relationships. Another example is the UI. Although the UI might look a bit simplistic, it was built entirely from basic primitives, without fancy game engine features. Getting the UI functional and good looking was a major challenge for me. After spending over 70 hours on JAM, I’m proud to say that this project has exceeded all of my expectations and been an amazing learning experience!...
|
1793004854.1230614
|
1793091254.1230614
|
|
10682
|
Movement Shooter by @balu | Stardance
|
balu
|
0
|
73.89
|
0
|
[]
|
[{"post_id": 16878, "ts": "202 [{"post_id": 16878, "ts": "2026-06-27T12:13:45Z", "hours": 7.3047, "text": "Implemented proper client-side interpolation, made everything tickrate independent so you can host servers with 30hz, 64hz and even 128hz tickrate. Also changed the adaptive buffers to handle the worse internet connections, you can barely notice the rubberbanding now on a bad 4G connection for example. Here’s a test of peeker’s advantage on LAN, I measured about 15-20ms of latency for a player’s actions showing up to all other players on a stable 0ms connection"}, {"post_id": 15421, "ts": "2026-06-25T01:57:52Z", "hours": 4.8883, "text": "MASSIVE NETCODE IMPROVEMENTS I made changes to how the client adjusts its input clock, instead of targeting discrete ticks, it targets time now so we can get even less latency and allows to provide a better experience for both players with a stable and poor internet connection!! This is the same system that CS2 uses"}, {"post_id": 12655, "ts": "2026-06-20T17:56:38Z", "hours": 2.5706, "text": "Movement fixes and new weapon sway system I had to fix so much of issues with the movement script that I ended up turning hackatime off for a day so it doesn’t look like fraud I swear to god this took so much time"}, {"post_id": 11599, "ts": "2026-06-18T21:47:21Z", "hours": 11.5161, "text": "I was so lost in the old movement code because I didn’t full understand it and the janky workarounds have started to limit the customizability of the whole thing Sooo I spent 12 hours rewriting the entire thing so that I have it entirely like I want it to be: Source style air-strafing, Titanfall 2-like wallrunning, Apex-like slides etc Will be interesting to build maps around this"}, {"post_id": 10629, "ts": "2026-06-17T14:11:50Z", "hours": 4.5156, "text": "Did some refactoring and code cleanup Lag compensation visualization: Blue capsule: client hitbox, Red capsule: server hitbox"}, {"post_id": 10282, "ts": "2026-06-16T22:27:50Z", "hours": 3.0403, "text": "Lag compensation test with friend Works So far I have optimized netcode with: server authoritative model, remote entity interpolation, lag compensation It’s already a solid base for a tactial first person shooter"}, {"post_id": 10080, "ts": "2026-06-16T17:38:02Z", "hours": 6.2219, "text": "Weapon test, sway and bob didn’t learn how to design and model weapons yet so I used the Phantom from VALORANT as a test"}, {"post_id": 9477, "ts": "2026-06-15T20:37:37Z", "hours": 10.6408, "text": "I’m done with client side prediction and reconciliation, input buffers etc. I think I got it to work really well, on localhost you get about 3 frames of peeker’s advantage with 120fps clients which is around ~25ms, which is close to what CS2 gets - with 64 tick rate servers, you can’t really get lower than this I’m moving onto implementing lag compensation Here’s a video showing the peeker’s advantage"}, {"post_id": 8072, "ts": "2026-06-13T14:08:30Z", "hours": 12.0517, "text": "so uh turns out netcode is hard it took me a lot of time to get the movement working on poor network conditions i also reworked the movement the game can withstand ping jitter and packet loss i tested with 100ms ping, 30ms jitter and 10% packet loss, it functions amazingly"}, {"post_id": 5752, "ts": "2026-06-09T17:31:12Z", "hours": 7.7203, "text": "finally implemented client side prediction and reconciliation i first tried doing this 3 years ago with no success now the server doesnt trust clients blindly with their position, the client first predicts its position, sends its input to the server, the server performs the same inputs, sends back the position that it thinks the player is at, client checks if its at the same position, if not, it corrects itself this was very hard in the video the red capsule shows the latest position the client has received from the server. once i enable 50ms simulated ping (100ms rtt) you can see that the server position falls behind while the client continues moving immediately thanks to prediction"}, {"post_id": 4998, "ts": "2026-06-08T17:22:56Z", "hours": 3.4197, "text": "started working on my multiplayer movement shooter first i implemented TCP and UDP connections between clients and a dedicated server i followed Tom Weiland’s old networking tutorials for the basics, but fixed a few things because i felt there were some design issues with the original implementation after that i added my own modified version of Dani’s Karlson FPS controller from an old fangame i made right now players can connect to the server and see each other moving around correctly"}]...
|
Title: Movement Shooter by @balu | Stardance
Devl Title: Movement Shooter by @balu | Stardance
Devlogs:
started working on my multiplayer movement shooter first i implemented TCP and UDP connections between clients and a dedicated server i followed Tom Weiland’s old networking tutorials for the basics, but fixed a few things because i felt there were some design issues with the original implementation after that i added my own modified version of Dani’s Karlson FPS controller from an old fangame i made right now players can connect to the server and see each other moving around correctly
finally implemented client side prediction and reconciliation i first tried doing this 3 years ago with no success now the server doesnt trust clients blindly with their position, the client first predicts its position, sends its input to the server, the server performs the same inputs, sends back the position that it thinks the player is at, client checks if its at the same position, if not, it corrects itself this was very hard in the video the red capsule shows the latest position the client has received from the server. once i enable 50ms simulated ping (100ms rtt) you can see that the server position falls behind while the client continues moving immediately thanks to prediction
so uh turns out netcode is hard it took me a lot of time to get the movement working on poor network conditions i also reworked the movement the game can withstand ping jitter and packet loss i tested with 100ms ping, 30ms jitter and 10% packet loss, it functions amazingly
I’m done with client side prediction and reconciliation, input buffers etc. I think I got it to work really well, on localhost you get about 3 frames of peeker’s advantage with 120fps clients which is around ~25ms, which is close to what CS2 gets - with 64 tick rate servers, you can’t really get lower than this I’m moving onto implementing lag compensation Here’s a video showing the peeker’s advantage
Weapon test, sway and bob didn’t learn how to design and model weapons yet so I used the Phantom from VALORANT as a test
Lag compensation test with friend Works So far I have optimized netcode with: server authoritative model, remote entity interpolation, lag compensation It’s already a solid base for a tactial first person shooter
Did some refactoring and code cleanup Lag compensation visualization: Blue capsule: client hitbox, Red capsule: server hitbox
I was so lost in the old movement code because I didn’t full understand it and the janky workarounds have started to limit the customizability of the whole thing Sooo I spent 12 hours rewriting the entire thing so that I have it entirely like I want it to be: Source style air-strafing, Titanfall 2-like wallrunning, Apex-like slides etc Will be interesting to build maps around this
Movement fixes and new weapon sway system I had to fix so much of issues with the movement script that I ended up turning hackatime off for a day so it doesn’t look like fraud I swear to god this took so much time
MASSIVE NETCODE IMPROVEMENTS I made changes to how the client adjusts its input clock, instead of targeting discrete ticks, it targets time now so we can get even less latency and allows to provide a better experience for both players with a stable and poor internet connection!! This is the same system that CS2 uses
Implemented proper client-side interpolation, made everything tickrate independent so you can host servers with 30hz, 64hz and even 128hz tickrate. Also changed the adaptive buffers to handle the worse internet connections, you can barely notice the rubberbanding now on a bad 4G connection for example. Here’s a test of peeker’s advantage on LAN, I measured about 15-20ms of latency for a player’s actions showing up to all other players on a stable 0ms connection...
|
1792583396.7808113
|
1793188196.7808113
|
|
8830
|
AgentSwarm by @nikhil_nagaraj | Stardance
|
nikhil_nagaraj
|
0
|
73.75
|
0
|
[]
|
[{"post_id": 64019, "ts": "202 [{"post_id": 64019, "ts": "2026-09-08T04:01:56Z", "hours": 9.74, "text": "Devlog 8 Went nuclear and did a git reset because smth was killing my code. I still don’t know what, but it is what it is. At least now I’ll be able to fix it and get back to my old stage. Im working on fixing it. Btw this guy is gonna be the death of me"}, {"post_id": 63028, "ts": "2026-09-06T16:22:29Z", "hours": 9.8806, "text": "Devlog 7 hey guys. seventh devlog. devlog six gave the swarm a memory - metrics, cache stats, handoff index, overdue tasks. TUI parsing tui/runner.py parses agent markers now with parse_agent_marker, soprogress is real instead of spinner theater. short_status_line rendersprogress like 2 of 6 with percent plus writer in the footer, and acancel sentinel lets Ctrl+C set a flag file the worker checks insteadof killing mid-write. no more half decks on cancel. the web app remembers and shares app.py appends every job to job history json (last fifty kept),so refresh does not wipe your day. zip_outputs bundles pptx, docx,html, xlsx, pdf, and md into one download, and safe_filenamesanitizes anything weird before it hits the header. small endpoints,big usability win. the guards got pickier agents/pipeline_guards.py added three focused gates. readabilityfails on filler density and paragraph-bullets, heading structurerequires at least three real sections, evidence coverage requires atleast two distinct http sources. they run cheap, explain themselvesin one line, and catch the exact slop the critic used to wavethrough. the creator writes decently now agents/creator_quality.py grew humanize_text_v2 - in order becomes to, due to the fact that becomes because, unlock the power of becomes use. score_section_visual picks timeline, comparison,stats, bento, or text from actual cues instead of forcing one layout. tighten_bullets clips at word boundaries with an ellipsis so slides never overflow their boxes. the orchestrator cleans up after itself agents/orchestrator.py quarantines suspect artefacts underquarantine folder instead of clobbering good output, exposesprogress_snapshot for both TUI and web UI, and should_resumedetects a checkpoint worth resuming. run_with_progress wraps nodeexecution with an optional callback so both frontends share oneprogress shape. tests lock it in tests/test_swarm_hardening.py covers the whole pass: cost math,empty summaries, filler rejection, heading minimums, url counting,cache stats, missing-handoff detection, marker parsing, and the humanizer scrub. nine tests, all deterministic, no network, no LLM.run them with pytest tests/test_swarm_hardening.py -v. where it stands open a fresh deck, site, doc, sheet, and pdf from the same draft -they share a brand, titles are short, bullets fit, images match the subject, motion is subtle, filler is gone. open the session folder -plan, research, analysis, draft, critique, creator, plus index.json.open the metrics - elapsed, hit rate, guard wins. the swarm finally feels like a tool you can run all day and trust. This is a website it created for a business"}, {"post_id": 62698, "ts": "2026-09-06T05:51:36Z", "hours": 8.9286, "text": "Devlog #6 I improved this project by a little bit Slideshows Slideshows now have backgrounds, images, graphics, fonts, designs, and nicer templates websites Websites now have animations, images, sections, and are customized and tailored to the research task! documents Docs now have colors to organize thoughts and sections, and as well as images and visuals every so often What’s next? Drastic imrpovement, and new output type soon"}, {"post_id": 61548, "ts": "2026-09-04T14:51:38Z", "hours": 9.2414, "text": "Devlog 5 hola fifth devlog. the last two got the decks real structure and stopped a bunch of problems with like backgrounds and other stuff. so this one is all about the creator. planner, researcher, writer can do their jobs fine. However, if the creator fumbles the last mile, nobody cares how good the draft was. the creator improved agents/creator.py was the biggest culprit. _clean_content_for_slides was stripping file paths and a handful of phrases, but “delve”, “tapestry”, “game-changer”, “seamless”, “robust”, all that stuff was sailing straight onto slides.it strips all of that now. expanded filler list, whitespace collapse, drops those **** divider lines that used to become phantom slides, truncates sanely instead of cutting mid-word.also added three little helpers i wish i’d had earlier. _premium_truncate cuts at a word boundary and adds the ellipsis, _humanize_heading cleans the [layout:...] tags and keeps titles under 60 chars with proper casing, _score_section_visual actually looks at the section — timeline words + 3 bullets = timeline, versus/comparison + 4 bullets = comparison, stats + numbers = stat grid, 5+ bullets = bento. no more forcing every section into the same text wall pptx is finally actually semi-decent with animations and stuff this one bugged me for a while. agents/pptx_builder.py had _add_shape_animation and it was literally a no-op. just return . so we’d promise motion and ship static decks. now it wires real entrance animations into the timing tree. The animations are appear, fade, fly, grow, wipe, with delay support. it’s still subtle, staggered, not the 2007 bounce-everything-in kind. charts ease in, bullets cascade, hero elements land in order. open it in PowerPoint and it actually feels presented, not pasted. the critic got pickier agents/critic.py would pass stuff with “showcasing” and “unlock” all over it as long as the structure was right. added _critic_visual_score , which checks min 4 sections for rhythm, flags filler hits, flags bullets over 110 chars, needs 82+ to pass. it’s caught three decks this week i would’ve shipped before. agents/polisher.py got the same strictness on the html side — enforces hierarchy, fixes those 10px body styles that slipped through, strips leftover ai-generated / placeholder / lorem classes. agents/visual_builder.py got cinematic helpers, so it has proper 21:9 captions, glass CSS token, bento span logic so the first cell gets the weight. where it stands opened five fresh outputs side by side yesterday — deck, site, doc, sheet, pdf from the same draft. for the first time they felt like the same brand. titles are short, bullets fit, images match the subject, motion is there but doesn’t shout, and i didn’t spot a single “delve” or “tapestry”."}, {"post_id": 61313, "ts": "2026-09-04T05:10:29Z", "hours": 9.0375, "text": "Devlog 4 Drastically improved the slideshow generator and website generator Not much here, just took me 6 HOURS TO FIGURE OUT WHY THEY SUCKED The agent didn’t have the capabilities to do a background, so it was always white. Also, it was stickign to very basic styles and templates. I made them so much better (still a WIP) Last 3 hours were spent actually working on and off Only the last 3 hours were actually spent doing real work, so I lowk am cooked. Here’s some fried rice and smoothie I made! The tanghulu was a failure but at least it tasted good :P"}, {"post_id": 60265, "ts": "2026-09-02T15:04:03Z", "hours": 7.9603, "text": "Devlog 3 hey guys. Third devlog. Devlog two shipped fifty-two templates and an art director,and the html pages finally looked somewhat decent. However, they still sucked. The slides on the first iteration had almost no images, no background, nothing. It sucked until I asked it a bunch of times to revise it. the forensics before writing a line of new render code i unzipped both decks and diffed the xml. Agentswarm: 15 identical stat slides, 1 picture total. the reference:13 slides, 12 large images, and a real story arc - full-bleed cover,overview dashboard, content slides with big image panels and labeled morning/afternoon/evening blocks, an insider-tip callout, a section divider. the gap wasn’t the fonts; it was structure and imagery. and since our renderer preferred keyless stock chains and fell back to random picsumgarbage when they failed, “the images are buns” was literally true.i also found the deck was leaking its own internals onto the slides:template names, character counts, a signature footer. nothing says”designed by an ai who gave up” like “generated with template vogue ”. the rebuild scripts/pptx_template_renderer.py got rewritten around one rule: atemplate is guidance, not law. it still picks a palette, typeface pairing,and hero flavor from the spec, but every layout is chosen from the actualcontent. the archetypes are the workhorses now:- full-bleed cover with scrim, eyebrow kicker, giant title, meta strip- agenda slide with real numbered sections and content-derived stat cards- feature slides: big image panel, up to three labeled blocks (the context / the detail / the takeaway), a key-takeaway callout- timeline, comparison, quote, and gallery variants for sections that call for them - capped so a deck never spams the same layout- section divider, sources, and a closing slideevery slide gets header chrome with a section badge and page numbers,plus speaker notes. the image pipeline now tries the ai generator firstwith per-section prompts (verified live - one image every ten seconds),then the stock chain, then a styled gradient. the red badge and randompicsum are gone. where it stands still deterministic, still no llm in the loop, still pyright clean. the bronze ox is gone because the pipeline finally knows the difference between a farm animal and a model name. still ahead: teaching the website renderer to generate its own images when the cache is cold, and pushing the same director thinking down into the pdf path. This is a one-shot result - it kind of sucks"}, {"post_id": 59977, "ts": "2026-09-02T02:02:54Z", "hours": 9.7839, "text": "Devlog 2 hey guys. second devlog. the first was about keeping the pipeline alive underpressure; this one is about making it actually good. the goal was to stop thecreator from reaching for the same handful of preset looks, and to make theresearcher think before it searches. along the way a few hundred errors inthe problems panel just magically fricking appeared and took me way too long to fricking solve. A bunch of new clean templates The previous set of templates that the creator agent was given were complete dodo, like worse than the gta 6 leaks by cyberpunk and thick of it. the old template system was a few hardcoded themes and a color swap. Now, there are fifty-two distinct templates across eight categories - editorial, corporate, tech, creative, minimal, data,storytelling, luxury. Each one is a complete design dna, not a recolored clone: its own palette, typography pairing, grid, signature element(oversized type, noise grain, gradient orbs, marble texture…), and section composition rules. both the html and pptx renderers consume the same specs,so a website and its matching deck look like siblings. New agent - art director Templates alone just give you more wallpaper, so the creator got an art director ( agents/art_director.py ). it maps the task and industry to a visual direction - palette mood, typography voice, imagery style, layout personality - across ten moods from editorial to brutalist to nightlife. a coffee shop brief lands on faded-sun vintage with grainy texture; a saas pitch gets cool slate and a bento grid. no llm, always available, and its direction folds into template selection so outputs stop looking like one fixed style. Added visuals to the slides (still need a lot of work) the pptx renderer’s primary path is now the spec-driven template renderer:one dominant focal point per slide - image plus caption, stat, quote,timeline, or comparison - short visible text, and human speaker notes onevery slide. something visual every slide, balanced against the words. quality passes before anything renders markdown now runs through deterministic passes in agents/creator_quality.py before the creator touches it. humanize_text scrubs the telltale ai-isms(moreover, leverage, delve, seamless…) so the voice reads human. narrative_arc_md makes sure sources land at the end instead of opening thepiece. annotate_visual_hints finds sections that would render as unbrokenprose and injects a takeaway bullet from the section’s own first goodsentence. and the new quality_gate self-reports coverage issues onproduced outputs. the researcher plans and verifies now research used to be: search, scrape, write whatever came back. now agents/research_plan.py turns the task plus the planner handoff into subtopics, key questions, and evidence targets that anchor every search round - targeted instead of spray-and-pray, with deterministic fallbacks so fast mode still works with zero llm calls. and agents/evidence.py extracts atomic claims from scraped sources, then verifies them across sources:corroborated, contradicted, or unsupported. the synthesis prompt now refuses to present a number as fact unless the evidence view backs it, and the researcher wires its handoff text back into the prompts it actually sends -which was fetch-and-forget before. This is a slideshow it made after a lot of tweaking (like 20+ prompts); I want it to be able to do such a thing in 1 prompt so still a lot of work to be done."}, {"post_id": 59319, "ts": "2026-09-01T01:26:41Z", "hours": 7.9281, "text": "Devlog 1 hey guys. foundatin for the project I built a simple foundation for the project with a nice TUI and simple functoinality (base version for each agent). Researcher agent The researcher agent so far has a base firecrawl api, simple web search, and does nothing else so far Analyst agent The analyst agent’s only job is to analyze and summarize all key info found by the researcher Writer agent The writer agent’s job is to write prompts for the creator agent including all relevant information from the research Creator agent The creator’s only job is to create slideshows and other outputs based on given info Critic agent The critic’s only job is to criticize the output quality of the creator agent These are all only rough implimentations of them, more is yet to come"}, {"post_id": 34128, "ts": "2026-07-24T16:51:43Z", "hours": 1.2469, "text": "I’m making a swarm of ai agents to help with research - but fully free, open source, and byo. That way, you aren’t locked to one ecosystem. Im just starting out. This is my current pipeline"}]...
|
Title: AgentSwarm by @nikhil_nagaraj | Stardance
Title: AgentSwarm by @nikhil_nagaraj | Stardance
Devlogs:
I’m making a swarm of ai agents to help with research - but fully free, open source, and byo. That way, you aren’t locked to one ecosystem. Im just starting out. This is my current pipeline
Devlog 1 hey guys. foundatin for the project I built a simple foundation for the project with a nice TUI and simple functoinality (base version for each agent). Researcher agent The researcher agent so far has a base firecrawl api, simple web search, and does nothing else so far Analyst agent The analyst agent’s only job is to analyze and summarize all key info found by the researcher Writer agent The writer agent’s job is to write prompts for the creator agent including all relevant information from the research Creator agent The creator’s only job is to create slideshows and other outputs based on given info Critic agent The critic’s only job is to criticize the output quality of the creator agent These are all only rough implimentations of them, more is yet to come
Devlog 2 hey guys. second devlog. the first was about keeping the pipeline alive underpressure; this one is about making it actually good. the goal was to stop thecreator from reaching for the same handful of preset looks, and to make theresearcher think before it searches. along the way a few hundred errors inthe problems panel just magically fricking appeared and took me way too long to fricking solve. A bunch of new clean templates The previous set of templates that the creator agent was given were complete dodo, like worse than the gta 6 leaks by cyberpunk and thick of it. the old template system was a few hardcoded themes and a color swap. Now, there are fifty-two distinct templates across eight categories - editorial, corporate, tech, creative, minimal, data,storytelling, luxury. Each one is a complete design dna, not a recolored clone: its own palette, typography pairing, grid, signature element(oversized type, noise grain, gradient orbs, marble texture…), and section composition rules. both the html and pptx renderers consume the same specs,so a website and its matching deck look like siblings. New agent - art director Templates alone just give you more wallpaper, so the creator got an art director ( agents/art_director.py ). it maps the task and industry to a visual direction - palette mood, typography voice, imagery style, layout personality - across ten moods from editorial to brutalist to nightlife. a coffee shop brief lands on faded-sun vintage with grainy texture; a saas pitch gets cool slate and a bento grid. no llm, always available, and its direction folds into template selection so outputs stop looking like one fixed style. Added visuals to the slides (still need a lot of work) the pptx renderer’s primary path is now the spec-driven template renderer:one dominant focal point per slide - image plus caption, stat, quote,timeline, or comparison - short visible text, and human speaker notes onevery slide. something visual every slide, balanced against the words. quality passes before anything renders markdown now runs through deterministic passes in agents/creator_quality.py before the creator touches it. humanize_text scrubs the telltale ai-isms(moreover, leverage, delve, seamless…) so the voice reads human. narrative_arc_md makes sure sources land at the end instead of opening thepiece. annotate_visual_hints finds sections that would render as unbrokenprose and injects a takeaway bullet from the section’s own first goodsentence. and the new quality_gate self-reports coverage issues onproduced outputs. the researcher plans and verifies now research used to be: search, scrape, write whatever came back. now agents/research_plan.py turns the task plus the planner handoff into subtopics, key questions, and evidence targets that anchor every search round - targeted instead of spray-and-pray, with deterministic fallbacks so fast mode still works with zero llm calls. and agents/evidence.py extracts atomic claims from scraped sources, then verifies them across sources:corroborated, contradicted, or unsupported. the synthesis prompt now refuses to present a number as fact unless the evidence view backs it, and the researcher wires its handoff text back into the prompts it actually sends -which was fetch-and-forget before. This is a slideshow it made after a lot of tweaking (like 20+ prompts); I want it to be able to do such a thing in 1 prompt so still a lot of work to be done.
Devlog 3 hey guys. Third devlog. Devlog two shipped fifty-two templates and an art director,and the html pages finally looked somewhat decent. However, they still sucked. The slides on the first iteration had almost no images, no background, nothing. It sucked until I asked it a bunch of times to revise it. the forensics before writing a line of new render code i unzipped both decks and diffed the xml. Agentswarm: 15 identical stat slides, 1 picture total. the reference:13 slides, 12 large images, and a real story arc - full-bleed cover,overview dashboard, content slides with big image panels and labeled morning/afternoon/evening blocks, an insider-tip callout, a section divider. the gap wasn’t the fonts; it was structure and imagery. and since our renderer preferred keyless stock chains and fell back to random picsumgarbage when they failed, “the images are buns” was literally true.i also found the deck was leaking its own internals onto the slides:template names, character counts, a signature footer. nothing says”designed by an ai who gave up” like “generated with template vogue ”. the rebuild scripts/pptx_template_renderer.py got rewritten around one rule: atemplate is guidance, not law. it still picks a palette, typeface pairing,and hero flavor from the spec, but every layout is chosen from the actualcontent. the archetypes are the workhorses now:- full-bleed cover with scrim, eyebrow kicker, giant title, meta strip- agenda slide with real numbered sections and content-derived stat cards- feature slides: big image panel, up to three labeled blocks (the context / the detail / the takeaway), a key-takeaway callout- timeline, comparison, quote, and gallery variants for sections that call for them - capped so a deck never spams the same layout- section divider, sources, and a closing slideevery slide gets header chrome with a section badge and page numbers,plus speaker notes. the image pipeline now tries the ai generator firstwith per-section prompts (verified live - one image every ten seconds),then the stock chain, then a styled gradient. the red badge and randompicsum are gone. where it stands still deterministic, still no llm in the loop, still pyright clean. the bronze ox is gone because the pipeline finally knows the difference between a farm animal and a model name. still ahead: teaching the website renderer to generate its own images when the cache is cold, and pushing the same director thinking down into the pdf path. This is a one-shot result - it kind of sucks
Devlog 4 Drastically improved the slideshow generator and website generator Not much here, just took me 6 HOURS TO FIGURE OUT WHY THEY SUCKED The agent didn’t have the capabilities to do a background, so it was always white. Also, it was stickign to very basic styles and templates. I made them so much better (still a WIP) Last 3 hours were spent actually working on and off Only the last 3 hours were actually spent doing real work, so I lowk am cooked. Here’s some fried rice and smoothie I made! The tanghulu was a failure but at least it tasted good :P
Devlog 5 hola fifth devlog. the last two got the decks real structure and stopped a bunch of problems with like backgrounds and other stuff. so this one is all about the creator. planner, researcher, writer can do their jobs fine. However, if the creator fumbles the last mile, nobody cares how good the draft was. the creator improved agents/creator.py was the biggest culprit. _clean_content_for_slides was stripping file paths and a handful of phrases, but “delve”, “tapestry”, “game-changer”, “seamless”, “robust”, all that stuff was sailing straight onto slides.it strips all of that now. expanded filler list, whitespace collapse, drops those **** divider lines that used to become phantom slides, truncates sanely instead of cutting mid-word.also added three little helpers i wish i’d had earlier. _premium_truncate cuts at a word boundary and adds the ellipsis, _humanize_heading cleans the [layout:...] tags and keeps titles under 60 chars with proper casing, _score_section_visual actually looks at the section — timeline words + 3 bullets = timeline, versus/comparison + 4 bullets = comparison, stats + numbers = stat grid, 5+ bullets = bento. no more forcing every section into the same text wall pptx is finally actually semi-decent with animations and stuff this one bugged me for a while. agents/pptx_builder.py had _add_shape_animation and it was literally a no-op. just return . so we’d promise motion and ship static decks. now it wires real entrance animations into the timing tree. The animations are appear, fade, fly, grow, wipe, with delay support. it’s still subtle, staggered, not the 2007 bounce-everything-in kind. charts ease in, bullets cascade, hero elements land in order. open it in PowerPoint and it actually feels presented, not pasted. the critic got pickier agents/critic.py would pass stuff with “showcasing” and “unlock” all over it as long as the structure was right. added _critic_visual_score , which checks min 4 sections for rhythm, flags filler hits, flags bullets over 110 chars, needs 82+ to pass. it’s caught three decks this week i would’ve shipped before. agents/polisher.py got the same strictness on the html side — enforces hierarchy, fixes those 10px body styles that slipped through, strips leftover ai-generated / placeholder / lorem classes. agents/visual_builder.py got cinematic helpers, so it has proper 21:9 captions, glass CSS token, bento span logic so the first cell gets the weight. where it stands opened five fresh outputs side by side yesterday — deck, site, doc, sheet, pdf from the same draft. for the first time they felt like the same brand. titles are short, bullets fit, images match the subject, motion is there but doesn’t shout, and i didn’t spot a single “delve” or “tapestry”.
Devlog #6 I improved this project by a little bit Slideshows Slideshows now have backgrounds, images, graphics, fonts, designs, and nicer templates websites Websites now have animations, images, sections, and are customized and tailored to the research task! documents Docs now have colors to organize thoughts and sections, and as well as images and visuals every so often What’s next? Drastic imrpovement, and new output type soon
Devlog 7 hey guys. seventh devlog. devlog six gave the swarm a memory - metrics, cache stats, handoff index, overdue tasks. TUI parsing tui/runner.py parses agent markers now with parse_agent_marker, soprogress is real instead of spinner theater. short_status_line rendersprogress like 2 of 6 with percent plus writer in the footer, and acancel sentinel lets Ctrl+C set a flag file the worker checks insteadof killing mid-write. no more half decks on cancel. the web app remembers and shares app.py appends every job to job history json (last fifty kept),so refresh does not wipe your day. zip_outputs bundles pptx, docx,html, xlsx, pdf, and md into one download, and safe_filenamesanitizes anything weird before it hits the header. small endpoints,big usability win. the guards got pickier agents/pipeline_guards.py added three focused gates. readabilityfails on filler density and paragraph-bullets, heading structurerequires at least three real sections, evidence coverage requires atleast two distinct http sources. they run cheap, explain themselvesin one line, and catch the exact slop the critic used to wavethrough. the creator writes decently now agents/creator_quality.py grew humanize_text_v2 - in order becomes to, due to the fact that becomes because, unlock the power of becomes use. score_section_visual picks timeline, comparison,stats, bento, or text from actual cues instead of forcing one layout. tighten_bullets clips at word boundaries with an ellipsis so slides never overflow their boxes. the orchestrator cleans up after itself agents/orchestrator.py quarantines suspect artefacts underquarantine folder instead of clobbering good output, exposesprogress_snapshot for both TUI and web UI, and should_resumedetects a checkpoint worth resuming. run_with_progress wraps nodeexecution with an optional callback so both frontends share oneprogress shape. tests lock it in tests/test_swarm_hardening.py covers the whole pass: cost math,empty summaries, filler rejection, heading minimums, url counting,cache stats, missing-handoff detection, marker parsing, and the humanizer scrub. nine tests, all deterministic, no network, no LLM.run them with pytest tests/test_swarm_hardening.py -v. where it stands open a fresh deck, site, doc, sheet, and pdf from the same draft -they share a brand, titles are short, bullets fit, images match the subject, motion is subtle, filler is gone. open the session folder -plan, research, analysis, draft, critique, creator, plus index.json.open the metrics - elapsed, hit rate, guard wins. the swarm finally feels like a tool you can run all day and trust. This is a website it created for a business
Devlog 8 Went nuclear and did a git reset because smth was killing my code. I still don’t know what, but it is what it is. At least now I’ll be able to fix it and get back to my old stage. Im working on fixing it. Btw this guy is gonna be the death of me...
|
1792921809.4714692
|
1793785809.4714692
|
|
10499
|
CHRONOTAMEION by @dylz | Stardance
|
dylz
|
0
|
73.75
|
0
|
[]
|
[{"post_id": 66238, "ts": "202 [{"post_id": 66238, "ts": "2026-09-11T22:56:31Z", "hours": 11.9531, "text": "game Most of the time here has been transferring stuff over to be honest and a lot less of actual coding, but turns out the editor needed some pretty major changes (yeah i know i just made it lol) anyways below is a screenshot of what i’ve been starting to do"}, {"post_id": 31632, "ts": "2026-07-20T05:58:38Z", "hours": 12.22, "text": "THE EDITOR admittedly this was done a couple of days ago i lowk forgor ANYWAYS now we have a level editor yippee!! I’m very happy with it, all you have to do is decorate a property in a class with ExportAttribute and badabing badaboom it’ll appear in the editor! There’s still a lot more work to be done, I had my friend review the code and there are a good amount of changes I need to make, but honestly I think the base I’ve made for myself is shockingly good, I’m very content! The images below should illustrate how it all works, it’s 11pm, I’m going to bed. Oh also, there might not be a devlog on this project for a while – GMTK is coming up and I’m gonna be spending a crap ton of time on that and you can bet your bottom dollar I’m getting hours and devlogs from that. That begins on wednesday, take a look at those devlogs if you’re interested :)"}, {"post_id": 29329, "ts": "2026-07-16T06:13:17Z", "hours": 6.1492, "text": "Daily Devlog 7/15/26 - UI… i guess I added a bunch of UI components behind the scenes and more work on the editor. Didn’t get as much time to work today as I’d hoped but I do actually have something to show (even if it is just a textbox lol)"}, {"post_id": 28726, "ts": "2026-07-15T05:07:04Z", "hours": 2.8992, "text": "Daily Devlog 7/14/26 – Even MORE editor stuff + training Alright, today was definitely less productive than yesterday, but I still got a good amount of stuff done. First of all, the Editor code is very close to being finished! I refactored basically all of it and I’m really proud of how it turned out; genuinely some of the cleanest large-scale code I’ve written basically ever. Very happy with that! Tomorrow, I’ll actually have something to show for all of it 100%; cannot wait for that! Second of all, I’ve been teaching my friend C#, raylib, and how to work with/contribute to the codebase! I’m not a great teacher so I can’t say it’s the smoothest thing, but progress is no doubt being made. Hopefully once he’s all caught up, we’ll be able to make this game 2x faster than before. That’s all, see y’all tommorow! see below the Read/Write functions for the EntityMap (the entities) of the level (at least a high-level abstraction of them ig)"}, {"post_id": 28112, "ts": "2026-07-14T05:32:35Z", "hours": 7.1333, "text": "Daily Devlog 7/13/26 – More editor stuff Alright, today there really isn’t anything much to add. I will say, C# source (ok actually incremental but you get what i mean) generators are very cool. That’s what I’ve been using to avoid reflection when making classes acessable, editable, loadable and saveable in the editor and it’s been great. 1000% recommend over reflection any day of the week unless you definitely don’t need the like 100x performance gains. Anyways, hopefully tomorrow I’ll be able to actually finish up an early version of the editor and show y’all what it actually looks like! See you all then :) see below – lambdas, discards, syntax trees, LINQ, and pattern matching all in one function call. doesn’t get more C# than this."}, {"post_id": 26206, "ts": "2026-07-10T21:18:51Z", "hours": 14.6358, "text": "Sprite packing, teaching, etc. Honestly, everything I did is still backend, so nothing super interesting to report on. Lots of the hours here was teaching my friend proficiency with C# and general gamedev/SWE practices, but I still do have some stuff to share! I have an irrational hatred of dictionaries. So, while a normal human might be inclined to create a Dict<string, Sprite>, I made a whole seperate project that packs sprites into a texture atlas and makes a slightly absurd amount of properties so you can statically access every one! Honestly, it works very well and makes sprites super easy to use – I know manually writing out a .cs file is a little odd, but hey, if it works it works. Side note, I switched to linux! After windows decided to randomly lock me out of my laptop for an hour because it “detected odd activity”, I decided to finally bite the bullet and just install Linux. And it’s been pretty good! Honestly, everything is very tranferable from Windows, at least for a programmer, it’s a shockingly easy switch. Also it’s fun using the terminal more often and feeling like a hacker lol. Currently running Fedora w/ KDE Plasma for anyone who’s curious, although I think I’m going to switch to either Arch or Debian, I’m not super content with the dnf package manager or Red hat, altho I will say KDE Plasma is great. Alright, I’m going to wrap this up early(ish) b/c I still have a days of coding ahead of me (I just realized that it stops counting after 10hrs) Oh last thing – I’m going to start doing daily devlogs to track my progress a bit more accurately as me and my friend start to lock in more. Look forward to seeing you guys later today then!"}, {"post_id": 19693, "ts": "2026-07-01T02:38:23Z", "hours": 18.2056, "text": "Devlog 1 - Level Editor, Collision, Sprite Management and more!!!! (god that’s a lot of hours i hope most of it was afk) Alright, it’s been a while since my first devlog but for good reason! I’ve done a metric ton of stuff since then, literally none of which you will actually see as a player! Anyways, I’ll split this up into sections as usual. Level Editor Alright, this obviously comes pre-packaged with tilemap & tileset loading, file saving, compression, ids, and all of that, but I’ll try to just focus on the interesting things – firstly, my Autotiling system! Because most of the walls in my (top down) game are going to be quite simple, I’ve decided to go with a 16-piece tileset for most of them. Basically, there are 16 different tiles representing what each tile looks like depending on what’s around it – one for having one filled tile to the north only, another for having a tile to the south and east. These tiles can be uniquely represented by essentially assigning a binary flag to each of the four cardinal directions – North -> 1, East -> 2, South -> 4, etc. Now normally, you’d use a table, maybe a switch case, to match these up with their respective tiles… but I’m lazy and didn’t want to code all of that. Instead, I just decided to force the tile set to be in order so the id mathematically correlates directly to the tile’s position in the tileset! To visualize this, look at the (row-major) ordered tileset image I’ve included. The first 8x8 square is 0 – no filled tiles around it, the second is 1 – representing the tile to the north being filled… you can check this for every one, it all works out. Collision Ok, this one’s a lot more simple. The tilemap is stored in the code fundamentally as a grid of ids – 0 = air, anything else means full. To check if a player is colliding with one of these tiles, we just see what grid tiles the player would be colliding with, calculate the grid positions of those places from the world positions, and if those places are full we have a collision! There’s a bit more to it than that because you have to actually handle the collision afterwards but that’s the gist. Sprite Management Ok, this one’s pretty simple. At first, I was thinking of assigning each sprite in my game a UUID. But then I realized I wouldn’t using the first U (they don’t need to be universally unique), and sequential would be better, so now I have a sequentially id’d way to get sprites, woohoo. I still have to hook it up to some automation (it would NOT be fun to manually add a new id constant for every sprite in the future), but the core is done. Alright, I omitted a lot of stuff but I’ve already spent an unusually high amount of effort writing this, so I’ll stop there. Next devlog will hopefully be a lot smaller – refining the tilemap system and adding entities to the editor so I can add props and whatnot. See you all on the other side!"}, {"post_id": 13943, "ts": "2026-06-22T21:47:58Z", "hours": 0.5517, "text": "Devlog 0 – Movement, Occlusion, Debug Console, etc. hey y’all, thanks for checking out my devlog! In case you’re wondering why this is titled “Devlog 0” and not “Devlog 1”, it’s because everything in this devlog is actually just rehashed from some random testing I did a while back for a game I never ended up developing further. Anyways, I’ll go over the three main parts. Bear in mind, a lot of the work in this build is backend and the end result looks like I made it in 10 minutes, but I promise there’s a lot going on behind the scenes! 1. Occlusion Pretty simple, just drawing a shadowed area where the player won’t be able to see. 2. Debug Console So this is definitely one of the things that I did not code right now. A while back I made this really handy debug console thingamajig and I figured I’d show it off here. The system was originally made in Monogame, and I coded a whole text input system just for the debug console lol. This project is in Raylib C# but they’re similar enough that I just ported the code over. 3. other random info ok i kind of realized that I haven’t really explained what this project is about. To be honest I’m not quite sure – I’m going off the vague idea of a top-down heisting game (like Payday 2 or Entry Point on Roblox), but obviously I’ll have to see what’s fun. Right now I’m going to start working on guns, a level editor, and enemies. After that’s done, I’ll hopefully have a more concrete idea of what I want to make. ok that’s it thanks for reading bybye"}]...
|
Title: CHRONOTAMEION by @dylz | Stardance
Devlogs Title: CHRONOTAMEION by @dylz | Stardance
Devlogs:
Devlog 0 – Movement, Occlusion, Debug Console, etc. hey y’all, thanks for checking out my devlog! In case you’re wondering why this is titled “Devlog 0” and not “Devlog 1”, it’s because everything in this devlog is actually just rehashed from some random testing I did a while back for a game I never ended up developing further. Anyways, I’ll go over the three main parts. Bear in mind, a lot of the work in this build is backend and the end result looks like I made it in 10 minutes, but I promise there’s a lot going on behind the scenes! 1. Occlusion Pretty simple, just drawing a shadowed area where the player won’t be able to see. 2. Debug Console So this is definitely one of the things that I did not code right now. A while back I made this really handy debug console thingamajig and I figured I’d show it off here. The system was originally made in Monogame, and I coded a whole text input system just for the debug console lol. This project is in Raylib C# but they’re similar enough that I just ported the code over. 3. other random info ok i kind of realized that I haven’t really explained what this project is about. To be honest I’m not quite sure – I’m going off the vague idea of a top-down heisting game (like Payday 2 or Entry Point on Roblox), but obviously I’ll have to see what’s fun. Right now I’m going to start working on guns, a level editor, and enemies. After that’s done, I’ll hopefully have a more concrete idea of what I want to make. ok that’s it thanks for reading bybye
Devlog 1 - Level Editor, Collision, Sprite Management and more!!!! (god that’s a lot of hours i hope most of it was afk) Alright, it’s been a while since my first devlog but for good reason! I’ve done a metric ton of stuff since then, literally none of which you will actually see as a player! Anyways, I’ll split this up into sections as usual. Level Editor Alright, this obviously comes pre-packaged with tilemap & tileset loading, file saving, compression, ids, and all of that, but I’ll try to just focus on the interesting things – firstly, my Autotiling system! Because most of the walls in my (top down) game are going to be quite simple, I’ve decided to go with a 16-piece tileset for most of them. Basically, there are 16 different tiles representing what each tile looks like depending on what’s around it – one for having one filled tile to the north only, another for having a tile to the south and east. These tiles can be uniquely represented by essentially assigning a binary flag to each of the four cardinal directions – North -> 1, East -> 2, South -> 4, etc. Now normally, you’d use a table, maybe a switch case, to match these up with their respective tiles… but I’m lazy and didn’t want to code all of that. Instead, I just decided to force the tile set to be in order so the id mathematically correlates directly to the tile’s position in the tileset! To visualize this, look at the (row-major) ordered tileset image I’ve included. The first 8x8 square is 0 – no filled tiles around it, the second is 1 – representing the tile to the north being filled… you can check this for every one, it all works out. Collision Ok, this one’s a lot more simple. The tilemap is stored in the code fundamentally as a grid of ids – 0 = air, anything else means full. To check if a player is colliding with one of these tiles, we just see what grid tiles the player would be colliding with, calculate the grid positions of those places from the world positions, and if those places are full we have a collision! There’s a bit more to it than that because you have to actually handle the collision afterwards but that’s the gist. Sprite Management Ok, this one’s pretty simple. At first, I was thinking of assigning each sprite in my game a UUID. But then I realized I wouldn’t using the first U (they don’t need to be universally unique), and sequential would be better, so now I have a sequentially id’d way to get sprites, woohoo. I still have to hook it up to some automation (it would NOT be fun to manually add a new id constant for every sprite in the future), but the core is done. Alright, I omitted a lot of stuff but I’ve already spent an unusually high amount of effort writing this, so I’ll stop there. Next devlog will hopefully be a lot smaller – refining the tilemap system and adding entities to the editor so I can add props and whatnot. See you all on the other side!
Sprite packing, teaching, etc. Honestly, everything I did is still backend, so nothing super interesting to report on. Lots of the hours here was teaching my friend proficiency with C# and general gamedev/SWE practices, but I still do have some stuff to share! I have an irrational hatred of dictionaries. So, while a normal human might be inclined to create a Dict<string, Sprite>, I made a whole seperate project that packs sprites into a texture atlas and makes a slightly absurd amount of properties so you can statically access every one! Honestly, it works very well and makes sprites super easy to use – I know manually writing out a .cs file is a little odd, but hey, if it works it works. Side note, I switched to linux! After windows decided to randomly lock me out of my laptop for an hour because it “detected odd activity”, I decided to finally bite the bullet and just install Linux. And it’s been pretty good! Honestly, everything is very tranferable from Windows, at least for a programmer, it’s a shockingly easy switch. Also it’s fun using the terminal more often and feeling like a hacker lol. Currently running Fedora w/ KDE Plasma for anyone who’s curious, although I think I’m going to switch to either Arch or Debian, I’m not super content with the dnf package manager or Red hat, altho I will say KDE Plasma is great. Alright, I’m going to wrap this up early(ish) b/c I still have a days of coding ahead of me (I just realized that it stops counting after 10hrs) Oh last thing – I’m going to start doing daily devlogs to track my progress a bit more accurately as me and my friend start to lock in more. Look forward to seeing you guys later today then!
Daily Devlog 7/13/26 – More editor stuff Alright, today there really isn’t anything much to add. I will say, C# source (ok actually incremental but you get what i mean) generators are very cool. That’s what I’ve been using to avoid reflection when making classes acessable, editable, loadable and saveable in the editor and it’s been great. 1000% recommend over reflection any day of the week unless you definitely don’t need the like 100x performance gains. Anyways, hopefully tomorrow I’ll be able to actually finish up an early version of the editor and show y’all what it actually looks like! See you all then :) see below – lambdas, discards, syntax trees, LINQ, and pattern matching all in one function call. doesn’t get more C# than this.
Daily Devlog 7/14/26 – Even MORE editor stuff + training Alright, today was definitely less productive than yesterday, but I still got a good amount of stuff done. First of all, the Editor code is very close to being finished! I refactored basically all of it and I’m really proud of how it turned out; genuinely some of the cleanest large-scale code I’ve written basically ever. Very happy with that! Tomorrow, I’ll actually have something to show for all of it 100%; cannot wait for that! Second of all, I’ve been teaching my friend C#, raylib, and how to work with/contribute to the codebase! I’m not a great teacher so I can’t say it’s the smoothest thing, but progress is no doubt being made. Hopefully once he’s all caught up, we’ll be able to make this game 2x faster than before. That’s all, see y’all tommorow! see below the Read/Write functions for the EntityMap (the entities) of the level (at least a high-level abstraction of them ig)
Daily Devlog 7/15/26 - UI… i guess I added a bunch of UI components behind the scenes and more work on the editor. Didn’t get as much time to work today as I’d hoped but I do actually have something to show (even if it is just a textbox lol)
THE EDITOR admittedly this was done a couple of days ago i lowk forgor ANYWAYS now we have a level editor yippee!! I’m very happy with it, all you have to do is decorate a property in a class with ExportAttribute and badabing badaboom it’ll appear in the editor! There’s still a lot more work to be done, I had my friend review the code and there are a good amount of changes I need to make, but honestly I think the base I’ve made for myself is shockingly good, I’m very content! The images below should illustrate how it all works, it’s 11pm, I’m going to bed. Oh also, there might not be a devlog on this project for a while – GMTK is coming up and I’m gonna be spending a crap ton of time on that and you can bet your bottom dollar I’m getting hours and devlogs from that. That begins on wednesday, take a look at those devlogs if you’re interested :)
game Most of the time here has been transferring stuff over to be honest and a lot less of actual coding, but turns out the editor needed some pretty major changes (yeah i know i just made it lol) anyways below is a screenshot of what i’ve been starting to do...
|
1792522274.1914294
|
1793127074.1914294
|
|
13870
|
OceanOS by @Sai-K | Stardance
|
Sai-K
|
5
|
73.0
|
933
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T05:08:53Z", "hours": 5.0, "multiplier": 18.91, "payout": 88, "blessing": "neutral", "text": "OceanOS 5.0🌊 🌊 What did you make? I created OceanOS , a web-based operating system designed to feel like a real desktop environment. It includes interactive apps such as Files, Settings, Music, Gallery, Calendar, Weather, Ocean Store, Lumos , and more. OceanOS features draggable and resizable windows, menus, animations, themes, wallpapers, system controls, app installation, and other desktop-style functionality. 🧩 What was challenging? One of the biggest challenges was making all of the different parts of the operating system work together smoothly. Managing windows, animations, app states, menus, themes, sounds, and different OS modes required a lot of careful logic and testing. Making the interface feel responsive and polished while keeping everything consistent was also challenging. 🏆 What are you proud of? I’m most proud of how much OceanOS has grown from a simple web project into a complete interactive OS experience . I’m especially proud of the attention to detail in the UI, the animations, the apps, the window system, and the overall feeling of using a real desktop operating system. Building and connecting so many different features together was a major accomplishment. 🧪 What should people know to test the project? To properly test OceanOS, people should explore the desktop and try opening different apps, moving and resizing windows, using the menus, changing themes and wallpapers, testing the bottom bar, and checking the different system controls. They should also try features such as Ocean Store , app installation/uninstallation, Lumos , and switching between available OS modes. Some features may take a moment to load, so giving the interface a few seconds when testing is recommended. Thank you to everyone who has supported me in creating OceanOS. It means a lot to me, and I hope you have a wonderful experience. Have a breezy day!🌊", "repo": "https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version", "demo": "https://ocean-os-one.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-22T04:58:50Z", "hours": 15.0, "multiplier": 19.36, "payout": 260, "blessing": "neutral", "text": "OceanOS 🌊— A Web-Based Operating System Experience Introducing OceanOS, a web-based operating system that brings the look and feel of a modern desktop environment right to your browser. Unlike standard websites or separate applications, OceanOS offers a comprehensive desktop experience where everything—from applications and windows to menus and animations—works together smoothly as one unified system. OceanOS features a variety of built-in applications such as Files, Settings, Music, Gallery, Calendar, Weather, and Ocean Store, among others. Each application is designed to integrate seamlessly into the operating system, offering interactive windows and behaviors that feel intuitive and familiar. Developing OceanOS presented its own set of challenges, particularly in ensuring that all its components worked together seamlessly. I decided to create a consistent user experience rather than a disjointed collection of features. Every interaction, whether it’s launching an app, moving a window, or changing the system’s appearance, is thoughtfully designed to mimic the experience of using a real computer. I take pride in how OceanOS has evolved. At first, it was just a simple web-based desktop, and now, it has grown into a rich and immersive operating system experience. OceanOS combines a traditional desktop interface with custom applications, personalization options, animations, and Lumos, an intelligent multilingual AI assistant powered by Gemini, creating an environment you can explore, rather than just a website to browse. OceanOS is designed to be interacted with, so I encourage you to dive in and use it as you would any real operating system: Open and explore different applications. Move, resize, minimize, maximize, and close windows as needed. Use the bottom bar and windows grid for navigation. Search for applications and investigate the available options. Customize the system theme, visual style, and wallpaper to suit your preferences. Access the Ocean Store to experiment with installing and managing applications. Discover how the built-in apps interact to enhance your productivity. Try out Lumos, our AI assistant, to see how it can assist you. Experiment with menus, controls, animations, and other interactive elements throughout the desktop. For the best experience, I recommend using OceanOS on a desktop or laptop browser in fullscreen mode. A larger display allows you to fully enjoy the desktop environment, windows, animations, and applications as intended. Welcome to OceanOS 4.0🌊—an operating system designed for the web, inviting you to explore, engage with, and experience it just like you would with any traditional computer. Have a breezy day!🌊", "repo": "https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version", "demo": "https://ocean-os-one.vercel.app/"}, {"ship_num": 3, "ts": "2026-08-07T18:32:47Z", "hours": 8.0, "multiplier": 16.41, "payout": 132, "blessing": "neutral", "text": "OceanOS 🌊 3.0 (Ship #3): OceanOS is a web-based desktop experience that brings the feel of an operating system into the browser. I built it as an ocean-themed, interactive environment with a boot sequence, a taskbar, draggable windows, built-in apps, and a polished desktop layout that feels familiar but still unique. The goal was to create something playful and immersive while still feeling functional and thoughtfully designed. The most challenging part was making the experience feel smooth and believable without relying on a traditional desktop environment. Balancing UI polish, window interactions, app behavior, and overall performance required a lot of work. I’m proud of how great OceanOS feels as a whole, especially the visual identity, the attention to detail in the interface, and the fact that it works as more than just a demo—it feels like a real product experience. People should know that OceanOS is best experienced in a modern browser and that the interactions are most fun when tested with a mouse, since dragging windows and using the desktop UI are central to the experience. If they want to try it locally, they can run the app with the usual Next.js setup, then open it in the browser and explore the desktop, apps, and settings. It’s a project that is easy to enjoy casually, but also rewarding to explore in detail. Well, that was quite the adventure. I started off with a plain template and a dream. Now, I have a complete desktop experience. I hope you enjoy OceanOS as much as I enjoyed creating it! And with no further ado, I give you… OceanOS 3.0!🌊", "repo": "https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version", "demo": "https://ocean-os-one.vercel.app/"}, {"ship_num": 4, "ts": "2026-07-24T16:48:57Z", "hours": 17.0, "multiplier": 16.46, "payout": 276, "blessing": "neutral", "text": "OceanOS is a personal project that brings a playful, macOS-inspired desktop experience directly to your web browser. Its goal is to create a calm, relaxing ocean-themed environment that feels both immersive and enjoyable to explore. Built with modern web technologies such as Next.js, React, Zustand for state management, and Tailwind CSS for styling, OceanOS combines a polished interface with interactive functionality. The desktop includes a variety of built-in applications, ranging from everyday utilities like Calculator, Notes, and Calendar to entertainment apps like Music, Gallery, and even a TikTok-style video viewer. You’ll also find productivity and exploration tools, including a File Explorer, Weather app, a web browser that defaults to Wikipedia, and Ocean Shell—a fully interactive command-line interface that’s easily my favorite feature in the project. A quick note before you try it: if you open an app but can’t see it, your display is probably too small for the default window layout. OceanOS 2.0 was primarily tested on a 15.6-inch Windows 11 display. If this happens, simply zoom out in your browser (Ctrl + -) and drag the window back into view. OceanOS has been an exciting creative challenge and a great way to experiment with modern web development. The focus has always been on building a fun, visually appealing, and functional desktop experience that anyone can enjoy. The project is constantly evolving, with new features and improvements planned for future updates. That’s all for now! I hope you enjoy exploring OceanOS as much as I enjoyed building it. Have a breezy day! 🌊", "repo": "https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version", "demo": "https://ocean-os-one.vercel.app/"}, {"ship_num": 5, "ts": "2026-07-10T23:56:45Z", "hours": 28.0, "multiplier": 14.12, "payout": 177, "blessing": "neutral", "text": "Welcome to OceanOS! I’m glad to finally present this project to the public and I hope that everyone gets their share of fun in this amazing simulation. I created OceanOS, an ocean-themed user-friendly desktop-simulation that allows users to experience the looks of macOS in their web browsers. To me, the most challenging part of my project was making all the apps fit on a user’s screen. I solved it by adjusting the sizes of all the apps to fit a certain position when the website is in full screen so that the user gets an amazing experience. However, if you would like the optimal experience from OceanOS, it is highly recommended to go full screen, especially in a 15.6 inch laptop (the kind I use). In my project, I am most proud of the web browser as it took me many attempts to perfect the Typescript code so that users not only can see the Wikipedia page, but also the browser simulation. Usually, implementing embed websites are very rare, so I chose Wikipedia as a base. It just so happened that Wikipedia is completely open-source and is allowed to be used in iframes. For OceanOS testers, please note, if you have not already, to go Full Screen when you visit my website. I apologize for any sizing inconveniences, and if you find yourself in such a situation, kindly resize the windows to your preference. Additionally, please adjust your browser settings to allow sound so that the startup sound can be heard. And with no further ado, I give you… OceanOS! 🥳", "repo": "https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version", "demo": "https://ocean-os-one.vercel.app/"}]...
|
[{"post_id": 58468, "ts": "202 [{"post_id": 58468, "ts": "2026-08-30T21:45:04Z", "hours": 4.6328, "text": "🌊 OCEAN OS IS BACK!!!! 🥳🥳🌊🌊 OCEAN OS 5.0 HAS ARRIVED. 🚀🌊 We had an AMAZING time with OceanOS 4.0, but I decided it was time to take things to the next level with a newer, more complex generation of OceanOS. I like to call it “The Gen 5.” JK. It’s just called OceanOS 5.0. 😏 Seriously though, this is one of the biggest updates I’ve made so far! 🍎 Windows or macOS? You Choose. Some of you might remember we talked about adding a toggle between Windows Mode and macOS Mode . Well… it’s finally here! And yes — I brought back the beloved macOS-style dock from OceanOS 3.0. 🫡 And I am NOT exaggerating: It took me FIVE HOURS to bring that dock back. 5. WHOLE. HOURS. 😭 By the time I finished, I was running on about 3% brain power and an unreasonable amount of sleep deprivation. JK, I’m fine guys. 😂 Getting the dock working with windows, animations, app states, minimizing, restoring, and everything else was definitely an experience. But honestly? It was completely worth it. 🛠️ A LOT of Bug Fixes I fixed a bunch of bugs and annoyances you guys reported, cleaned up interactions, improved the UX, and fixed several weird behaviors. The Guide also got a major visual upgrade so it feels more like a real part of the OS. 🔴🟡🟢 THE BUTTONS ARE BACK THE THREE BUTTONS ARE BACK. 😂 macOS Mode now has: 🔴 Close 🟡 Minimize 🟢 Maximize It’s a small detail, but it makes macOS Mode feel MUCH more authentic. And after five hours getting the dock back, I was NOT leaving those out. 😭 🌅 A Fresh New Background I added a brand-new, high-quality background because a beautiful OS deserves a beautiful wallpaper. 🌊 A lot of you have asked where I find my backgrounds. One place I like is WallpaperFlare : WallpaperFlare There are some seriously awesome wallpapers there! ✨ A More Polished Top Bar The top bar got a major visual refresh to make it cleaner, more modern, and more macOS-inspired . And honestly… I LOVE how it turned out. 😭🔥 I also added smaller improvements like smoother UX, cleaner visuals, better interactions, polished menus, animation improvements, and lots of tiny details. The goal? Make OceanOS feel less like a website pretending to be an operating system… and more like an actual operating system. 🧑💻 How Did I Make This? A lot of you have asked how I created OceanOS. Honestly, OceanOS has really grown on me. I started it just a few months ago, a little after Stardance started. What began as a simple project became MUCH bigger than I expected. I started with a blank Next.js template. No OS. No desktop. No apps. No windows. Just a blank project. From there, I built everything step by step and had to learn an entirely new coding language. And honestly? I had a blast doing it. There were definitely moments where I wanted to throw my computer out the window. 😂 But every problem I solved made OceanOS a little better. 🌊 OceanOS 3.0 Was a HUGE Milestone OceanOS 3.0 was special because that was when I finally got the dock working the way I wanted. Looking back at where OceanOS started compared to where it is now… I’m honestly pretty proud of how far it’s come. What started as a blank Next.js project has become a full interactive desktop environment with apps, windows, themes, animations, system UI, multiple OS modes, and much more. And this is only OceanOS 5.0. 👀 Who knows where this thing is going next? 🚀 OceanOS 5.0 Is Coming I hope you guys enjoy the new OceanOS! You’ll be able to check it out once I ship the project on Stardance , and it’ll be available on Vercel soon. Thank you to everyone who has followed the project, given feedback, reported bugs, suggested features, or simply checked it out. OceanOS has come a LONG way, and I’m excited to keep building it. Welcome to OceanOS 5.0. 🌊 Have a breezy day! 🌊😎"}, {"post_id": 52075, "ts": "2026-08-22T04:39:33Z", "hours": 0.6983, "text": "Made the BootScreen animation WAY better. Pics are attached below. I also updated the top bar menu dropdown options and fixed a few bugs in the Ocean Store. I triple checked everything worked and I see no errors. I believe OceanOS 4.0 is ready to ship! 😁"}, {"post_id": 52040, "ts": "2026-08-22T02:40:35Z", "hours": 0.6683, "text": "Added an Activity Monitor app 📟 (btw this emoji took me SO long to find) and it’s starting to look pretty good. Just adding a few more features to the desktop and OceanOS will soon be ready to ship!"}, {"post_id": 52011, "ts": "2026-08-22T01:29:48Z", "hours": 2.0506, "text": "🌊 OceanOS 4.0 — The OceanOS Messages Era Is Here OKAY… I KNOW I JUST RELEASED OCEANOS 4.0. 😭 But I wasn’t done. After all the SVGs, debugging, redesigns, new apps, and Lumos AI, I decided OceanOS needed something that felt a little more… alive. So I built something new. 💬 Introducing: Messages OceanOS now has a Messages app . And this isn’t just a basic texting app. You can now text, voice call, and video call Lumos AI, Alex, Sam, Maya, and the OceanOS Team. Yep. All of them. 😏 Each character has their own advanced Gemini-powered voice, personality, and communication experience. They’re designed to feel like actual people you can interact with—not just static AI characters sitting inside an app. And the best part? It all works together seamlessly. Text them. Call them. Video call them. Switch between conversations. Everything is integrated directly with the Gemini API key , so the experience feels like one connected part of OceanOS instead of a bunch of separate features glued together. 👥 Meet the Crew 🤖 Lumos AI You already know Lumos. Now you can actually text, call, and video call Lumos directly from Messages. 👨 Alex One of the new voices joining the OceanOS experience. Text him, call him, or start a video call and see what happens. 👩 Sam Another new Gemini-powered voice with their own personality and communication style. 🧔♂️ Maya Yep, Maya is here too. He’s fully integrated into Messages and ready to talk. 🌊 OceanOS Team And of course… the OceanOS Team. Because sometimes you just need to talk to the people behind the ocean. 🌊🫡 🔐 Four Accounts. One Ocean. When you first open Messages, you’ll be greeted with four account options: Guest Ocean Developer Personal Work This makes Messages feel like an actual part of the operating system rather than just another app. Different accounts. Different conversations. One OceanOS experience. 📞 Texting. Voice. Video. This is probably the part I’m most excited about. Messages isn’t limited to typing. You can have a normal conversation through text , switch to a voice call , or jump into a video call . And because these are all powered by the same Gemini integration, everything works together surprisingly smoothly. I spent a LOT of time making sure the experience felt seamless. No weird transitions. No completely separate systems. Just… Messages. 🚀 👉 What’s Next? I have a feeling this is going to open up a LOT of possibilities for OceanOS. More voices. More characters. More integrations. More ways to communicate. And maybe even more things I probably shouldn’t be promising yet. 👀 But for now… Messages is here. Text them. Call them. Video call them. Try all four accounts. See what they say. And most importantly… Please don’t traumatize the OceanOS Team. 😭 🌊 Welcome to the next generation of OceanOS. The ocean isn’t just a place you explore anymore. It’s a place you can talk to. Have fun. 🌊"}, {"post_id": 47284, "ts": "2026-08-15T04:20:22Z", "hours": 11.6897, "text": "🌊 OceanOS 4.0 — I Know You All Have Been Waiting For This WOW. It has been a WHILE! I put a LOT of work into OceanOS 4.0, and I genuinely think you guys are going to love it. If you thought OceanOS 3.0 was great, just wait until you see this. ⏱️ The 12 Hours of OceanOS 4.0 Hour 1 — Settings & Boot Screen I upgraded the Settings app , fixed some long-awaited features, and completely redesigned the OceanOS boot screen. Hour 2 — The Dock Saga 😭 I spent basically the entire hour trying to bring the dock back. Eventually, I gave up. 😭 I later figured out what was wrong, but I’m NOT spending another hour making a macOS-style toggle. Psst… OceanOS 5.0. 😏 Hour 3 — Debugging I found what felt like a hundred problems while testing everything. After an entire hour of debugging, I finally said: “That’s good enough.” Then I closed my laptop and went to bed. Hour 4 — User Experience I realized many of my apps weren’t user-friendly, so I redesigned a bunch of them and completely changed the Ocean Store design. Hours 5 & 6 — Tiny Changes Mostly small changes that somehow took forever. 😭 I also added several new apps. Hour 7 — Start Launcher I redesigned the Start Launcher and added even more apps to the Ocean Store. Hour 8 — Tweaks Added minor features, cleaned things up, and improved the code. At this point, OceanOS was looking REALLY good. Hour 9 — SVG Era I removed the old icons from the project and started converting everything to SVG . Hour 10 — SVG Is NOT Easy Probably the most stressful hour. Creating and refining SVGs took forever, but they turned out pretty great. Hour 11 — Polish I polished the SVG icons and improved the overall user experience. Hour 12 — Final Push I updated the project to use the new SVG icons, debugged everything, and added one more app … 🤖 Introducing: Lumos AI Lumos AI uses Gemini 3.1 Flash Live Preview to actually speak with you. It can answer questions, communicate through voice, and support multiple languages . Basically, you can actually talk to it. 😏 🌊 And Here We Are OceanOS 4.0 is FINALLY here! 12 hours. Countless bugs. Way too much SVG. A questionable amount of sleep. And a LOT of ocean-themed code. The Vercel deployment is soon to be live , GitHub commits are coming right now , and you can access the localhost version whenever you want. 📱 Apps About, Music, Gallery, Settings, Camera, Ocean Shell, Web Browser, Notes, Calculator, TikTok, OceanStore, Markdown, TypeSprint, Location, Calendar, Weather, Files, Voice Recorder, Clock, Internet Speed Test, Lumos, and OceanCode. Explore everything. Try the new apps. Please don’t break something. 😭 And most importantly… Enjoy the Ocean. 🌊 The ocean breeze will stay here for as long as you need it. 🌊 Welcome to OceanOS! Your personal breezy companion. Have a great day! 🌊"}, {"post_id": 42804, "ts": "2026-08-07T18:23:23Z", "hours": 0.3275, "text": "Fixed a few bugs, deployed both my Github branches to Vercel, and polished my website for the optimal user experience. OceanOS 3.0 is officially ready to be shipped!🌊🌊🥳🥳"}, {"post_id": 42767, "ts": "2026-08-07T17:24:53Z", "hours": 7.6942, "text": "OceanOS 3.0 (WindowsOS Edition) OceanOS 3.0 is a redesigned web-based desktop environment built with React. This release focuses on creating a more polished and familiar desktop experience while keeping the ocean-inspired style that defines the project. Project Links Live Demo: https://ocean-os-one.vercel.app GitHub Repository: https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version What’s New in Version 3.0 Layout & Navigation Redesigned the desktop layout with a cleaner, grid-based arrangement. Added a Windows-inspired taskbar for a more familiar navigation experience. Updated the top menu bar with fully functional navigation buttons that integrate with the system. Visual Improvements Replaced the old react-battery-gauge component with a custom blue gradient battery indicator that better matches the overall theme. Refreshed the Wi-Fi and volume controls with a cleaner, more responsive design. Improved the clock formatting so the date and time fit naturally within the taskbar. Updated the widget designs to give them a more modern and consistent appearance. Customization OceanOS now ships with a custom ocean-themed desktop by default. Easily switch wallpapers and personalize the desktop through the built-in Settings app. Tech Stack Framework: React.js Hosting: Vercel Thanks for checking out OceanOS 3.0! I had a great time building this version, and I hope you enjoy exploring it! Have a breezy day!🌊"}, {"post_id": 33902, "ts": "2026-07-24T06:14:28Z", "hours": 0.9478, "text": "Fixed a few bugs and added a few new features to my website. Just edited a few files from the src folder and I think I’m ready to ship my project now. The github link is: https://github.com/SaiDanielK/OceanOS and the Demo Link is: https://ocean-os-one.vercel.app/ Enjoy!"}, {"post_id": 33871, "ts": "2026-07-24T04:19:59Z", "hours": 5.7694, "text": "🌊 OceanOS 2.0 — A Bigger, Better, More Polished Experience OceanOS 2.0 is here! This update brings several new applications, major improvements to the Ocean Store, visual polish, bug fixes, an improved boot experience, and a brand-new file management experience integrated directly into the website. 🌤️ New Weather App OceanOS now has its own dedicated Weather app! You can now check the weather directly from your OceanOS desktop alongside the new Calendar app. Both applications have also been integrated into the Ocean Store, making them part of the growing OceanOS ecosystem. 🛍️ Install and Uninstall Apps from the Ocean Store The Ocean Store is now more interactive than ever. Users can now: Install applications directly from the Ocean Store Uninstall applications they no longer want Manage their OceanOS applications more dynamically This brings OceanOS closer to feeling like a real operating system with its own application management system. 📁 Brand-New Files App OceanOS now includes a new Files app integrated directly into the website. The Files app connects with the project’s GitHub files and provides a more organized way to explore the files and content associated with the OceanOS project. This is another step toward making OceanOS feel like a complete desktop environment rather than just a collection of applications. 🚀 Improved Boot Screen The OceanOS boot screen has been redesigned and polished to provide a smoother and more professional startup experience. Improvements include: A cleaner and more modern design Improved animations and transitions Better visual polish A more refined first impression when starting OceanOS 🖥️ Visual Improvements & A More Polished Look OceanOS 2.0 received a significant visual refresh. Updates include: A new and more polished wallpaper experience Updated icons Improved overall visual consistency Better spacing and positioning A cleaner, more refined desktop interface The goal was to make OceanOS feel more cohesive, modern, and enjoyable to use. 🔍 Bug Fixes & Improvements Several previous issues have also been fixed in this update. 🐛 Dock Magnification Fix The dock hover magnification effect has been improved and the previous magnification bug has been fixed. The dock should now respond more smoothly when hovering over icons. 📌 Improved Z-Indexing Window layering has been improved to make sure applications appear in the correct order when interacting with the desktop. This should make overlapping windows and app interactions feel much more natural. 🔎 Search Improvements The search system has also been fixed and improved, along with several other bugs from previous versions. 🌊 Welcome to OceanOS 2.0 OceanOS 2.0 is a major step forward for the project. With new apps, a more powerful Ocean Store, a new Files app, an improved boot screen, refreshed visuals, better window management, and numerous bug fixes, OceanOS is continuing to evolve into a more complete web-based operating system experience. Have fun exploring OceanOS, try out the new features, and enjoy the new update! 💻P.S. Please do not spam the suggestion box in the Notes app. Suggestions are always welcome, but please use them responsibly so everyone can help improve OceanOS. 🌊 Welcome to OceanOS 2.0 — and have fun!"}, {"post_id": 32635, "ts": "2026-07-21T22:25:50Z", "hours": 6.0922, "text": "🚀 OceanOS 2.0 Beta Update Over the last 10 hours , I’ve been hard at work improving OceanOS. Here’s what’s new in OceanOS 2.0 Beta : ✨ New Features Added a Close All button to the top bar. Added a battery indicator using react-battery-gauge in the top bar. Added mock Wi-Fi and sound indicators . Added Shut Down and Sleep options. Sleep temporarily pauses OceanOS until you click anywhere on the screen to wake it up. Added a search bar below the top bar to quickly search for apps. Added draggable Advanced Clock and Weather widgets. 📱 New Apps Notes Calculator TikTok App Store Calendar 💡 Tips For the best experience, make sure to allow sound and geolocation permissions when prompted. I’ve also attached a screenshot of the new OceanOS 2.0 Beta for reference. Enjoy! 😁"}, {"post_id": 29836, "ts": "2026-07-16T23:47:47Z", "hours": 3.9769, "text": "Devlog: New Features for Ship #2 Overview Migrated OceanOS window layout from hardcoded positioning to a z-index-window layout system . This removes the need for manual position management across individual apps. Also added a notes app with suggestions and changed app positional settings. Changes Window Component ( src/components/Window.tsx ) Added Optional Positioning : x and y props are now optional with fallback defaults Added dynamic offset calculation : Windows now cascade based on their z-index value Formula: baseOffset = (zIndex - 100) * 50px Easy to Use Layout Management Desktop Layout ( src/components/Desktop.tsx ) Removed hardcoded positions : All 8 app windows no longer have explicit x={...} and y={...} coordinates Made Prop Passing Easier : Windows now only define z-index, width, and height Windows automatically position themselves based on their stacking order Notes App and Suggestions Configuration ( src/apps/Notes.tsx ) Created a Notes application with a suggestion box where users can give their opinion on OceanOS Configured the suggestion box to use JSON : export async function GET () { const suggestions = await readSuggestions (); return NextResponse . json ( suggestions ); }"}, {"post_id": 26259, "ts": "2026-07-10T22:58:16Z", "hours": 2.1953, "text": "I spent the last 2 hours adding a web browser app (with an embed Wikipedia page) so that users can simulate a real web browser inside my operating system. I also added a transparent top bar to my project and a splash screen that opens when my website first loads. It has a ocean-colored progress bar and a nice ocean-themed background. Remember to go Full Screen so you can view the whole project!"}, {"post_id": 25387, "ts": "2026-07-09T17:29:01Z", "hours": 0.3478, "text": "I just added dock magnification on hover."}, {"post_id": 25358, "ts": "2026-07-09T16:30:35Z", "hours": 25.9081, "text": "Hello everyone! So recently, I started creating an ocean-themed user-friendly desktop-simulation that allows users to experience the looks of macOS in their web browsers. I have started this project with Next.js, React, Zustand, and Tailwind CSS. So far, I have created the dock, in which all the apps will be stored. I have also added all the apps I am going to create into it for a good start. I have also added windows and a few features in each of them. For good measure, I have also added a cool background."}]...
|
Title: OceanOS by @Sai-K | Stardance
Devlogs:
Hel Title: OceanOS by @Sai-K | Stardance
Devlogs:
Hello everyone! So recently, I started creating an ocean-themed user-friendly desktop-simulation that allows users to experience the looks of macOS in their web browsers. I have started this project with Next.js, React, Zustand, and Tailwind CSS. So far, I have created the dock, in which all the apps will be stored. I have also added all the apps I am going to create into it for a good start. I have also added windows and a few features in each of them. For good measure, I have also added a cool background.
I just added dock magnification on hover.
I spent the last 2 hours adding a web browser app (with an embed Wikipedia page) so that users can simulate a real web browser inside my operating system. I also added a transparent top bar to my project and a splash screen that opens when my website first loads. It has a ocean-colored progress bar and a nice ocean-themed background. Remember to go Full Screen so you can view the whole project!
Devlog: New Features for Ship #2 Overview Migrated OceanOS window layout from hardcoded positioning to a z-index-window layout system . This removes the need for manual position management across individual apps. Also added a notes app with suggestions and changed app positional settings. Changes Window Component ( src/components/Window.tsx ) Added Optional Positioning : x and y props are now optional with fallback defaults Added dynamic offset calculation : Windows now cascade based on their z-index value Formula: baseOffset = (zIndex - 100) * 50px Easy to Use Layout Management Desktop Layout ( src/components/Desktop.tsx ) Removed hardcoded positions : All 8 app windows no longer have explicit x={...} and y={...} coordinates Made Prop Passing Easier : Windows now only define z-index, width, and height Windows automatically position themselves based on their stacking order Notes App and Suggestions Configuration ( src/apps/Notes.tsx ) Created a Notes application with a suggestion box where users can give their opinion on OceanOS Configured the suggestion box to use JSON : export async function GET () { const suggestions = await readSuggestions (); return NextResponse . json ( suggestions ); }
🚀 OceanOS 2.0 Beta Update Over the last 10 hours , I’ve been hard at work improving OceanOS. Here’s what’s new in OceanOS 2.0 Beta : ✨ New Features Added a Close All button to the top bar. Added a battery indicator using react-battery-gauge in the top bar. Added mock Wi-Fi and sound indicators . Added Shut Down and Sleep options. Sleep temporarily pauses OceanOS until you click anywhere on the screen to wake it up. Added a search bar below the top bar to quickly search for apps. Added draggable Advanced Clock and Weather widgets. 📱 New Apps Notes Calculator TikTok App Store Calendar 💡 Tips For the best experience, make sure to allow sound and geolocation permissions when prompted. I’ve also attached a screenshot of the new OceanOS 2.0 Beta for reference. Enjoy! 😁
🌊 OceanOS 2.0 — A Bigger, Better, More Polished Experience OceanOS 2.0 is here! This update brings several new applications, major improvements to the Ocean Store, visual polish, bug fixes, an improved boot experience, and a brand-new file management experience integrated directly into the website. 🌤️ New Weather App OceanOS now has its own dedicated Weather app! You can now check the weather directly from your OceanOS desktop alongside the new Calendar app. Both applications have also been integrated into the Ocean Store, making them part of the growing OceanOS ecosystem. 🛍️ Install and Uninstall Apps from the Ocean Store The Ocean Store is now more interactive than ever. Users can now: Install applications directly from the Ocean Store Uninstall applications they no longer want Manage their OceanOS applications more dynamically This brings OceanOS closer to feeling like a real operating system with its own application management system. 📁 Brand-New Files App OceanOS now includes a new Files app integrated directly into the website. The Files app connects with the project’s GitHub files and provides a more organized way to explore the files and content associated with the OceanOS project. This is another step toward making OceanOS feel like a complete desktop environment rather than just a collection of applications. 🚀 Improved Boot Screen The OceanOS boot screen has been redesigned and polished to provide a smoother and more professional startup experience. Improvements include: A cleaner and more modern design Improved animations and transitions Better visual polish A more refined first impression when starting OceanOS 🖥️ Visual Improvements & A More Polished Look OceanOS 2.0 received a significant visual refresh. Updates include: A new and more polished wallpaper experience Updated icons Improved overall visual consistency Better spacing and positioning A cleaner, more refined desktop interface The goal was to make OceanOS feel more cohesive, modern, and enjoyable to use. 🔍 Bug Fixes & Improvements Several previous issues have also been fixed in this update. 🐛 Dock Magnification Fix The dock hover magnification effect has been improved and the previous magnification bug has been fixed. The dock should now respond more smoothly when hovering over icons. 📌 Improved Z-Indexing Window layering has been improved to make sure applications appear in the correct order when interacting with the desktop. This should make overlapping windows and app interactions feel much more natural. 🔎 Search Improvements The search system has also been fixed and improved, along with several other bugs from previous versions. 🌊 Welcome to OceanOS 2.0 OceanOS 2.0 is a major step forward for the project. With new apps, a more powerful Ocean Store, a new Files app, an improved boot screen, refreshed visuals, better window management, and numerous bug fixes, OceanOS is continuing to evolve into a more complete web-based operating system experience. Have fun exploring OceanOS, try out the new features, and enjoy the new update! 💻P.S. Please do not spam the suggestion box in the Notes app. Suggestions are always welcome, but please use them responsibly so everyone can help improve OceanOS. 🌊 Welcome to OceanOS 2.0 — and have fun!
Fixed a few bugs and added a few new features to my website. Just edited a few files from the src folder and I think I’m ready to ship my project now. The github link is: https://github.com/SaiDanielK/OceanOS and the Demo Link is: https://ocean-os-one.vercel.app/ Enjoy!
OceanOS 3.0 (WindowsOS Edition) OceanOS 3.0 is a redesigned web-based desktop environment built with React. This release focuses on creating a more polished and familiar desktop experience while keeping the ocean-inspired style that defines the project. Project Links Live Demo: https://ocean-os-one.vercel.app GitHub Repository: https://github.com/SaiDanielK/OceanOS/tree/WindowsOS-Version What’s New in Version 3.0 Layout & Navigation Redesigned the desktop layout with a cleaner, grid-based arrangement. Added a Windows-inspired taskbar for a more familiar navigation experience. Updated the top menu bar with fully functional navigation buttons that integrate with the system. Visual Improvements Replaced the old react-battery-gauge component with a custom blue gradient battery indicator that better matches the overall theme. Refreshed the Wi-Fi and volume controls with a cleaner, more responsive design. Improved the clock formatting so the date and time fit naturally within the taskbar. Updated the widget designs to give them a more modern and consistent appearance. Customization OceanOS now ships with a custom ocean-themed desktop by default. Easily switch wallpapers and personalize the desktop through the built-in Settings app. Tech Stack Framework: React.js Hosting: Vercel Thanks for checking out OceanOS 3.0! I had a great time building this version, and I hope you enjoy exploring it! Have a breezy day!🌊
Fixed a few bugs, deployed both my Github branches to Vercel, and polished my website for the optimal user experience. OceanOS 3.0 is officially ready to be shipped!🌊🌊🥳🥳
🌊 OceanOS 4.0 — I Know You All Have Been Waiting For This WOW. It has been a WHILE! I put a LOT of work into OceanOS 4.0, and I genuinely think you guys are going to love it. If you thought OceanOS 3.0 was great, just wait until you see this. ⏱️ The 12 Hours of OceanOS 4.0 Hour 1 — Settings & Boot Screen I upgraded the Settings app , fixed some long-awaited features, and completely redesigned the OceanOS boot screen. Hour 2 — The Dock Saga 😭 I spent basically the entire hour trying to bring the dock back. Eventually, I gave up. 😭 I later figured out what was wrong, but I’m NOT spending another hour making a macOS-style toggle. Psst… OceanOS 5.0. 😏 Hour 3 — Debugging I found what felt like a hundred problems while testing everything. After an entire hour of debugging, I finally said: “That’s good enough.” Then I closed my laptop and went to bed. Hour 4 — User Experience I realized many of my apps weren’t user-friendly, so I redesigned a bunch of them and completely changed the Ocean Store design. Hours 5 & 6 — Tiny Changes Mostly small changes that somehow took forever. 😭 I also added several new apps. Hour 7 — Start Launcher I redesigned the Start Launcher and added even more apps to the Ocean Store. Hour 8 — Tweaks Added minor features, cleaned things up, and improved the code. At this point, OceanOS was looking REALLY good. Hour 9 — SVG Era I removed the old icons from the project and started converting everything to SVG . Hour 10 — SVG Is NOT Easy Probably the most stressful hour. Creating and refining SVGs took forever, but they turned out pretty great. Hour 11 — Polish I polished the SVG icons and improved the overall user experience. Hour 12 — Final Push I updated the project to use the new SVG icons, debugged everything, and added one more app … 🤖 Introducing: Lumos AI Lumos AI uses Gemini 3.1 Flash Live Preview to actually speak with you. It can answer questions, communicate through voice, and support multiple languages . Basically, you can actually talk to it. 😏 🌊 And Here We Are OceanOS 4.0 is FINALLY here! 12 hours. Countless bugs. Way too much SVG. A questionable amount of sleep. And a LOT of ocean-themed code. The Vercel deployment is soon to be live , GitHub commits are coming right now , and you can access the localhost version whenever you want. 📱 Apps About, Music, Gallery, Settings, Camera, Ocean Shell, Web Browser, Notes, Calculator, TikTok, OceanStore, Markdown, TypeSprint, Location, Calendar, Weather, Files, Voice Recorder, Clock, Internet Speed Test, Lumos, and OceanCode. Explore everything. Try the new apps. Please don’t break something. 😭 And most importantly… Enjoy the Ocean. 🌊 The ocean breeze will stay here for as long as you need it. 🌊 Welcome to OceanOS! Your personal breezy companion. Have a great day! 🌊
🌊 OceanOS 4.0 — The OceanOS Messages Era Is Here OKAY… I KNOW I JUST RELEASED OCEANOS 4.0. 😭 But I wasn’t done. After all the SVGs, debugging, redesigns, new apps, and Lumos AI, I decided OceanOS needed something that felt a little more… alive. So I built something new. 💬 Introducing: Messages OceanOS now has a Messages app . And this isn’t just a basic texting app. You can now text, voice call, and video call Lumos AI, Alex, Sam, Maya, and the OceanOS Team. Yep. All of them. 😏 Each character has their own advanced Gemini-powered voice, personality, and communication experience. They’re designed to feel like actual people you can interact with—not just static AI characters sitting inside an app. And the best part? It all works together seamlessly. Text them. Call them. Video call them. Switch between conversations. Everything is integrated directly with the Gemini API key , so the experience feels like one connected part of OceanOS instead of a bunch of separate features glued together. 👥 Meet the Crew 🤖 Lumos AI You already know Lumos. Now you can actually text, call, and video call Lumos directly from Messages. 👨 Alex One of the new voices joining the OceanOS experience. Text him, call him, or start a video call and see what happens. 👩 Sam Another new Gemini-powered voice with their own personality and communication style. 🧔♂️ Maya Yep, Maya is here too. He’s fully integrated into Messages and ready to talk. 🌊 OceanOS Team And of course… the OceanOS Team. Because sometimes you just need to talk to the people behind the ocean. 🌊🫡 🔐 Four Accounts. One Ocean. When you first open Messages, you’ll be greeted with four account options: Guest Ocean Developer Personal Work This makes Messages feel like an actual part of the operating system rather than just another app. Different accounts. Different conversations. One OceanOS experience. 📞 Texting. Voice. Video. This is probably the part I’m most excited about. Messages isn’t limited to typing. You can have a normal conversation through text , switch to a voice call , or jump into a video call . And because these are all powered by the same Gemini integration, everything works together surprisingly smoothly. I spent a LOT of time making sure the experience felt seamless. No weird transitions. No completely separate systems. Just… Messages. 🚀 👉 What’s Next? I have a feeling this is going to open up a LOT of possibilities for OceanOS. More voices. More characters. More integrations. More ways to communicate. And maybe even more things I probably shouldn’t be promising yet. 👀 But for now… Messages is here. Text them. Call them. Video call them. Try all four accounts. See what they say. And most importantly… Please don’t traumatize the OceanOS Team. 😭 🌊 Welcome to the next generation of OceanOS. The ocean isn’t just a place you explore anymore. It’s a place you can talk to. Have fun. 🌊
Added an Activity Monitor app 📟 (btw this emoji took me SO long to find) and it’s starting to look pretty good. Just adding a few more features to the desktop and OceanOS will soon be ready to ship!
Made the BootScreen animation WAY better. Pics are attached below. I also updated the top bar menu dropdown options and fixed a few bugs in the Ocean Store. I triple checked everything worked and I see no errors. I believe OceanOS 4.0 is ready to ship! 😁
🌊 OCEAN OS IS BACK!!!! 🥳🥳🌊🌊 OCEAN OS 5.0 HAS ARRIVED. 🚀🌊 We had an AMAZING time with OceanOS 4.0, but I decided it was time to take things to the next level with a newer, more complex generation of OceanOS. I like to call it “The Gen 5.” JK. It’s just called OceanOS 5.0. 😏 Seriously though, this is one of the biggest updates I’ve made so far! 🍎 Windows or macOS? You Choose. Some of you might remember we talked about adding a toggle between Windows Mode and macOS Mode . Well… it’s finally here! And yes — I brought back the beloved macOS-style dock from OceanOS 3.0. 🫡 And I am NOT exaggerating: It took me FIVE HOURS to bring that dock back. 5. WHOLE. HOURS. 😭 By the time I finished, I was running on about 3% brain power and an unreasonable amount of sleep deprivation. JK, I’m fine guys. 😂 Getting the dock working with windows, animations, app states, minimizing, restoring, and everything else was definitely an experience. But honestly? It was completely worth it. 🛠️ A LOT of Bug Fixes I fixed a bunch of bugs and annoyances you guys reported, cleaned up interactions, improved the UX, and fixed several weird behaviors. The Guide also got a major visual upgrade so it feels more like a real part of the OS. 🔴🟡🟢 THE BUTTONS ARE BACK THE THREE BUTTONS ARE BACK. 😂 macOS Mode now has: 🔴 Close 🟡 Minimize 🟢 Maximize It’s a small detail, but it makes macOS Mode feel MUCH more authentic. And after five hours getting the dock back, I was NOT leaving those out. 😭 🌅 A Fresh New Background I added a brand-new, high-quality background because a beautiful OS deserves a beautiful wallpaper. 🌊 A lot of you have asked where I find my backgrounds. One place I like is WallpaperFlare : WallpaperFlare There are some seriously awesome wallpapers there! ✨ A More Polished Top Bar The top bar got a major visual refresh to make it cleaner, more modern, and more macOS-inspired . And honestly… I LOVE how it turned out. 😭🔥 I also added smaller improvements like smoother UX, cleaner visuals, better interactions, polished menus, animation improvements, and lots of tiny details. The goal? Make OceanOS feel less like a website pretending to be an operating system… and more like an actual operating system. 🧑💻 How Did I Make This? A lot of you have asked how I created OceanOS. Honestly, OceanOS has really grown on me. I started it just a few months ago, a little after Stardance started. What began as a simple project became MUCH bigger than I expected. I started with a blank Next.js template. No OS. No desktop. No apps. No windows. Just a blank project. From there, I built everything step by step and had to learn an entirely new coding language. And honestly? I had a blast doing it. There were definitely moments where I wanted to throw my computer out the window. 😂 But every problem I solved made OceanOS a little better. 🌊 OceanOS 3.0 Was a HUGE Milestone OceanOS 3.0 was special because that was when I finally got the dock working the way I wanted. Looking back at where OceanOS started compared to where it is now… I’m honestly pretty proud of how far it’s come. What started as a blank Next.js project has become a full interactive desktop environment with apps, windows, themes, animations, system UI, multiple OS modes, and much more. And this is only OceanOS 5.0. 👀 Who knows where this thing is going next? 🚀 OceanOS 5.0 Is Coming I hope you guys enjoy the new OceanOS! You’ll be able to check it out once I ship the project on Stardance , and it’ll be available on Vercel soon. Thank you to everyone who has followed the project, given feedback, reported bugs, suggested features, or simply checked it out. OceanOS has come a LONG way, and I’m excited to keep building it. Welcome to OceanOS 5.0. 🌊 Have a breezy day! 🌊😎
Ships:
Welcome to OceanOS! I’m glad to finally present this project to the public and I hope that everyone gets their share of fun in this amazing simulation. I created OceanOS, an ocean-themed user-friendly desktop-simulation that allows users to experience the looks of macOS in their web browsers. To me, the most challenging part of my project was making all the apps fit on a user’s screen. I solved it by adjusting the sizes of all the apps to fit a certain position when the website is in full screen so that the user gets an amazing experience. However, if you would like the optimal experience from OceanOS, it is highly recommended to go full screen, especially in a 15.6 inch laptop (the kind I use). In my project, I am most proud of the web browser as it took me many attempts to perfect the Typescript code so that users not only can see the Wikipedia page, but also the browser simulation. Usually, implementing embed websites are very rare, so I chose Wikipedia as a base. It just so happened that Wikipedia is completely open-source and is allowed to be used in iframes. For OceanOS testers, please note, if you have not already, to go Full Screen when you visit my website. I apologize for any sizing inconveniences, and if you find yourself in such a situation, kindly resize the windows to your preference. Additionally, please adjust your browser settings to allow sound so that the startup sound can be heard. And with no further ado, I give you… OceanOS! 🥳
OceanOS is a personal project that brings a playful, macOS-inspired desktop experience directly to your web browser. Its goal is to create a calm, relaxing ocean-themed environment that feels both immersive and enjoyable to explore. Built with modern web technologies such as Next.js, React, Zustand for state management, and Tailwind CSS for styling, OceanOS combines a polished interface with interactive functionality. The desktop includes a variety of built-in applications, ranging from everyday utilities like Calculator, Notes, and Calendar to entertainment apps like Music, Gallery, and even a TikTok-style video viewer. You’ll also find productivity and exploration tools, including a File Explorer, Weather app, a web browser that defaults to Wikipedia, and Ocean Shell—a fully interactive command-line interface that’s easily my favorite feature in the project. A quick note before you try it: if you open an app but can’t see it, your display is probably too small for the default window layout. OceanOS 2.0 was primarily tested on a 15.6-inch Windows 11 display. If this happens, simply zoom out in your browser (Ctrl + -) and drag the window back into view. OceanOS has been an exciting creative challenge and a great way to experiment with modern web development. The focus has always been on building a fun, visually appealing, and functional desktop experience that anyone can enjoy. The project is constantly evolving, with new features and improvements planned for future updates. That’s all for now! I hope you enjoy exploring OceanOS as much as I enjoyed building it. Have a breezy day! 🌊
OceanOS 🌊 3.0 (Ship #3): OceanOS is a web-based desktop experience that brings the feel of an operating system into the browser. I built it as an ocean-themed, interactive environment with a boot sequence, a taskbar, draggable windows, built-in apps, and a polished desktop layout that feels familiar but still unique. The goal was to create something playful and immersive while still feeling functional and thoughtfully designed. The most challenging part was making the experience feel smooth and believable without relying on a traditional desktop environment. Balancing UI polish, window interactions, app behavior, and overall performance required a lot of work. I’m proud of how great OceanOS feels as a whole, especially the visual identity, the attention to detail in the interface, and the fact that it works as more than just a demo—it feels like a real product experience. People should know that OceanOS is best experienced in a modern browser and that the interactions are most fun when tested with a mouse, since dragging windows and using the desktop UI are central to the experience. If they want to try it locally, they can run the app with the usual Next.js setup, then open it in the browser and explore the desktop, apps, and settings. It’s a project that is easy to enjoy casually, but also rewarding to explore in detail. Well, that was quite the adventure. I started off with a plain template and a dream. Now, I have a complete desktop experience. I hope you enjoy OceanOS as much as I enjoyed creating it! And with no further ado, I give you… OceanOS 3.0!🌊
OceanOS 🌊— A Web-Based Operating System Experience Introducing OceanOS, a web-based operating system that brings the look and feel of a modern desktop environment right to your browser. Unlike standard websites or separate applications, OceanOS offers a comprehensive desktop experience where everything—from applications and windows to menus and animations—works together smoothly as one unified system. OceanOS features a variety of built-in applications such as Files, Settings, Music, Gallery, Calendar, Weather, and Ocean Store, among others. Each application is designed to integrate seamlessly into the operating system, offering interactive windows and behaviors that feel intuitive and familiar. Developing OceanOS presented its own set of challenges, particularly in ensuring that all its components worked together seamlessly. I decided to create a consistent user experience rather than a disjointed collection of features. Every interaction, whether it’s launching an app, moving a window, or changing the system’s appearance, is thoughtfully designed to mimic the experience of using a real computer. I take pride in how OceanOS has evolved. At first, it was just a simple web-based desktop, and now, it has grown into a rich and immersive operating system experience. OceanOS combines a traditional desktop interface with custom applications, personalization options, animations, and Lumos, an intelligent multilingual AI assistant powered by Gemini, creating an environment you can explore, rather than just a website to browse. OceanOS is designed to be interacted with, so I encourage you to dive in and use it as you would any real operating system: Open and explore different applications. Move, resize, minimize, maximize, and close windows as needed. Use the bottom bar and windows grid for navigation. Search for applications and investigate the available options. Customize the system theme, visual style, and wallpaper to suit your preferences. Access the Ocean Store to experiment with installing and managing applications. Discover how the built-in apps interact to enhance your productivity. Try out Lumos, our AI assistant, to see how it can assist you. Experiment with menus, controls, animations, and other interactive elements throughout the desktop. For the best experience, I recommend using OceanOS on a desktop or laptop browser in fullscreen mode. A larger display allows you to fully enjoy the desktop environment, windows, animations, and applications as intended. Welcome to OceanOS 4.0🌊—an operating system designed for the web, inviting you to explore, engage with, and experience it just like you would with any traditional computer. Have a breezy day!🌊
OceanOS 5.0🌊 🌊 What did you make? I created OceanOS , a web-based operating system designed to feel like a real desktop environment. It includes interactive apps such as Files, Settings, Music, Gallery, Calendar, Weather, Ocean Store, Lumos , and more. OceanOS features draggable and resizable windows, menus, animations, themes, wallpapers, system controls, app installation, and other desktop-style functionality. 🧩 What was challenging? One of the biggest challenges was making all of the different parts of the operating system work together smoothly. Managing windows, animations, app states, menus, themes, sounds, and different OS modes required a lot of careful logic and testing. Making the interface feel responsive and polished while keeping everything consistent was also challenging. 🏆 What are you proud of? I’m most proud of how much OceanOS has grown from a simple web project into a complete interactive OS experience . I’m especially proud of the attention to detail in the UI, the animations, the apps, the window system, and the overall feeling of using a real desktop operating system. Building and connecting so many different features together was a major accomplishment. 🧪 What should people know to test the project? To properly test OceanOS, people should explore the desktop and try opening different apps, moving and resizing windows, using the menus, changing themes and wallpapers, testing the bottom bar, and checking the different system controls. They should also try features such as Ocean Store , app installation/uninstallation, Lumos , and switching between available OS modes. Some features may take a moment to load, so giving the interface a few seconds when testing is recommended. Thank you to everyone who has supported me in creating OceanOS. It means a lot to me, and I hope you have a wonderful experience. Have a breezy day!🌊...
|
1793062531.900273
|
1793148931.900273
|
|
17855
|
Resource-Screening by @shashi93 | Stardance
|
shashi93
|
2
|
73.0
|
706
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T02:47:30Z", "hours": 20.0, "multiplier": 14.66, "payout": 287, "blessing": "neutral", "text": "I have a whole bunch of resource packs installed, and managing all of them was a pain. So I decided, why not make a mod to help me do that? To test my mod: Ensure you have some resourcepacks installed, and they should contain custom textures for leaves (I recommend Faithful, Barebones and Motschen’s better leaves). After which, get into a minecraft world, and possibly place some leaves in front of you. Then go into the resourcepacks settings and change the textures. Each dropdown controls a specific leaf texture, as you can see via the texture renderer on top. If you have more than two resourcepacks, the last one may be hidden by the texture renderer, so you can just click through the texture renderer to activate it. Have fun customising textures, I plan to add more functionality soon! :) ✌️", "repo": "https://github.com/shushi93/Resource-Screening", "demo": "https://modrinth.com/mod/resource-screening"}, {"ship_num": 2, "ts": "2026-08-23T05:26:47Z", "hours": 53.0, "multiplier": 8.74, "payout": 419, "blessing": "neutral", "text": "Does some simple texture swapping. I’m getting into individual textures now. Learning Java definitely took a lot of the time, but I’m happy I got something working.", "repo": "https://github.com/shushi93/Resource-Screening", "demo": "https://modrinth.com/mod/resource-screening"}]...
|
[{"post_id": 70382, "ts": "202 [{"post_id": 70382, "ts": "2026-09-19T02:41:48Z", "hours": 3.9581, "text": "Almost ready for second ship! The UI is terrible, but I think for now it works. There are still a few bugs with the UI I plan to fix later. The main part of this devlog is that, i changed the layout of the dropdowns, and I created a menu to show the currently selected texture, so it’s easier to see what you’re changing from and to. I fixed some minor bugs with the dropdownlist, and overall, I’m quite happy with how it turned out. Some reviewers didn’t fully understand my mod, so I’ll put some actually better usage instructions in the ship message. Some guy also said my project was completely AI :/ (it’s not), but i accidentally clicked accept payout instead of flagging the review, while going to the bad review. Oh well. I do wan’t to mention that I did use AI for guidance, but it did not code my mod for me. That’s about it After my second ship, I doubt I can continue developing my mod, because my finals are in like 2 days (and i’m doing anything but studying for it, so hope you enjoy my mod, as it is now! ✌️"}, {"post_id": 67183, "ts": "2026-09-13T07:44:50Z", "hours": 2.8153, "text": "More file shenanigans! I managed to persist the saved options to the config file, and changed the buttons to dropdowns Some ui stuff still needs fixing but it’s gone relatively alright My ship is still in the process of getting verified, but my project shld be shipped soon!"}, {"post_id": 65304, "ts": "2026-09-10T11:12:17Z", "hours": 2.3964, "text": "dropdown list works >< last time i did this, it took me 30h also what do you think of my highlight, instead of just making the blue border brighter and whiter, i decided to make it redder, to stand out, does it look good? as you can see, there is an error with the dropdown list, as when i pressed the last option, it didnt register (closer to the end of the video) because the button behind it, b9 was getting clicked instead I doub’t this will be a problem (at least for current me), since i dont think the dropdown lists should be ontop of smth else, hopefully but oh well, when it comes to that ill figure it out edit: argh i just realised i haven’t finished scrolling behaviour i’ll get to work on that now my previous ship is still not verified bcos modrinth still havent reviewed my mod (it’s been 3 weeks) ( ˘︹˘ ) so i submitted it to curseforge I’ll update my mod with the newest features and then reship"}, {"post_id": 63331, "ts": "2026-09-07T03:00:09Z", "hours": 4.9131, "text": "basic texture swapping After actl not too much pain, I got basic texture swapping done. I created a helper class to handle all my texture swapping logic, and it works quite neatly. I do hate File I/O in any programming language, but my mod kind of revolves around FIle I/O, and honestly, even though I got some super unhelpful error messages (I got empty error messages), I somehow managed to pull through Some things I have yet to work on: fix ui to allow all installed packs (currently for testing I just use Motchsens better leaves, since it’s a small pack) allow not just textures but also block models to be hotswapped pray modrinth reviews my project so i can ship it ✌️"}, {"post_id": 57025, "ts": "2026-08-29T03:09:48Z", "hours": 5.4767, "text": "I spent a while learning Java nio and managed to get the names of all the texture packs and the textures inside of them i also created doogile.zip (as requested by my friend), that will serve as the main way to select individual textures just a simple devlog to catch you guys up to what i’ve been doing"}, {"post_id": 52817, "ts": "2026-08-23T05:14:18Z", "hours": 5.5578, "text": "Swapping textures i finally, after like 5h managed to swap between bare bones & faithful x64 yipee I think imma ship the project now you can download from the releases page B1 switches to bare bones B2 switches to faithful there are some minor bugs i need to iron out but for now, i think a first ship is due took way too long to get here but oh well now i gotta figure out that individual texture thing"}, {"post_id": 47428, "ts": "2026-08-15T11:07:54Z", "hours": 9.4294, "text": "Part 14 The first Part of Part 14 was an extension of JavaFX, where I learnt how to draw charts using JavaFX. Overall, not a too hard topic. One small funny error I spent a bit of time on was on the second exercise, where after an egregious amount of time writing code, my chart showed up. However, since I used an absolute path for the tsv data file, when I submitted that code to the server, it showed an error. Then after a lot of debugging, I remembered a previous exercise, where I had to remove the absolute path before it worked, and when I did that, it worked perfectly. Then, I spent a good bit of time cleaning up my jdk installation, before resuming pain Java. On the next exercise, I needed to create a line chart that shows the amount of savings over time, and this was more pain than I’ve ever experienced. Creating the components was easy, but the formula for plotting the points, yea that was pure torture. 2h of trying, and I finally caved. I thought I was good at math but oh well, asked AI what I was doing wrong, and apparently, I was off-by-one in my data plotting & my formula was adding the savings too many times. Absolute headache going through that, but at least I was finally able to overcome it. And then another problem sprang up. There was an index out of bounds error when running the tests, and I asked the discord server why this was happening, and basically, I was missing 4 lines of code, that is essentially just styling the program, which caused that. yea true pain. I also went on a journey of remaking Aseprite (well not really), and I copied Andy Warhol and remade the Mona Lisa. I almost got it first try, except for one thing. See, humans cant see minute pixel colour differences, but computers can. Not so long story short, due to pixel overwrites from integer truncation, the pixel colour values were just ever so slightly off, that the tests were failing. After previous traumatic events, I caved and asked AI what was wrong, and basically the loop incrementer supplied by the base program was wrong, and it fixed it. It’s fun to leave the boring stuff to AI, and the fun stuff for me. I then followed the step-by-step guideline on remaking Asteroids by Atari, and I think it went ok. I’m most excited right now because finally I complete the Java MOOC course, and I can start work on my mod. But I’m also quite scared/anxious, because I don’t even know where to start now, after so long of not working on my mod. but i’ll figure it out, hopefully. and im also gonna take this time to ask for any name reccomendations, or do you think i should just go with resource-screening ^____^ ✌️"}, {"post_id": 38605, "ts": "2026-08-01T02:43:31Z", "hours": 6.0253, "text": "JavaFX JavaFX was interesting, and I’m not too sure how I want to feel about it. I’ve not much to say about this part. Minecraft doesn’t actually use JavaFX, so this part was just slightly useless, but there are some similarities to Minecraft’s rendering system (Lightweight Java Game Library) that I can use to make my mod. I’m most exited for Part 14, where I learn about Maven, since it’s a Java topic I know not much about. Most importantly, after Part 14, I get to finally work on my mod. One interesting thing about this part is that I switched to IntelliJ since it was easier to work with JavaFX on it than on VSCode. Setting up JavaFX just to start working on this part was painful, but I’m happy that I got it working For now, enjoy the TicTacToe Application, and the horrendous if-condition that ends the game :) and sorry this devlog is lowk kinda mid, im tired and don’t feel like writing rn but oh well ✌️"}, {"post_id": 28054, "ts": "2026-07-14T02:22:28Z", "hours": 3.9286, "text": "2 more parts to go >”< Finally learnt type parameters (those things inside the <> ) Learnt to make my own implementation of ArrayList and HashMap and 2d arrays (which are and have always been painful) I also decided to try something new this time, I turned on Copilot Code Completion. (cus it’s cool to see the ghost text) . it was genuinely painful at first, and i want to like it but i also rlly hate it sometimes. i got somewhat used to it, then i turned it off, cus it felt like cheating for some of the exercises. I turned it off on the last exercise (deciding the pain was not worth it) and went into even bigger pain, cus 2d arrays. When doing the last exercise (Magic Square), i lowk blanked out and did not feel like doing Java, but i persevered thru anyways. Specifically, when it came to calculating diagonals of the square, cus i didnt know how to do that. I did some brainstorming, found out it’s actually super simple and somehow managed to get it right. (actl i just realized my program is broken for all values above 5, but uh im not fixing it _ ) ooh and uh, anyone got suggestions for my mod name, since im 2 parts away from working on it? (current name is resource-screening btw, but i think its cringy) ✌️"}, {"post_id": 25039, "ts": "2026-07-08T23:48:50Z", "hours": 3.4086, "text": "pain in part 11/14, i learnt about class diagrams (among other things), and in all the time I’ve ever done programming, ive never used it. i still thinks its super useless (unless someone reading this strongly disagrees). i can see a niche use case where class diagrams could be useful, but imo, it isn’t useful for me. i also did packages, which i already know about, and they are quite easy, so it wasn’t much of a problem for me. I also learnt about Exceptions, and how to throw them. learnt to write to a file and finished this part. and i also learnt one thing more. I absolutely HATE unit tests. The exercises had tests I needed to pass, and omw they were so annoying. I miss ONE space and the entire thing fails. genuinely pmo. My friend said unit tests are useful in some scenarios but are also a pain and ig, having an automated checker is useful but still, I’ll hate them with every fiber in my body. yea that’s it. I hated that one exercise which took me an hour because I missed one line of output. ✌️"}, {"post_id": 21892, "ts": "2026-07-04T02:12:00Z", "hours": 3.6606, "text": "Part 10 DevLog Part 10 finished, wheeeeee (I’m (slowly) losing my mind)} In Part 10, I learnt about Java .stream(). Initially, i thought streams were useless since it was easier to use a for-each loop (still my goat), but recently, i began using streams since its more compact and easier to read. I also learnt to make a custom comparator, brushed up on regex again, learnt of enums and Iterator. i do still think iterator class is mostly useful, unless you need to go thru a list and delete elements from them. streams were genuinely painful when i first started doing them. i for the life of me cld not figure out how to use them properly. now i’m semi-confident in using them (i think), and they are useful in some scenarios. (wish i cld show better screenshots but this is all i got sry) ✌️"}, {"post_id": 18149, "ts": "2026-06-29T05:14:06Z", "hours": 0.5469, "text": "Just redid my README, i still think its not that good so if anyone has any suggestions, please leave a comment. tks ✌️"}, {"post_id": 18105, "ts": "2026-06-29T03:19:35Z", "hours": 3.9225, "text": "Finished Part 9/14 of the Java MOOC. I learnt about Interfaces and Abstract methods, how to extend classes and implement methods etc. I learnt how there can be used with Polymorphism to make the program more versatile too. yea i got nothing much else to add. quite hyped to almost be done with this course and start on my mod. it shld be less painful than before right? ✌️ ts so gay PS: quick edit, after this im gna spend some time making my README better cus it sucks rn. ill devlog that after im done"}, {"post_id": 14297, "ts": "2026-06-23T11:22:30Z", "hours": 1.5067, "text": "Completed Part 8 in record time wth. I have no idea how I just completed Part 8 in just 2 days. Actually wait, I do. I skipped the first 5 exercises since they are just a recap of Java Programming I (might do them after if I want to get the certificate). Just learnt HashMaps in Part 8. I’ve got no interesting output to show, so enjoy these 2 pictures. I also learnt that VSCode allows you to generate Getters & Setters, or Contructors for field variables, equals() & hashMap() overrides etc. which is like just so cool. cld’ve saved me so much time. I’ll now move on to Part 9, which makes me one step closer to making my mod. cya ✌️✌️"}, {"post_id": 13626, "ts": "2026-06-22T11:02:12Z", "hours": 14.7986, "text": "I just finished Java Programming I of the Java MOOC course by University of Helsinki. I was allowed to log hours spent learning for my project (the Minecraft Mod), so I did :) Initially, I decided to be stupid and make a Minecraft Mod without learning Java (biggest mistake) and that caused me eternal pain. I’m not sure why I did that, so I then decided to actually learn Java. I’ll probably DevLog every time I finish 1 part of the course, or whenever I feel like it lol, but yea here’s 14h logged then. It’s just a screenshot cus I was too lazy to record a video. The screenshot shows one of the exercises I did for the course, the second last exercise of the Java Programming I course. After this, I move to Java Programming II course. After I finish that, I’ll work on my mod, I guess it’s long time due by now. Hopefully it goes better than before (wish me luck). I think that’s it (holy yap) ✌️"}]...
|
Title: Resource-Screening by @shashi93 | Stardance Title: Resource-Screening by @shashi93 | Stardance
Devlogs:
I just finished Java Programming I of the Java MOOC course by University of Helsinki. I was allowed to log hours spent learning for my project (the Minecraft Mod), so I did :) Initially, I decided to be stupid and make a Minecraft Mod without learning Java (biggest mistake) and that caused me eternal pain. I’m not sure why I did that, so I then decided to actually learn Java. I’ll probably DevLog every time I finish 1 part of the course, or whenever I feel like it lol, but yea here’s 14h logged then. It’s just a screenshot cus I was too lazy to record a video. The screenshot shows one of the exercises I did for the course, the second last exercise of the Java Programming I course. After this, I move to Java Programming II course. After I finish that, I’ll work on my mod, I guess it’s long time due by now. Hopefully it goes better than before (wish me luck). I think that’s it (holy yap) ✌️
Completed Part 8 in record time wth. I have no idea how I just completed Part 8 in just 2 days. Actually wait, I do. I skipped the first 5 exercises since they are just a recap of Java Programming I (might do them after if I want to get the certificate). Just learnt HashMaps in Part 8. I’ve got no interesting output to show, so enjoy these 2 pictures. I also learnt that VSCode allows you to generate Getters & Setters, or Contructors for field variables, equals() & hashMap() overrides etc. which is like just so cool. cld’ve saved me so much time. I’ll now move on to Part 9, which makes me one step closer to making my mod. cya ✌️✌️
Finished Part 9/14 of the Java MOOC. I learnt about Interfaces and Abstract methods, how to extend classes and implement methods etc. I learnt how there can be used with Polymorphism to make the program more versatile too. yea i got nothing much else to add. quite hyped to almost be done with this course and start on my mod. it shld be less painful than before right? ✌️ ts so gay PS: quick edit, after this im gna spend some time making my README better cus it sucks rn. ill devlog that after im done
Just redid my README, i still think its not that good so if anyone has any suggestions, please leave a comment. tks ✌️
Part 10 DevLog Part 10 finished, wheeeeee (I’m (slowly) losing my mind)} In Part 10, I learnt about Java .stream(). Initially, i thought streams were useless since it was easier to use a for-each loop (still my goat), but recently, i began using streams since its more compact and easier to read. I also learnt to make a custom comparator, brushed up on regex again, learnt of enums and Iterator. i do still think iterator class is mostly useful, unless you need to go thru a list and delete elements from them. streams were genuinely painful when i first started doing them. i for the life of me cld not figure out how to use them properly. now i’m semi-confident in using them (i think), and they are useful in some scenarios. (wish i cld show better screenshots but this is all i got sry) ✌️
pain in part 11/14, i learnt about class diagrams (among other things), and in all the time I’ve ever done programming, ive never used it. i still thinks its super useless (unless someone reading this strongly disagrees). i can see a niche use case where class diagrams could be useful, but imo, it isn’t useful for me. i also did packages, which i already know about, and they are quite easy, so it wasn’t much of a problem for me. I also learnt about Exceptions, and how to throw them. learnt to write to a file and finished this part. and i also learnt one thing more. I absolutely HATE unit tests. The exercises had tests I needed to pass, and omw they were so annoying. I miss ONE space and the entire thing fails. genuinely pmo. My friend said unit tests are useful in some scenarios but are also a pain and ig, having an automated checker is useful but still, I’ll hate them with every fiber in my body. yea that’s it. I hated that one exercise which took me an hour because I missed one line of output. ✌️
2 more parts to go >”< Finally learnt type parameters (those things inside the <> ) Learnt to make my own implementation of ArrayList and HashMap and 2d arrays (which are and have always been painful) I also decided to try something new this time, I turned on Copilot Code Completion. (cus it’s cool to see the ghost text) . it was genuinely painful at first, and i want to like it but i also rlly hate it sometimes. i got somewhat used to it, then i turned it off, cus it felt like cheating for some of the exercises. I turned it off on the last exercise (deciding the pain was not worth it) and went into even bigger pain, cus 2d arrays. When doing the last exercise (Magic Square), i lowk blanked out and did not feel like doing Java, but i persevered thru anyways. Specifically, when it came to calculating diagonals of the square, cus i didnt know how to do that. I did some brainstorming, found out it’s actually super simple and somehow managed to get it right. (actl i just realized my program is broken for all values above 5, but uh im not fixing it _ ) ooh and uh, anyone got suggestions for my mod name, since im 2 parts away from working on it? (current name is resource-screening btw, but i think its cringy) ✌️
JavaFX JavaFX was interesting, and I’m not too sure how I want to feel about it. I’ve not much to say about this part. Minecraft doesn’t actually use JavaFX, so this part was just slightly useless, but there are some similarities to Minecraft’s rendering system (Lightweight Java Game Library) that I can use to make my mod. I’m most exited for Part 14, where I learn about Maven, since it’s a Java topic I know not much about. Most importantly, after Part 14, I get to finally work on my mod. One interesting thing about this part is that I switched to IntelliJ since it was easier to work with JavaFX on it than on VSCode. Setting up JavaFX just to start working on this part was painful, but I’m happy that I got it working For now, enjoy the TicTacToe Application, and the horrendous if-condition that ends the game :) and sorry this devlog is lowk kinda mid, im tired and don’t feel like writing rn but oh well ✌️
Part 14 The first Part of Part 14 was an extension of JavaFX, where I learnt how to draw charts using JavaFX. Overall, not a too hard topic. One small funny error I spent a bit of time on was on the second exercise, where after an egregious amount of time writing code, my chart showed up. However, since I used an absolute path for the tsv data file, when I submitted that code to the server, it showed an error. Then after a lot of debugging, I remembered a previous exercise, where I had to remove the absolute path before it worked, and when I did that, it worked perfectly. Then, I spent a good bit of time cleaning up my jdk installation, before resuming pain Java. On the next exercise, I needed to create a line chart that shows the amount of savings over time, and this was more pain than I’ve ever experienced. Creating the components was easy, but the formula for plotting the points, yea that was pure torture. 2h of trying, and I finally caved. I thought I was good at math but oh well, asked AI what I was doing wrong, and apparently, I was off-by-one in my data plotting & my formula was adding the savings too many times. Absolute headache going through that, but at least I was finally able to overcome it. And then another problem sprang up. There was an index out of bounds error when running the tests, and I asked the discord server why this was happening, and basically, I was missing 4 lines of code, that is essentially just styling the program, which caused that. yea true pain. I also went on a journey of remaking Aseprite (well not really), and I copied Andy Warhol and remade the Mona Lisa. I almost got it first try, except for one thing. See, humans cant see minute pixel colour differences, but computers can. Not so long story short, due to pixel overwrites from integer truncation, the pixel colour values were just ever so slightly off, that the tests were failing. After previous traumatic events, I caved and asked AI what was wrong, and basically the loop incrementer supplied by the base program was wrong, and it fixed it. It’s fun to leave the boring stuff to AI, and the fun stuff for me. I then followed the step-by-step guideline on remaking Asteroids by Atari, and I think it went ok. I’m most excited right now because finally I complete the Java MOOC course, and I can start work on my mod. But I’m also quite scared/anxious, because I don’t even know where to start now, after so long of not working on my mod. but i’ll figure it out, hopefully. and im also gonna take this time to ask for any name reccomendations, or do you think i should just go with resource-screening ^____^ ✌️
Swapping textures i finally, after like 5h managed to swap between bare bones & faithful x64 yipee I think imma ship the project now you can download from the releases page B1 switches to bare bones B2 switches to faithful there are some minor bugs i need to iron out but for now, i think a first ship is due took way too long to get here but oh well now i gotta figure out that individual texture thing
I spent a while learning Java nio and managed to get the names of all the texture packs and the textures inside of them i also created doogile.zip (as requested by my friend), that will serve as the main way to select individual textures just a simple devlog to catch you guys up to what i’ve been doing
basic texture swapping After actl not too much pain, I got basic texture swapping done. I created a helper class to handle all my texture swapping logic, and it works quite neatly. I do hate File I/O in any programming language, but my mod kind of revolves around FIle I/O, and honestly, even though I got some super unhelpful error messages (I got empty error messages), I somehow managed to pull through Some things I have yet to work on: fix ui to allow all installed packs (currently for testing I just use Motchsens better leaves, since it’s a small pack) allow not just textures but also block models to be hotswapped pray modrinth reviews my project so i can ship it ✌️
dropdown list works >< last time i did this, it took me 30h also what do you think of my highlight, instead of just making the blue border brighter and whiter, i decided to make it redder, to stand out, does it look good? as you can see, there is an error with the dropdown list, as when i pressed the last option, it didnt register (closer to the end of the video) because the button behind it, b9 was getting clicked instead I doub’t this will be a problem (at least for current me), since i dont think the dropdown lists should be ontop of smth else, hopefully but oh well, when it comes to that ill figure it out edit: argh i just realised i haven’t finished scrolling behaviour i’ll get to work on that now my previous ship is still not verified bcos modrinth still havent reviewed my mod (it’s been 3 weeks) ( ˘︹˘ ) so i submitted it to curseforge I’ll update my mod with the newest features and then reship
More file shenanigans! I managed to persist the saved options to the config file, and changed the buttons to dropdowns Some ui stuff still needs fixing but it’s gone relatively alright My ship is still in the process of getting verified, but my project shld be shipped soon!
Almost ready for second ship! The UI is terrible, but I think for now it works. There are still a few bugs with the UI I plan to fix later. The main part of this devlog is that, i changed the layout of the dropdowns, and I created a menu to show the currently selected texture, so it’s easier to see what you’re changing from and to. I fixed some minor bugs with the dropdownlist, and overall, I’m quite happy with how it turned out. Some reviewers didn’t fully understand my mod, so I’ll put some actually better usage instructions in the ship message. Some guy also said my project was completely AI :/ (it’s not), but i accidentally clicked accept payout instead of flagging the review, while going to the bad review. Oh well. I do wan’t to mention that I did use AI for guidance, but it did not code my mod for me. That’s about it After my second ship, I doubt I can continue developing my mod, because my finals are in like 2 days (and i’m doing anything but studying for it, so hope you enjoy my mod, as it is now! ✌️
Ships:
Does some simple texture swapping. I’m getting into individual textures now. Learning Java definitely took a lot of the time, but I’m happy I got something working.
I have a whole bunch of resource packs installed, and managing all of them was a pain. So I decided, why not make a mod to help me do that? To test my mod: Ensure you have some resourcepacks installed, and they should contain custom textures for leaves (I recommend Faithful, Barebones and Motschen’s better leaves). After which, get into a minecraft world, and possibly place some leaves in front of you. Then go into the resourcepacks settings and change the textures. Each dropdown controls a specific leaf texture, as you can see via the texture renderer on top. If you have more than two resourcepacks, the last one may be hidden by the texture renderer, so you can just click through the texture renderer to activate it. Have fun customising textures, I plan to add more functionality soon! :) ✌️...
|
1793000959.7805867
|
1793087359.7805867
|
|
19984
|
FRC Rebuilt inspired robot by @Carson | Stardance
|
Carson
|
1
|
73.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T00:36:13Z", "hours": 73.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the cad for an FRC bot I designed for this years game Rebuilt one in which you shoot as many balls as you can into a big basket. I’m really proud of the whole thing honestly, its the first large and cohesive thing I’ve ever designed and I think it turned out pretty well. I’m especially proud of the shooter, scoring manipulators are always fun to make! I will say the process did not go without its hiccups, to be honest I only discovered the derrived tool like halfway through, that was rough but I finished it none the less and if you want to try it out just click the button below.", "repo": "https://github.com/CKFlare/FRC-Rebuilt-robot-CAD", "demo": "https://cad.onshape.com/documents/ef90526955e2c1079c0c9faf/w/03993b2fa40710a1deb74a90/e/58e238fa26bdce46de7e348d?renderMode=0&uiState=6aa8a33892df8e4b39a6d890"}]...
|
[{"post_id": 72006, "ts": "202 [{"post_id": 72006, "ts": "2026-09-22T00:09:47Z", "hours": 5.7989, "text": "Devlog 10 I have done a lot since the last devlog and this is my final log before shipping, I’m very exited. completed pocketed everything assigned materials to a few things I missed finished organizing every part studio used in the final assembly prepared my repository and wrote a readme a bunch of other random stuff created an assembly to display balls in the path they would take from the intake to the shooter Sadly the robot is still way overweight, its like 200 pounds but I’m just going to leave it for now. its just a pet project. Stardance has been AWESOME and I’m really glad I was able to participate, thank you everyone!! Until next time Hack Clubbers!"}, {"post_id": 66957, "ts": "2026-09-12T22:59:45Z", "hours": 8.2739, "text": "Devlog 9 Completed re-added power chain to design added hopper element to cover power chain added camera mounts that work on the robot added belt between feeding path and conveyor belt because apparently it previousley had no way to spin went through half of the part studios and asemblys to organize them them added material and appearence to all parts without them. added radio and RSL (robot safety light) issues its very boring sifting through everything you’ve done, naming and grouping it all the cover for the power chain clips through the power chain’s pulley I’ve worked on it most of today and honestly Its come very far, I think I’m finally almost done."}, {"post_id": 63954, "ts": "2026-09-08T01:29:06Z", "hours": 7.5053, "text": "Devlog 8 completed I added mounts for all floating parts added a wall to funnel balls into the main feeding path added all timing belts to roller floor created baseplate and added main electronics added fasteners fixed miscelaneous issues issues my load times are taking longer and longer honestly the sticky streak has really motivated me, for the past 8 days i’ve managed to squeeze in at least 15 minutes each night."}, {"post_id": 46915, "ts": "2026-08-14T13:37:44Z", "hours": 6.6797, "text": "Devlog 7 completed made a cover for the PIcam I would use for PhotonVision, changed a few things on shooter to reduce height many odd jobs that I honestly cant remember Issues I keep getting this “Operation failed because it would create cyclical references : Part Studio 2 Copy 1 <- Part Studio 1.” error while trying to derive my reference sketch from another document and I honestly don’t know how to fix it I’ve had to go for multiple weeks without working on this project because I didn’t have access to a computer and now I’m struggling to get any real progress done, I’m almost done though I mainly just have to do a bunch more annoying jobs like pocketing all of the sheets, adding the electronics and designing a hopper, which shouldn’t be too bad, its just a few sheets of polycarbonate"}, {"post_id": 30307, "ts": "2026-07-17T19:19:03Z", "hours": 12.6442, "text": "devlog 6 completed redid turret mounting plate reworked feeding path make base of roller floor indexer miscelaneous changes It really doesn’t look like much but, I’ve done a lot, I’ve been focusing on making something very simple that would work, I’m creating most of the parts that will be used and just not pocketing them or fully doing the assemblies or even adding mounting holes tbh, but I am making sure nothing clips and that all of the subsystems fit together and work in tandem."}, {"post_id": 26152, "ts": "2026-07-10T19:36:49Z", "hours": 9.0636, "text": "Devlog 5 completed added energy chain for turret created basic intake started mount for intake Issues I’m kind of scatter brained and did not complete last logs to due list before starting the intake I’m extending about .05 further from my robot perimeter than is allowed, its finneeeee I think the intake wont actually be able to come back into the robot because the kicker bar descends too low while being stowed it weighs WAY too much the intake is very simple a rack and pinion sends it out then the kicker bars drop down because there will be a piece of surgical tubing tensioning them, pulling it down. then whenever the driver presses the assigned button two neo vortex’s will spin a set of rollers that will grab the balls press them against the kicker bars and shoot them into the hopper. it is just shy of a 5 ball wide intake which should allow for pretty high throughput. the energy chain assembly for the turret is also very simple. there is a freely spinning constant force spring attached to a bracket which pulls the bracket away from the shooter, the energy chain just loops through the bracket. total current weight with bumpers: 129 lbs"}, {"post_id": 24938, "ts": "2026-07-08T20:24:44Z", "hours": 4.61, "text": "Devlog 4 completed added structural support removed problem of turret scraping feeding path plates added indexing roller to top of belt sandwich entrance, will connect via belt to main indexing system added all fasteners to the superstructure, bolts, nuts, rivets etc fixed random errors changed which side the belts are located on the feeding path to allow for better packaging assigned materials and appearances to parts organized and named features in assemblies and part studios issues my pocketing feature script is tweaking out, I still heven’t a clue what the problem is clipping, per usual I didnt account for the size of another part and they ended up occupying the same space, to be honest I just chamfered the edge of a plate to remove one of these issues. but hey it worked. I have no time :( its been ages since I’ve been able to seroiusley spend time on this project, my summer has been really busy, there was one week where I cadded not even for 1 minute D: today was honestly really boring I was mostly just polishing up previous work, I’m almost done with the superstructure. the only things left to do is to implement a system to keep my power chain out of the way from tangling, that will be very simple, I also would like to add a set of compliant wheels to that vertical shaft on the right to funnel the balls from that side into the turret, then I think I just need to tighten it up before I will move onto either the intake or main indexer. until next time!"}, {"post_id": 14055, "ts": "2026-06-23T01:10:26Z", "hours": 8.9728, "text": "Devlog 3 -changed the backplate on shooter - fixed clipping - created a very rudimentary feeding path, needs a LOT more work i wasted a lot of time on the feeding path, changing belt positions ironing out belt lengths and pitch, I originally was using 5 mm but I couldn’t get the right lengths so I switched to 3mm. I also didn’t now how I was going to mount it so I spent a while figuring that out. I’m using a belt on the top and bottom of the balls to funnel them into an array of compliant wheels that sends it up into the shooter"}, {"post_id": 11503, "ts": "2026-06-18T19:59:30Z", "hours": 4.0336, "text": "Yesterday I quickly knocked out the chassis and timelapsed me planning out the superstructure on paper. Today I designed the turret and I modified the shooter such that it can be mounted to the turret, this took longer than anticipated but oh well. my Laptop is so slow that Onshape crashed the whole computer like 3 times while making the turret, I suppose I have to keep my documents small. I’ve decided on a 30’’ by 25” chassis for this robot. This is to allow an intake about as wide as 5 balls, as well I did a rough estimate of my ball capacity based on rough numbers and it should be able to hold a maximum of about 80 balls. The drivetrain consists of SDS MK5Is powered by 8 Neo Vortexes."}, {"post_id": 10224, "ts": "2026-06-16T21:04:49Z", "hours": 5.6606, "text": "over the past few days I worked on my launcher for this years game piece, fuel (little yellow balls). I spent about an hour designing a carriage style hood so “it would be packaged better” but then realized it would add about 2 inches to the back and be heavier, so I reworked how the hood moves up and down by moving the rack onto the dynamic portion and the pinion onto the static part. the hood has an adjustable angle of about 25 degrees up to 60 degrees so weather we’re passing from the other alliance zone or butted against the hub we should be able to shoot. combined the 2 neo vortexes powering the flywheel achieve about 13,000 RPM so it can really lob balls."}]...
|
Title: FRC Rebuilt inspired robot by @Carson | Sta Title: FRC Rebuilt inspired robot by @Carson | Stardance
Devlogs:
over the past few days I worked on my launcher for this years game piece, fuel (little yellow balls). I spent about an hour designing a carriage style hood so “it would be packaged better” but then realized it would add about 2 inches to the back and be heavier, so I reworked how the hood moves up and down by moving the rack onto the dynamic portion and the pinion onto the static part. the hood has an adjustable angle of about 25 degrees up to 60 degrees so weather we’re passing from the other alliance zone or butted against the hub we should be able to shoot. combined the 2 neo vortexes powering the flywheel achieve about 13,000 RPM so it can really lob balls.
Yesterday I quickly knocked out the chassis and timelapsed me planning out the superstructure on paper. Today I designed the turret and I modified the shooter such that it can be mounted to the turret, this took longer than anticipated but oh well. my Laptop is so slow that Onshape crashed the whole computer like 3 times while making the turret, I suppose I have to keep my documents small. I’ve decided on a 30’’ by 25” chassis for this robot. This is to allow an intake about as wide as 5 balls, as well I did a rough estimate of my ball capacity based on rough numbers and it should be able to hold a maximum of about 80 balls. The drivetrain consists of SDS MK5Is powered by 8 Neo Vortexes.
Devlog 3 -changed the backplate on shooter - fixed clipping - created a very rudimentary feeding path, needs a LOT more work i wasted a lot of time on the feeding path, changing belt positions ironing out belt lengths and pitch, I originally was using 5 mm but I couldn’t get the right lengths so I switched to 3mm. I also didn’t now how I was going to mount it so I spent a while figuring that out. I’m using a belt on the top and bottom of the balls to funnel them into an array of compliant wheels that sends it up into the shooter
Devlog 4 completed added structural support removed problem of turret scraping feeding path plates added indexing roller to top of belt sandwich entrance, will connect via belt to main indexing system added all fasteners to the superstructure, bolts, nuts, rivets etc fixed random errors changed which side the belts are located on the feeding path to allow for better packaging assigned materials and appearances to parts organized and named features in assemblies and part studios issues my pocketing feature script is tweaking out, I still heven’t a clue what the problem is clipping, per usual I didnt account for the size of another part and they ended up occupying the same space, to be honest I just chamfered the edge of a plate to remove one of these issues. but hey it worked. I have no time :( its been ages since I’ve been able to seroiusley spend time on this project, my summer has been really busy, there was one week where I cadded not even for 1 minute D: today was honestly really boring I was mostly just polishing up previous work, I’m almost done with the superstructure. the only things left to do is to implement a system to keep my power chain out of the way from tangling, that will be very simple, I also would like to add a set of compliant wheels to that vertical shaft on the right to funnel the balls from that side into the turret, then I think I just need to tighten it up before I will move onto either the intake or main indexer. until next time!
Devlog 5 completed added energy chain for turret created basic intake started mount for intake Issues I’m kind of scatter brained and did not complete last logs to due list before starting the intake I’m extending about .05 further from my robot perimeter than is allowed, its finneeeee I think the intake wont actually be able to come back into the robot because the kicker bar descends too low while being stowed it weighs WAY too much the intake is very simple a rack and pinion sends it out then the kicker bars drop down because there will be a piece of surgical tubing tensioning them, pulling it down. then whenever the driver presses the assigned button two neo vortex’s will spin a set of rollers that will grab the balls press them against the kicker bars and shoot them into the hopper. it is just shy of a 5 ball wide intake which should allow for pretty high throughput. the energy chain assembly for the turret is also very simple. there is a freely spinning constant force spring attached to a bracket which pulls the bracket away from the shooter, the energy chain just loops through the bracket. total current weight with bumpers: 129 lbs
devlog 6 completed redid turret mounting plate reworked feeding path make base of roller floor indexer miscelaneous changes It really doesn’t look like much but, I’ve done a lot, I’ve been focusing on making something very simple that would work, I’m creating most of the parts that will be used and just not pocketing them or fully doing the assemblies or even adding mounting holes tbh, but I am making sure nothing clips and that all of the subsystems fit together and work in tandem.
Devlog 7 completed made a cover for the PIcam I would use for PhotonVision, changed a few things on shooter to reduce height many odd jobs that I honestly cant remember Issues I keep getting this “Operation failed because it would create cyclical references : Part Studio 2 Copy 1 <- Part Studio 1.” error while trying to derive my reference sketch from another document and I honestly don’t know how to fix it I’ve had to go for multiple weeks without working on this project because I didn’t have access to a computer and now I’m struggling to get any real progress done, I’m almost done though I mainly just have to do a bunch more annoying jobs like pocketing all of the sheets, adding the electronics and designing a hopper, which shouldn’t be too bad, its just a few sheets of polycarbonate
Devlog 8 completed I added mounts for all floating parts added a wall to funnel balls into the main feeding path added all timing belts to roller floor created baseplate and added main electronics added fasteners fixed miscelaneous issues issues my load times are taking longer and longer honestly the sticky streak has really motivated me, for the past 8 days i’ve managed to squeeze in at least 15 minutes each night.
Devlog 9 Completed re-added power chain to design added hopper element to cover power chain added camera mounts that work on the robot added belt between feeding path and conveyor belt because apparently it previousley had no way to spin went through half of the part studios and asemblys to organize them them added material and appearence to all parts without them. added radio and RSL (robot safety light) issues its very boring sifting through everything you’ve done, naming and grouping it all the cover for the power chain clips through the power chain’s pulley I’ve worked on it most of today and honestly Its come very far, I think I’m finally almost done.
Devlog 10 I have done a lot since the last devlog and this is my final log before shipping, I’m very exited. completed pocketed everything assigned materials to a few things I missed finished organizing every part studio used in the final assembly prepared my repository and wrote a readme a bunch of other random stuff created an assembly to display balls in the path they would take from the intake to the shooter Sadly the robot is still way overweight, its like 200 pounds but I’m just going to leave it for now. its just a pet project. Stardance has been AWESOME and I’m really glad I was able to participate, thank you everyone!! Until next time Hack Clubbers!
Ships:
This is the cad for an FRC bot I designed for this years game Rebuilt one in which you shoot as many balls as you can into a big basket. I’m really proud of the whole thing honestly, its the first large and cohesive thing I’ve ever designed and I think it turned out pretty well. I’m especially proud of the shooter, scoring manipulators are always fun to make! I will say the process did not go without its hiccups, to be honest I only discovered the derrived tool like halfway through, that was rough but I finished it none the less and if you want to try it out just click the button below....
|
1793008110.2275367
|
1793094510.2275367
|
|
28027
|
LARPARDY! by @purpld | Stardance
|
purpld
|
1
|
73.0
|
1320
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T16:36:45Z", "hours": 73.0, "multiplier": 18.16, "payout": 1320, "blessing": "neutral", "text": "I made a Discord activity trivia game inspired by the Jeopardy game show called LARPARDY! that you can easily play with your friends without leaving Discord! I am very proud of how far this project has come because it was very challenging for me. The frontend is based on Vue.js, which before this, I had never used before. I wanted to try something non-React and I’ve come to REALLY love Vue. I had to write multiplayer netcode entirely by myself! I used Socket.IO to handle the networking itself, but I had to write ALL of the state management and syncing code. There were certainly some difficulties in doing so! I also have not worked with Redis before, which was my database of choice for state management. It is… quite different from other databases, so writing code to interact with it was a learning experience.", "repo": "https://github.com/hpenney2/larpardy", "demo": "https://discord.com/discovery/applications/1521015095738499083"}]...
|
[{"post_id": 55618, "ts": "202 [{"post_id": 55618, "ts": "2026-08-27T16:13:45Z", "hours": 0.9681, "text": "Last devlog before ship (proper this time!) Discovery I set up a Discord server for the game, so LARPARDY! is now on Discord’s discovery (App Directory)! This is now used for the demo link for the game. README (please) Just spent some time redoing the (ancient) README and making it look pretty and detailed. I took some screenshots and added them here. They also show up on Discord! :D"}, {"post_id": 55384, "ts": "2026-08-27T05:50:58Z", "hours": 1.6658, "text": "SHIP IT! LARPARDY! is now verified on Discord! I spent a short while writing a basic Terms of Service and Privacy Policy (as required by Discord) and verifying all the details. Live deployment I’ve also deployed a production version of the game server to my home lab! It’s exposed through a Cloudflare Tunnel, because I’m behind CGNAT (i.e., I don’t have my own public IP). Spending all that time setting up Docker for this project all that time ago made this VERY easy, which was the entire point. I’m glad nothing broke in the process… lol Discovery The last thing I want to do is set up Discovery on Discord, so reviewers (and anybody, for that matter!) can just search up LARPARDY! in Discord, and it should come up. I pretty much just need to make a support server and write the details, and then… LET’S SHIP IT! I dunno if anybody reads these things, but if you do, thank you. :D"}, {"post_id": 55338, "ts": "2026-08-27T02:45:01Z", "hours": 10.4778, "text": "IT’S READY! I am very happy to say that I’m done with the main game! I wanted to split this into a couple of devlogs, but Stardance was having some issues syncing time earlier so I kept working. (I think it’s actually been up for a little bit… oops) Buzzing -> Judging Judging now is fully functional! Either someone gets the clue right, everyone gets it wrong, or not everybody buzzes in and we move on. I’ve also introduced something called Hostless Mode , which allows the game host to play (where normally they could not). This plays more like most online versions of the gameshow, where you can buzz in, reveal the answer, and then that’s that (instead of everyone getting a chance to buzz in if the first person is wrong). This also gives a way to play singleplayer, which should make it more accessible. All of this took a lot of careful logic work to make sure that everything works as expected (hence the VERY long log time, plus several other things), no matter how you’re playing! End of Line The game, also, can finally end, now that clues get marked off. I made a simple leaderboard that shows when the game is over, and then you can return to the lobby! See the photo below. GAMEPLAY! You can watch a short gameplay example with a host (right) + 2 players (left) below! You’re expected to play with voice (or a text channel, if you wish), so this demo just showcases the flow of the game. I logged a lot of time on this one because there was also a lot of testing and fixing small bugs, especially when making the judging system. A lot can get weird when managing so much state!"}, {"post_id": 54560, "ts": "2026-08-25T16:07:03Z", "hours": 7.4739, "text": "Questions, and MORE boring serverside stuffs Oof, sorry, it’s been a while since I’ve been able to work on this project, and the clock is ticking! Clues! Clues can now actually be selected and that will be reflected to the server and all players. You can also see a bit of the buzzer work I started, which is actually much more of a pain than it would seem. Why? Well that’s because we now have to talk about: SYNCING TIME OVER THE NETWORK The server running the game has a system time. Your computer, phone, or whatever, also has its own system time which could vary entirely from the server’s. If the server wants to schedule an event (say, when you should be allowed to buzz in), how does it tell the client when that is without an offset? Using Unix timestamps is common, but without knowing how offset the client is from the server, we don’t actually really know when that timestamp is in reality (since EITHER could be offset from reality, if not both), and we don’t want mismatched times to cause weird problems. The solution that I went with is that the client will periodically (every 1 second for now) send a “ping” message to the server with its current timestamp. The server will reply with that time as well as it’s own timestamp. Upon receiving that reply, it can then do three things: Calculate the round trip time (i.e., ping!) from the original time we sent and the time it is now. Estimate the server time as we’re processing this by adding the server time + half of the ping Calculate our time offset from the server by subtracting our time from that estimate I admit that I did NOT figure this out on my own. Google is nice. But this does actually kind of serve as the basis for how things like the Network Time Protocol (NTP) work. Reminder that all of that is just so we can show when the buzzer is allowed to be pressed accurately. Spectating Also, I added a fix so late players aren’t actually awkwardly added in the middle of a game and are instead in a kind of “spectator” state; since they’re still connected, they receive all the game state events and so on. If all actual players leave, the game will reset (which also means I now have a function to reset the state, and for showing alerts!)."}, {"post_id": 32606, "ts": "2026-07-21T21:45:43Z", "hours": 6.9744, "text": "A REAL BOARD! A trickier task than it sounds like, but I needed some clues finally! The default testing board was uh… not exactly “production ready” in my opinion (lol). This was tricky particularly because, well, where am I going to get clues from? You kinda need a LOT of clues for a good Jeopardy game, and while UGC is something I want to make, I would like a default mode, too, and there is certainly no way that I was going to try to make a bunch of clues by myself. (respectfully, I don’t think I am also smart enough to do that lol) Jepp I found a little project called jepp which exposes a LOT of existing Jeopardy clues through an API. I didn’t want to bother that API too much though, and there is an SQLite DB dump publicly available, so LARPARDY now uses that instead. With a little bit of SQL later (and, uh, remembering how to use SQL lol)… we have many, many clues! The only thing is that the database does not store the value of clues, so it’ll be a bit random. A $1000 clue might end up being super easy lol, but I think that’s some jank I’m okay with. Player list Ooh also, I made a proper player list now! I did want literal podiums, which I may still do at some point, but I’m happy with this for the time being. This can now also react to changes in the game like points or who’s turn it is!"}, {"post_id": 30376, "ts": "2026-07-17T21:09:53Z", "hours": 9.8342, "text": "BEEEG DEVLOG Wowwee! I’ve gotta remember to make devlogs more often. Seriously. Here’s a list of changes that I’ve made since my last devlog! The basics of the board are implemented! You can’t interact with it yet, but the template to do so is there, and it now exists on the server-side too and the client reads from that state. The board is also animated now. When someone selects a clue, it will highlight the category and the clue, you can hover clues, and, my favorite bit, the categories get revealed one by one when the game starts! That last part actually kind of sucked to implement lol. I prepared for this when making the lobby’s ready up system and made the state that it uses to work a bit dynamic because I knew that I would need it! The state stores readyForNextState , which for some states (like when we’re in the lobby) allow unreadying, but for others, simply act as a marker of whether a specific client is ready to move on. This is probably actually really important because if we just ran a timer on the server, a NUMBER of things could go wrong, most importantly being that a laggy client could get desynced VERY quickly and have a bad time. Alongside this, there is an intro now! I spent a good bit of time in Aseprite and messing with FL Studio to make some art and an intro track, both for the logo and so I finally have some artwork to add in the Discord Developer Portal, so there aren’t anymore blank assets. It’s not perfect (i am NOT an artist lol) See pictures below! psst , I also made a “think” music track for if the final round is enabled! It’s not in the game yet, though. I made a number of styling fixes. The board in particular looks much better on different screen sizes now, even on my phone. Reminder to use relative sizes when able, not px ! The server now registers the activity entry point command as having an APP_HANDLER handler, which means that the server must respond to interactions now, rather than Discord autolaunching the activity. The benefit of this is that we have control over whether a message gets sent to the channel it was started in (and when), or if we even launch the activity at all (disallow banned users? anything is possible…)! The rich presence actually has meaningful details now lol, rather than placeholder text. NOWWW what? I am going to, FINALLY, FOR REAL THIS TIME, (lol) actually start making the game logic. (It’s about time!) More updates sooooon!"}, {"post_id": 29136, "ts": "2026-07-15T20:22:28Z", "hours": 2.0267, "text": "I prototyped the game board last night! This took a while to get the styling right as I want this to work well on all screen sizes, hopefully including mobile devices. It’s still a little rough on very small sizes (e.g., my phone), but one step at a time! I still want to add little “podiums” at the bottom for our players. After that, I’m going to be working on getting the board working on the serverside, so that actually becomes part of the game state."}, {"post_id": 28080, "ts": "2026-07-14T03:29:38Z", "hours": 8.6656, "text": "socket.io is cool, BUT So. 8 hour devlog, my bad, but I’m going to start by talking about the thing that I’ve been mostly fighting with today. The networking backend that I’m using for LARPARDY is Socket.IO , which works similarly to (and usually on top of) WebSockets, but with a lot more quality of life features and ease of use for specifically these kinds of situations. I have been fighting for a few hours today trying to figure out why I could not, for the life of me, get socket.emit to work on the client. It was, in fact, one setting, retries , in the client config, stopping it from working, for SOME reason. Oops. Anyways… PROGRESS! (GAME!) Progress has been steady! Most of the changes that I’ve been making have been making the client more workable as I make new components, and actually more planning out the infrastructure. I’ve designed some new UI elements, moved where some state is stored, and so on. I have a bad habit of overplanning, or rather, being too worried about planning big projects like these, because I like to avoid having to do cleanup work later (like the cleanup that I’m doing on the client right now). It’s not strictly a bad habit, but sometimes it’s better to just write the code rather than spend hours deliberating about micro-optimizations with yourself. I believe I am now ACTUALLY at the point where I can begin properly building the UI for the game board and the frontend & backend aspects around that. This was more hidden work (and… fighting with the socket.io client, apparently) so I don’t have too much to show this time either, sadly. BUT, I did finally design and prototype the lobby! So you do get something fun to look at while I work on everything lol"}, {"post_id": 23977, "ts": "2026-07-07T07:00:57Z", "hours": 8.9547, "text": "it’s REDISin’ time! wait is that… not the line from the movie? (also SORRY this should have been at least a couple devlogs lol, please forgive me) I’ve finally been working on the state management for LARPARDY! This turns out to be a MUCH harder task than I originally thought it would be, particularly because I’m trying to make sure that this will be safe and work well in a real environment. Redis First of all, instead of keeping state in the server’s memory, I have added a Redis DB to the project. This is part of why I wanted Docker set up, as this is now just in the docker-compose.yml ! I have NEVER personally used Redis before, so some time of the time from this devlog was admittedly stumbling my way through figuring out how to use Redis correctly. CORRECTLY is the key word, to be clear. I’m building basically a wrapper class around the Redis database, StateManager , which abstracts away the nasty database stuff so the main code doesn’t have to worry about actually interacting with Redis. It was, kind of a pain to write actually (lol?), because I was worried about race conditions basically the entire time, since this code needs to run async (i.e., something else might do something to a thing while we’re also trying to do something with that thing). I HOPE that the state management code is bug free for now, but we’ll see. (please…) Client The client has now also been updated to listen for new game states. I also finally figured out how to set up Rich Presence, so it will show that you’re playing LARPARDY on your profile! In addition, I made it so in-game avatars will highlight green when someone is speaking (like Discord), and I added waiting UI for when a player has joined but hasn’t fully connected yet, AND for when you are still connectin#. so NOWW can we start to make the actual game? yyyyyYES! I think so. I hope, anyway (lol). I believe my next step will be making a basic lobby/waiting UI that lets you start the game, and then finally start to implement the actual game. I AM EXCITEEEEDD (there’s not a ton to look at since this was mostly backend work. sorry! i’ll have more next time :3)"}, {"post_id": 21340, "ts": "2026-07-03T07:04:15Z", "hours": 1.2911, "text": "oops… I wasted some time on accident, woops. I thought Discord’s proxy verification meant that the discordsays.com proxy would send these headers to verify that an actual Discord client had connected with them, but uh, I checked the flowchart again and I got that wrong. Hm. Thankfully, I didn’t get too far into implementing that. Regardless, trying to implement that still encouraged me to do a small bit of cleanup, which was properly declaring the environment variable. A certified moment. (YES I am going to abuse the fact that I figured out that you can use custom emotes here. i am so sorry) smol devlog"}, {"post_id": 21309, "ts": "2026-07-03T05:10:37Z", "hours": 7.3028, "text": "I HATE DOCKER i love Docker!! So, I didn’t even write a devlog yesterday because I spent the entirety of the time that I did have setting up a Dockerfile and docker-compose.yml for LARPARDY. …why did it take that long Because I’ve never used Docker before! Well, I have, to run services on my PC and my homelab server, but I’ve never used it for my own projects before. Specifically, I want to go ahead and set up Docker because I know that I’m going to need a database (or possibly two! SQL + Redis), and running everything together in a container will make both development AND deployment much easier for me. I’ve never used it before, so this is, uh, a learning experience, to say the least. oh also, pnpm Oh. Also. pnpm has a bug. Apparently. I’m using pnpm as the package manager for both the server and the client (since they’re both TypeScript projects). Both projects are stored in a monorepo (literally meaning just a repo with multiple projects, basically), which makes it easy to manage for me and keeps my commits together. Nicely, pnpm recommends a Dockerfile for this exact scenario ! I reconfigured the project to use pnpm ‘s workspaces feature (which… is seperate from package.json ’s workspaces, for some reason ) so that this would work. pnpm deploy is supposed to copy the project with it’s own node_modules since workspaces use a shared one. The problem is that, when it rewrites workspace dependencies (because I have a shared package for both the server & client), it links it to the wrong source, which no longer exists after it’s copied! I tried to debug and get this working for ACTUAL AGES before I gave up and just wrote commands that manually copy the files instead. I figured that there HAS to be a way to get this working, considering the documentation itself recommends this build file. But noooope. It doesn’t seem so (cite: this GitHub issue which has been open since… 2023??? ). so what did you actually do The Docker config works now, and that’s the important thing! I currently have the client build into an nginx image, but I’m either going to drop this entirely or have the server serve the client files itself. This will allow me to implement Discord proxy header verification too, if I decide to."}, {"post_id": 19750, "ts": "2026-07-01T04:19:16Z", "hours": 1.7331, "text": "Socket.IO! As for perhaps one of the most important bits… this is Socket.IO ! I had to figure out how to get this working with Fastify first ( thank you random GitHub commenter ) since that’s my web framework of choice for the backend (for anything not going through Socket.IO), but here’s a basic implementation of it working! what it do? Socket.IO works similarly to (and if it’s available, on top of) WebSockets, where there’s a persistent connection with bi-directional communication between the client and the server. Socket.IO adds some extra fancy things on top of that, such as fallbacks when WebSockets aren’t available and rooms, and in general will make my life easier (lol). This part is, of course, very important for getting a game handled by the backend to work! This will also allow us to do multiplayer. Discord gives you an instance ID for each activity that players are playing together, so I’ll use this to make the rooms, that way players in the same voice channel will end up in the same game!"}, {"post_id": 19673, "ts": "2026-07-01T01:46:04Z", "hours": 5.8181, "text": "ho boy… I’ve wanted to make a Discord Activity basically since the feature began being teased… so, no better time than the present, right? I saw some guys playing Jeopardy the other night and I realized that I feel like the online ways of playing Jeopardy are kinda… uh, bad? I thought I should fix that. I’ve been getting a lot more comfortable with frontend development recently (I’m normally more comfy with backend stuff!), so now this is really going to test my ability to handle FULL STACK development. With that said, I’ve been playing around since last night and I have a working setup with (stable) communication with the Discord client via the SDK. (hooray!) Currently, it just shows the name and avatar of connected players. don’t you love React? Me too! Unfortunately, I am lying. I’m trying Vue.js for the first time for this project. There is a LOT that I’m planning that is very new to me for this project. I expect to need Redis, Socket.IO, and (of course) the Discord activities SDK, none of which I’ve ever used. So, here we go? the name. dude. what. why I didn’t originally have a name for this (the README still remains “Untitled Jeopardy Clone” for now), so I was using the name “Leopardy” as a placeholder. Someone recommened me to switch to LARPARDY. I couldn’t say no. I wish I did. …anyways, next up is actually making some sort of game state work. I’m going to start working on the backend!"}]...
|
Title: LARPARDY! by @purpld | Stardance
Devlogs:
Title: LARPARDY! by @purpld | Stardance
Devlogs:
ho boy… I’ve wanted to make a Discord Activity basically since the feature began being teased… so, no better time than the present, right? I saw some guys playing Jeopardy the other night and I realized that I feel like the online ways of playing Jeopardy are kinda… uh, bad? I thought I should fix that. I’ve been getting a lot more comfortable with frontend development recently (I’m normally more comfy with backend stuff!), so now this is really going to test my ability to handle FULL STACK development. With that said, I’ve been playing around since last night and I have a working setup with (stable) communication with the Discord client via the SDK. (hooray!) Currently, it just shows the name and avatar of connected players. don’t you love React? Me too! Unfortunately, I am lying. I’m trying Vue.js for the first time for this project. There is a LOT that I’m planning that is very new to me for this project. I expect to need Redis, Socket.IO, and (of course) the Discord activities SDK, none of which I’ve ever used. So, here we go? the name. dude. what. why I didn’t originally have a name for this (the README still remains “Untitled Jeopardy Clone” for now), so I was using the name “Leopardy” as a placeholder. Someone recommened me to switch to LARPARDY. I couldn’t say no. I wish I did. …anyways, next up is actually making some sort of game state work. I’m going to start working on the backend!
Socket.IO! As for perhaps one of the most important bits… this is Socket.IO ! I had to figure out how to get this working with Fastify first ( thank you random GitHub commenter ) since that’s my web framework of choice for the backend (for anything not going through Socket.IO), but here’s a basic implementation of it working! what it do? Socket.IO works similarly to (and if it’s available, on top of) WebSockets, where there’s a persistent connection with bi-directional communication between the client and the server. Socket.IO adds some extra fancy things on top of that, such as fallbacks when WebSockets aren’t available and rooms, and in general will make my life easier (lol). This part is, of course, very important for getting a game handled by the backend to work! This will also allow us to do multiplayer. Discord gives you an instance ID for each activity that players are playing together, so I’ll use this to make the rooms, that way players in the same voice channel will end up in the same game!
I HATE DOCKER i love Docker!! So, I didn’t even write a devlog yesterday because I spent the entirety of the time that I did have setting up a Dockerfile and docker-compose.yml for LARPARDY. …why did it take that long Because I’ve never used Docker before! Well, I have, to run services on my PC and my homelab server, but I’ve never used it for my own projects before. Specifically, I want to go ahead and set up Docker because I know that I’m going to need a database (or possibly two! SQL + Redis), and running everything together in a container will make both development AND deployment much easier for me. I’ve never used it before, so this is, uh, a learning experience, to say the least. oh also, pnpm Oh. Also. pnpm has a bug. Apparently. I’m using pnpm as the package manager for both the server and the client (since they’re both TypeScript projects). Both projects are stored in a monorepo (literally meaning just a repo with multiple projects, basically), which makes it easy to manage for me and keeps my commits together. Nicely, pnpm recommends a Dockerfile for this exact scenario ! I reconfigured the project to use pnpm ‘s workspaces feature (which… is seperate from package.json ’s workspaces, for some reason ) so that this would work. pnpm deploy is supposed to copy the project with it’s own node_modules since workspaces use a shared one. The problem is that, when it rewrites workspace dependencies (because I have a shared package for both the server & client), it links it to the wrong source, which no longer exists after it’s copied! I tried to debug and get this working for ACTUAL AGES before I gave up and just wrote commands that manually copy the files instead. I figured that there HAS to be a way to get this working, considering the documentation itself recommends this build file. But noooope. It doesn’t seem so (cite: this GitHub issue which has been open since… 2023??? ). so what did you actually do The Docker config works now, and that’s the important thing! I currently have the client build into an nginx image, but I’m either going to drop this entirely or have the server serve the client files itself. This will allow me to implement Discord proxy header verification too, if I decide to.
oops… I wasted some time on accident, woops. I thought Discord’s proxy verification meant that the discordsays.com proxy would send these headers to verify that an actual Discord client had connected with them, but uh, I checked the flowchart again and I got that wrong. Hm. Thankfully, I didn’t get too far into implementing that. Regardless, trying to implement that still encouraged me to do a small bit of cleanup, which was properly declaring the environment variable. A certified moment. (YES I am going to abuse the fact that I figured out that you can use custom emotes here. i am so sorry) smol devlog
it’s REDISin’ time! wait is that… not the line from the movie? (also SORRY this should have been at least a couple devlogs lol, please forgive me) I’ve finally been working on the state management for LARPARDY! This turns out to be a MUCH harder task than I originally thought it would be, particularly because I’m trying to make sure that this will be safe and work well in a real environment. Redis First of all, instead of keeping state in the server’s memory, I have added a Redis DB to the project. This is part of why I wanted Docker set up, as this is now just in the docker-compose.yml ! I have NEVER personally used Redis before, so some time of the time from this devlog was admittedly stumbling my way through figuring out how to use Redis correctly. CORRECTLY is the key word, to be clear. I’m building basically a wrapper class around the Redis database, StateManager , which abstracts away the nasty database stuff so the main code doesn’t have to worry about actually interacting with Redis. It was, kind of a pain to write actually (lol?), because I was worried about race conditions basically the entire time, since this code needs to run async (i.e., something else might do something to a thing while we’re also trying to do something with that thing). I HOPE that the state management code is bug free for now, but we’ll see. (please…) Client The client has now also been updated to listen for new game states. I also finally figured out how to set up Rich Presence, so it will show that you’re playing LARPARDY on your profile! In addition, I made it so in-game avatars will highlight green when someone is speaking (like Discord), and I added waiting UI for when a player has joined but hasn’t fully connected yet, AND for when you are still connectin#. so NOWW can we start to make the actual game? yyyyyYES! I think so. I hope, anyway (lol). I believe my next step will be making a basic lobby/waiting UI that lets you start the game, and then finally start to implement the actual game. I AM EXCITEEEEDD (there’s not a ton to look at since this was mostly backend work. sorry! i’ll have more next time :3)
socket.io is cool, BUT So. 8 hour devlog, my bad, but I’m going to start by talking about the thing that I’ve been mostly fighting with today. The networking backend that I’m using for LARPARDY is Socket.IO , which works similarly to (and usually on top of) WebSockets, but with a lot more quality of life features and ease of use for specifically these kinds of situations. I have been fighting for a few hours today trying to figure out why I could not, for the life of me, get socket.emit to work on the client. It was, in fact, one setting, retries , in the client config, stopping it from working, for SOME reason. Oops. Anyways… PROGRESS! (GAME!) Progress has been steady! Most of the changes that I’ve been making have been making the client more workable as I make new components, and actually more planning out the infrastructure. I’ve designed some new UI elements, moved where some state is stored, and so on. I have a bad habit of overplanning, or rather, being too worried about planning big projects like these, because I like to avoid having to do cleanup work later (like the cleanup that I’m doing on the client right now). It’s not strictly a bad habit, but sometimes it’s better to just write the code rather than spend hours deliberating about micro-optimizations with yourself. I believe I am now ACTUALLY at the point where I can begin properly building the UI for the game board and the frontend & backend aspects around that. This was more hidden work (and… fighting with the socket.io client, apparently) so I don’t have too much to show this time either, sadly. BUT, I did finally design and prototype the lobby! So you do get something fun to look at while I work on everything lol
I prototyped the game board last night! This took a while to get the styling right as I want this to work well on all screen sizes, hopefully including mobile devices. It’s still a little rough on very small sizes (e.g., my phone), but one step at a time! I still want to add little “podiums” at the bottom for our players. After that, I’m going to be working on getting the board working on the serverside, so that actually becomes part of the game state.
BEEEG DEVLOG Wowwee! I’ve gotta remember to make devlogs more often. Seriously. Here’s a list of changes that I’ve made since my last devlog! The basics of the board are implemented! You can’t interact with it yet, but the template to do so is there, and it now exists on the server-side too and the client reads from that state. The board is also animated now. When someone selects a clue, it will highlight the category and the clue, you can hover clues, and, my favorite bit, the categories get revealed one by one when the game starts! That last part actually kind of sucked to implement lol. I prepared for this when making the lobby’s ready up system and made the state that it uses to work a bit dynamic because I knew that I would need it! The state stores readyForNextState , which for some states (like when we’re in the lobby) allow unreadying, but for others, simply act as a marker of whether a specific client is ready to move on. This is probably actually really important because if we just ran a timer on the server, a NUMBER of things could go wrong, most importantly being that a laggy client could get desynced VERY quickly and have a bad time. Alongside this, there is an intro now! I spent a good bit of time in Aseprite and messing with FL Studio to make some art and an intro track, both for the logo and so I finally have some artwork to add in the Discord Developer Portal, so there aren’t anymore blank assets. It’s not perfect (i am NOT an artist lol) See pictures below! psst , I also made a “think” music track for if the final round is enabled! It’s not in the game yet, though. I made a number of styling fixes. The board in particular looks much better on different screen sizes now, even on my phone. Reminder to use relative sizes when able, not px ! The server now registers the activity entry point command as having an APP_HANDLER handler, which means that the server must respond to interactions now, rather than Discord autolaunching the activity. The benefit of this is that we have control over whether a message gets sent to the channel it was started in (and when), or if we even launch the activity at all (disallow banned users? anything is possible…)! The rich presence actually has meaningful details now lol, rather than placeholder text. NOWWW what? I am going to, FINALLY, FOR REAL THIS TIME, (lol) actually start making the game logic. (It’s about time!) More updates sooooon!
A REAL BOARD! A trickier task than it sounds like, but I needed some clues finally! The default testing board was uh… not exactly “production ready” in my opinion (lol). This was tricky particularly because, well, where am I going to get clues from? You kinda need a LOT of clues for a good Jeopardy game, and while UGC is something I want to make, I would like a default mode, too, and there is certainly no way that I was going to try to make a bunch of clues by myself. (respectfully, I don’t think I am also smart enough to do that lol) Jepp I found a little project called jepp which exposes a LOT of existing Jeopardy clues through an API. I didn’t want to bother that API too much though, and there is an SQLite DB dump publicly available, so LARPARDY now uses that instead. With a little bit of SQL later (and, uh, remembering how to use SQL lol)… we have many, many clues! The only thing is that the database does not store the value of clues, so it’ll be a bit random. A $1000 clue might end up being super easy lol, but I think that’s some jank I’m okay with. Player list Ooh also, I made a proper player list now! I did want literal podiums, which I may still do at some point, but I’m happy with this for the time being. This can now also react to changes in the game like points or who’s turn it is!
Questions, and MORE boring serverside stuffs Oof, sorry, it’s been a while since I’ve been able to work on this project, and the clock is ticking! Clues! Clues can now actually be selected and that will be reflected to the server and all players. You can also see a bit of the buzzer work I started, which is actually much more of a pain than it would seem. Why? Well that’s because we now have to talk about: SYNCING TIME OVER THE NETWORK The server running the game has a system time. Your computer, phone, or whatever, also has its own system time which could vary entirely from the server’s. If the server wants to schedule an event (say, when you should be allowed to buzz in), how does it tell the client when that is without an offset? Using Unix timestamps is common, but without knowing how offset the client is from the server, we don’t actually really know when that timestamp is in reality (since EITHER could be offset from reality, if not both), and we don’t want mismatched times to cause weird problems. The solution that I went with is that the client will periodically (every 1 second for now) send a “ping” message to the server with its current timestamp. The server will reply with that time as well as it’s own timestamp. Upon receiving that reply, it can then do three things: Calculate the round trip time (i.e., ping!) from the original time we sent and the time it is now. Estimate the server time as we’re processing this by adding the server time + half of the ping Calculate our time offset from the server by subtracting our time from that estimate I admit that I did NOT figure this out on my own. Google is nice. But this does actually kind of serve as the basis for how things like the Network Time Protocol (NTP) work. Reminder that all of that is just so we can show when the buzzer is allowed to be pressed accurately. Spectating Also, I added a fix so late players aren’t actually awkwardly added in the middle of a game and are instead in a kind of “spectator” state; since they’re still connected, they receive all the game state events and so on. If all actual players leave, the game will reset (which also means I now have a function to reset the state, and for showing alerts!).
IT’S READY! I am very happy to say that I’m done with the main game! I wanted to split this into a couple of devlogs, but Stardance was having some issues syncing time earlier so I kept working. (I think it’s actually been up for a little bit… oops) Buzzing -> Judging Judging now is fully functional! Either someone gets the clue right, everyone gets it wrong, or not everybody buzzes in and we move on. I’ve also introduced something called Hostless Mode , which allows the game host to play (where normally they could not). This plays more like most online versions of the gameshow, where you can buzz in, reveal the answer, and then that’s that (instead of everyone getting a chance to buzz in if the first person is wrong). This also gives a way to play singleplayer, which should make it more accessible. All of this took a lot of careful logic work to make sure that everything works as expected (hence the VERY long log time, plus several other things), no matter how you’re playing! End of Line The game, also, can finally end, now that clues get marked off. I made a simple leaderboard that shows when the game is over, and then you can return to the lobby! See the photo below. GAMEPLAY! You can watch a short gameplay example with a host (right) + 2 players (left) below! You’re expected to play with voice (or a text channel, if you wish), so this demo just showcases the flow of the game. I logged a lot of time on this one because there was also a lot of testing and fixing small bugs, especially when making the judging system. A lot can get weird when managing so much state!
SHIP IT! LARPARDY! is now verified on Discord! I spent a short while writing a basic Terms of Service and Privacy Policy (as required by Discord) and verifying all the details. Live deployment I’ve also deployed a production version of the game server to my home lab! It’s exposed through a Cloudflare Tunnel, because I’m behind CGNAT (i.e., I don’t have my own public IP). Spending all that time setting up Docker for this project all that time ago made this VERY easy, which was the entire point. I’m glad nothing broke in the process… lol Discovery The last thing I want to do is set up Discovery on Discord, so reviewers (and anybody, for that matter!) can just search up LARPARDY! in Discord, and it should come up. I pretty much just need to make a support server and write the details, and then… LET’S SHIP IT! I dunno if anybody reads these things, but if you do, thank you. :D
Last devlog before ship (proper this time!) Discovery I set up a Discord server for the game, so LARPARDY! is now on Discord’s discovery (App Directory)! This is now used for the demo link for the game. README (please) Just spent some time redoing the (ancient) README and making it look pretty and detailed. I took some screenshots and added them here. They also show up on Discord! :D
Ships:
I made a Discord activity trivia game inspired by the Jeopardy game show called LARPARDY! that you can easily play with your friends without leaving Discord! I am very proud of how far this project has come because it was very challenging for me. The frontend is based on Vue.js, which before this, I had never used before. I wanted to try something non-React and I’ve come to REALLY love Vue. I had to write multiplayer netcode entirely by myself! I used Socket.IO to handle the networking itself, but I had to write ALL of the state management and syncing code. There were certainly some difficulties in doing so! I also have not worked with Redis before, which was my database of choice for state management. It is… quite different from other databases, so writing code to interact with it was a learning experience....
|
1793069433.8941815
|
1793155833.8941815
|
|
41645
|
ScriptCanvas by @M-Mrk | Stardance
|
M-Mrk
|
1
|
73.0
|
1445
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T12:25:53Z", "hours": 73.0, "multiplier": 19.83, "payout": 1445, "blessing": "neutral", "text": "I made a web app where you can make simple scripts to create interesting outputs. Its really fun to see what patterns and stuff you can create from very simple logic! The web app is statically hosted on github pages and does not need any server. It is build on a very performant stack. The main UI thread dispatches a request to a web worker which on a separate thread executes optimized rust WASM. That WASM compiles the script to an AST and then evaluates it a bunch of times across all the needed scopes. Finally the web worker can message the main UI thread back. This separation is needed to not freeze the UI during script evaluation, but because there is a memory separation it was very annoying to work with. I used a vanilla-ish stack with no web framework, but with TS. I learned a lot about CSS and TS/JS. Using a framework would have probably sped up development but I wanted to first really understand what a framework would need to do under the hood before moving to that. All in all I am very proud of this project! Hopefully others find the concept as interesting as I do!", "repo": "https://github.com/M-Mrk/ScriptCanvas", "demo": "https://m-mrk.github.io/ScriptCanvas/"}]...
|
[{"post_id": 70586, "ts": "202 [{"post_id": 70586, "ts": "2026-09-19T12:16:31Z", "hours": 7.545, "text": "Final touches Spelling mistakes I fixed a lot of spelling mistakes in the tutorial and help box sections. I think I should keep writing tutorials and docs to times before 1 am. Plot I also added a new output the plot ! The script gets a x value and returns the matching y value. Those pairs then get displayed on a plot using graph.js. During this addition I also reworked the core rust 🦀 engine a bit so now stuff that should be output independent, like creating a Rhai engine or compiling a Rhai script to an AST, is in its own file. Then I added the rust logic and it just returns an array of X and Y value pairs when done. Adding the UI and lifecycle stuff for the plot was rather easy because I kept everything pretty modular with easy expansion in mind. However styling the plot was rather complicated and I now have a enormous JavaScript Object detailing all the small bits and pieces to make the plot look alright! Repo PixelMatrix was always a temporary name as it is only really fitting for the grid output, so I renamed this project to ScriptCanvas. I think this is more fitting because it does use scripts and it also draws those on canvas elements! I also added a README to the repo. As testing on chrome and firefox also looked good I think I am ready to ship !"}, {"post_id": 65338, "ts": "2026-09-10T12:44:05Z", "hours": 7.6142, "text": "Help, Docs and a Tutorial Help menu and Docs I added a Help modal under the “?” button. It has some actions like opening the tutorial again and features some docs. There are docs on the specific output explaining what the output expects and listing all available variables in scope of the output. So for Grid it explains how the script will be evaluated over all pixels in a grid and the script returns an RGB value setting that pixels color. Then it lists all the variables, like ‘x’ the x-coordinate of the pixel. Tutorial I also added a short tutorial which explains how to get a running script under Grid. I hope it explains all the concepts step by step and that it is understandable. Originally it was more of a tour of the UI and explained all the buttons, but I think that most of that is pretty self explanatory and the new tutorial is better at explaining how to actually use this. Next up I will add 1 more output before shipping!"}, {"post_id": 62520, "ts": "2026-09-05T22:45:09Z", "hours": 8.4306, "text": "Coming to an end I am kind off getting frustrated with this project, I cant handle this stack anymore , I yearn for hardware again. I am aiming to finish this in the next 2 weeks! Well any ways here is what I did: Output stretching Until now the grid output was always a square, so if you had a non-square resolution it would be stretched to one. Now it actually gets the shape of the resolution and it uses the most of the usable space it can. I also added a option to return to the original method. Blur Initially I had some problems with drawing pixels to the canvas. I drew rectangles to the canvas but some image smoothing settings were adding anti-aliasing and similar stuff making the pixels look weird. I fixed that by just creating raw image data, but it was a cool effect for some situations, like generating a gradient. So I added a option to toggle this image smoothing of the browser. Sadly as it is browser based I’d probably has very different results on different browsers. Small UI I did a bunch of css fixes to make the ui more resizable and trigger a bunch of stuff on resizing. Then I added a tabbar and reduced the layout. In the normal layout the editor and output are side by side and when the screen is too small only one is shown and you can switch with the tabbar. It also moves the top bar actions into a setting pop up. Tip box Some features might not be self explanatory, so I added this small tip tool when hovering above stuff for some time. To not be stuck on this for too much longer I scrapped the idea of the landing page and I will instead add a tutorial."}, {"post_id": 55286, "ts": "2026-08-27T00:47:28Z", "hours": 8.4031, "text": "Layouting, resizing and a console Console I finally got everything working together. This means that you can now use print() and debug() in the script and it’ll output to the console ! It’ll tell you what was printed and at what pixel, e.g. [x:2|y:4] => here! . I’ve attached a diagram of why some parts of this project are really painful to work with. Its largely due to the amount of wrappers needed, because of the memory and thread separation of the web worker/wasm. Reworking this was really not fun and just doing it better the 1. time would’ve saved me a lot of time. The console won’t be in use all the time and not everyone will use it so I also wanted to limit the space it takes. I firstly reduced the standard space it gets down to 5% of the view height and then made it drag resizable. You can press and hold on the drag handle of the console and stretch it out over the output and editor. This way you can decide how much screen space you want to sacrifice. I used the pointer API so in theory this should work with all kinds of stuff from fingers to pens. In the end the console was way more css intensive then I thought as it needs some and css tomfoolery in order to scroll without blowing up the DOM. Performance increases I learned about Abstract Syntax Trees and made the wasm precompile the script to an AST before rerunning it a bunch of times with different scopes. This was another substantial performance increase decreasing the per pixel time form 0.04ms down to 0.004ms. Wow was the wasm unoptimized Error highlighting I finally added error highlighting. The line with an error now gets highlighted in the editor. During adding this feature with the Monaco editor I also accidently bumped my bundled js to 500kb . This was due to it importing a bunch of syntax stuff for different languages. Thankfully changing one Monaco.something to monaco.something resolved this QoL errors get cleared when rerunning script add resolution to script scope UI I noticed that you couldn’t resize the app to something smaller. You could however make it smaller and then reload. Meaning that it was able to come up with a good layout but something was greedy and holding on to its space. Width wise this was easy to fix by adding a dynamic sizing flag to the editor and some min-width: 0 s to some elements, but height wise i couldn’t get it to work. Turns out even with dynamic sizing the editor is still not the biggest fan of being resized so I had to add a ResizeObserver and call the editors layout method to make it reconsider its size Next up I will now implement a better UI for smaller screens, but first I need to declutter my css and html to make it more maintainable . Other additions/fixes"}, {"post_id": 52430, "ts": "2026-08-22T15:34:18Z", "hours": 9.8981, "text": "Continuing on improving the ui and some refactors Number input styling Those now also have better tui like styling. I added sqaure brackets [] to the ends, the hover background highlighting and a blinking underscore if you focus on it. Though am unsure whether it is clear enough that you are supposed to enter text into them. If you’ve got any improvement ideas let me know. Loading indicator When something is loading I can add the loading class which displays the typical tui animation spinner before it. The one made up of brail dots ⠧ Central Icon I felt that the run button could be unnoticed so I added an icon to the middle of screen. It also shows the loading to make it more clear that the script is actually being run. Error pop up Instead of just having some red text in the console I add a real error pop up with a blinking dashed red outline. Performance increase I spent some time thinking about doing a bunch of stuff to make my wasm multi threaded and async, which included using nightly features, a service worker shim to change http headers, etc. Because I felt that the script running was way too slow and I wanted better performance and the ability to easily cancel the running wasm. Currently the wasm is blocking and goes over each pixel one by one. But before I implemented that I did some other performance changes, like only creating 1 shared rhai engine for all pixels. Before every pixel created its own rhai engine. This change was way more substantial than I thought, as it took the per pixel time from 0.5ms down to 0.04ms . This means 255*255 pixel or 65k pixel don’t take 12s but 2s. This is such a change that I think implementing all the async and multi threading would just be a waste of time, so I’ll stash that idea for now. console I also styled the console part and added all the ui logic. I want to give the user the option to use a print function in there script for debugging purposes. Then in the console it’ll show on which pixel the debug comes from and what it says. But as the image can get pretty big and the user might print once or more per pixel, just adding some Nodes to a console div would probably blow up everything. So at first I experimented with a canvas. The canvas overlays on the console div and then behind it is a big spacer which allows for scrolling, some code would then change what the canvas shows based on where the back is scrolled to. After I had gotten it to display some logs nicely, I realized that this way doesn’t allow the user to highlight and copy the logs, which is probably something someone might want to do. So I switched the canvas out with a normal div. Instead of drawing the logs to a canvas the logs do get added as nodes, but only the visible ones and the scrolling changes which are shown. This way the user can interact with them like normal text and the DOM doesn’t have to render 1k+ nodes. This seems to work really good, the only problem was getting the scrolling to work while the log nodes occupy the same space, but with some css trickery and EventListeners I can pass any scrolling done on the logs through to the background scrolling element. Refactoring I am still working on the wasm part of allowing the user to use print(). While implementing that i had to change what it outputs and refactored the rust project structure. When I then got to the part where the browsers main ui thread interacts with the web worker which runs the wasm, I realized how badly that part was written, with so many loose interfaces and strings. So I am currently still refactoring that and trying not to loose my mind. Still not a big fan of and"}, {"post_id": 48552, "ts": "2026-08-17T00:09:58Z", "hours": 9.9247, "text": "New UI plans and some QoL features Features Auto clamp 🗜️ It can be really frustrating if the output exceeds 255 and everything errors out. So I added a auto clamp checkbox, which just clamps the output to the expected range of 0 to 255. Hot reload I also added a check box for hot reloading. When you stop typing, the script will automatically run. No need to press the run button. Probably a bit annoying on larger resolutions so you can disable it. New UI I also started building the real UI. Initially I just did the layout: top bar with global settings middle part with editor and output console output, where print calls and errors will go. The output part also has a tool bar with output specific settings. An explanation of the app will go on the index and it will have a link to /app where the actual stuff is. This way I don’t have to give any screen space up for an introduction when not needed. Currently the index is just a redirect. Initially I wanted to go with a windows 8 panel style UI, so nothing rounded and only big rectangular tiles. But during experimenting I made the tile only as big as its text and when the background color got highlighted it reminded me of a TUI button. So from that point on I decided to try and style my entire site like that. I think I can pull this TUI look off, but the current styling is definitely not finished. I do however already like the checkboxes, which are styled like [ ] and [*], and the dropdown select. The select was way harder to do as you can’t really style the vanilla element, as it depends on os and browser styling. So you have to create your own. I would say I learned a lot new things about css. Especially stuff like ::before and ::after are super handy for the look I am going for."}, {"post_id": 42180, "ts": "2026-08-06T19:57:02Z", "hours": 10.0303, "text": "DEMO HERE and as soon as github gets itself back together I can also push the newest changes to it! Refactor, refactor and some more refactoring Actual new features I added options to the top. You can switch the output type and script language. But seeing as there currently is only 1 language (Rhai) and 1 output type (Grid) they are kinda pointless. I also added output specific options, for Grid it is currently just the resolution. Also I added a spinner to the run button to indicate that the script is running but that didn’t work until a refactor/feature mentioned later. Refactors The rest of the time was all spent on refactoring. But I do think it was worth it and it is now way easier to add new features. Modularity I introduced a state system where each output type has its own module. Each output only exposes a common interface with a init, deinit and pipeline method. This way other parts, don’t need to deal with what output is set. Each output also deals with its specific settings and UI itself. -> I fully switched from to . I was kind of fed up with the loosey goosey attitude of javascript where nothing is really defined. Typescript doesn’t fix that entirely but does help to find a lot more bugs when writing the code and not at runtime. Vite As does need some sort of bundler/builder I set up vite for the project. This also means I can make the repo more source files only. Before I had the compiled wasm also in the repo, but now it gets compiled together with vite’s build process in the github action. Probably vite also has some other performance benefits. Web Worker As I mentioned before I added a spinner to when the script was being run to show that something is actually happening, but the that wasn’t showing. Because I had everything running off of the main thread calling the WASM blocked everything else even the UI and the browser would ask whether to close the page. The solution is to move it to a web worker, which runs in a separate thread. This was probably the most difficult thing, because it required major changes and it is a bit more complicated because of WASM. When a WASM function returns something, it normally uses a pointer to shared memory, so that there is no unnecessary cloning, but because the WASM runs in the memory of the web worker the main thread can’t access it. So I had to work around that."}, {"post_id": 39133, "ts": "2026-08-01T21:00:01Z", "hours": 5.4594, "text": "FOR CURRENT DEMO CLICK HERE Rhai support I got rhai to work. It took a bit to figure out how to expect the script to return an array of 3 u8’s, but after figuring out that all rhai numbers are i64 and then figuring out how to downsize that to u8 it works! Later I then added the current coordinates into the scope and a rand function to generate noise. Monaco A bare textarea element for script input is pretty bad so I switched to the monaco editor. Its the same one VSCode uses so most of us should be pretty familar with it and its keybinds. It took some time to figure out how to load monaco from CDN and not build locally. I also had some cosmetic bugs with the minimap, so I just disabled it as the scripts should be rather short and its not that useful anyways. Using localstorage the script now also persist between sessions. Anti-Aliasing As you can see the output isn’t clear but has these weird white lines. These do go away after running the script multiple times. This due to the browser doing some post processing like anti-aliasing on the drawn rectangles and it adds some semi-transparent pixels to the edges. This is especially bad if you pass use decimal values as coordinates to draw to the canvas, which I am doing to fit my pixels on there. I tried multiple methods to disable this post-processing for drawing filled rectangles, but nothing worked. The solution is to use a hidden canvas, draw the output at native resolution to it and then transfer the image from that canvas to the real one. The putImage function does allow me to disable post processing and adjust the destination size. Now it works and the bare minimum is here . As always you can test it here ! It automatically runs off of the latest commit."}, {"post_id": 38401, "ts": "2026-07-31T19:09:15Z", "hours": 5.5975, "text": "Idea I really like experimenting with random functions and math relations and then displaying them. So I want to make this website where you can write a script to run on every pixel and then display the result. Originally this was just rust code creating ppm pictures, but a web app is more accessible. Implementation I am still not the biggest JS fan and more comfortable with rust, so I will use WASM to make rust run in the browser. This also has some performance benefits and I can easily add scripting languages Canvas The first step was to have something I can draw pixels to with JS. I went with a canvas and drawing filled rects to it. WASM Rust to WASM seems to have a very mature pipeline and its very easy. You just write normal rust code and all functions, types, etc you want to expose to JS you can use #[wasm_bindgen] from the wasm-bindgen crate. Then after installing wasm-pack you can run wasm-pack build --target web to compile the rust to wasm. It also automatically generates the JS glue and TS headers. In JS you just have to import a init function and the exposed wasm functions you want to use. The browser does the rest! Everything will run locally in the browser, which also means we can use githubs free static hosting , which I already setup with a github action, check it out here ! Currently I have only got a bare minimum UI and no language support. Next on my list is adding Rhai support (scripting language similar to rust) and getting that to actually output some pixels."}]...
|
Title: ScriptCanvas by @M-Mrk | Stardance
Devlogs Title: ScriptCanvas by @M-Mrk | Stardance
Devlogs:
Idea I really like experimenting with random functions and math relations and then displaying them. So I want to make this website where you can write a script to run on every pixel and then display the result. Originally this was just rust code creating ppm pictures, but a web app is more accessible. Implementation I am still not the biggest JS fan and more comfortable with rust, so I will use WASM to make rust run in the browser. This also has some performance benefits and I can easily add scripting languages Canvas The first step was to have something I can draw pixels to with JS. I went with a canvas and drawing filled rects to it. WASM Rust to WASM seems to have a very mature pipeline and its very easy. You just write normal rust code and all functions, types, etc you want to expose to JS you can use #[wasm_bindgen] from the wasm-bindgen crate. Then after installing wasm-pack you can run wasm-pack build --target web to compile the rust to wasm. It also automatically generates the JS glue and TS headers. In JS you just have to import a init function and the exposed wasm functions you want to use. The browser does the rest! Everything will run locally in the browser, which also means we can use githubs free static hosting , which I already setup with a github action, check it out here ! Currently I have only got a bare minimum UI and no language support. Next on my list is adding Rhai support (scripting language similar to rust) and getting that to actually output some pixels.
FOR CURRENT DEMO CLICK HERE Rhai support I got rhai to work. It took a bit to figure out how to expect the script to return an array of 3 u8’s, but after figuring out that all rhai numbers are i64 and then figuring out how to downsize that to u8 it works! Later I then added the current coordinates into the scope and a rand function to generate noise. Monaco A bare textarea element for script input is pretty bad so I switched to the monaco editor. Its the same one VSCode uses so most of us should be pretty familar with it and its keybinds. It took some time to figure out how to load monaco from CDN and not build locally. I also had some cosmetic bugs with the minimap, so I just disabled it as the scripts should be rather short and its not that useful anyways. Using localstorage the script now also persist between sessions. Anti-Aliasing As you can see the output isn’t clear but has these weird white lines. These do go away after running the script multiple times. This due to the browser doing some post processing like anti-aliasing on the drawn rectangles and it adds some semi-transparent pixels to the edges. This is especially bad if you pass use decimal values as coordinates to draw to the canvas, which I am doing to fit my pixels on there. I tried multiple methods to disable this post-processing for drawing filled rectangles, but nothing worked. The solution is to use a hidden canvas, draw the output at native resolution to it and then transfer the image from that canvas to the real one. The putImage function does allow me to disable post processing and adjust the destination size. Now it works and the bare minimum is here . As always you can test it here ! It automatically runs off of the latest commit.
DEMO HERE and as soon as github gets itself back together I can also push the newest changes to it! Refactor, refactor and some more refactoring Actual new features I added options to the top. You can switch the output type and script language. But seeing as there currently is only 1 language (Rhai) and 1 output type (Grid) they are kinda pointless. I also added output specific options, for Grid it is currently just the resolution. Also I added a spinner to the run button to indicate that the script is running but that didn’t work until a refactor/feature mentioned later. Refactors The rest of the time was all spent on refactoring. But I do think it was worth it and it is now way easier to add new features. Modularity I introduced a state system where each output type has its own module. Each output only exposes a common interface with a init, deinit and pipeline method. This way other parts, don’t need to deal with what output is set. Each output also deals with its specific settings and UI itself. -> I fully switched from to . I was kind of fed up with the loosey goosey attitude of javascript where nothing is really defined. Typescript doesn’t fix that entirely but does help to find a lot more bugs when writing the code and not at runtime. Vite As does need some sort of bundler/builder I set up vite for the project. This also means I can make the repo more source files only. Before I had the compiled wasm also in the repo, but now it gets compiled together with vite’s build process in the github action. Probably vite also has some other performance benefits. Web Worker As I mentioned before I added a spinner to when the script was being run to show that something is actually happening, but the that wasn’t showing. Because I had everything running off of the main thread calling the WASM blocked everything else even the UI and the browser would ask whether to close the page. The solution is to move it to a web worker, which runs in a separate thread. This was probably the most difficult thing, because it required major changes and it is a bit more complicated because of WASM. When a WASM function returns something, it normally uses a pointer to shared memory, so that there is no unnecessary cloning, but because the WASM runs in the memory of the web worker the main thread can’t access it. So I had to work around that.
New UI plans and some QoL features Features Auto clamp 🗜️ It can be really frustrating if the output exceeds 255 and everything errors out. So I added a auto clamp checkbox, which just clamps the output to the expected range of 0 to 255. Hot reload I also added a check box for hot reloading. When you stop typing, the script will automatically run. No need to press the run button. Probably a bit annoying on larger resolutions so you can disable it. New UI I also started building the real UI. Initially I just did the layout: top bar with global settings middle part with editor and output console output, where print calls and errors will go. The output part also has a tool bar with output specific settings. An explanation of the app will go on the index and it will have a link to /app where the actual stuff is. This way I don’t have to give any screen space up for an introduction when not needed. Currently the index is just a redirect. Initially I wanted to go with a windows 8 panel style UI, so nothing rounded and only big rectangular tiles. But during experimenting I made the tile only as big as its text and when the background color got highlighted it reminded me of a TUI button. So from that point on I decided to try and style my entire site like that. I think I can pull this TUI look off, but the current styling is definitely not finished. I do however already like the checkboxes, which are styled like [ ] and [*], and the dropdown select. The select was way harder to do as you can’t really style the vanilla element, as it depends on os and browser styling. So you have to create your own. I would say I learned a lot new things about css. Especially stuff like ::before and ::after are super handy for the look I am going for.
Continuing on improving the ui and some refactors Number input styling Those now also have better tui like styling. I added sqaure brackets [] to the ends, the hover background highlighting and a blinking underscore if you focus on it. Though am unsure whether it is clear enough that you are supposed to enter text into them. If you’ve got any improvement ideas let me know. Loading indicator When something is loading I can add the loading class which displays the typical tui animation spinner before it. The one made up of brail dots ⠧ Central Icon I felt that the run button could be unnoticed so I added an icon to the middle of screen. It also shows the loading to make it more clear that the script is actually being run. Error pop up Instead of just having some red text in the console I add a real error pop up with a blinking dashed red outline. Performance increase I spent some time thinking about doing a bunch of stuff to make my wasm multi threaded and async, which included using nightly features, a service worker shim to change http headers, etc. Because I felt that the script running was way too slow and I wanted better performance and the ability to easily cancel the running wasm. Currently the wasm is blocking and goes over each pixel one by one. But before I implemented that I did some other performance changes, like only creating 1 shared rhai engine for all pixels. Before every pixel created its own rhai engine. This change was way more substantial than I thought, as it took the per pixel time from 0.5ms down to 0.04ms . This means 255*255 pixel or 65k pixel don’t take 12s but 2s. This is such a change that I think implementing all the async and multi threading would just be a waste of time, so I’ll stash that idea for now. console I also styled the console part and added all the ui logic. I want to give the user the option to use a print function in there script for debugging purposes. Then in the console it’ll show on which pixel the debug comes from and what it says. But as the image can get pretty big and the user might print once or more per pixel, just adding some Nodes to a console div would probably blow up everything. So at first I experimented with a canvas. The canvas overlays on the console div and then behind it is a big spacer which allows for scrolling, some code would then change what the canvas shows based on where the back is scrolled to. After I had gotten it to display some logs nicely, I realized that this way doesn’t allow the user to highlight and copy the logs, which is probably something someone might want to do. So I switched the canvas out with a normal div. Instead of drawing the logs to a canvas the logs do get added as nodes, but only the visible ones and the scrolling changes which are shown. This way the user can interact with them like normal text and the DOM doesn’t have to render 1k+ nodes. This seems to work really good, the only problem was getting the scrolling to work while the log nodes occupy the same space, but with some css trickery and EventListeners I can pass any scrolling done on the logs through to the background scrolling element. Refactoring I am still working on the wasm part of allowing the user to use print(). While implementing that i had to change what it outputs and refactored the rust project structure. When I then got to the part where the browsers main ui thread interacts with the web worker which runs the wasm, I realized how badly that part was written, with so many loose interfaces and strings. So I am currently still refactoring that and trying not to loose my mind. Still not a big fan of and
Layouting, resizing and a console Console I finally got everything working together. This means that you can now use print() and debug() in the script and it’ll output to the console ! It’ll tell you what was printed and at what pixel, e.g. [x:2|y:4] => here! . I’ve attached a diagram of why some parts of this project are really painful to work with. Its largely due to the amount of wrappers needed, because of the memory and thread separation of the web worker/wasm. Reworking this was really not fun and just doing it better the 1. time would’ve saved me a lot of time. The console won’t be in use all the time and not everyone will use it so I also wanted to limit the space it takes. I firstly reduced the standard space it gets down to 5% of the view height and then made it drag resizable. You can press and hold on the drag handle of the console and stretch it out over the output and editor. This way you can decide how much screen space you want to sacrifice. I used the pointer API so in theory this should work with all kinds of stuff from fingers to pens. In the end the console was way more css intensive then I thought as it needs some and css tomfoolery in order to scroll without blowing up the DOM. Performance increases I learned about Abstract Syntax Trees and made the wasm precompile the script to an AST before rerunning it a bunch of times with different scopes. This was another substantial performance increase decreasing the per pixel time form 0.04ms down to 0.004ms. Wow was the wasm unoptimized Error highlighting I finally added error highlighting. The line with an error now gets highlighted in the editor. During adding this feature with the Monaco editor I also accidently bumped my bundled js to 500kb . This was due to it importing a bunch of syntax stuff for different languages. Thankfully changing one Monaco.something to monaco.something resolved this QoL errors get cleared when rerunning script add resolution to script scope UI I noticed that you couldn’t resize the app to something smaller. You could however make it smaller and then reload. Meaning that it was able to come up with a good layout but something was greedy and holding on to its space. Width wise this was easy to fix by adding a dynamic sizing flag to the editor and some min-width: 0 s to some elements, but height wise i couldn’t get it to work. Turns out even with dynamic sizing the editor is still not the biggest fan of being resized so I had to add a ResizeObserver and call the editors layout method to make it reconsider its size Next up I will now implement a better UI for smaller screens, but first I need to declutter my css and html to make it more maintainable . Other additions/fixes
Coming to an end I am kind off getting frustrated with this project, I cant handle this stack anymore , I yearn for hardware again. I am aiming to finish this in the next 2 weeks! Well any ways here is what I did: Output stretching Until now the grid output was always a square, so if you had a non-square resolution it would be stretched to one. Now it actually gets the shape of the resolution and it uses the most of the usable space it can. I also added a option to return to the original method. Blur Initially I had some problems with drawing pixels to the canvas. I drew rectangles to the canvas but some image smoothing settings were adding anti-aliasing and similar stuff making the pixels look weird. I fixed that by just creating raw image data, but it was a cool effect for some situations, like generating a gradient. So I added a option to toggle this image smoothing of the browser. Sadly as it is browser based I’d probably has very different results on different browsers. Small UI I did a bunch of css fixes to make the ui more resizable and trigger a bunch of stuff on resizing. Then I added a tabbar and reduced the layout. In the normal layout the editor and output are side by side and when the screen is too small only one is shown and you can switch with the tabbar. It also moves the top bar actions into a setting pop up. Tip box Some features might not be self explanatory, so I added this small tip tool when hovering above stuff for some time. To not be stuck on this for too much longer I scrapped the idea of the landing page and I will instead add a tutorial.
Help, Docs and a Tutorial Help menu and Docs I added a Help modal under the “?” button. It has some actions like opening the tutorial again and features some docs. There are docs on the specific output explaining what the output expects and listing all available variables in scope of the output. So for Grid it explains how the script will be evaluated over all pixels in a grid and the script returns an RGB value setting that pixels color. Then it lists all the variables, like ‘x’ the x-coordinate of the pixel. Tutorial I also added a short tutorial which explains how to get a running script under Grid. I hope it explains all the concepts step by step and that it is understandable. Originally it was more of a tour of the UI and explained all the buttons, but I think that most of that is pretty self explanatory and the new tutorial is better at explaining how to actually use this. Next up I will add 1 more output before shipping!
Final touches Spelling mistakes I fixed a lot of spelling mistakes in the tutorial and help box sections. I think I should keep writing tutorials and docs to times before 1 am. Plot I also added a new output the plot ! The script gets a x value and returns the matching y value. Those pairs then get displayed on a plot using graph.js. During this addition I also reworked the core rust 🦀 engine a bit so now stuff that should be output independent, like creating a Rhai engine or compiling a Rhai script to an AST, is in its own file. Then I added the rust logic and it just returns an array of X and Y value pairs when done. Adding the UI and lifecycle stuff for the plot was rather easy because I kept everything pretty modular with easy expansion in mind. However styling the plot was rather complicated and I now have a enormous JavaScript Object detailing all the small bits and pieces to make the plot look alright! Repo PixelMatrix was always a temporary name as it is only really fitting for the grid output, so I renamed this project to ScriptCanvas. I think this is more fitting because it does use scripts and it also draws those on canvas elements! I also added a README to the repo. As testing on chrome and firefox also looked good I think I am ready to ship !
Ships:
I made a web app where you can make simple scripts to create interesting outputs. Its really fun to see what patterns and stuff you can create from very simple logic! The web app is statically hosted on github pages and does not need any server. It is build on a very performant stack. The main UI thread dispatches a request to a web worker which on a separate thread executes optimized rust WASM. That WASM compiles the script to an AST and then evaluates it a bunch of times across all the needed scopes. Finally the web worker can message the main UI thread back. This separation is needed to not freeze the UI during script evaluation, but because there is a memory separation it was very annoying to work with. I used a vanilla-ish stack with no web framework, but with TS. I learned a lot about CSS and TS/JS. Using a framework would have probably sped up development but I wanted to first really understand what a framework would need to do under the hood before moving to that. All in all I am very proud of this project! Hopefully others find the concept as interesting as I do!...
|
1793001138.7825122
|
1793087538.7825122
|
|
51729
|
Nixos Configs by @java | Stardance
|
java
|
1
|
72.98
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T04:16:42Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Well, First Ship Java learns how to use nix. The desktop is hyprland The Shell is Noctalia The terminal is kitty I may make things latter on more modular however since nixos is declarative you should just be able to clone the repo and things just work. anyway hope you guys like it.", "repo": "https://github.com/Java-Coffee1/Nix-Config", "demo": "https://github.com/Java-Coffee1/Nix-Config/releases/tag/fw-laptop-btw"}]...
|
[{"post_id": 80901, "ts": "202 [{"post_id": 80901, "ts": "2026-10-19T06:12:06Z", "hours": 8.4625, "text": "I had a bug in my system where old backups were not being remove anyway I have 50gib of jellyfin backups and my homelab was not working anyway its fix now yay"}, {"post_id": 79192, "ts": "2026-10-12T23:35:34Z", "hours": 4.4242, "text": "I added granfana. more things been added to the homelab. we got granfan and treafik montioring"}, {"post_id": 77763, "ts": "2026-10-08T06:13:21Z", "hours": 6.6419, "text": "yay I addded email things as well as polish my configs more. tada i hate stmp but i got it working now"}, {"post_id": 76042, "ts": "2026-10-02T04:55:49Z", "hours": 2.2736, "text": "wow copyparty now I needed to migrate copyparty to be come nix so I did that yay anyway I did it."}, {"post_id": 75951, "ts": "2026-10-01T18:20:39Z", "hours": 7.5422, "text": "added jellyfin. jellyfin sucks. its like I can’t do anything declative and I want to tie it into authentik so I need to use ldap so I set that and its just like no u can’t set it declatvie. so I have to do it via the ui. anyway here a pic of what I have done now"}, {"post_id": 72987, "ts": "2026-09-24T05:25:49Z", "hours": 3.2997, "text": "yay I added some backups scirpts I also mount my truenas to my machine. this is for my homelab but it is still part of my nix configs"}, {"post_id": 72799, "ts": "2026-09-23T19:14:12Z", "hours": 3.9972, "text": "hmmm I added authtink and a postgress database"}, {"post_id": 72559, "ts": "2026-09-23T06:58:14Z", "hours": 4.4831, "text": "Well I added more things such as a postgress and treafik as well anyway here I go and try building things. yay"}, {"post_id": 72101, "ts": "2026-09-22T05:23:19Z", "hours": 15.8539, "text": "well I re arrange things and now I am turning my nixconfigs to mannag my homlab as well"}, {"post_id": 61286, "ts": "2026-09-04T04:12:14Z", "hours": 1.4633, "text": "Well here I am…. nix is hard but I love how delcative it is. most of the time I spend is reading the wiki and learning how to config things which is fun. I rearrage files and I also was able to config the look and feel of things for me."}, {"post_id": 60052, "ts": "2026-09-02T05:03:31Z", "hours": 5.0036, "text": "So… I am using noclalia right now and hyprland I am not sure if I want to switch to nir as I don’t like the creator of hyprland hower it looks nice I think and this is declarative which is nice."}, {"post_id": 56528, "ts": "2026-08-28T10:09:27Z", "hours": 9.7361, "text": "javi learns how to rice there linux desktop… anyway here I am learning how to rice my linux desktop. this is what I have gotten so far I have been just playing around with the waybar learning how the code works as well as nix. nothing is fancy however it’s been 8 hours so I think Im learning things idk I am using less ai so I think that progress"}]...
|
Title: Nixos Configs by @java | Stardance
Devlogs Title: Nixos Configs by @java | Stardance
Devlogs:
javi learns how to rice there linux desktop… anyway here I am learning how to rice my linux desktop. this is what I have gotten so far I have been just playing around with the waybar learning how the code works as well as nix. nothing is fancy however it’s been 8 hours so I think Im learning things idk I am using less ai so I think that progress
So… I am using noclalia right now and hyprland I am not sure if I want to switch to nir as I don’t like the creator of hyprland hower it looks nice I think and this is declarative which is nice.
Well here I am…. nix is hard but I love how delcative it is. most of the time I spend is reading the wiki and learning how to config things which is fun. I rearrage files and I also was able to config the look and feel of things for me.
well I re arrange things and now I am turning my nixconfigs to mannag my homlab as well
Well I added more things such as a postgress and treafik as well anyway here I go and try building things. yay
hmmm I added authtink and a postgress database
yay I added some backups scirpts I also mount my truenas to my machine. this is for my homelab but it is still part of my nix configs
added jellyfin. jellyfin sucks. its like I can’t do anything declative and I want to tie it into authentik so I need to use ldap so I set that and its just like no u can’t set it declatvie. so I have to do it via the ui. anyway here a pic of what I have done now
wow copyparty now I needed to migrate copyparty to be come nix so I did that yay anyway I did it.
yay I addded email things as well as polish my configs more. tada i hate stmp but i got it working now
I added granfana. more things been added to the homelab. we got granfan and treafik montioring
I had a bug in my system where old backups were not being remove anyway I have 50gib of jellyfin backups and my homelab was not working anyway its fix now yay
Ships:
Well, First Ship Java learns how to use nix. The desktop is hyprland The Shell is Noctalia The terminal is kitty I may make things latter on more modular however since nixos is declarative you should just be able to clone the repo and things just work. anyway hope you guys like it....
|
1793065741.4477143
|
1793152141.4477143
|
|
50516
|
Homesick by @UltraViolet | Stardance
|
UltraViolet
|
0
|
72.67
|
0
|
[]
|
[{"post_id": 80488, "ts": "202 [{"post_id": 80488, "ts": "2026-10-17T20:27:41Z", "hours": 5.2194, "text": "Devlog 16 We are so back y’all. Here’s what I’ve done since the last devlog: - added some easter eggs (in the memory of the testing sprites) - added timers to planets that are too hot or toxic (it just kills you if you stay there for too long) in the form of a vignette (you will basically see the edges getting darker and darker) - added poisonous plants - on one planet there are fruits that you can eat, one is safe and does… well, nothing, and the other one is poisonous… will not tell you which one is which I confess, I DID use AI for the vignette, because I am still learning and I was not able to get it done by myself, nor did I find any good videos on youtube, which is where I often get my code from. I feel terrible about it, pls don’t kill me. That’s all y’all, I didn’t get to do much this week, school has been HELL . See ya :)"}, {"post_id": 77642, "ts": "2026-10-07T18:38:10Z", "hours": 7.1339, "text": "Devlog 15 Another milestone reached, I made the nerd side of this game. Basically, there are a few (20) planets that are interesting in some way, and so I made them kinda like achievements, so when you visit a planet you can find out more about it. Now, this would be difficult with gas planets, so all you need to do is just click on a planet and it will automatically show in the list. If you open the list and click on the planet you visited, you can find out some interesting (or not so interesting, idk) info about it. Just a little detail to the game, but I wanted the planets to have a little meaning. This was like 7-10 hours of research so I am really glad I finally finished it. NO AI WAS USED IN THE PROCESS OF THE RESEARCH I tried it once, but it was no use ALL INFO IS PRIMARILY FROM WIKIPEDIA AND NASA WEBSITES. I will go work on some details, but we are nearing the end!!!"}, {"post_id": 73685, "ts": "2026-09-25T18:00:47Z", "hours": 3.6117, "text": "Devlog 14 This will be a short one. So, what I did since last devlog: -added loading screens -added music and sound effects -finally made the astronaut I don’t know if I forgot anything, I am honestly losing track of the devlogs help. Now here comes the problem, I don’t have enough time to make the little notes about the planets, so I’ve decided to just polish the game as much as I can and ship it the way it is. I will work on some details, play-testing and add a few more easter eggs. I really imagined the game to be a lot more interesting, but turns out learning game development from scratch isn’t a walk in the park. But I am happy with the game and most importantly, WE ARE GETTING THE CERTIFICATE!!! I am not leaving this year’s Stardance without the certificate. Anyway, I will go work on some stuff and I will see y’all at the next (and probably last) devlog"}, {"post_id": 71910, "ts": "2026-09-21T19:10:27Z", "hours": 3.1789, "text": "Devlog 13 It’s time to celebrateeeeeee!!! The game is officially playable. I added the death scenes along with the victory one, and created a main menu (with one pathetic start button). I also added a restart and quit button on each death/win scene, so now you can go in loops or quit after your first death. Unless you are lucky enough to find Earth first, of course. Technically speaking, save for a few details the game is ready for shipping if I don’t have enough time to finish it with all of its original features, and I will ship it in the way it is now if I run out of time. What I will try to work on first though: - gravity warning signs - there are a few planets with so low gravity, that jumping would shoot you into open space, and I made that a way to die (this probably isn’t scientifically correct, don’t quote me on this), but right now you have no way to tell which planets are those, and I won’t be so cruel to at least not give you a hint - small info about a couple of planets - this game was always supposed to be semi-educational, with unnecessary notes to interesting planets in the game. The notes won’t be relevant to finding Earth, just a little info for those who are interested. I didn’t mention it before, because I didn’t know if I would have enough time for that, but in the end I decided that it was a pretty important part of the game and scratched some other things instead. Time is running out so wish me luck y’all. (P.S.: I finally designed the rocket! It’s definitely not better than the previous one, but it’s mine)"}, {"post_id": 70770, "ts": "2026-09-19T18:48:15Z", "hours": 7.2575, "text": "Devlog 12 Okay so we reached an important point in the game development, because now we can not only LAND ON THE PLANETS, but we can also LEAVE THE PLANETS!!! This definitely didn’t take an embarrassing amount of time (tracker speaks for itself) and we did get stuck a few times, but the aftermath is that IT WORKS! What you can do right now: -Travel around the space -Die in at least 5 ways -inspect a planet (meaning you can get a better look at it and see its name) -choose whether you want to land on the planet or not - actually land on the planet -leave the planet (unless it’s a gas giant or you die in a different way) -repeat What’s next : Next I am gonna make a menu screen, because right now you just jump straight into the map. Then I need to make Earth the endgame, because right now it’s the only thing that’s not interactable. After that I make some cool death scenes. What’s coming in the far future : I want to add an oxygen level and make some planets that will be able to refill it. I also want to add at least 3 more ways to die. I also need a starting planet that will disappear after you leave it. I wanted to add a starting animation, but I don’t think I have enough time for that. I also wanted to add some minigame(s) to make it more fun, but again, time is becoming problematic. And I REALLY wanted to add some animals on a couple of planets, but this is at the very bottom of the list and I need to concentrate on the essentials. Wish me luck! (current mental breakdown count: too many to keep track of)"}, {"post_id": 67638, "ts": "2026-09-13T19:42:09Z", "hours": 5.8514, "text": "Devlog 11 Y’ALL I’M FREE! Well, not really yet, BUT I finally finished ALL OF THE SCENES YAY!!! I have officially made over 30 unique exoplanet landscapes, one for each exoplanet (I am just now realizing there are planets in the Solar System as well… NEVERMIND THAT). They aren’t perfect, they aren’t polished, they aren’t gorgeous and mindblowingly stunning, but hey, at least they aren’t AI right? On the first picture is my version of a possible landscape on Kepler-186f , which has to be one of my favorite exoplanets, if not my favorite. Because of its position and the host star dimness, it is possible that if life existed on the planet, plants would be colored in the shades of red, black and purple and I find that INSANELY cool. NEXT UP : I am gonna make all of the planets LANDABLE, meaning that I will connect the landscapes to the planets on the map. It sounds so easy and quick, but I feel like it will take me the whole week. I really hope not. After that, the game will finally be playable, and we can move on to the details that will make it more interesting. See y’all at my next mental breakdown, bye :)"}, {"post_id": 64969, "ts": "2026-09-09T18:29:21Z", "hours": 6.4308, "text": "Devlog 10 Y’all, we are making progress! Very slow one though. I’ve been working on the scenes and, we are moving, and I have around 10 more to make. We are gonna ignore the fact that they are the worst ones. Among others, I made the Mars scene, and hear me out, okay, I just HAD TO add the cat ears to the sun now come on ( first pic ) like it was seriously asking for it. I also wanted to add some funny text next to it, but I am a left-handed person using the mouse with my right hand (don’t ask, idk) and it ended up looking terrible (for the record, my normal handwriting isn’t any better, but yea). NEXT, I am going to finish the scenes (I know I said something similar last time, but it’s a slow process and I hate it) and then connect them to their planets or whatever aand idk. Here are some pictures, pay them some respect, or don’t."}, {"post_id": 59074, "ts": "2026-08-31T17:59:42Z", "hours": 3.9275, "text": "Devlog 9 Y’all, I’m backk! I kinda slowed down on the project, I’m losing motivation slightly, because drawing all these scenes is taking AGES, and when I compare the amazing projects y’all are making to my little silly rocket game, I just wanna quit. But I am not giving up (yet). So far, I’ve made a couple of the scenes, and finished all the scenes for the Lich pulsar planets (let’s act like there’s not only 3 of them) and a few gas planets. There are still a lot of them to do, but there is some progress. I will keep y’all updated on how it’s (not) going aaand I hope you have a nice day! (pic: a heavily judgmental kiwi bird on Alpha Centauri A b)"}, {"post_id": 54705, "ts": "2026-08-25T19:34:48Z", "hours": 1.9561, "text": "Devlog 8 I started drawing the scenes for the planets and let me tell you, not a fun process… This one took over an hour and a half, and considering the fact that I have like 5 million more to make, my project will be 5% coding, 10% building and 85% Lapse… Anyway, I am trying to be as scientifically accurate as possible, but considering how little information we have about most exoplanets I will have to use my imagination quite a bit. Just like the rocket, the astronaut is just there for testing, not the final version because I am keeping the worst parts for last. ( pic: background for Poltergeist, an exoplanet orbiting the Lich pulsar )"}, {"post_id": 53904, "ts": "2026-08-24T16:42:57Z", "hours": 4.1136, "text": "Devlog 7 I finally finished the map, so now there are all of the planets, and stars, and other things waiting to kill you. I also added a bunch of asteroids that are just there… but you probably don’t want to crash into them. I still haven’t fixed the camera transition (I honestly forgot), but first I will concentrate on drawing the scenes for the planets you will be able to land on. So far so good, but it will go downhill pretty soon, I can feel it."}, {"post_id": 51805, "ts": "2026-08-21T17:23:38Z", "hours": 2.27, "text": "Devlog 6 I finished designing the exoplanets (yipee) and that’s all for now. All of the planets are inspired by whatever Google fed me, so it’s not completely made up. My head hurts, but I will be back after the weekend. Let me know what you think of the planets :) Have a nice weekend!!"}, {"post_id": 51653, "ts": "2026-08-21T13:27:20Z", "hours": 2.5964, "text": "Devlog 5 I made the Alpha Centauri system, though you can’t land on the planets yet, just get yourself killed in the stars. I’m designing all of the exoplanets, because Google images aren’t any good. I also drew the star types (they aren’t perfect, but oh well) for the same reason. I still have 9 star systems and around 20 planets to make, but I feel like the map will still be quite empty, so if you have suggestions on cool exoplanets that I could add, let me know :)"}, {"post_id": 51210, "ts": "2026-08-20T18:51:57Z", "hours": 6.1006, "text": "Devlog 4 Today I figured out how to make landing possible (which definitely didn’t take a ridiculous amount of time), and I am quite satisfied with how it works, but it’s still missing transitions between cameras, so I will work on that later. I’m not happy with the planet font, but it’ll have to do for now. I made the gas planets landable, but there are still so many of them to do, and it’s not a fun process… send help."}, {"post_id": 50277, "ts": "2026-08-19T13:04:03Z", "hours": 2.3567, "text": "Devlog 3 I added stars to the map background, because it was hard to tell if you were moving and which direction you were going. I also added orbits to the planets (they are there, I promise), because without them, it was almost impossible to find any planets. Also, I fixed the black hole, and next I want to figure out how to make the planets landable. (I’m new to Godot and I’m learning as I go, so bear with me) Wish me luck!"}, {"post_id": 49759, "ts": "2026-08-18T17:59:41Z", "hours": 1.825, "text": "Devlog 2 I finished making the backgrounds for Jupiter, Saturn, Uranus and Neptune. I also added a black hole that pulls you towards it, but I am not quite happy with how it works so I will be working on that. Also, I am adding easter eggs even before the actual game is working… Anyway, I’m a fan of birds so I am just adding random birds in random spots. Hope you like them! (pic: duck on Neptune)"}, {"post_id": 49639, "ts": "2026-08-18T15:05:18Z", "hours": 8.8375, "text": "Devlog 1 I am making a space game in Godot, where you play as an astronaut who woke up stranded on an alien planet and has to find his way back to Earth. So far I’ve made the rocket, the solar system, and the map where you travel around and look for planets. I’ve also started drawing backgrounds for planets that you will be able to land on. I plan on drawing the rocket myself and possibly even the planets if I have enough time for it, but for now it is just so I am able to test if the game works (which it doesn’t most of the time) (Also please ignore the 8 hours 💀, I had to restart after about 5 hours because I didn’t like it)"}]...
|
Title: Homesick by @UltraViolet | Stardance
Devlo Title: Homesick by @UltraViolet | Stardance
Devlogs:
Devlog 1 I am making a space game in Godot, where you play as an astronaut who woke up stranded on an alien planet and has to find his way back to Earth. So far I’ve made the rocket, the solar system, and the map where you travel around and look for planets. I’ve also started drawing backgrounds for planets that you will be able to land on. I plan on drawing the rocket myself and possibly even the planets if I have enough time for it, but for now it is just so I am able to test if the game works (which it doesn’t most of the time) (Also please ignore the 8 hours 💀, I had to restart after about 5 hours because I didn’t like it)
Devlog 2 I finished making the backgrounds for Jupiter, Saturn, Uranus and Neptune. I also added a black hole that pulls you towards it, but I am not quite happy with how it works so I will be working on that. Also, I am adding easter eggs even before the actual game is working… Anyway, I’m a fan of birds so I am just adding random birds in random spots. Hope you like them! (pic: duck on Neptune)
Devlog 3 I added stars to the map background, because it was hard to tell if you were moving and which direction you were going. I also added orbits to the planets (they are there, I promise), because without them, it was almost impossible to find any planets. Also, I fixed the black hole, and next I want to figure out how to make the planets landable. (I’m new to Godot and I’m learning as I go, so bear with me) Wish me luck!
Devlog 4 Today I figured out how to make landing possible (which definitely didn’t take a ridiculous amount of time), and I am quite satisfied with how it works, but it’s still missing transitions between cameras, so I will work on that later. I’m not happy with the planet font, but it’ll have to do for now. I made the gas planets landable, but there are still so many of them to do, and it’s not a fun process… send help.
Devlog 5 I made the Alpha Centauri system, though you can’t land on the planets yet, just get yourself killed in the stars. I’m designing all of the exoplanets, because Google images aren’t any good. I also drew the star types (they aren’t perfect, but oh well) for the same reason. I still have 9 star systems and around 20 planets to make, but I feel like the map will still be quite empty, so if you have suggestions on cool exoplanets that I could add, let me know :)
Devlog 6 I finished designing the exoplanets (yipee) and that’s all for now. All of the planets are inspired by whatever Google fed me, so it’s not completely made up. My head hurts, but I will be back after the weekend. Let me know what you think of the planets :) Have a nice weekend!!
Devlog 7 I finally finished the map, so now there are all of the planets, and stars, and other things waiting to kill you. I also added a bunch of asteroids that are just there… but you probably don’t want to crash into them. I still haven’t fixed the camera transition (I honestly forgot), but first I will concentrate on drawing the scenes for the planets you will be able to land on. So far so good, but it will go downhill pretty soon, I can feel it.
Devlog 8 I started drawing the scenes for the planets and let me tell you, not a fun process… This one took over an hour and a half, and considering the fact that I have like 5 million more to make, my project will be 5% coding, 10% building and 85% Lapse… Anyway, I am trying to be as scientifically accurate as possible, but considering how little information we have about most exoplanets I will have to use my imagination quite a bit. Just like the rocket, the astronaut is just there for testing, not the final version because I am keeping the worst parts for last. ( pic: background for Poltergeist, an exoplanet orbiting the Lich pulsar )
Devlog 9 Y’all, I’m backk! I kinda slowed down on the project, I’m losing motivation slightly, because drawing all these scenes is taking AGES, and when I compare the amazing projects y’all are making to my little silly rocket game, I just wanna quit. But I am not giving up (yet). So far, I’ve made a couple of the scenes, and finished all the scenes for the Lich pulsar planets (let’s act like there’s not only 3 of them) and a few gas planets. There are still a lot of them to do, but there is some progress. I will keep y’all updated on how it’s (not) going aaand I hope you have a nice day! (pic: a heavily judgmental kiwi bird on Alpha Centauri A b)
Devlog 10 Y’all, we are making progress! Very slow one though. I’ve been working on the scenes and, we are moving, and I have around 10 more to make. We are gonna ignore the fact that they are the worst ones. Among others, I made the Mars scene, and hear me out, okay, I just HAD TO add the cat ears to the sun now come on ( first pic ) like it was seriously asking for it. I also wanted to add some funny text next to it, but I am a left-handed person using the mouse with my right hand (don’t ask, idk) and it ended up looking terrible (for the record, my normal handwriting isn’t any better, but yea). NEXT, I am going to finish the scenes (I know I said something similar last time, but it’s a slow process and I hate it) and then connect them to their planets or whatever aand idk. Here are some pictures, pay them some respect, or don’t.
Devlog 11 Y’ALL I’M FREE! Well, not really yet, BUT I finally finished ALL OF THE SCENES YAY!!! I have officially made over 30 unique exoplanet landscapes, one for each exoplanet (I am just now realizing there are planets in the Solar System as well… NEVERMIND THAT). They aren’t perfect, they aren’t polished, they aren’t gorgeous and mindblowingly stunning, but hey, at least they aren’t AI right? On the first picture is my version of a possible landscape on Kepler-186f , which has to be one of my favorite exoplanets, if not my favorite. Because of its position and the host star dimness, it is possible that if life existed on the planet, plants would be colored in the shades of red, black and purple and I find that INSANELY cool. NEXT UP : I am gonna make all of the planets LANDABLE, meaning that I will connect the landscapes to the planets on the map. It sounds so easy and quick, but I feel like it will take me the whole week. I really hope not. After that, the game will finally be playable, and we can move on to the details that will make it more interesting. See y’all at my next mental breakdown, bye :)
Devlog 12 Okay so we reached an important point in the game development, because now we can not only LAND ON THE PLANETS, but we can also LEAVE THE PLANETS!!! This definitely didn’t take an embarrassing amount of time (tracker speaks for itself) and we did get stuck a few times, but the aftermath is that IT WORKS! What you can do right now: -Travel around the space -Die in at least 5 ways -inspect a planet (meaning you can get a better look at it and see its name) -choose whether you want to land on the planet or not - actually land on the planet -leave the planet (unless it’s a gas giant or you die in a different way) -repeat What’s next : Next I am gonna make a menu screen, because right now you just jump straight into the map. Then I need to make Earth the endgame, because right now it’s the only thing that’s not interactable. After that I make some cool death scenes. What’s coming in the far future : I want to add an oxygen level and make some planets that will be able to refill it. I also want to add at least 3 more ways to die. I also need a starting planet that will disappear after you leave it. I wanted to add a starting animation, but I don’t think I have enough time for that. I also wanted to add some minigame(s) to make it more fun, but again, time is becoming problematic. And I REALLY wanted to add some animals on a couple of planets, but this is at the very bottom of the list and I need to concentrate on the essentials. Wish me luck! (current mental breakdown count: too many to keep track of)
Devlog 13 It’s time to celebrateeeeeee!!! The game is officially playable. I added the death scenes along with the victory one, and created a main menu (with one pathetic start button). I also added a restart and quit button on each death/win scene, so now you can go in loops or quit after your first death. Unless you are lucky enough to find Earth first, of course. Technically speaking, save for a few details the game is ready for shipping if I don’t have enough time to finish it with all of its original features, and I will ship it in the way it is now if I run out of time. What I will try to work on first though: - gravity warning signs - there are a few planets with so low gravity, that jumping would shoot you into open space, and I made that a way to die (this probably isn’t scientifically correct, don’t quote me on this), but right now you have no way to tell which planets are those, and I won’t be so cruel to at least not give you a hint - small info about a couple of planets - this game was always supposed to be semi-educational, with unnecessary notes to interesting planets in the game. The notes won’t be relevant to finding Earth, just a little info for those who are interested. I didn’t mention it before, because I didn’t know if I would have enough time for that, but in the end I decided that it was a pretty important part of the game and scratched some other things instead. Time is running out so wish me luck y’all. (P.S.: I finally designed the rocket! It’s definitely not better than the previous one, but it’s mine)
Devlog 14 This will be a short one. So, what I did since last devlog: -added loading screens -added music and sound effects -finally made the astronaut I don’t know if I forgot anything, I am honestly losing track of the devlogs help. Now here comes the problem, I don’t have enough time to make the little notes about the planets, so I’ve decided to just polish the game as much as I can and ship it the way it is. I will work on some details, play-testing and add a few more easter eggs. I really imagined the game to be a lot more interesting, but turns out learning game development from scratch isn’t a walk in the park. But I am happy with the game and most importantly, WE ARE GETTING THE CERTIFICATE!!! I am not leaving this year’s Stardance without the certificate. Anyway, I will go work on some stuff and I will see y’all at the next (and probably last) devlog
Devlog 15 Another milestone reached, I made the nerd side of this game. Basically, there are a few (20) planets that are interesting in some way, and so I made them kinda like achievements, so when you visit a planet you can find out more about it. Now, this would be difficult with gas planets, so all you need to do is just click on a planet and it will automatically show in the list. If you open the list and click on the planet you visited, you can find out some interesting (or not so interesting, idk) info about it. Just a little detail to the game, but I wanted the planets to have a little meaning. This was like 7-10 hours of research so I am really glad I finally finished it. NO AI WAS USED IN THE PROCESS OF THE RESEARCH I tried it once, but it was no use ALL INFO IS PRIMARILY FROM WIKIPEDIA AND NASA WEBSITES. I will go work on some details, but we are nearing the end!!!
Devlog 16 We are so back y’all. Here’s what I’ve done since the last devlog: - added some easter eggs (in the memory of the testing sprites) - added timers to planets that are too hot or toxic (it just kills you if you stay there for too long) in the form of a vignette (you will basically see the edges getting darker and darker) - added poisonous plants - on one planet there are fruits that you can eat, one is safe and does… well, nothing, and the other one is poisonous… will not tell you which one is which I confess, I DID use AI for the vignette, because I am still learning and I was not able to get it done by myself, nor did I find any good videos on youtube, which is where I often get my code from. I feel terrible about it, pls don’t kill me. That’s all y’all, I didn’t get to do much this week, school has been HELL . See ya :)...
|
1792633661.5197165
|
1793238461.5197165
|
|
12938
|
PetTrack by @szabence | Stardance
|
szabence
|
1
|
72.63
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T14:24:17Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!", "repo": "https://github.com/szbnce/PetTrack", "demo": "https://pettrackdemo.szabence.com"}]...
|
[{"post_id": 68851, "ts": "202 [{"post_id": 68851, "ts": "2026-09-15T21:18:20Z", "hours": 1.6314, "text": "PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol"}, {"post_id": 62924, "ts": "2026-09-06T13:52:19Z", "hours": 5.8556, "text": "PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!"}, {"post_id": 53494, "ts": "2026-08-24T02:11:25Z", "hours": 5.7447, "text": "PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch \"allFlutter\" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project."}, {"post_id": 40217, "ts": "2026-08-03T16:58:52Z", "hours": 4.8564, "text": "Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…"}, {"post_id": 30037, "ts": "2026-07-17T09:22:29Z", "hours": 6.6725, "text": "The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!"}, {"post_id": 27994, "ts": "2026-07-13T23:20:55Z", "hours": 4.0786, "text": "🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!"}, {"post_id": 27081, "ts": "2026-07-12T10:04:49Z", "hours": 5.1319, "text": "now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…"}, {"post_id": 25564, "ts": "2026-07-09T21:53:54Z", "hours": 4.0792, "text": "🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!"}, {"post_id": 25297, "ts": "2026-07-09T14:26:21Z", "hours": 6.7308, "text": "More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!"}, {"post_id": 24346, "ts": "2026-07-07T21:10:21Z", "hours": 4.4408, "text": "Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!"}, {"post_id": 22216, "ts": "2026-07-04T16:05:40Z", "hours": 3.8428, "text": "Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!"}, {"post_id": 21821, "ts": "2026-07-03T23:05:28Z", "hours": 3.5933, "text": "Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!"}, {"post_id": 12162, "ts": "2026-06-19T21:23:36Z", "hours": 5.9286, "text": "Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!"}, {"post_id": 10248, "ts": "2026-06-16T21:39:22Z", "hours": 2.5683, "text": "Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D"}, {"post_id": 8371, "ts": "2026-06-13T22:29:10Z", "hours": 2.42, "text": "Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!"}, {"post_id": 7131, "ts": "2026-06-11T22:16:46Z", "hours": 1.8947, "text": "We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!"}, {"post_id": 5844, "ts": "2026-06-09T19:49:41Z", "hours": 3.1944, "text": "Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor."}]...
|
Title: PetTrack by @szabence | Stardance
Devlogs: Title: PetTrack by @szabence | Stardance
Devlogs:
Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor.
We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!
Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!
Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D
Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!
Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!
Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!
Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!
More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!
🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!
now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…
🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!
The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!
Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…
PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch "allFlutter" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project.
PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!
PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol
Ships:
PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!...
|
1793004570.0216172
|
1793090970.0216172
|
|
6278
|
Card it! by @Potyi | Stardance
|
Potyi
|
0
|
72.17
|
0
|
[]
|
[{"post_id": 81268, "ts": "202 [{"post_id": 81268, "ts": "2026-10-20T15:25:56Z", "hours": 2.9333, "text": "a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music"}, {"post_id": 70654, "ts": "2026-09-19T15:02:50Z", "hours": 3.8, "text": "added more sounds, click sound, settings menu added, bug fixes"}, {"post_id": 65949, "ts": "2026-09-11T12:52:58Z", "hours": 8.2, "text": "added sounds to almost everything, a lot of big mug fixes, card animation added"}, {"post_id": 62363, "ts": "2026-09-05T18:08:43Z", "hours": 4.5667, "text": "added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later"}, {"post_id": 60842, "ts": "2026-09-03T13:53:49Z", "hours": 4.4667, "text": "Added animation to the non attack cards after they played, some bug fixes"}, {"post_id": 57603, "ts": "2026-08-29T20:10:40Z", "hours": 5.2, "text": "added different types of card effects, card menu, great animation to the card menu"}, {"post_id": 52624, "ts": "2026-08-22T20:54:40Z", "hours": 5.1667, "text": "added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles"}, {"post_id": 47527, "ts": "2026-08-15T14:25:42Z", "hours": 5.6, "text": "i added animations to the attacks"}, {"post_id": 33664, "ts": "2026-07-23T19:20:57Z", "hours": 8.4667, "text": "-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)"}, {"post_id": 25257, "ts": "2026-07-09T12:34:18Z", "hours": 3.6333, "text": "i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)"}, {"post_id": 16997, "ts": "2026-06-27T16:05:46Z", "hours": 3.0, "text": "some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn"}, {"post_id": 14324, "ts": "2026-06-23T12:40:15Z", "hours": 3.0333, "text": "i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked"}, {"post_id": 7673, "ts": "2026-06-12T20:24:06Z", "hours": 3.9, "text": "Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem"}, {"post_id": 4144, "ts": "2026-06-07T10:56:13Z", "hours": 3.4, "text": "a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards"}, {"post_id": 3404, "ts": "2026-06-06T09:56:42Z", "hours": 2.6333, "text": "i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea"}, {"post_id": 2733, "ts": "2026-06-05T14:20:16Z", "hours": 0.9, "text": "i added new use cards"}, {"post_id": 2314, "ts": "2026-06-04T18:55:16Z", "hours": 1.5333, "text": "i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet"}, {"post_id": 2123, "ts": "2026-06-04T13:33:41Z", "hours": 1.4, "text": "i added new character cards, that will be shown during fight"}, {"post_id": 1580, "ts": "2026-06-03T18:00:38Z", "hours": 0.3333, "text": "i made a template card that later i can easily modify to other versions"}]...
|
Title: Card it! by @Potyi | Stardance
Devlogs:
i Title: Card it! by @Potyi | Stardance
Devlogs:
i made a template card that later i can easily modify to other versions
i added new character cards, that will be shown during fight
i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet
i added new use cards
i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea
a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards
Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem
i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked
some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn
i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)
-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)
i added animations to the attacks
added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles
added different types of card effects, card menu, great animation to the card menu
Added animation to the non attack cards after they played, some bug fixes
added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later
added sounds to almost everything, a lot of big mug fixes, card animation added
added more sounds, click sound, settings menu added, bug fixes
a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music...
|
1792781291.7578242
|
1793386091.7578242
|
|
18703
|
STARPHEUS by @ANNAHAKI | Stardance
|
ANNAHAKI
|
1
|
72.1
|
175
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T07:15:25Z", "hours": 71.0, "multiplier": 5.0, "payout": 175, "blessing": "neutral", "text": "I made a robot inpired by orpheus, STARPHEUS Its a robot eith emotions, u can controll it with a logutech control, and it reacts to the enviroment.", "repo": "https://github.com/annaastrs-svg/Orpheus-Bot-", "demo": ""}]...
|
[{"post_id": 17562, "ts": "202 [{"post_id": 17562, "ts": "2026-06-28T12:09:26Z", "hours": 1.1003, "text": "Im on a trip rn but i made some changes in the code, I added some photos to the journal and did a better readme :B"}, {"post_id": 17405, "ts": "2026-06-28T05:24:27Z", "hours": 4.4239, "text": "STARPHEUS IS FINISHED! last details. i just paint all at 3 am, trying to make it look cool :B"}, {"post_id": 16714, "ts": "2026-06-27T04:43:57Z", "hours": 5.3672, "text": "I made this beautull page ! its about the project. now i just need to finish the project… is made with HTML, css and javaSS :B a bit of gemini help jsjsjsj"}, {"post_id": 16091, "ts": "2026-06-26T04:54:38Z", "hours": 10.6083, "text": "Today I finished the CAD jejeje , I realized that the problem with my motors not working was the amps, not the voltage. I spent like an hour trying to see if it was a coding issue, and it turns out I was using a 9V alkaline battery, and it doesn’t provide enough amps :C. I made some battery holders that didn’t work that well. I’m going to work on the journal, the readme, and the website today (if I survive), and I couldn’t make a battery holder that actually works… I don’t recommend wasting an hour of your life doing it."}, {"post_id": 15455, "ts": "2026-06-25T03:53:16Z", "hours": 6.4631, "text": "mental breakdance with KiCAD"}, {"post_id": 14876, "ts": "2026-06-24T04:44:22Z", "hours": 6.0456, "text": "this is how is it going hehehe, not finished yet, i added another oled for the eyes, im having some trubbles with batterys and code but its going to be functional"}, {"post_id": 14140, "ts": "2026-06-23T03:52:32Z", "hours": 4.2636, "text": "Since the code already worked, I was building the robot physically, out of cardboard because I don’t have money for 3D printing. I spent so much time on mistakes and I might have to redo it. I measured each component and its dead space (the space for the wires and stuff). I think it looks really weird, but I know it will work because I spent way too much time thinking about making it functional. So far it measures about 25 cm and is a little bigger than my computer (huge btw), but I’m happy that soon it will have life and a body."}, {"post_id": 13932, "ts": "2026-06-22T21:08:08Z", "hours": 4.345, "text": "I finally managed to get the servo motor to work along with the OLEDs, the DRV, the two motors, and the IR, FINALLY. I’ve implemented all the components except for the ESP32 camera, which I spent 5 hours of my life on or more. I’m thinking of adding a USB controller and controlling it like I’m playing Xbox. There was a problem in the code, mostly with the servo libraries. I also added 3 resistors in series and in a ladder for the ultrasonic sensor. Right now I’m still struggling with the voltage spikes from the servo motor, even though I already put in a 470uF capacitor. … btw look at the disaster"}, {"post_id": 13730, "ts": "2026-06-22T14:40:14Z", "hours": 0.9722, "text": "I’ve been having problems with the code, the I2C either starts on the OLEDs or tries to start with the servo, but they don’t work together. It’s a problem because I still need to implement the motors, the H-bridge, the ultrasonic sensor, the camera, and another buck converter. and i habe 29 hour working on this … :C"}, {"post_id": 13504, "ts": "2026-06-22T03:04:51Z", "hours": 5.9153, "text": "I’m worried about the fact that I worked 5 hours and a bit on Sunday, the camera isn’t working right now, the OLED and the IR work but when I implement the servomotor it doesn’t work, the DRV8833 doesn’t turn on, the motors don’t respond either… I cried for half an hour so the time-lapse is probably inflated I guess… umm I don’t know if I should keep trying to implement the camera or dismiss it, tomorrow I’ll see what happened because the components work but there’s something in the code, I also measured each and every one of the component voltages."}, {"post_id": 12938, "ts": "2026-06-21T05:35:12Z", "hours": 3.0867, "text": "I did a excel with all wires , a sketch , and iv been struggling so much with the esp32 cam and the estp s3 , idk if is the tx interferring with the code :C"}, {"post_id": 12305, "ts": "2026-06-20T02:32:35Z", "hours": 2.3925, "text": "this is today rat nest AND THE CAM IS DETECTING MY FACE WITH CORDENATES, it was really dificult cus my cam is not esp oficial, is a clone… so all code is functional with the esp 32 version 3.0.7 , an old version , but its functional yeyyyy , the power distribution is with the protoboard, a lil unecessary big"}, {"post_id": 11057, "ts": "2026-06-18T02:53:04Z", "hours": 1.5494, "text": "I noticed that the servos weren’t working and I bought capacitors, I blew up 2 :,c but now it works. Today was mostly soldering everything, ordering materials (resistors for the ultrasonic and 4 DC motors because the CC ones don’t work, and OLEDs because mine is broken). I also studied how I’ll use the Camesp32 because it uses the ESP32 3.0.7 library and the OLEDs use others, so I had to struggle a bit with the configurations."}, {"post_id": 10252, "ts": "2026-06-16T21:48:01Z", "hours": 1.6722, "text": "MY BABY ORPHEUS BOT NOW HAVE EMOTIONS ! i use a IR to orpheus know when u are petting him, he have 4 emotios rn (sleepy when u dont pet him 7 sec ) (idle when u pet him 1 sec to say hi) (love when u pet him more than 1 sec ) (engry when u pet him to much) the other pic is the serial monitor is in spanish lol but it says the emotions"}, {"post_id": 10141, "ts": "2026-06-16T19:01:23Z", "hours": 2.1303, "text": "TE CAMARA IS FUNCTIONAL !! now the eyes of orpheus can see, ill start with the face tracking. Arduino have a code for esp32 cam , the only thing u have to do is put ur info , change some stuff acording to you and make it part of ur project :B"}, {"post_id": 9654, "ts": "2026-06-16T02:00:12Z", "hours": 3.4231, "text": "I have to buy capacitors and resistors because Orpheus’s neck has voltage spikes… the eyes of Orpheus are already working, the infrared for detection, and soon I’ll implement the camera for computer vision"}, {"post_id": 9057, "ts": "2026-06-15T03:44:07Z", "hours": 4.1125, "text": "i have mi pitch nowww abd the cuello the neck or idk how to say it in english of my orheus bot jejejje the espcam is getting here tmrw soo it will detect ur face and like move with u , it have expresions and u wan pet it ! the buck converter is functional ! also i changed cus i was going to use an orpheus pico w from stasis but it isnt functional and i spend 1 hour or 2 trying to make it but ill use a esp32 wroom 1 this is the scratch of my orpheus bot kinda wall-e."}, {"post_id": 8863, "ts": "2026-06-14T19:11:44Z", "hours": 0.8333, "text": "i did the face of my orpheus and im making a diagram of the conections. im going to buy esp32 CAM , buck converters , a battery 7.4 V , and a driver look how cute is going to be orpheus face , ill add the HC .sro4 and the IR"}, {"post_id": 8837, "ts": "2026-06-14T18:12:46Z", "hours": 2.9553, "text": "today i decided to start building an orpheus bot jejeje, i did the bom and the stuff is getting to my house in days so i dont need the grant. I started the how im going to do it fusion, bom, cad, pcb and construction etc etc …"}]...
|
Title: STARPHEUS by @ANNAHAKI | Stardance
Devlogs Title: STARPHEUS by @ANNAHAKI | Stardance
Devlogs:
today i decided to start building an orpheus bot jejeje, i did the bom and the stuff is getting to my house in days so i dont need the grant. I started the how im going to do it fusion, bom, cad, pcb and construction etc etc …
i did the face of my orpheus and im making a diagram of the conections. im going to buy esp32 CAM , buck converters , a battery 7.4 V , and a driver look how cute is going to be orpheus face , ill add the HC .sro4 and the IR
i have mi pitch nowww abd the cuello the neck or idk how to say it in english of my orheus bot jejejje the espcam is getting here tmrw soo it will detect ur face and like move with u , it have expresions and u wan pet it ! the buck converter is functional ! also i changed cus i was going to use an orpheus pico w from stasis but it isnt functional and i spend 1 hour or 2 trying to make it but ill use a esp32 wroom 1 this is the scratch of my orpheus bot kinda wall-e.
I have to buy capacitors and resistors because Orpheus’s neck has voltage spikes… the eyes of Orpheus are already working, the infrared for detection, and soon I’ll implement the camera for computer vision
TE CAMARA IS FUNCTIONAL !! now the eyes of orpheus can see, ill start with the face tracking. Arduino have a code for esp32 cam , the only thing u have to do is put ur info , change some stuff acording to you and make it part of ur project :B
MY BABY ORPHEUS BOT NOW HAVE EMOTIONS ! i use a IR to orpheus know when u are petting him, he have 4 emotios rn (sleepy when u dont pet him 7 sec ) (idle when u pet him 1 sec to say hi) (love when u pet him more than 1 sec ) (engry when u pet him to much) the other pic is the serial monitor is in spanish lol but it says the emotions
I noticed that the servos weren’t working and I bought capacitors, I blew up 2 :,c but now it works. Today was mostly soldering everything, ordering materials (resistors for the ultrasonic and 4 DC motors because the CC ones don’t work, and OLEDs because mine is broken). I also studied how I’ll use the Camesp32 because it uses the ESP32 3.0.7 library and the OLEDs use others, so I had to struggle a bit with the configurations.
this is today rat nest AND THE CAM IS DETECTING MY FACE WITH CORDENATES, it was really dificult cus my cam is not esp oficial, is a clone… so all code is functional with the esp 32 version 3.0.7 , an old version , but its functional yeyyyy , the power distribution is with the protoboard, a lil unecessary big
I did a excel with all wires , a sketch , and iv been struggling so much with the esp32 cam and the estp s3 , idk if is the tx interferring with the code :C
I’m worried about the fact that I worked 5 hours and a bit on Sunday, the camera isn’t working right now, the OLED and the IR work but when I implement the servomotor it doesn’t work, the DRV8833 doesn’t turn on, the motors don’t respond either… I cried for half an hour so the time-lapse is probably inflated I guess… umm I don’t know if I should keep trying to implement the camera or dismiss it, tomorrow I’ll see what happened because the components work but there’s something in the code, I also measured each and every one of the component voltages.
I’ve been having problems with the code, the I2C either starts on the OLEDs or tries to start with the servo, but they don’t work together. It’s a problem because I still need to implement the motors, the H-bridge, the ultrasonic sensor, the camera, and another buck converter. and i habe 29 hour working on this … :C
I finally managed to get the servo motor to work along with the OLEDs, the DRV, the two motors, and the IR, FINALLY. I’ve implemented all the components except for the ESP32 camera, which I spent 5 hours of my life on or more. I’m thinking of adding a USB controller and controlling it like I’m playing Xbox. There was a problem in the code, mostly with the servo libraries. I also added 3 resistors in series and in a ladder for the ultrasonic sensor. Right now I’m still struggling with the voltage spikes from the servo motor, even though I already put in a 470uF capacitor. … btw look at the disaster
Since the code already worked, I was building the robot physically, out of cardboard because I don’t have money for 3D printing. I spent so much time on mistakes and I might have to redo it. I measured each component and its dead space (the space for the wires and stuff). I think it looks really weird, but I know it will work because I spent way too much time thinking about making it functional. So far it measures about 25 cm and is a little bigger than my computer (huge btw), but I’m happy that soon it will have life and a body.
this is how is it going hehehe, not finished yet, i added another oled for the eyes, im having some trubbles with batterys and code but its going to be functional
mental breakdance with KiCAD
Today I finished the CAD jejeje , I realized that the problem with my motors not working was the amps, not the voltage. I spent like an hour trying to see if it was a coding issue, and it turns out I was using a 9V alkaline battery, and it doesn’t provide enough amps :C. I made some battery holders that didn’t work that well. I’m going to work on the journal, the readme, and the website today (if I survive), and I couldn’t make a battery holder that actually works… I don’t recommend wasting an hour of your life doing it.
I made this beautull page ! its about the project. now i just need to finish the project… is made with HTML, css and javaSS :B a bit of gemini help jsjsjsj
STARPHEUS IS FINISHED! last details. i just paint all at 3 am, trying to make it look cool :B
Im on a trip rn but i made some changes in the code, I added some photos to the journal and did a better readme :B
Ships:
I made a robot inpired by orpheus, STARPHEUS Its a robot eith emotions, u can controll it with a logutech control, and it reacts to the enviroment....
|
1792983094.1602473
|
1793069494.1602473
|
|
20345
|
Boilerplater by @cauadev | Stardance
|
cauadev
|
1
|
72.0
|
922
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T00:03:39Z", "hours": 72.0, "multiplier": 12.85, "payout": 922, "blessing": "neutral", "text": "Hello guys! Today, I celebrate the shipping of Br-Zueira’s Boilerplater! It serves for saving (ctrl+u, mac: cmd+u) and pasting code snippets (ctrl+alt+u, mac: cmd+alt+u). It also supports categorizing them by tags and languages, giving descriptions and titles to them and even supports macros: [%%] -> Supports variables such as BP_FILENAME, some sandboxed JavaScript evaluation and even macros (variables defined by yourself using JavaScript code) [#n#] -> Tabstops, where n is an index (they’re standard Vscode tabstops: evaluated from 1 to infinity and beyond, 0 at last and can be grouped like in the example) [#n|fallback#] -> Tabstops but with a placeholder/fallback if user chooses to ignore the tabstop. Also, you can change the snippets by the extension itself (supports basic coding editor features, such as tab indenting or auto closing quotes). For all this. it uses an in-build webview (ctrl+alt+u, mac: cmd+alt+u). You can easily download it at Microsoft Extension Marketplace (just search by “Br-Zueira’s Boilerplater”). If you want, you can also get the VSIX file at GitHub Releases (then open it with Vscode and click “Download VSIX extension”). It’s plug and enjoy! Hope it really lets your workflow more frictionless!", "repo": "https://github.com/Br-Zueira/Boilerplater", "demo": "https://github.com/Br-Zueira/Boilerplater/releases"}]...
|
[{"post_id": 51978, "ts": "202 [{"post_id": 51978, "ts": "2026-08-21T23:45:24Z", "hours": 0.3475, "text": "Bug patching and extension updating"}, {"post_id": 30442, "ts": "2026-07-18T00:04:29Z", "hours": 4.9075, "text": "Hello, fellow devs! Today, I added this gorgeous gif into the readme. Also, I had to escape the content to be shown in list view (I discovered it the worst way: completely breaking the layout while playing around with HTML and PHP snippets) and added aliases for languages, which makes searching them easier. I removed frontend JS and CSS into actual files (they were string literals before) and, finally, moved some files around."}, {"post_id": 30107, "ts": "2026-07-17T12:50:50Z", "hours": 5.6953, "text": "Hello, fellow devs! Yesterday, I completed the CRUD for languages! You can now create, edit or even delete them. The internal name is searched in Vscode language IDs. To delete one, if you have snippets assigned to them, you can either reassign all of them to another language or delete them along with the language, both automatically made."}, {"post_id": 29226, "ts": "2026-07-16T00:24:16Z", "hours": 5.0817, "text": "Hello, fellow devs! Today, I solved the issues related to macros. Also, letting it in configs.json made it messy, counterintuitive and less integrated with the rest of the extension, so I moved it to the webviews, together with the snippets, tags and languages you’re all already familiar with. The evaluation order is very important, as this is what grants macros can be access by other macros, only needing to come before in the order. I’m really excited to see what will people come up with this."}, {"post_id": 28638, "ts": "2026-07-15T00:35:52Z", "hours": 5.8692, "text": "Hello. I started preparing extension for release, so I changed compiler to esbuild and added the GSL3 license to my project. I also started trying to implement the option to add custom variables for templating to the extension, but it’s all broken."}, {"post_id": 28259, "ts": "2026-07-14T12:35:30Z", "hours": 3.7383, "text": "Hello, fellow devs! I just wrote this info at index about the extension and about the templates. I also made the snippet typing more similar to Vscode coding, so now it has tab indentation, and auto closes quotes, parenthesis, brackets, curly braces and the extension templating “[%” and “[#”. TODO: Fix the frontend script that is now half broken."}, {"post_id": 27340, "ts": "2026-07-12T20:37:25Z", "hours": 5.8317, "text": "Hello guys! Now we can paste the snippets directly from the webview! Also, it has dynamic templates: [%%] executes simple JavaScript and can access variables such as BP_FILENAME or BP_YEAR [##] turns into tabstops: can be either [# index #] or [# index | default value #] where index is an integer, and optional default value can be used when user just skips the tabstop However, as a safety measure, the templates can’t directly access vscode, node.js or other possibly sensible variables, methods or functions."}, {"post_id": 26564, "ts": "2026-07-11T13:44:20Z", "hours": 9.9067, "text": "Hey guys! I did a search engine for the list view! It was kind of complex, as I had to deal with SQL joins (INNER JOIN for NOT NULL fields and LEFT JOIN for optional fields), a bridge table, JSON_GROUP_ARRAY, etc, but in the end, it worked. Just have to test a bit more the search bar as it sometimes have some glitches (every time a search is fired, the whole DOM is reloaded)."}, {"post_id": 22458, "ts": "2026-07-04T22:35:41Z", "hours": 6.6092, "text": "Hey guys! Today, I officially finished CRUD! For all models! I also made tag assignment work 100% fine. Besides that, I improved a bit on code modularity and organization and did small patches. TODO: Improve the “R” and maybe the “D” of CRUD; Add the snippet pasting part (the app focus)."}, {"post_id": 19611, "ts": "2026-06-30T23:46:55Z", "hours": 7.6217, "text": "Hey guys! Now tom-select is 100% working and model editing works… at least 50%? Well, and we also have this gorgeous CSS styling that matches with Vscode styles!"}, {"post_id": 17274, "ts": "2026-06-28T00:14:13Z", "hours": 3.0789, "text": "Today, the edit view successfully shows the right values, but the tomSelect dropdowns I tried to add were a complete failure. TODO: Fix tomSelect."}, {"post_id": 16846, "ts": "2026-06-27T10:53:15Z", "hours": 3.0275, "text": "Hey guys! Yesterday, I tried to make this generic model editor, and I have the layout, but the functionality is… well… broke for now. Also, to correct a bug, I had to rewrite the whole functionality of the database. Now I have a proper class wrapper instead of passing the raw database object around."}, {"post_id": 16008, "ts": "2026-06-26T00:05:24Z", "hours": 2.3042, "text": "Hello, programmers! Today, I improved more the webview, this time focusing on the list view. It successfully shows a list of one of the valid models (snippets, tags, languages) and information about it. TODO: Model creation page, editing page, ensure paginate works 100% fine and add searchbar functionality. Struggles: SQL (I’m having to work with raw SQL as sql.js doesn’t have ORM) and avoiding spaghetti code (trust me: It’s hard when you have to write HTML and frontend JavaScript in string literal templates)"}, {"post_id": 15366, "ts": "2026-06-24T23:50:43Z", "hours": 2.5772, "text": "Hey guys! Today, I worked in the webwiew. For now, we have this index page and the start of the list page. Other improvements were more docs focused, such as improving README.db and code commenting, and enforcing code structure with new ‘helpers’ folder and ‘html’ TypeScript file."}, {"post_id": 14726, "ts": "2026-06-23T22:43:44Z", "hours": 2.8136, "text": "Hey guys. After fighting against compilation errors, caused by libs and shx, and errors in database managing, caused by thread throttling by setup-ing db, that were solved using asynchronous tasks instead, now I’ve finally done the snippet creation part! The extension successfully saves the snippet, along with its title, description (can be empty) and language (in another table, as the snippet itself only carries the language id, in a one-to-many relationship, as a snippet have only one language, while a language can have lots of snippets). Next step is continuing the CRUD part, probably by including a web view."}, {"post_id": 13993, "ts": "2026-06-22T23:22:23Z", "hours": 2.3778, "text": "For now, Boilerplater has just a function to copy a highlighted section (still does nothing with it) and a database loader/initializer. Most of the concepts are still just ideas. Next step is to program the snippet saving part in database."}]...
|
Title: Boilerplater by @cauadev | Stardance
Devlo Title: Boilerplater by @cauadev | Stardance
Devlogs:
For now, Boilerplater has just a function to copy a highlighted section (still does nothing with it) and a database loader/initializer. Most of the concepts are still just ideas. Next step is to program the snippet saving part in database.
Hey guys. After fighting against compilation errors, caused by libs and shx, and errors in database managing, caused by thread throttling by setup-ing db, that were solved using asynchronous tasks instead, now I’ve finally done the snippet creation part! The extension successfully saves the snippet, along with its title, description (can be empty) and language (in another table, as the snippet itself only carries the language id, in a one-to-many relationship, as a snippet have only one language, while a language can have lots of snippets). Next step is continuing the CRUD part, probably by including a web view.
Hey guys! Today, I worked in the webwiew. For now, we have this index page and the start of the list page. Other improvements were more docs focused, such as improving README.db and code commenting, and enforcing code structure with new ‘helpers’ folder and ‘html’ TypeScript file.
Hello, programmers! Today, I improved more the webview, this time focusing on the list view. It successfully shows a list of one of the valid models (snippets, tags, languages) and information about it. TODO: Model creation page, editing page, ensure paginate works 100% fine and add searchbar functionality. Struggles: SQL (I’m having to work with raw SQL as sql.js doesn’t have ORM) and avoiding spaghetti code (trust me: It’s hard when you have to write HTML and frontend JavaScript in string literal templates)
Hey guys! Yesterday, I tried to make this generic model editor, and I have the layout, but the functionality is… well… broke for now. Also, to correct a bug, I had to rewrite the whole functionality of the database. Now I have a proper class wrapper instead of passing the raw database object around.
Today, the edit view successfully shows the right values, but the tomSelect dropdowns I tried to add were a complete failure. TODO: Fix tomSelect.
Hey guys! Now tom-select is 100% working and model editing works… at least 50%? Well, and we also have this gorgeous CSS styling that matches with Vscode styles!
Hey guys! Today, I officially finished CRUD! For all models! I also made tag assignment work 100% fine. Besides that, I improved a bit on code modularity and organization and did small patches. TODO: Improve the “R” and maybe the “D” of CRUD; Add the snippet pasting part (the app focus).
Hey guys! I did a search engine for the list view! It was kind of complex, as I had to deal with SQL joins (INNER JOIN for NOT NULL fields and LEFT JOIN for optional fields), a bridge table, JSON_GROUP_ARRAY, etc, but in the end, it worked. Just have to test a bit more the search bar as it sometimes have some glitches (every time a search is fired, the whole DOM is reloaded).
Hello guys! Now we can paste the snippets directly from the webview! Also, it has dynamic templates: [%%] executes simple JavaScript and can access variables such as BP_FILENAME or BP_YEAR [##] turns into tabstops: can be either [# index #] or [# index | default value #] where index is an integer, and optional default value can be used when user just skips the tabstop However, as a safety measure, the templates can’t directly access vscode, node.js or other possibly sensible variables, methods or functions.
Hello, fellow devs! I just wrote this info at index about the extension and about the templates. I also made the snippet typing more similar to Vscode coding, so now it has tab indentation, and auto closes quotes, parenthesis, brackets, curly braces and the extension templating “[%” and “[#”. TODO: Fix the frontend script that is now half broken.
Hello. I started preparing extension for release, so I changed compiler to esbuild and added the GSL3 license to my project. I also started trying to implement the option to add custom variables for templating to the extension, but it’s all broken.
Hello, fellow devs! Today, I solved the issues related to macros. Also, letting it in configs.json made it messy, counterintuitive and less integrated with the rest of the extension, so I moved it to the webviews, together with the snippets, tags and languages you’re all already familiar with. The evaluation order is very important, as this is what grants macros can be access by other macros, only needing to come before in the order. I’m really excited to see what will people come up with this.
Hello, fellow devs! Yesterday, I completed the CRUD for languages! You can now create, edit or even delete them. The internal name is searched in Vscode language IDs. To delete one, if you have snippets assigned to them, you can either reassign all of them to another language or delete them along with the language, both automatically made.
Hello, fellow devs! Today, I added this gorgeous gif into the readme. Also, I had to escape the content to be shown in list view (I discovered it the worst way: completely breaking the layout while playing around with HTML and PHP snippets) and added aliases for languages, which makes searching them easier. I removed frontend JS and CSS into actual files (they were string literals before) and, finally, moved some files around.
Bug patching and extension updating
Ships:
Hello guys! Today, I celebrate the shipping of Br-Zueira’s Boilerplater! It serves for saving (ctrl+u, mac: cmd+u) and pasting code snippets (ctrl+alt+u, mac: cmd+alt+u). It also supports categorizing them by tags and languages, giving descriptions and titles to them and even supports macros: [%%] -> Supports variables such as BP_FILENAME, some sandboxed JavaScript evaluation and even macros (variables defined by yourself using JavaScript code) [#n#] -> Tabstops, where n is an index (they’re standard Vscode tabstops: evaluated from 1 to infinity and beyond, 0 at last and can be grouped like in the example) [#n|fallback#] -> Tabstops but with a placeholder/fallback if user chooses to ignore the tabstop. Also, you can change the snippets by the extension itself (supports basic coding editor features, such as tab indenting or auto closing quotes). For all this. it uses an in-build webview (ctrl+alt+u, mac: cmd+alt+u). You can easily download it at Microsoft Extension Marketplace (just search by “Br-Zueira’s Boilerplater”). If you want, you can also get the VSIX file at GitHub Releases (then open it with Vscode and click “Download VSIX extension”). It’s plug and enjoy! Hope it really lets your workflow more frictionless!...
|
1793051530.8241065
|
1793137930.8241065
|