This is a submission for the GitHub Finish-Up-A-Thon Challenge
What I Built
Honestly, I almost didn't write this post.
Not because I didn't have anything to show — but because I kept telling myself
"it's not done yet." Sound familiar?
Back in early 2026, I started a repo called
100 Days of Solana.
The idea was simple: learn Solana development from absolute zero, build
something on-chain every single day, and document it publicly.
Day 1, I generated a keypair. That was it. One file in the repo —
a README with a title and no code. I had no blockchain background,
only a Web2 history in Python and JavaScript. I didn't even know
what "rent" meant in the context of Solana accounts.
But I kept showing up. 44 days later, here's what that same repo became:
- ✅ Wallets, airdrops, SOL transfers, SPL token creation
- ✅ Token-2022 extensions — transfer fees, interest-bearing tokens, default frozen, non-transferable (soulbound), permanent delegate
- ✅ A fully named, on-chain NFT — "First Light" — with metadata, image, and permanently locked supply. Minted using only the Solana CLI. No Metaplex. No framework.
- ✅ 9 published DEV.to articles translating every concept into Web2-friendly language
- ✅ Every single transaction signature linked to Solana Explorer so you can verify my work on-chain
This project means more to me than any side project I've ever started.
It's proof that 30 minutes a day, compounded over 44 days,
produces something real and verifiable.
And GitHub Copilot is a big reason I didn't quit on Day 8, Day 23, or Day 39.
🔗 Repo: https://github.com/gopichandchalla16/100-days-of-solana
Demo
🌐 "First Light" — My First NFT, Live on Solana Devnet
I built this NFT end-to-end using nothing but spl-token CLI commands.
No framework. No JS. Just me, the terminal, and a lot of patience.
| Field | Value |
|---|---|
| Name | First Light |
| Symbol | LIGHT |
| Mint Address | nftTnVuyNU1kwTgv7edG6BPmHCtp2NMrawbw94kwZTF |
| Program | Token-2022 |
| Supply | 1 (locked forever) |
| Decimals | 0 |
| Extensions |
metadataPointer + tokenMetadata
|
| Mint Authority | Disabled 🔒 |
🔗 View "First Light" on Solana Explorer
The vanity keypair starting with nft took about 20 minutes to generate
locally using solana-keygen grind. Every character you see in that address
was intentional.
📋 Every Step — Verified On-Chain
Here are all 5 transactions, in order. You can click any of them and
see exactly what happened on the Solana blockchain:
| Step | What I Did | Verified Transaction |
|---|---|---|
| 1 | Created mint account, initialized metadata pointer, initialized mint | 3iXwa…jzXtz |
| 2 | Initialized token metadata — name, symbol, URI | 45PYG…Kv2D4 |
| 3 | Created the associated token account | gWLGo…Ymmgj |
| 4 | Minted exactly 1 token | 3B8MS…wrQoP |
| 5 | Revoked mint authority — forever | 3Yhop…kckqo |
No one can ever mint another LIGHT token. That is by design.
📰 9 Published DEV.to Articles (300+ total reactions)
These are not just summaries of what I did. Each one is a full
explanation written specifically for Web2 developers entering the
Solana ecosystem:
- Your Public Key Is Your Identity — What Web2 Devs Need to Know About Solana
- Solana Transactions Explained for Backend Developers (With Real Failures)
- I Built 5 Token Extension Combinations on Solana This Week — Here's What Each One Does
📊 Where the Project Stands
| Metric | Status |
|---|---|
| 🟣 Daily Build Progress | 44 / 100 Days Complete |
| 🖤 DEV.to Articles | 9 Published |
| 🟢 On-Chain Transactions | Live on Solana Devnet |
| 📄 License | MIT |
| 🔒 NFT Mint Authority | Disabled Forever |
The Comeback Story
Let me be honest about where this project started and where it almost ended.
Day 1 — What the repo actually looked like
gopichandchalla16/100-days-of-solana
└── README.md ← literally just a title
That was it. I had written "100 Days of Solana — learning in public"
and committed it at midnight. No code. No plan. Just a title and the
pressure of having put it on GitHub.
The first week was rough. The Solana docs are not beginner-friendly
if you're coming from Web2. The Token-2022 documentation is especially
sparse. I spent 3 hours on Day 4 just trying to understand why my
airdrop wasn't showing up (I was checking the wrong cluster).
There were three moments where I almost stopped entirely:
Day 8 — I couldn't figure out why my token transfer kept failing
with a cryptic 0x1 error. I had been at it for two hours and it was
past midnight. I nearly closed the laptop and told myself I'd "come back to it."
Day 23 — I hit a wall with Token-2022 extension architecture.
I understood how individual extensions worked but not how to compose
them safely. Nothing I read explained it in plain terms.
Day 39 — The NFT build broke on step 2 of 5. My metadata wasn't
being initialized because I ran initialize-mint before
initialize-metadata-pointer. The error wasn't obvious.
I almost started over from scratch.
I didn't quit any of those nights. GitHub Copilot helped me through
each one — and I'll explain exactly how in the Copilot section.
Day 44 — What the repo became
gopichandchalla16/100-days-of-solana
├── day-01/ through day-44/ ← 44 documented daily builds
├── 9 DEV.to articles published
├── Every tx signature verified on Solana Explorer
├── Token-2022 extensions built and tested:
│ ├── Transfer fees (compliance use case)
│ ├── Interest-bearing tokens (DeFi use case)
│ ├── Default frozen + thaw (regulated assets)
│ ├── Non-transferable / soulbound (credentials)
│ └── Permanent delegate (revocable access)
├── NFT "First Light" — vanity keypair, Token-2022,
│ on-chain metadata, locked supply
└── README with live progress bar, week logs,
all explorer links
The difference between Day 1 and Day 44 is not just the code.
It's the understanding behind it.
The 3 moments that defined this project
Day 13 — The account model finally made sense.
I had been running solana balance and spl-token create-account for
days without really understanding why Solana accounts need rent.
Then I sat down and wrote a DEV.to article explaining it with a
Web2 analogy: accounts are like database rows, rent is like a monthly
hosting fee — stop paying and the row gets deleted.
Writing that article forced me to understand it deeply enough to
explain it simply. After Day 13, I stopped copying commands and started
understanding what each one actually does.
Days 36–40 — Five Token-2022 extension combinations in one week.
This was the hardest week. I built:
- A transfer fee token (simulating a transaction tax)
- An interest-bearing token (simulating a yield-bearing asset)
- A default-frozen token with thaw authority (compliance gating)
- A non-transferable soulbound token (on-chain credential)
- A permanent delegate token (revocable programmatic access)
Each one is a real devnet transaction. Each one has a verifiable
signature on Solana Explorer. Each one taught me something different
about how Token-2022 is designed to handle real-world financial
and compliance scenarios.
Days 43–44 — My first NFT. No Metaplex. Just the CLI.
I wanted to understand NFTs at the protocol level — not through
a framework, not through a library, but through raw spl-token commands.
I generated a vanity keypair starting with nft using solana-keygen grind.
I added two Token-2022 extensions: metadataPointer and tokenMetadata.
I minted exactly 1 token. I disabled the mint authority forever.
"First Light" now lives on-chain permanently with its name, symbol,
and metadata URI intact. Nobody can create another one. That's what makes it an NFT.
The biggest technical lesson of 44 days
Token-2022 extensions cannot be added after mint creation. Ever.
There's no workaround. No patch. No update instruction.
You must decide your full extension set before you run
initialize-mint. It's like designing a database schema —
you can't add a non-nullable column without a migration.
I learned this the hard way on Day 38 when I tried to add
interest-bearing to an existing mint. The transaction failed
and I had to start the token from scratch. That 30-minute mistake
became the most important architectural lesson I've had in 44 days.
My Experience with GitHub Copilot
I want to be specific here, not just say "Copilot helped a lot."
Here are the exact moments where it made the difference.
When I was stuck on 0x11 at midnight (Day 37)
My compliance-gated token transfer failed with error 0x11 —
AccountFrozen. I knew the token was frozen by design but I thought
I had thawed it. The transaction kept failing anyway.
I was staring at the error in my terminal. Copilot's inline suggestion
explained what I was missing: both the sender's ATA and the
recipient's ATA need to be thawed — not just the sender's.
One suggestion. One minute. Problem solved.
Without Copilot, I would have been digging through the SPL Token
source code for the next hour — or worse, I would have given up
and moved on without truly understanding the error.
When soulbound tokens confused me (Day 40)
Non-transferable tokens are conceptually simple — once minted to a
wallet, they can never move. But when I tried to demonstrate this
by attempting a transfer, the transaction failed with 0x25.
I didn't expect the error. Copilot explained: non-transferable tokens
can be burned but not transferred. It then suggested I write a burn
script to demonstrate the constraint properly — which turned into
the best hands-on example in my Week 6 article.
The bug became the feature. That happens a lot when Copilot is involved.
Writing CLI commands faster and correctly
The Token-2022 program ID is 44 characters long:
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Before Copilot, I copied this from docs and sometimes mis-pasted it.
With Copilot, it autocompleted the entire ID, the --program-id flag,
all the relevant options, and even the correct sequence of commands.
The sequence matters enormously in Token-2022. For the NFT build,
initialize-metadata-pointer must come before initialize-mint.
The Solana docs don't emphasize this clearly for beginners.
Copilot's autocomplete surfaced the correct order naturally,
in context, while I was typing. That saved me from the exact error
that had broken my build on Day 39.
Turning raw terminal output into readable articles
Every DEV.to article I wrote started the same way:
a terminal window full of transaction signatures, error codes,
and hex-encoded account data.
Copilot helped me turn that raw output into:
- Clear Web2 analogies that explain Solana concepts without jargon
- A consistent structure: what I planned → what broke → what I learned
- Opening paragraphs that hook readers who have never touched blockchain
Nine articles. 300+ reactions across all of them.
That audience engagement would not exist without Copilot helping me
bridge the gap between "developer notes" and "readable article."
Explaining the "why" — not just the "how"
This is the thing I appreciate most about Copilot, and it's hard to
quantify. When a command worked, I often didn't fully understand why
it worked. Copilot's inline comments filled those gaps constantly:
- "This flag enables close authority so you can reclaim rent later."
- "The metadata pointer must be initialized first because the mint instruction reads the extension list."
- "Revoking mint authority is a one-way operation — there's no re-enable instruction in Token-2022."
These micro-explanations compounded over 44 days into real,
deep understanding of the protocol. I'm not just writing Solana
commands anymore. I understand what they do and why they exist.
The honest summary
GitHub Copilot didn't write this project for me.
Every transaction on Solana Explorer is a decision I made,
a command I typed, a concept I understood.
But Copilot removed the friction that would have made me quit.
It turned 2-hour debugging sessions into 10-minute ones.
It turned terminal output into articles people actually read.
It turned "I don't understand this" into "oh, that's why."
44 days in. 56 to go. I'm not stopping.
🔗 GitHub Repo: https://github.com/gopichandchalla16/100-days-of-solana
📰 DEV Profile: https://dev.to/gopichand_dev
🐦 X / Twitter: https://x.com/GopichandAI
If you're a Web2 developer curious about Solana — follow the repo.
Every day folder has the exact commands I ran, the errors I hit,
and what I learned. It's all there.
#100DaysOfSolana #Solana #Web3 #BuildInPublic
Top comments (0)