Coding An Open Source Project From Scratch (vlog 1)
Skills:
Building Custom AI Tools60%
Key Takeaways
Codes an open source project from scratch, focusing on zero-knowledge proof implementation and entrepreneurship
Full Transcript
hello hello hello I have decided to work on a new project and I want to Vlog the process of doing it I told you all that I want to um work more with and build more W there's a lot of like a lot of um Shadows from the Sun but I told you all that I wanted to build more with zero knowledge proofs and I have decided to build my first open Source software I really don't know anything about how to launch open source I've been doing some research and there's so many pros and cons to it and so many things to be aware of of course I don't anticipate um a whole bunch of people rushing to contribute to my open source project so I don't think I need to be too worried about it um but basically this is something that I want to create for the developer community and for um um users in general um to help people on board into the use of zero knowledge proofs in the easiest way possible cuz right now it's super complicated it's really confusing I think zkps are super super cool but um the reality is that most people are just not going to be able to use this technology or they're never even going to be able to think of the ways that they could use it because it's so unattainable to even be able to get started or understand what's going on on so I wanted to create a project that uh just a allows me to learn more about this and B could be useful for some people to also learn more about this uh basically as simple as that and so I want it to be free and open source and it's going to take me some time to build for sure so this is definitely going to be a series of videos I want to make them like Vlogs just showing my process of uh creating an open source project from start to finish from idea to development to Launch and everything I learn about the process and we'll see what happens but I'm definitely going to have to split this up into probably uh film over a few weeks and then upload this and then I'll keep filming over the next few weeks and upload another Vlog so it'll be a a long slow process but I hope that you all will look forward to the updates because I'm really excited to get started on this project this is uh something that I've wanted to do for a while and I decided you know what 2024 new year new me we're just going to do it so please enjoy okay so the first thing that I like to do with really any project that I want to build is I like to start with just taking notes in my blue notebook I have just a blue three subject uh College ruled spiral bound notebook and I would be lost without this notebook this is where the initial thoughts for pretty much all of my ideas go just kind of popped onto the page no particular order just if I think of something write it down sometimes I'll end up scribbl Ling stuff into the margins drawing things out as I start to think through it more stuff comes to mind and I just write it down so it's it's messy it's in no particular order this portion of the process is honestly probably where some of my most intense brain work goes into it cuz this is where I really think about okay what would it take to build this what are some steps if I do that what can I use to build this piece and if I use this then that means I haven't thought about this other part and I just I let it all just turn over and over in my brain so the basic concept that I have for this project that I've gotten out into my notebook is that I want to create a web app that is going to allow a user to generate a zero knowledge proof for a piece of data that they put in which could be just a simple string or a date or some piece of information and a a zero knowledge proof will be generated for it and other users can come to the site they can look up that proof either by its ID or its name and they can also input a piece of data and get a response back of whether that data is correct a true or false response does the proof that's generated for that piece of data match the proof that was generated by the verifier I know that probably sounds a little confusing but if you go back and watch previous video about uh zero knowledge groups and how they work and what they are that might make it make a little more sense I don't want to spend a ton of time in these Vlogs talking about what zkps are and how they work cuz I want to talk more about just the process of building this open source project but I'm sure when it's done I'll talk about some of those details a little bit more but also the goal is that I'll be able to build this in such a simple way that just seeing the app using the app it will make it make more sense to people who find it confusing the goal is to make this more accessible also and very importantly I want to expose an API endpoint so that a developer could come to the site put in their input generate a zero knowledge proof for their piece of data and then actually just hit the API from their own application passing in their input as a parameter and the ID of the proof that they generated and get back that same true or false response to their own apps so this way if you're a developer and you want to use a zero knowledge proof in your own app you don't have to worry about using the zkp libraries and building all of that in it's kind of just abstracted away in this application for you I think there could even be an opportunity down the line for this to be made into an npm package for that purpose to make that even easier but for now I want to keep it super super simple to start with so we're going to have a main page that displays some of the recent proofs as cards that can be clicked into by the prover we're going to need a search bar I think to filter by the name or ID I kind of don't love to need to build search for the MVP but I do think that it would just be really helpful functionality for this we need really basic UI screens for the prover and the verifier and I'm just going to have people actually email me and reach out to me if they want to get an API key for now so that'll that piece will be really easy to build I'm going to deploy this using verel and I'm going to use super base for the database I think it's going to be really important since this is an open-source project and technically the idea is that you know other people could contribute to this um because of that I think it's going to be really important to have unit tests and linting set up maybe uh pre-commit hooks with Husky or something like that just to help keep the code as clean as we can and help other people to be able to work on it and know that they haven't broken other parts usually I maybe wouldn't worry so much about those things if I was just building a project completely myself but I want to make this something that could be out there for other people to contribute to so I feel like those pieces are important and then finally we are going to need some documentation because we want to make this an education opportunity for people to be able to learn more about zkps and how they work and because we're going to be exposing our own API we need to have some documentation for that for other developers so I think this is actually going to be really really simple uh as far as what we need in the database I think all we're really going to need for our database record is going to be something that looks basically like this for the model oh that's not that's not bad for a curly brace I feel like I usually can't draw curly braces at all but we're going to need an ID of course for each record that'll be of type string and then we're going to want to store the proof of course and that will probably have its own data type I believe its own predefined data type so we'll just save proof for that one and then I want to store a name for each proof so we'll have a title little B of type string and then I am going to go ahead and have it optional I think to put your email in when you create appr proov just because it could be nice to have a feature where uh you get emailed the uh URL to your verifier screen if wanted to just send that link out to other people to use the uh the UI and you don't want them to necessarily have to um go to the site and search for that so I'm going to just include that even if that's something that I build out later at least we'll have it there as an option and that's basically it I think that's pretty much all we're going to need to store as far as records in our database because we're not going to do authentication even or anything like that we're keeping this really really simp simple I don't think we need that stuff right now so the first step after I do some brainstorming is that I look at all the things I brainstormed and I go into notion and I create a taskboard and I try to treat projects as if I am doing them with a team kind of similar to how you would do project management so I create a taskboard with swim lanes and break down the tasks into small pieces into little cards and create for all the work that needs to be done that way I can make sure that I'm thinking of every little piece that I need to do I can keep track of where I'm at I can kind of see how much I have left and it just really helps me to stay organized so that is going to be step [Music] one anyway I finished the taskboard uh in notion so I want to show what I did so these are all the cards I created I broke the this down into 26 different tasks in the to-do column in actuality it's going to be a lot more than that and once I get going I will definitely be breaking those down into even smaller pieces um most likely usually when I get started on on a task especially some of the bigger ones I'm like oh this could you know be broken down into three smaller ones instead but I think this is a pretty good uh first pass everything in order so I know what I need to do first which is to research the appropriate GitHub license for open source so like I said I've never done an open source project before so I know there's a few different routes you can go U the goal of this project is not to make money or anything like that certainly not now so I don't need to worry too much about that um but I think I'm just going to start by actually just asking Chachi PT um what GitHub license should I use okay so Chachi P did give us a nice little overview here of just all of the main um GitHub licenses and kind of what they do um but I ended up finding this little markdown uh on GitHub that kind of provides a tldr that I think is just a little bit easier for me to digest um and I think I like this uh BSD 3 Clause license it's similar to using so the MIT license that's kind of the standard basic license that you uh you often work with on just personal projects it's basically the leanest license like do whatever you want don't sue me kind of license um and that could work but I think the slight difference that I like about this one is um making sure that your company's you or your company's name are not going to be used by others without your approval and I just like that because I don't know you never know uh with with putting something out into the world and other people working on it and contributing to it um you never know what kind of stuff people might try to use it for or put your name on or or put the project name on to and so maybe just having a certain level of control over that could be nice um it looks like an order to use that we have to throw it into a license file Okay cool so I'm going to go ahead and just get started on this right now H you know what's so annoying about GitHub so you can change like your display name my last name changed when I got married so I went from Aman to Benson and you can change your display name on GitHub but to change your actual username is like a huge process and you have to contact GitHub and they may not even approve it to change it and you could lose access uh you lose all of your data and all of your history it's like a whole thing which is really really annoying so I just permanently I have this GitHub name that like doesn't match what my name is now anyway I've decided to call this project ZK web um I think kind of just inspired by Third web a little bit maybe um just making web 3 development easy for the web the regular web and I think making zero knowledge proofs a little bit easier for regular web development is kind of the goal of this project so that's what I'm going to call it description I'm going to fill that in later uh okay uh we'll do this choose license and we're going to go okay create woo okay let's see oh it just puts it right in there for you I thought it said that we were going to have to paste it in in the instructions but it's already pasted so cool love that love that for us going back to our board here research the GitHub license and create the repo well that was super easy um I actually so I added to all these little tickets in notion you can add different fields and I added a little hour spent um to each one of these cards so that I can just out of my own curiosity um to kind of see how long I actually end up taking to kind of build this entire thing from start to finish so this task literally took like 5 minutes so it's almost a little bit silly to put it in terms of hours but I think like 8 hours or something close enough okay basically took like no time cool oh and I should have I don't know there's something just satisfying about moving the cards over left to right I don't know I should have put this in the doing column but I didn't but now I get to move it already to done so you know what having really tiny little task like that I think it's nice cuz it just feels good for the satisfaction of like being able to be like look we already completed step one now there's only 25 items left to do in the 26 item to-do list it just like feels like some momentum all right I think I'm going to end this Vlog here I'll post an update in a few weeks and in the meantime I have a bunch of other videos planned so I'll see you very soon
Original Description
my zk startup I'm building from scratch: https://www.mirrorzkp.com/
✧ X: @0xsarahbenson
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
More on: Building Custom AI Tools
View skill →Related Reads
📰
📰
📰
📰
The End of the Software Stack: Why Entrepreneurs Are Consolidating Everything
Medium · AI
"The Shopify App Store Hands You a B2B Lead List, for Free"
Dev.to · Ken-Mutisya
The Leadership & Personal Growth Lens
Medium · Startup
Multiple Amazon Seller Accounts: Infrastructure Without the Risk of Chain-Ban
Dev.to AI
🎓
Tutor Explanation
DeepCamp AI