This repo showcases work done for the WBA Turbine 2024 Q3 Cohort, as well as some other related Solana and frontend development work. I am open for work; you can reach me via:
X: @RitRafa | Discord: ritrafa | Email: [email protected]
- Learning from Losing a Hackathon
- Got Wallet? 4 Strategies for Solana dApps
- Reflecting on Solana Speedrun
- Introducing Manic Entanglement
SOLSQUARE Live Devnet Site | Github
SolSquare is a decentralized social media that promotes economic incentives for good behavior powered by BONK and AI rudeness detection. This was created with an incredible team (see Github), first as our Encode bootcamp capstone project and then as a Bonkathon submission. While we didn't win, we ended up with some incredible lessons learned.
Created as an entry for Solana Speedrun 3, this game was created in one week. Every step you take reshuffles the maze, and every power-up you pick up gives perpetual boosts.
Are you ready to dive into an ever-shifting labyrinth where survival is fleeting, and wisdom and prior attempts are your greatest assets? Welcome to Manic Entanglement, a rogue-lite game on Solana where every step you take alters the labyrinth, challenging your wits and reflexes while you collect gear and items to stave off your eventual return to the cosmic mist. Each time you re-enter, you do so a little wiser, a little stronger and better prepared for the infinite entanglement.
This uses next.js, metaplex core, and pinata ipfs, and any playable nft loads as a separate animated playable character! I did ever part of this (dev, front end, pixel art) with the exception of the music.
Live Site | Closed Source (happy to share)
This custom bookmark manager was made over a weekend because I wasn't happy with the market alternatives. It includes AI generated link groups, the ability to produce shortened urls, and share sets of links. Cleanly sortable and built for mobile & desktop.
Live Site | Closed Source (happy to share)
This is a site I built for a physical product I created with my wife and our graphic designer. It is a set of cards that prompt discussion on various Proverbs, used to teach wisdom. The site include 3d card samples.
-
Standard install of necessary modules
npm install --force // Or fix depedents
-
Add a wba-wallet address private key locally, and double check
.gitignore
based on your wallet file naming convention -
After updating any ts files, use
npm run {name in package.json scripts}
to run themcd ts npm run spl_init
In the prerequisite task for the Turbin3 cohort, we used typescript to generate a keypair, airdrop to that wallet, transfer sol, and enroll to the WBA registration program.
Folder:
prereq-airdrop
In the registration task, we used rust to generate a keypair, airdrop to that wallet, swap between wallet keys and b58, transfer sol, and enroll to the WBA registration program.
Folder:
rust-registration
In Class 1 we created a working token initizalizer, created the associated token account (ATA) within our own wallet for that token, then minted tokens into that ATA. I used the following during the class for additional documentation.
Files:
ts\cluster1\spl_init.ts
ts\cluster1\spl_mint.ts
Here is the final transaction of this class' work, which is the mint tx.
After class 2, we proceeded with adding metadata to our spls then transferred them on to classmates.
Files:
ts\cluster1\spl_metadata.ts
ts\cluster1\spl_transfer.ts
In class 3, we tested out the metaplex nft irys upload and mint features. I added an animation to my rug via Aseprite.
Files:
ts\cluster1\nft_image.ts
ts\cluster1\nft_metadata.ts
ts\cluster1\nft_mint.ts
Over the weekend, I build a blink that allowed the mint of one of 25 animated rugs. The special gimmick of the blink is that it forced someone to guess a number that had not yet been used. Once any guess was made, they would need to wait 1 minute before it allowed another guess.
To make it not enforce any payments, if someone submitted a correct guess, I sent them the core nft, but then requested a transfer to cover mint costs. Given the small size of the the test group I was ok even if I didn't recoup all the mint costs.
In retrospect, I wish I had made the batch size slightly bigger, and reworded the x post to help it gain more virality. I have noticed that when I present things as tests/for fun, they typically receive slightly less traction.
Files:
ts\cluster1\nft_core_collection.ts
ts\cluster1\nft_rug_mint.ts
blink\app\actions.json\route.ts
blink\api\actions\mint\route.ts
In this class we used Anchor to create a simple vault program with the following functions, initialize, deposit, withdraw, and close.
Files:
anchor_vault_q3_2024\programs\anchor_vault_q3_2024\src\lib.rs
In this class we used Anchor to create an escrow contract.
Files:
anchor_escrow\programs\anchor_escrow\src\lib.rs
In this class we used Anchor to create an amm contract.
Files:
amm\programs\amm\src\lib.rs
In this set of classes, we developed an nft staking program.
Files:
nft-staking\programs\nft-staking\src\lib.rs
Please see all capstone details, currently summary and user storeies in the following folder:
Folder:
capstone