cd /news/ai-tools/44-days-of-solana-from-an-empty-read… · home topics ai-tools article
[ARTICLE · art-21218] src=dev.to pub= topic=ai-tools verified=true sentiment=↑ positive

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

Developer Gopichand Challa transformed an empty README repository into a live, on-chain Solana NFT in 44 days, despite having no prior blockchain experience. Starting with only a Web2 background in Python and JavaScript, Challa built the "First Light" NFT end-to-end using only `spl-token` CLI commands, with the mint authority permanently disabled and supply locked at one token. The project, part of the "100 Days of Solana" challenge, is fully verifiable on Solana Devnet through five documented on-chain transactions.

read8 min publishedJun 4, 2026

This is a submission for the GitHub Finish-Up-A-Thon Challenge

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**.

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:

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](https://github.com/gopichandchalla16/100-days-of-solana)

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.

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

No one can ever mint another LIGHT token. That is by design.

These are not just summaries of what I did. Each one is a full

explanation written specifically for Web2 developers entering the

Solana ecosystem:

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
Let me be honest about where this project started and where it almost ended.

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.

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.

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:

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.

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.

I want to be specific here, not just say "Copilot helped a lot."

Here are the exact moments where it made the difference.

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.

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.

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.

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.

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:

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."

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:

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.

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](https://github.com/gopichandchalla16/100-days-of-solana)

**📰 DEV Profile:** [https://dev.to/gopichand_dev](https://dev.to/gopichand_dev)

**🐦 X / Twitter:** [https://x.com/GopichandAI](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

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/44-days-of-solana-fr…] indexed:0 read:8min 2026-06-04 ·