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

> Source: <https://dev.to/gopichand_dev/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a-thon-story-fmg>
> Published: 2026-06-04 05:55:51+00:00

*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](https://explorer.solana.com/address/nftTnVuyNU1kwTgv7edG6BPmHCtp2NMrawbw94kwZTF?cluster=devnet)

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*
