Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nemanya's Builder Journey #103

Open
Nemanya8 opened this issue Dec 25, 2024 · 10 comments
Open

Nemanya's Builder Journey #103

Nemanya8 opened this issue Dec 25, 2024 · 10 comments

Comments

@Nemanya8
Copy link
Contributor

Hey, I’m Nemanja Matic, an IT student from Novi Sad, Serbia. My background consists mostly from web and low-level development, with experience in technologies like Java, JavaScript, C, C#, Assembly, and Python.

This year, I was introduced to Web3 during a bootcamp in Petnica, and I’ve been obsessed with it ever since. My first project in the Web3 space was building a bridge between Ethereum and gno.land, which sparked my passion for blockchain development. More recently, I had the privilege of winning the ETHSofia hackathon, further solidifying my commitment to this field.

I’m thrilled about this research grant opportunity and can’t wait to collaborate with the community to create innovative solutions and contribute to improving gno.land.

@Nemanya8
Copy link
Contributor Author

Over the holidays, I spent some time trying out a few different things.

I set up my home realm with some text art and payment functionality. I also started working on a package to generate text art from strings. It turned out to be more tedious than I expected, so I decided to shelve it for now and maybe come back to it later.

I did some digging into gnovm and opened a PR to add a feature for gno test. It was a bit of a mess with commits and PRs, but I learned a lot from the experience. I also looked into the tx-indexer and amino decoder. Down the line, I'd like to work on a chain visualizer like it was detailed here.

@Nemanya8
Copy link
Contributor Author

Last week, I’ve been working on my project, Gnome Arcade. The idea is to create multiple realms that represent different games. One of the realms is a GRC20 realm (GBuck) that’s used to pay out player winnings. There’s also a GRC1155 realm where players can redeem rewards using GBuck tokens.

I think this project is a great fit for me because it gives me a chance to work with both GRC20 and GRC1155 realms, tying everything together into one system. It also lets me connect the on-chain data with an off-chain user interface hosted on Web2. For connecting the UI to the blockchain, I’ve been using the Adena Wallet SDK.

Progress has been a bit slower than I hoped. The biggest challenge so far has been working with the Adena SDK, but I’ve managed to get the wallet connection feature up and running. On the blockchain side, I’ve completed the GRC20 realm and a coin toss game. Right now, you can test these manually using gnokey, but my goal for this week is to make them playable directly through the UI.

This is a rough diagram of my idea:

image

@Nemanya8
Copy link
Contributor Author

Last week, I worked on connecting my Next.js frontend using the Adena-wallet-sdk with my realm. I encountered a problem with the Tx interface from the tm2-js-client, but with help from Jinoosss, I successfully set it up today. Based on my feedback, the Onbloc team added a feature for easier transaction building PR. I also tested a fellow grantee's VSCode extension for Gno (Issue). Lastly, I’ve been learning GraphQL for my plans to work on the visualization of the tx-indexer. I started working on the implementation of a dependency graph (like this PR), but based on the tx-indexer to always have the latest data from all packages on-chain.

@Nemanya8
Copy link
Contributor Author

Nemanya8 commented Jan 29, 2025

Last week I have been working on a dependency graph, I looked at some implementations like the PR I mentioned in the issue above and brainstormed the ideas for creating the real-time update system. I figured out that getting packages will be done in 3 steps:

  1. Get all the packages from the examples folder
  2. Get all packages added after launch of network
  3. Subscribe for new addPackage events

I decided to work with a backend written in Go and Frontend in Next Js that will shows data with interactions, search and filtering.
Code for this can be found at: DepGraph

Architecture:

Image

I also tested commands found at Documentation, and opened a PR to fix some issues in commands.

@Nemanya8
Copy link
Contributor Author

Nemanya8 commented Feb 5, 2025

Last week, I worked on an interactive dependency graph. I refactored my code to work with the ListPkgs function from gno mod and enabled live data fetching using GraphQL subscriptions and WebSockets. With that, my backend is mostly complete.

This week, I will focus on improving the UI and, hopefully, deploying it so others can test it and provide feedback.

@Nemanya8
Copy link
Contributor Author

Last week i have been working on gno.land-visualized. I have set-up README, deployment for backend on Railway and frontend on Vercel. I have finished most of frontend design (except responsibility and minor bugs). I have refactored backend code for more efficiency and I've created a TODO list for future examples. You can try out the app here.

@Nemanya8
Copy link
Contributor Author

Last week I have been focused on polishing gno.land-visualized, with the help of @Milosevic02, I have refactored my backend code so it follows REST API for better readability. I've also added new endpoints for filtering and rewritten some functions for better performance and lower operating costs. On the frontend side, I've added a search and filter by type (realms or package) features which makes the graph so much more useful. In my opinion graph is ready to be showcased and some future plans will be written in Issues.

Image

@Nemanya8
Copy link
Contributor Author

Last week I've been working on a feature that shows data about contributors for each package from the monorepo. The feature show all of the contributors as well as their percentage of LOC and LOC number. Besides that I've been working on figuring out the best architecture to rework the backend for more efficiency, real time updates and a possibility of creating a transaction graph.

@Nemanya8
Copy link
Contributor Author

Nemanya8 commented Mar 5, 2025

Last week, I didn’t get much done since I was dealing with a fever. Still, I managed to work on improving the gno.land visualized by increasing the resolution, adding names to nodes, and making some general quality-of-life improvements. I'm still working on this because these updates wrecked the performance so it's still not ready for production. I plan to polish it and add some new features and push to production this week.

@Nemanya8
Copy link
Contributor Author

Last week I've been working on a feature suggested by Stefan, it shows all the packages a contributor has worked on. This helps to visualize impact of each contributor on the network. Next week I plan to further develop this feature and make it more intuitive on UI.

Image

@Nemanya8 Nemanya8 changed the title Nemanya's Builder Jurney Nemanya's Builder Journey Mar 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

2 participants