DEV Community

Cover image for 44 Days of Solana: From an Empty README to a Live NFT on-chain — My Finish-Up-A-Thon Story
Gopichand
Gopichand

Posted on

44 Days of Solana: From an Empty README to a Live NFT on-chain — My Finish-Up-A-Thon Story

GitHub “Finish-Up-A-Thon” Challenge Submission

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:

📊 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:

  1. A transfer fee token (simulating a transaction tax)
  2. An interest-bearing token (simulating a yield-bearing asset)
  3. A default-frozen token with thaw authority (compliance gating)
  4. A non-transferable soulbound token (on-chain credential)
  5. 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)