{"slug": "44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a", "title": "44 Days of Solana: From an Empty README to a Live NFT on-chain — My Finish-Up-A-Thon Story", "summary": "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.", "body_md": "*This is a submission for the GitHub Finish-Up-A-Thon Challenge*\n\nHonestly, I almost didn't write this post.\n\nNot because I didn't have anything to show — but because I kept telling myself\n\n\"it's not done yet.\" Sound familiar?\n\nBack in early 2026, I started a repo called\n\n** 100 Days of Solana**.\n\nDay 1, I generated a keypair. That was it. One file in the repo —\n\na README with a title and no code. I had no blockchain background,\n\nonly a Web2 history in Python and JavaScript. I didn't even know\n\nwhat \"rent\" meant in the context of Solana accounts.\n\nBut I kept showing up. 44 days later, here's what that same repo became:\n\nThis project means more to me than any side project I've ever started.\n\nIt's proof that 30 minutes a day, compounded over 44 days,\n\nproduces something real and verifiable.\n\nAnd GitHub Copilot is a big reason I didn't quit on Day 8, Day 23, or Day 39.\n\n**🔗 Repo:** [https://github.com/gopichandchalla16/100-days-of-solana](https://github.com/gopichandchalla16/100-days-of-solana)\n\nI built this NFT end-to-end using nothing but `spl-token`\n\nCLI commands.\n\nNo framework. No JS. Just me, the terminal, and a lot of patience.\n\n| Field | Value |\n|---|---|\nName |\nFirst Light |\nSymbol |\nLIGHT |\nMint Address |\n`nftTnVuyNU1kwTgv7edG6BPmHCtp2NMrawbw94kwZTF` |\nProgram |\nToken-2022 |\nSupply |\n1 (locked forever) |\nDecimals |\n0 |\nExtensions |\n`metadataPointer` + `tokenMetadata`\n|\nMint Authority |\nDisabled 🔒 |\n\n🔗 [View \"First Light\" on Solana Explorer](https://explorer.solana.com/address/nftTnVuyNU1kwTgv7edG6BPmHCtp2NMrawbw94kwZTF?cluster=devnet)\n\nThe vanity keypair starting with `nft`\n\ntook about 20 minutes to generate\n\nlocally using `solana-keygen grind`\n\n. Every character you see in that address\n\nwas intentional.\n\nHere are all 5 transactions, in order. You can click any of them and\n\nsee exactly what happened on the Solana blockchain:\n\n| Step | What I Did | Verified Transaction |\n|---|---|---|\n| 1 | Created mint account, initialized metadata pointer, initialized mint |\n|\n\nNo one can ever mint another LIGHT token. That is by design.\n\nThese are not just summaries of what I did. Each one is a full\n\nexplanation written specifically for Web2 developers entering the\n\nSolana ecosystem:\n\n| Metric | Status |\n|---|---|\n| 🟣 Daily Build Progress | 44 / 100 Days Complete |\n| 🖤 DEV.to Articles | 9 Published |\n| 🟢 On-Chain Transactions | Live on Solana Devnet |\n| 📄 License | MIT |\n| 🔒 NFT Mint Authority | Disabled Forever |\n\nLet me be honest about where this project started and where it almost ended.\n\ngopichandchalla16/100-days-of-solana\n\n└── README.md ← literally just a title\n\nThat was it. I had written \"100 Days of Solana — learning in public\"\n\nand committed it at midnight. No code. No plan. Just a title and the\n\npressure of having put it on GitHub.\n\nThe first week was rough. The Solana docs are not beginner-friendly\n\nif you're coming from Web2. The Token-2022 documentation is especially\n\nsparse. I spent 3 hours on Day 4 just trying to understand why my\n\nairdrop wasn't showing up (I was checking the wrong cluster).\n\nThere were three moments where I almost stopped entirely:\n\n**Day 8** — I couldn't figure out why my token transfer kept failing\n\nwith a cryptic `0x1`\n\nerror. I had been at it for two hours and it was\n\npast midnight. I nearly closed the laptop and told myself I'd \"come back to it.\"\n\n**Day 23** — I hit a wall with Token-2022 extension architecture.\n\nI understood how individual extensions worked but not how to compose\n\nthem safely. Nothing I read explained it in plain terms.\n\n**Day 39** — The NFT build broke on step 2 of 5. My metadata wasn't\n\nbeing initialized because I ran `initialize-mint`\n\nbefore\n\n`initialize-metadata-pointer`\n\n. The error wasn't obvious.\n\nI almost started over from scratch.\n\nI didn't quit any of those nights. GitHub Copilot helped me through\n\neach one — and I'll explain exactly how in the Copilot section.\n\ngopichandchalla16/100-days-of-solana\n\n├── day-01/ through day-44/ ← 44 documented daily builds\n\n├── 9 DEV.to articles published\n\n├── Every tx signature verified on Solana Explorer\n\n├── Token-2022 extensions built and tested:\n\n│ ├── Transfer fees (compliance use case)\n\n│ ├── Interest-bearing tokens (DeFi use case)\n\n│ ├── Default frozen + thaw (regulated assets)\n\n│ ├── Non-transferable / soulbound (credentials)\n\n│ └── Permanent delegate (revocable access)\n\n├── NFT \"First Light\" — vanity keypair, Token-2022,\n\n│ on-chain metadata, locked supply\n\n└── README with live progress bar, week logs,\n\nall explorer links\n\nThe difference between Day 1 and Day 44 is not just the code.\n\nIt's the understanding behind it.\n\n**Day 13 — The account model finally made sense.**\n\nI had been running `solana balance`\n\nand `spl-token create-account`\n\nfor\n\ndays without really understanding *why* Solana accounts need rent.\n\nThen I sat down and wrote a DEV.to article explaining it with a\n\nWeb2 analogy: *accounts are like database rows, rent is like a monthly\nhosting fee — stop paying and the row gets deleted.*\n\nWriting that article forced me to understand it deeply enough to\n\nexplain it simply. After Day 13, I stopped copying commands and started\n\nunderstanding what each one actually does.\n\n**Days 36–40 — Five Token-2022 extension combinations in one week.**\n\nThis was the hardest week. I built:\n\nEach one is a real devnet transaction. Each one has a verifiable\n\nsignature on Solana Explorer. Each one taught me something different\n\nabout how Token-2022 is designed to handle real-world financial\n\nand compliance scenarios.\n\n**Days 43–44 — My first NFT. No Metaplex. Just the CLI.**\n\nI wanted to understand NFTs at the protocol level — not through\n\na framework, not through a library, but through raw `spl-token`\n\ncommands.\n\nI generated a vanity keypair starting with `nft`\n\nusing `solana-keygen grind`\n\n.\n\nI added two Token-2022 extensions: `metadataPointer`\n\nand `tokenMetadata`\n\n.\n\nI minted exactly 1 token. I disabled the mint authority forever.\n\n\"First Light\" now lives on-chain permanently with its name, symbol,\n\nand metadata URI intact. Nobody can create another one. That's what makes it an NFT.\n\nToken-2022 extensions cannot be added after mint creation. Ever.\n\nThere's no workaround. No patch. No update instruction.\n\nYou must decide your full extension set before you run\n\n`initialize-mint`\n\n. It's like designing a database schema —\n\nyou can't add a non-nullable column without a migration.\n\nI learned this the hard way on Day 38 when I tried to add\n\n`interest-bearing`\n\nto an existing mint. The transaction failed\n\nand I had to start the token from scratch. That 30-minute mistake\n\nbecame the most important architectural lesson I've had in 44 days.\n\nI want to be specific here, not just say \"Copilot helped a lot.\"\n\nHere are the exact moments where it made the difference.\n\n`0x11`\n\nat midnight (Day 37)\nMy compliance-gated token transfer failed with error `0x11`\n\n—\n\n`AccountFrozen`\n\n. I knew the token was frozen by design but I thought\n\nI had thawed it. The transaction kept failing anyway.\n\nI was staring at the error in my terminal. Copilot's inline suggestion\n\nexplained what I was missing: **both the sender's ATA and the\nrecipient's ATA need to be thawed** — not just the sender's.\n\nWithout Copilot, I would have been digging through the SPL Token\n\nsource code for the next hour — or worse, I would have given up\n\nand moved on without truly understanding the error.\n\nNon-transferable tokens are conceptually simple — once minted to a\n\nwallet, they can never move. But when I tried to demonstrate this\n\nby attempting a transfer, the transaction failed with `0x25`\n\n.\n\nI didn't expect the error. Copilot explained: non-transferable tokens\n\ncan be burned but not transferred. It then suggested I write a burn\n\nscript to demonstrate the constraint properly — which turned into\n\nthe best hands-on example in my Week 6 article.\n\nThe bug became the feature. That happens a lot when Copilot is involved.\n\nThe Token-2022 program ID is 44 characters long:\n\nTokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\n\nBefore Copilot, I copied this from docs and sometimes mis-pasted it.\n\nWith Copilot, it autocompleted the entire ID, the `--program-id`\n\nflag,\n\nall the relevant options, and even the correct sequence of commands.\n\nThe sequence matters enormously in Token-2022. For the NFT build,\n\n`initialize-metadata-pointer`\n\n**must** come before `initialize-mint`\n\n.\n\nThe Solana docs don't emphasize this clearly for beginners.\n\nCopilot's autocomplete surfaced the correct order naturally,\n\nin context, while I was typing. That saved me from the exact error\n\nthat had broken my build on Day 39.\n\nEvery DEV.to article I wrote started the same way:\n\na terminal window full of transaction signatures, error codes,\n\nand hex-encoded account data.\n\nCopilot helped me turn that raw output into:\n\nNine articles. 300+ reactions across all of them.\n\nThat audience engagement would not exist without Copilot helping me\n\nbridge the gap between \"developer notes\" and \"readable article.\"\n\nThis is the thing I appreciate most about Copilot, and it's hard to\n\nquantify. When a command worked, I often didn't fully understand *why*\n\nit worked. Copilot's inline comments filled those gaps constantly:\n\nThese micro-explanations compounded over 44 days into real,\n\ndeep understanding of the protocol. I'm not just writing Solana\n\ncommands anymore. I understand what they do and why they exist.\n\nGitHub Copilot didn't write this project for me.\n\nEvery transaction on Solana Explorer is a decision I made,\n\na command I typed, a concept I understood.\n\nBut Copilot removed the friction that would have made me quit.\n\nIt turned 2-hour debugging sessions into 10-minute ones.\n\nIt turned terminal output into articles people actually read.\n\nIt turned \"I don't understand this\" into \"oh, that's why.\"\n\n44 days in. 56 to go. I'm not stopping.\n\n**🔗 GitHub Repo:** [https://github.com/gopichandchalla16/100-days-of-solana](https://github.com/gopichandchalla16/100-days-of-solana)\n\n**📰 DEV Profile:** [https://dev.to/gopichand_dev](https://dev.to/gopichand_dev)\n\n**🐦 X / Twitter:** [https://x.com/GopichandAI](https://x.com/GopichandAI)\n\n*If you're a Web2 developer curious about Solana — follow the repo.\nEvery day folder has the exact commands I ran, the errors I hit,\nand what I learned. It's all there.*\n\n*#100DaysOfSolana #Solana #Web3 #BuildInPublic*", "url": "https://wpnews.pro/news/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a", "canonical_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_at": "2026-06-04 05:55:51+00:00", "updated_at": "2026-06-04 06:12:17.575877+00:00", "lang": "en", "topics": ["ai-tools"], "entities": ["GitHub", "Solana", "GitHub Copilot", "Token-2022", "First Light", "Solana Explorer"], "alternates": {"html": "https://wpnews.pro/news/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a", "markdown": "https://wpnews.pro/news/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a.md", "text": "https://wpnews.pro/news/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a.txt", "jsonld": "https://wpnews.pro/news/44-days-of-solana-from-an-empty-readme-to-a-live-nft-on-chain-my-finish-up-a.jsonld"}}