# Scaffold Mina - Tooling

**URL:** <https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449>\
**Category:** Mina Navigator Proposals\
**Created:** [September 14, 2024, 10:29am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449 "2024-09-14T10:29:37Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![hgedia](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/hgedia/32/1734_2.png) [@hgedia](https://forums.minaprotocol.com/u/hgedia)\
**Post date:** [September 14, 2024, 10:29am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/1 "2024-09-14T10:29:37Z")

</div>

This topic is to discuss the proposal submitted by @TheMonkeyCoder .Please see below for the details of the proposal and discussion.

**14, September 2024**  
_Funding Note: This proposal is approved for funding. This will improve developer experience to rapidly build with mina. There are important issues related to design/adoption by @45930 and we hope the team will take this into consideration as they progress and build with a community-centric approach. The risk and impact are both medium and the budget is inline with the work proposed._

**23rd, September 2024**  
_Current status: Funded_  
_Opened for community discussion on : 22nd July,2024._

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [September 14, 2024, 10:36am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/2 "2024-09-14T10:36:11Z")

</div>

## Title

Scaffold Mina

## Project Background

Scaffold Mina is a starter kit designed to help developers quickly build and deploy Mina zkApps with integrated frontends and smart contracts. It enables developers to get started swiftly with just a few commands, simplifying the initial setup for new developers exploring Mina and assisting existing developers in setting up new projects without the hassle of manual configuration. Additionally, Scaffold Mina offers React hooks that enable easy interaction with smart contracts.

The current version of Scaffold Mina can be found [here](http://github.com/DeMonkeyCoder/scaffold-mina).

## Proposal Overview

**Problem:** The existing scaffold provided by the zkapp-cli is not optimal for developers aiming to create production-ready projects. It is primarily designed for simple single-page React applications, requiring developers to build additional components for a complete web application from scratch.

**Solution:** During our participation in the Starter Program, we developed an improved scaffold that abstracts away initial configuration complexities and provides React hooks for seamless integration across applications. In this proposal, we aim to further enhance Scaffold Mina by adding tools to improve both the developer and user experience.

Key enhancements include:

- **[MinaJS](https://minajs.palladians.xyz/) Integration:** We will integrate MinaJS to provide a seamless wallet connection interface compatible with [WalletConnect](https://walletconnect.com/) and TypeScript-ready account interactions. Since MinaJS is still in development, we will also contribute to MinaJS as needed for this project. The ultimate goal is to have Scaffold Mina included as part of the MinaJS toolkit, allowing developers to use this scaffold to start a well-structured project that can be easily maintained and expanded.
- **React Hooks & Functions:** We will extract the React hooks and functions into standalone modules, making them easily usable in other Mina zkApps. We plan to extract types directly from the o1js smart contracts by leveraging TypeScript, as it is the language used for writing o1js smart contracts. However, if necessary, we will also develop a tool similar to [@wagmi/cli](https://wagmi.sh/cli/getting-started) to generate hooks and types specifically for the frontend. We’ll keep these tools compatible with MinaJS’s architecture, similar to how wagmi is compatible with viem.
- **[Lightnet](https://docs.minaprotocol.com/zkapps/writing-a-zkapp/introduction-to-zkapps/testing-zkapps-lightnet) Integration and Burner Wallets:** We will integrate Mina’s Lightnet for deploying and testing contracts on a local blockchain, along with the block explorer. We will also provide browser-based burner wallets for interacting with Lightnet.
- **General Improvements Based on Community Feedback:** While gathering feedback from the community, several improvements and features were suggested for the Scaffold, including a ‘Debug Contracts’ tab in the frontend, using cached prover keys, the possibility of moving compiling and proving to the cloud, improving the smart contract deployment script, and mobile support. We are also considering adding off-chain storage support, but further research is needed to determine the most viable and standard approach, and whether it can be accomplished within the scope of this proposal.
- **Website and Documentation:** We will provide documentation for the developed tools to ensure developers can conveniently utilize them.

We may add or remove features based on feedback from the community and our own experience during development, but such changes will be guided by feedback and confirmation from the Mina developer community, not by personal decisions from our team.

**Impact:** We believe this project will make it easier for developers to build on Mina, fostering the development of more projects and contributing to the growth of the Mina ecosystem.

**Audience:** The target audience includes both new developers starting on Mina and existing developers looking to streamline the setup of new projects.

## Architecture & Design

**Design:** The structure of Scaffold Mina draws inspiration from [wagmi](https://wagmi.sh/) and [viem](https://viem.sh/), tools already familiar to many web3 developers. For this proposal, we will focus on providing these tools for React, given its popularity in the web3 space.

**Vision:** Our vision is to make these development tools as modular as possible and to follow the architecture of existing web3 tools, creating solutions that are familiar and convenient for web3 developers and users.

## Timeline

- MinaJS integration and providing React hooks: 1 month
- Lightnet integration and general improvements mentioned in the proposal: 1 month
- Finalize and improve the tool based on feedback from Mina developers: 1 month

## Budget & milestones

- **Deliverables & Mid-Point milestones** : We will deliver the developed tools at each milestone as outlined in the timeline section.
- **Project Timeline:** 3M
- **Budget Requested:** 72,000 MINA
- **Wallet Address:** ~~B62qs1fVSySq8fAMmLumRwhnFQxhgKSyKqBzuHp8LX1VASWERJKSSoV~~ B62qn3bDNBvWm4HoY7x7UfuLxPYrsMoeeppwevPjDehhLLcdCRp3AMq

## Team Info

- **Proposer Github** : [DeMonkeyCoder (TheMonkeyCoder) · GitHub](http://github.com/DeMonkeyCoder/)
- **Proposer Experience and Achievements** : I have 7 years of experience as a software developer, with 3 years in web3. My open-source contributions demonstrate my ability in developing devtools for the ecosystem:  
[refactor: taco react and nextjs example by DeMonkeyCoder · Pull Request #419 · nucypher/taco-web · GitHub](https://github.com/nucypher/taco-web/pull/419)  
[refactor(web-app): improve usage of contexts and hooks by DeMonkeyCoder · Pull Request #56 · semaphore-protocol/boilerplate · GitHub](https://github.com/semaphore-protocol/boilerplate/pull/56)  
[GitHub - zkfriendly/bip47: bip47 core utility functions](https://github.com/zkfriendly/bip47)  
[Custom unicode handling for Android backspace via JNI to ICU by DeMonkeyCoder · Pull Request #17960 · flutter/engine · GitHub](https://github.com/flutter/engine/pull/17960)
- **Team Members** : I (TheMonkeyCoder) will handle the architecture and TypeScript logic, while Emre Kaya will manage the UI and frontend styling.

## Risks & Mitigations

Since we already have the foundation for the Scaffold project, the risk involved in further development is minimal. The main potential risk lies in unforeseen challenges when adding features and integrating tools. To mitigate this, we have already vetted the tools we plan to integrate and will maintain regular communication with the Mina developers community in case we encounter any challenges.

---

<div class="post-metadata">

**Author:** ![arjanjohan](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/arjanjohan/32/2134_2.png) [@arjanjohan](https://forums.minaprotocol.com/u/arjanjohan)\
**Post date:** [September 16, 2024, 5:29am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/3 "2024-09-16T05:29:06Z")

</div>

I like this idea, as I’m a huge fan/user of the Scaffold-ETH repo(s). If executed well, it can be a great tool to use for building on Mina during hackathons. I am excited to use this in the future.

Where/how do you gather the community feedback? I’m building my own Scaffold fork at the moment (unrelated to Mina), so I’m curious to see how you are doing things.

---

<div class="post-metadata">

**Author:** ![45930](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/45930/32/2154_2.png) [@45930](https://forums.minaprotocol.com/u/45930)\
**Post date:** [September 18, 2024, 5:54pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/4 "2024-09-18T17:54:00Z")

</div>

Your existing site is pretty cool!

For the features and impact of this new proposal, do you think there’s a lot of appetite for these tools? You mentioned gathering some community feedback; could you share it here?

I think there’s actually a ton of opportunity for tools built to complement o1js and Mina that will be useful. Especially in a context like a hackathon or a developer workshop. Are you aiming to actually productize in that space, or are you developing features more for your own practice and to explore the space a little bit?

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [September 19, 2024, 2:42pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/5 "2024-09-19T14:42:06Z")

</div>

Thanks so much for your attention and support 🙂 @arjanjohan @45930

For the initial feedback while writing the proposal, @hgedia connected me with some Mina developers privately, but I’m willing to connect with more developers.

Also, for anyone reading this post, please feel free to share any feedback or ideas you have regarding the scaffold project here, in the GitHub issues, or you can message me privately via Telegram or Discord (username: TheMonkeyCoder).

> [@45930](#):
>
> Are you aiming to actually productize in that space, or are you developing features more for your own practice and to explore the space a little bit?

I’m aiming to develop this as a starter kit for developers who want to start building a new project on Mina, but exploring the space and becoming more involved with the Mina community are also my goals.

---

<div class="post-metadata">

**Author:** ![45930](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/45930/32/2154_2.png) [@45930](https://forums.minaprotocol.com/u/45930)\
**Post date:** [September 19, 2024, 4:50pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/6 "2024-09-19T16:50:49Z")

</div>

> [@TheMonkeyCoder](#):
>
> I’m aiming to develop this as a starter kit for developers who want to start building a new project on Mina

There are a lot of projects with a similar goal, but AFAIK, they don’t have strong developer adoption. I think if you’re serious about building a product that people will use and trust, you should more research and understand this problem: Why do so many developers agree that getting started with Mina is hard, but platforms aimed at developers getting started are not used?

Personally, I agree that this is an interesting problem space, but your proposal to address 5 bullet points in 3 months seems like it will only scratch the surface on a broad range of issues instead of solving one thing really well. I don’t understand the unique part of your project that will be better than the existing documentation for onboarding new developers.

* * *

That said, there’s definitely room in navigators for learning projects. There’s value in producing stuff like “how to use o1js in a react hook” examples for other people to use. I think the work you present sounds interesting and worth pursuing. I’m just trying to understand what’s more important in this proposal: the impact that it has on actual zkapp developers using it? Or the list of deliverables that you plan to build whether or not developers use them?

---

<div class="post-metadata">

**Author:** ![hgedia](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/hgedia/32/1734_2.png) [@hgedia](https://forums.minaprotocol.com/u/hgedia)\
**Post date:** [September 23, 2024, 10:15am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/7 "2024-09-23T10:15:38Z")

</div>

This proposal is approved for funding. This will improve developer experience to rapidly build with mina. There are important issues related to design/adoption by @45930 and we hope the team will take this into consideration as they progress and build with a community centric approach. The risk and impact are both medium and the budget is inline with the work proposed.

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [September 26, 2024, 12:33pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/8 "2024-09-26T12:33:28Z")

</div>

> [@45930](#):
>
> There are a lot of projects with a similar goal

Would you please share these projects? I could only find the scaffold project in the zkapp-cli which is not suitable for starting a project. The entire front-end logic is written in a single function in a single component [here](https://github.com/o1-labs/docs2/blob/ece2e8b93053a24e3c20d44f9c799787a01ee80c/examples/zkapps/04-zkapp-browser-ui/ui/src/pages/index.page.tsx#L38), so the developers still need to think about everything from scratch when they want to start a project with multiple pages and components.

> [@45930](#):
>
> Why do so many developers agree that getting started with Mina is hard

I actually experienced this feeling of ‘getting started with Mina is hard’ myself, and in my opinion the main reason is the lack of complete end-to-end examples. As a developer, it’s essential to have examples to reference in order to check whether you’re doing things right or wrong, and to see a correctly working piece of code when you’re stuck. I remember when I started developing on Ethereum in 2021, the [Uniswap Interface repository](https://github.com/Uniswap/interface) was one that many developers, including myself, referred to while building their projects. Many web3 front-end projects were copying large chunks of code and modules from this repository.

> [@45930](#):
>
> I don’t understand the unique part of your project that will be better than the existing documentation for onboarding new developers.

My goal is to provide a complete example that developers can start building upon, while also following the structure of [wagmi](https://wagmi.sh) to make the developer interface similar to what web3 developers are already using.

> [@45930](#):
>
> the impact that it has on actual zkapp developers using it? Or the list of deliverables that you plan to build whether or not developers use them?

Definitely the first one

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [October 28, 2024, 1:53pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/9 "2024-10-28T13:53:30Z")

</div>

**Quick Update:**

In the first month, we focused on “MinaJS integration” and creating React hooks and interfaces for wallet connection and interaction. One challenge we didn’t anticipate was the lack of a standard for wallet provider APIs. To address this, we worked closely with Tomek from Pallad on designing and implementing a standard provider. I also implemented MIPD for provider discovery on the Scaffold. You can see the current progress [here](https://github.com/DeMonkeyCoder/scaffold-mina/tree/dev-minajs).

Additionally, Emre made several UI improvements, which can be found [here](https://github.com/DeMonkeyCoder/scaffold-mina/tree/ui-dev-fixes).

I expected to have more done by now, but we had to spend significant time addressing challenges related to wallet providers. I hope we can speed things up this month.

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [November 20, 2024, 11:28pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/10 "2024-11-20T23:28:54Z")

</div>

**Quick Update:**

We updated Viem to support Mina accounts. While it’s still a work in progress and has some type issues, it is functional in development mode:

> **[GitHub - DeMonkeyCoder/scaffold-mina at dev-minajs](https://github.com/DeMonkeyCoder/scaffold-mina/tree/dev-minajs)**
>
> dev-minajs

We’ve also made progress in integrating Mina compatible switchChain and networkId with Viem. Next, we’ll focus on implementing Viem-like utility functions for sending transactions. However, before that, some issues with the `mina_sendTransaction` method on Pallad need to be resolved, which we are currently addressing together with Tomek.

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [December 1, 2024, 7:17am UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/11 "2024-12-01T07:17:18Z")

</div>

**Quick Update:**

We now have a fully functional, viem-like code for connecting a wallet and switching networks with both Pallad and AuroWallet 🙂 :

> **[GitHub - DeMonkeyCoder/scaffold-mina at dev-minajs](https://github.com/DeMonkeyCoder/scaffold-mina/tree/dev-minajs)**
>
> dev-minajs

Transactions can also be sent using AuroWallet, and we’re working on Pallad’s integration as well.

We’re using [Klesia](https://minajs.palladians.xyz/klesia/rpc/) to retrieve the account’s balance and the latest blockHash. The latest blockHash is provided with a live watch feature to auto-update the UI after a new block is mined.

We still need to clean up and refactor a lot of the code.

---

<div class="post-metadata">

**Author:** ![TheMonkeyCoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/themonkeycoder/32/2147_2.png) [@TheMonkeyCoder](https://forums.minaprotocol.com/u/TheMonkeyCoder)\
**Post date:** [January 24, 2025, 7:59pm UTC](https://forums.minaprotocol.com/t/scaffold-mina-tooling/6449/12 "2025-01-24T19:59:30Z")

</div>

**Quick Update:**

We presented Scaffold Mina and its toolings during a community call on January 6th. Most of the features were complete and fully functional. However, the only major feature still under development and requiring significant work was integrating the `sendTransaction` function into our toolings.

We faced several challenges while creating a typed `sendTransaction` function, which unfortunately caused delays. For example, typical transactions usually include properties such as `to`, `from`, and others. This is also the case for Mina’s `sendPayment` and `sendDelegation` transactions. However, zkApp transactions are different; they only have a `zkappCommand` field as the input, which contains all the information about state updates and authorizations.

We are still working on these challenges and are hopeful that we will finish soon.
