Boot - Create your own OS, Get hardware to run it banner

Boot - Create your own OS, Get hardware to run it

22 devlogs
50h 43m 14s

Boot is a YSWS where you make your own OS, whether that be from scratch or based on an existing OS, and you get hardware to run it.

This project uses AI

Used GitHub Copilot for code completion and partial code generation.

Demo Repository

Loading README...

Ginobeano

Shipped this project!

This is Boot. My project for almost a year now. It is my YSWS (now active btw), where you build your own OS, and you get hardware to run it. This is now the second revision, which adds many, many features, QoL, pages, etc. I am really proud of how this turned out. I said it in my first ship message, I will say it again. I am most proud of this because it feels like a real product. I am actually making something someone else uses.

https://boot.hackclub.com/

Ginobeano

It’s beautiful

With that, Boot 2.0 is complete. It brings tears to my eyes.

Ok, maybe I am being a bit dramatic.

I finally got the shop filled and complete, along with some other things, so let’s go through them.

  • Modify Explore and Leaderboard
    I capped the Leaderboard to 10 entries. Currently, I just think it looks better, so that is why I did it. I also removed an old filter item from the explore page. I don’t have favorites anymore
  • Removed Auth Note
    A leftover element from back when you had to re-authenticate to order something.
  • Fill Shop
    Finally, I also filled the shop with lots and lots of Prizes everyone will enjoy.

With that, Boot 2.0 is finished. I hope you guys enjoyed it. I will now proceed to ship it.

Changelog

Attachment
0
Ginobeano

One More Thing

We are so incredibly close. Just a little bit longer.

Orders are now officially implemented ultrafastparrot
Such an exciting thing!

  • fix guides button url
    With the new update to the landing page, the URL was changed, so I had to change it on the guides button too.
  • Shop Options
    Brand new! Just Implemented! Introducing Shop Options!
    Customize your prize to make it how you want. Choose color, Ram, Storage, anything really.

Ok real talk here though I just had to make the UI sobdissolve Still, I made everything before, and it is working great.

  • Orders
    The big one … Users can now finally order things from the shop!

This was kinda hard, but also not really. The hardest part was the edge function, mostly because I don’t know TypeScript, but we got through it. I also had to handle a few things on the client side, but yeah. You can now order stuff!

That is it for now. All I need to do now is fill the shop!

Changelog

Attachment
0
Ginobeano

So So Close

We are so close to shipping again. So close.

Anyway, we did quite a good amount today!

  • Add a guide button
    This was added for clarification, and so more people can easily access the guides. This coincides with an update to the guides page.
  • Remove reward prizes from the shop
    A little bug caused reward prizes to show up in the shop. So I fixed that
  • fix prize options
    A bug appeared that I could not add any objects to the prize options table; it seemed to be caused by a bad UUID. An important thing is that it is fixed.
  • Max quantity of 500 for grants
    I increased the quantity limit for grants to allow people to get bigger denominations.
  • Fill the shop
    I started to fill the shop with many cool prizes and way more to come.

I only need to do a few more things until I can ship again.
I need to fill up the rest of the shop and make the UI for prize options

What I did today

  • Increase quantity limit
  • fill shop
  • fix prize options
  • add guides button
  • fix other bugs

Changelog

Attachment
0
Ginobeano

The Shop REDO

Nice title, right?

Anyway, I redid the Prize Details Page today. At first, I wasn’t going to, but I figured I should to match the redid shop.

I believe it does look a bit better, but not as good as the shop redo. This didn’t take as long as the shop redo, obviously.

The Prize details page includes two sections

Details Section


  • Image
  • Title
  • Description
  • Specs (If any)

Checkout Section


  • Quantity
  • Price Breakdown
  • Checkout Button

While making this, I decided to get rid of some prize types, such as grants. Grants will still be available, but not custom ones. If you want to stack grants, just buy multiple.

Very few things remain

  • Remove Grant type
  • Order Function
  • Modify Prize Creation
  • Filling Shop

After all that, I should be good to ship once more

What I did today


  • Prize Details Page Redo

Changelog

Attachment
0
Ginobeano

Introducing the new shop.

Meet your new favorite place on the dashboard. Completely rebuilt from the ground up.

This was a long one. Honestly, I am surprised I worked this long.

Starting with the obvious. I did take inspiration from the Flavortown shop. Hey, if it ain’t broke, don’t fix it. It certainly isn’t a direct copy. I added my own edits and tweaks.

Features

  • Badges for New, low stock, out of stock, and keyed
  • Recently added prizes
  • Search bar
  • Sort By dropdown
  • Country dropdown
  • Auto finding country
  • How many more coins can you not afford
  • Separate keyed section for those prizes you have not unlocked yet

I really did add alot and it is a whole lot more fleshed out. I kinda winged the UI, just experimenting as I go. But I think it turned out well.

I think I might disable the feature that requires a certain number of OSes to be shipped before anyone can order anything from the store. This should help with motivation.

I still have to redo the prize details page. but idk if I will redo that from scratch. Maybe, actually probably will. I also have to add the navigation to the prize details page bhut that should be easy.

That is all from me. See you next time. Bye Bye

What I did today


  • Redo Shop From The Ground Up

Changelog

Attachment
0
Ginobeano

Well, this was a super repetitive, boring update.

First off, I fixed the bug that the hackatime session was being restored properly, but the hackatime auth page was still showing.

Then I kept getting a build error on Vercel. Turns out the package material_symbols_icons is now incompatible with the current version of Flutter. So I got rid of that. And that is where all the time went.

I had to manually painstakingly go through every script and replace instances of Symbols. to Icons. It was annoying, but eventually I got through, and now here we are.

This may speed it up a bit by not having another package, but probably not noticeably.

What I did today


  • Fix hackatime auth page bug
  • Remove Material_Symbols_Icons

Changelog

Attachment
0
Ginobeano

Airball after Airball

I pushed the new hackatime system, and to say the least, there were some issues.

It worked perfectly on localhost, but then when I pushed it to prod, everything started to go downhill.

So this is just me going back and forth, turns out I configured some things wrong in vercel.json, but also forgot to add the client ID to the prod app. sobdvd So that was cool.

I also closed the shop. Yes, sad I know, but I am redoing it, so yeah, good news there.

What I did today


  • Fix Hackatime Bugs
  • Close Shop

Changelog

Attachment
0
Ginobeano

Big one today

Today was a big day for Boot. So I have had problems with people not being able to use it because they didn’t sign into Hackatime with Slack. Anyway, I asked for help and looked to see what other YSWSs did; turns out I should’ve created an OAuth app.

The OAuth app system is still not perfect. I liked not having another login page. But it is still good.

Anyway, this fixed it, and now it works reliably every time altough it added some complexity to the app, but ehh. The good news is that you should only need to do it once when you create your account.

I did run into an issue while implementing it, though it seems like it did not like to be run on browsers because of the CORS policy. So I had to make an edge function for logging into Hackatime. I wanted to do it without an edge function, but it is still good. This took me way, way longer than I would like to admit.

Another feature that piggybacks off of this is that since Hackatime OAuth sessions are long-lived, I can store them, and now you only need to log into Hackatime once to forever link your account.

Overall, pretty happy with this feature; it makes it more reliable and better in the long term.

What I did today


  • Hackatime Oauth

Changelog

Attachment
0
Ginobeano

We are back

This was spread out over a few days because some of it wasn’t significant enough for its own devlog.

The big addition is the AI statement section for declaring AI use. The policy is pretty much exactly the same as Flavortown’s. Hey, if it isn’t broke, don’t fix it.

I also fixed an error with uploading pictures, specifically when uploading an image for a shop item. I improved the edge function a little bit so it wouldn’t be so fussy.

I also fixed various minor warnings just to clean up some things.

What I did today


  • AI statement
  • upload image bug fix
  • fix warnings

Changelog

Attachment
0
Ginobeano

Let’s go! More things done!!!

The elephant in the room is the new Error Mapping. Now, every error that goes through the notifications will be put through an error mapper to get a more human-readable format.

Right now, the cases it handles are few but cover the most common errors. As I see more errors pop up, I will make sure to add a case for them. And of course, if no suitable error is found, then it will fall back to a unexpedcted error error.

But that is not the only thing I did today; I also added HCA user ID as a fallback for hackatime so just in case you don’t sign up to Hackatime with a Slack ID, then it should still be able to find you.

What I did today


  • HCA user id fall back for Hackatime
  • Error mapping

Changelog

Attachment
0
Ginobeano

Just a quick (well, quick-ish) bug fix today.

I tested out the shipping process, and for some reason, the function wasn’t calling. So turns out I did a little oopsie, and in the auth header I put the Anon key instead of the service key, so I fixed that.

This wasn’t in the repo; it was just a config thing, so no changes in GitHub, sadly.

In brighter news, my ship was approved, and I got cookies!

I think I am going to finish up the shop and then ship it one last time, then just focus on running it, actually.

What I did today


  • fix shipping bug
Attachment
0
Ginobeano

Shipped this project!

Hours: 32.19
Cookies: 🍪 932
Multiplier: 28.95 cookies/hr

I made a website for my new YSWS Boot. Boot is a YSWS where you build your own OS and get prizes for it. The hardest part was probably UI. Not really the building part of it, but designing it and making it look good. Honestly, I am proud of all of this. I have made many, many projects before, but they have never felt as fleshed out and real as this one. Hope you guys enjoy it.

Ginobeano

Today on I was bored today. Another feature, because I was bored.

When signing up, you will now be added to #boot and #boot-anouncements.

This did not take long at all. I seriously just copied the Slack message function. Welp, that is it.

What I did today:

  • slack invites

Changelog

Attachment
0
Ginobeano

I am really bored today …

I decided, in my boredom, to create a tutorial. It is similar to the one you can find here on Flavortown.

There are four tasks:

  • First Login
  • Verify Identity
  • Create first project
  • Create first devlog.

These objects are interactable, so if you click them, it will take you to where you can take action.

EX: Create first project -> Create project screen

Also, as a QoL feature, it automatically hides like it never was there when you complete all tasks.

Changelog

Attachment
0
Ginobeano

Quick one here today.

All I did today was just fix a few bugs. I am now pushing some of this stuff and doing more bug testing.

Some of the bugs I found:

  • Project restrictions were not being checked when editing a project
  • clarified hackatime text
  • fix duplicate username bug

I had some AI help with the Project restrictions only because I have already done all the logic. I just wanted an easy way to copy it over to editing.

I don’t suppose there to be alot more time tracked because it is all testing and doing stuff outside of VS Code

Picture of updated hackatime project note.

What I did today

  • Bug fixing
  • Bug testing

Changelog

Attachment
0
Ginobeano

Another one bites the dust.

Ha you see what I did there.

And with that, Shipping is marked off the checklist.

Today was very productive but a hair-pulling-out day. Today the biggest problem I had wasn’t even with the actual program itself no, it is stupid Docker and trying to get a local environment of Supabase going. I actually hate Docker. I installed it, and now I am getting Network changed errors (and yes I know 100% it is from Docker) but obvi that wasn’t spent in a code editor so it doesn’t count for time. Anyway, after I got all that sorted, I finished up the edge function by testing it. Really, all it was were very trivial things I had to fix, like misspellings, no point in documenting them here.

I also did some stuff yesterday, but it wasn’t that significant, just minor tweaks to the logic.

Picture of my ship approved timeline object.

What I did today

  • Fix Docker (Worst program known to man) and Supabase
  • Fix bug in auth code
  • set up local env
  • finalize a few things in the shipping function (DB, and edge)

Changelog

Attachment
0
Ginobeano

We are getting to the final stretch

This week, I have not had much time to work, but we worked a bit today (and the past two days).

I did pretty much everything for shipping. What I mean is that I have to send it to Airtable. It was a bit intimadating and I thought/researched hard about how I would go about this, but eventually landed on a system.

At the user login, it takes the access token and encrypts it with a super secret key (wow, so secret), then when it comes time to ship it wil decrypt that key and use it for what it needs to use it for. Now, full transparency here, I used AI for the crypto, no clue how that stuff works. And that is basically what I did. I am not quite done yet, but pretty close.

The picture is of the login screen. I have no idea what I could’ve done to show this. It is all backend stuff, and I obvi can’t show a pic of a test run, I can’t be giving out pii like that.

What I did today

  • Undo Hackatime Ban Testing Variable
  • Changed Auth Flow to include encrypted access token
  • Updated Ship Flow to include Airtable stuff

Changelog

Attachment
0
Ginobeano

Today was pretty easy!

Pretty much all I did was reinforce some of the banning checks, add some nice messages, and add conditions to shipping a project.

So now, if you are Hackatime banned it will not let you in at all. Also, with shipping projects, it won’t let you if you aren’t verified or aren’t YSWS eligible for some reason.

Oh, also, I added a section to the Ship approved item in the timeline to include the reviewer’s score so you can see in what areas you can improve!

What I did today:

  • Hackatime Ban
  • Shipping Conditions
  • Reviewer score

Changelog

Attachment
0
Ginobeano

Pretty small update today.

I added functionality for login hints. These will be utilized on the landing page for the get started field. Basically, it redirects people to the Hackclub auth login page, as if you had pressed the Login with Hackclub button, but also includes a login hint.

I also added the functionality to the redesign branch of the landing page repo.

What I did today:

  • Added route to app for login hint
  • Modified Sign in with hackclub function to include login hint
  • Made the button on the landing page do something

Changelog

Attachment
0
Ginobeano

Ok been a good amount of time since my last devlog. Sorry, I got busy. But I am back at it again now that it is the weekend!!!!

Anyway, today I worked on the prizes. More specifically, product config and variations. I added the logic and UI to the Admin_Page.

What I did today

  • Added updated logic for showing prize dialogs
  • Combined the edit and create new dialogs
  • Added product config to the logic
  • Added product config to the ui

Changelog

Attachment
0
Ginobeano

Hey, 2 devlogs in a day lets go.

This time it went much better.

I had to fix a bug with the upload edge function caused by not having the prefixes right. It took a little bit to completely fix, but mostly trivial. I added a section in the reviewer for an override hour justification. Again, pretty trivial.

What I did this time around:

  • Fix image upload bug
  • Added override hour justification

Picture showing images working again.

Attachment
0
Ginobeano

Today was literally awful. No joke, awful.

So all I did today was try to fix one single bug. Yes, that is right, one single bug.

So what is this bug that took me so long? It was quite a weird bug. Any time I would click on something interactive (more prevalent on the project page), the page would reload.

Weird, but I looked through the code to see if maybe I made a mistake and refreshed the page or called setState() wrong. I couldn’t find anything. I was getting desperate. I have already spent 2 hrs on this, and I needed to fix this. And of course, most of it didn’t count for hackatime, so that is great. Eventually, I had enough, and I used AI. And of course, that didn’t work either. I probably spent 25% of my copilot allowance just on that and got nowhere. Then I asked it to just write extensive debug logs of everything, and to my surprise, it worked. We found the issue turned out to be a bug in the deferred page system, so we got that fixed, and now it works. yay!

Oh, also, I added a survey to the shipping process.

What I did today:

  • Fix a bug that caused the page to rebuild and cause other weird behavior
  • Add survey to ship

Video of how it doesn’t reload every time now.

0
Ginobeano

First Devlog!!!!!!!!

Starting this on Flavortown a little late.
Since I am starting this late, I can’t possibly put down all that I did before I started. (Look at the commits)

Today I fixed some bugs that were reported

  • The edit project context dialog was acting weird and going to the top left of the screen, and you couldn’t click anything. It was caused by the widget I was using, so I changed my widget, and voila.
  • All other edge functions weren’t working after I migrated. Turns out I structured it wrong and accidentally put index.ts into a folder called source.
    New things:
  • Added some nice QoL things for devs:
    • Logger automatically sets its level to finest if it is running on localhost
    • Maintenance mode gets disabled if it is detected as running on localhost
  • Yesterday, I revised the FAQ and synced it up with the Slack canvas.
  • Today, I added a section on how to get Boot-Themed PFPs

The picture is of how the dashboard looks like now.

Attachment
0