<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged portfolio</title>
<link>https://coderlegion.com/tag/portfolio</link>
<description>Powered by Question2Answer</description>
<item>
<title>The Portfolio Lie: Why Side Projects Do Not Prove You Can Ship</title>
<link>https://coderlegion.com/27076/the-portfolio-lie-why-side-projects-do-not-prove-you-can-ship</link>
<description>&lt;p&gt;There is a piece of advice that circulates constantly in developer communities, in bootcamp curriculums, in career coaching threads, and in well-meaning LinkedIn posts:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Build side projects. They are the best way to show what you can do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is not wrong. But it is incomplete in a way that quietly misleads a lot of capable developers about what hiring managers and clients are actually looking for, and why their portfolio is not landing the way they expected.&lt;/p&gt;
&lt;p&gt;Side projects demonstrate capability. They show that you can learn a framework, build a feature, and put something on the internet. That is genuinely valuable, especially early in a career when you have no other evidence to offer.&lt;/p&gt;
&lt;p&gt;What they do not show is whether you can ship.&lt;/p&gt;
&lt;p&gt;Shipping, in the sense that matters professionally, is not the same as finishing a project. It is what happens when the requirements are unclear, when the deadline is real, when someone else is depending on the outcome, and when the consequences of being wrong belong to someone other than you. It is the ability to make good decisions under those conditions, consistently, over time.&lt;/p&gt;
&lt;p&gt;A side project removes almost all of those conditions. You set the scope. You set the deadline, or you ignore it. If something is harder than expected, you simplify it or you shelve it. Nobody is waiting. Nothing breaks if you do not finish. The feedback loop is entirely internal.&lt;/p&gt;
&lt;p&gt;That is a fine environment for learning. It is a poor environment for demonstrating professional readiness.&lt;/p&gt;
&lt;h2 id=&quot;why-the-lie-persists&quot;&gt;WHY THE LIE PERSISTS&lt;/h2&gt;
&lt;p&gt;The side project gospel persists for a few reasons, none of which are malicious.&lt;/p&gt;
&lt;p&gt;First, it is genuinely the most accessible advice. Not everyone has work experience to point to, and a GitHub profile is something anyone can build regardless of background, location, or employment history. The advice democratises entry in a way that feels fair.&lt;/p&gt;
&lt;p&gt;Second, it worked. Many developers did land their first role because of a side project, and they remember that. What they often forget is the other things they brought to the table: how they spoke about the project in the interview, the problems they articulated, the tradeoffs they described. The project was the entry ticket. The conversation was the actual evaluation.&lt;/p&gt;
&lt;p&gt;Third, the people giving the advice are not the people doing the hiring. There is a persistent gap between what career content creators recommend and what technical leads and engineering managers actually find convincing when they review a candidate.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The project was the entry ticket. The conversation was the actual evaluation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;what-hiring-managers-and-clients-are-actually-looking-for&quot;&gt;WHAT HIRING MANAGERS AND CLIENTS ARE ACTUALLY LOOKING FOR&lt;/h2&gt;
&lt;p&gt;When a technical lead reviews a portfolio, they are not asking: can this person build things? They are asking something harder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Can this person make good decisions when the problem is ambiguous?&lt;/li&gt;
&lt;li&gt;Do they understand why they made the choices they made, not just what they made?&lt;/li&gt;
&lt;li&gt;Have they worked against real constraints, or only self-imposed ones?&lt;/li&gt;
&lt;li&gt;When something went wrong, what did they do?&lt;/li&gt;
&lt;li&gt;Can I hand them a brief and trust them to come back with the right questions, not just an implementation?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A todo app, a weather widget, or a clone of an existing product does not answer any of those questions. Not because the code is bad, but because the conditions under which it was built do not generate evidence of professional judgment.&lt;/p&gt;
&lt;p&gt;Clients are asking a version of the same question. They are not buying your ability to write code. They are buying your ability to take their problem, translate it into a solution they did not have to fully specify, and deliver it in a way that does not require constant supervision. Side projects do not demonstrate that either.&lt;/p&gt;
&lt;h2 id=&quot;what-actually-proves-you-can-ship&quot;&gt;WHAT ACTUALLY PROVES YOU CAN SHIP&lt;/h2&gt;
&lt;p&gt;The good news is that the evidence hiring managers and clients want is buildable. It requires a different kind of intentionality than most portfolio advice talks about.&lt;/p&gt;
&lt;h3 id=&quot;document-the-decisions-not-just-the-outcome&quot;&gt;Document the decisions, not just the outcome&lt;/h3&gt;
&lt;p&gt;The single highest-leverage thing you can do with any project, side or otherwise, is write about the decisions you made and why. Not a readme. Not a bullet list of technologies. A genuine account of the problem as you understood it, the approaches you considered, the one you chose, and what you learned from the result.&lt;/p&gt;
&lt;p&gt;This transforms a project from a code artifact into evidence of thinking. It answers the interview question before the interview happens. It gives a potential client something to evaluate beyond the visual design of the finished product.&lt;/p&gt;
&lt;p&gt;Most developers skip this entirely. Which means doing it, even briefly, is a meaningful differentiator.&lt;/p&gt;
&lt;h3 id=&quot;introduce-real-constraints&quot;&gt;Introduce real constraints&lt;/h3&gt;
&lt;p&gt;The closest you can get to professional conditions on a personal project is to impose real constraints on yourself and honour them. A fixed scope. A genuine deadline with a consequence, even a small one, like a public commitment. A user who is not you, whose feedback you actually incorporate.&lt;/p&gt;
&lt;p&gt;A project built under those conditions generates fundamentally different evidence than one built at your own pace with unlimited scope changes. The constraint is the point. It forces the kinds of decisions that professional environments force, and your account of navigating them is what makes the project interesting to someone evaluating you.&lt;/p&gt;
&lt;h3 id=&quot;contribute-to-something-with-stakes&quot;&gt;Contribute to something with stakes&lt;/h3&gt;
&lt;p&gt;Open source contributions, freelance work, contract projects, even internal tools built for a real organisation, all of these put you in a professional context where someone else has a stake in the outcome. The feedback is external. The constraints are real. The decisions you made had consequences beyond your own learning.&lt;/p&gt;
&lt;p&gt;One project built in that context is worth more, as portfolio evidence, than ten side projects built in isolation. Not because the code is necessarily better, but because the conditions were real.&lt;/p&gt;
&lt;h3 id=&quot;show-the-iteration-not-just-the-finish-line&quot;&gt;Show the iteration, not just the finish line&lt;/h3&gt;
&lt;p&gt;Shipping is not a single moment. It is a process of building, getting feedback, revising, and shipping again. A portfolio that only shows finished products hides the most interesting part of the work.&lt;/p&gt;
&lt;p&gt;Showing an earlier version of something alongside the current version, and explaining what changed and why, demonstrates exactly the kind of iterative judgment that professional environments depend on. It also shows that you can receive feedback and act on it without ego, which is something no amount of polished code can communicate on its own.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;One project built under real constraints is worth more as portfolio evidence than ten side projects built in isolation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-reframe-that-changes-everything&quot;&gt;THE REFRAME THAT CHANGES EVERYTHING&lt;/h2&gt;
&lt;p&gt;The goal of a portfolio is not to show everything you have built. It is to answer one question as clearly as possible: can I trust this person with a real problem?&lt;/p&gt;
&lt;p&gt;Side projects can contribute to that answer. But they need to be presented in a way that generates evidence of judgment, not just capability. The project is context. The thinking is the content.&lt;/p&gt;
&lt;p&gt;If you are currently building a side project, this is not an argument to stop. It is an argument to be more intentional about what you build, how you constrain yourself, and how you talk about it afterward. The project matters less than you think. How you account for it matters more than you probably realise.&lt;/p&gt;
&lt;p&gt;And if you have real projects under your belt, whether freelance, contract, open source, or production work, stop burying them under a list of personal projects built on weekends. That work is the most credible thing in your portfolio. Lead with it.&lt;/p&gt;
&lt;h2 id=&quot;closing-thought&quot;&gt;CLOSING THOUGHT&lt;/h2&gt;
&lt;p&gt;Side projects are a starting point, not a destination. The developers who move fastest are not the ones with the most projects. They are the ones who can articulate most clearly what they learned from building them, why they made the decisions they made, and what they would do differently now.&lt;/p&gt;
&lt;p&gt;That is what shipping looks like from the outside. And that is what a portfolio actually needs to show.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27076/the-portfolio-lie-why-side-projects-do-not-prove-you-can-ship</guid>
<pubDate>Sun, 13 Sep 2026 22:28:24 +0000</pubDate>
</item>
<item>
<title>Improving my developer portfolio — latest changes in v0.1.4</title>
<link>https://coderlegion.com/26534/improving-my-developer-portfolio-latest-changes-in-v0-1-4</link>
<description>&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=17574653229795362667&quot; alt=&quot;&quot;&gt;&lt;br&gt;
I’ve shipped another iteration of my personal portfolio: v0.1.4.&lt;/p&gt;
&lt;p&gt;This update continues the direction I want for the site: less of a conventional resume and more of a structured place to explore my work, projects, experience, tools, and approach to building software.&lt;/p&gt;
&lt;p&gt;The portfolio now uses a more intentional, editorial-style interface while keeping the focus on the work itself particularly the intersection of web development, blockchain, AI-native tooling, and practical product systems.&lt;/p&gt;
&lt;p&gt;I’m still refining it, so I’d value feedback from the CoderLegion community on:&lt;/p&gt;
&lt;p&gt;First impression: does the site quickly communicate what I do?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigation: is it easy to move between my background, projects, experience, and writing?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Presentation: does the design support the content, or does it get in the way?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Professional positioning: would you understand the type of roles, collaborators, or clients I’m looking to work with?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mobile and accessibility: anything I should prioritize in the next update?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explore the latest version here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://jstn.site/&quot;&gt;https://jstn.site/&lt;/a&gt;&lt;br&gt;
If you have direct, critical feedback, I’d genuinely appreciate it. I’m treating this portfolio as an evolving product not a finished page.&lt;/p&gt;
</description>
<category>Discussions</category>
<guid isPermaLink="true">https://coderlegion.com/26534/improving-my-developer-portfolio-latest-changes-in-v0-1-4</guid>
<pubDate>Wed, 09 Sep 2026 02:14:41 +0000</pubDate>
</item>
<item>
<title>How to Build a Portfolio Website That Actually Gets You Hired</title>
<link>https://coderlegion.com/23006/how-to-build-a-portfolio-website-that-actually-gets-you-hired</link>
<description>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I've rebuilt my own portfolio more times than I can count, and every rebuild taught me something the last version got wrong. Most developer portfolios fail for the same handful of reasons — and none of them are &quot;not enough animations&quot; or &quot;not a fancy enough design.&quot;&lt;/p&gt;
&lt;p&gt;This article covers what actually matters, based on what I've learned building my own portfolio and two client portfolio sites.&lt;/p&gt;
&lt;h2 id=&quot;what-a-portfolio-is-actually-for&quot;&gt;What a Portfolio Is Actually For&lt;/h2&gt;
&lt;p&gt;A portfolio has one job: convince someone (a client or a hiring manager) that you can solve their problem. It's not a design showcase for its own sake — every section should answer the visitor's unspoken question, &quot;can this person help me?&quot;&lt;/p&gt;
&lt;h2 id=&quot;the-sections-that-actually-matter&quot;&gt;The Sections That Actually Matter&lt;/h2&gt;
&lt;h3 id=&quot;1-a-clear-headline-not-just-your-name-&quot;&gt;1. A Clear Headline (Not Just Your Name)&lt;/h3&gt;
&lt;p&gt;Weak: &quot;Muhammad Farhan&quot;&lt;br&gt;
Better: &quot;Frontend Developer building fast, clean websites with React &amp;amp; Tailwind CSS&quot;&lt;/p&gt;
&lt;p&gt;The second version tells a visitor exactly what you do within two seconds — no scrolling required.&lt;/p&gt;
&lt;h3 id=&quot;2-3-5-real-projects-quality-over-quantity-&quot;&gt;2. 3-5 Real Projects (Quality Over Quantity)&lt;/h3&gt;
&lt;p&gt;A portfolio with 3 well-explained projects beats one with 10 half-finished ones. For each project, include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A live link (not just a GitHub repo — most non-developers won't clone your code)&lt;/li&gt;
&lt;li&gt;A short description of the problem it solves&lt;/li&gt;
&lt;li&gt;Your specific role and the tech stack used&lt;/li&gt;
&lt;li&gt;1-2 sentences on a challenge you solved&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;Example:
&quot;UX Gazette — A blog platform built for a real client using WordPress.
Customized the theme, set up categories and SEO structure, and optimized
page speed from a 60 to a 92 Lighthouse score.&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That last sentence — a specific, measurable outcome — is worth more than any amount of visual polish.&lt;/p&gt;
&lt;h2 id=&quot;3-about-section-keep-it-short-and-human-&quot;&gt;3. About Section (Keep It Short and Human)&lt;/h2&gt;
&lt;p&gt;Skip the generic &quot;passionate developer who loves clean code&quot; line — everyone writes that. Say something specific: how you started, what you're currently learning, what kind of projects you enjoy.&lt;/p&gt;
&lt;h2 id=&quot;4-clear-contact-options&quot;&gt;4. Clear Contact Options&lt;/h2&gt;
&lt;p&gt;Don't make people hunt for how to reach you. Email, and at minimum one social/professional link (GitHub, LinkedIn), visible without scrolling to the very bottom.&lt;/p&gt;
&lt;h2 id=&quot;what-to-leave-out&quot;&gt;What to Leave Out&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A skills section with progress bars. &quot;HTML — 90%&quot; means nothing measurable — show skill through projects instead, not arbitrary percentages.&lt;/li&gt;
&lt;li&gt;Every single project you've ever built. Tutorial clones and unfinished experiments dilute your best work. Curate ruthlessly.&lt;/li&gt;
&lt;li&gt;Overly complex animations that slow load time. A portfolio that takes 6 seconds to load is actively working against you, no matter how good it looks once it finally does.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;technical-details-that-quietly-matter&quot;&gt;Technical Details That Quietly Matter&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Mobile responsiveness. A huge percentage of visitors, including recruiters, will open your link on their phone first. If it breaks there, that's often the entire impression formed.&lt;/li&gt;
&lt;li&gt;Fast load time. Run it through Lighthouse (see Article 1). Aim for 90+ on performance.&lt;/li&gt;
&lt;li&gt;Working links. Sounds obvious, but broken project links are one of the most common portfolio mistakes I've seen — test every single one before sharing.&lt;/li&gt;
&lt;li&gt;A resume/CV download link, if you're job hunting alongside freelancing.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;real-example-my-own-approach&quot;&gt;Real Example: My Own Approach&lt;/h2&gt;
&lt;p&gt;My portfolio &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://muhammadfarhandev.netlify.app&quot;&gt;Muhammad Farhan&lt;/a&gt;&lt;/strong&gt; follows exactly this structure: a clear one-line headline about React + Tailwind, a curated project section instead of everything I've built, and direct contact info without needing to scroll far. It's not the most visually elaborate portfolio out there — but it's fast, clear, and gets straight to the point.&lt;/p&gt;
&lt;h2 id=&quot;common-beginner-mistakes&quot;&gt;Common Beginner Mistakes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Launching a portfolio, then never updating it. Add your best new project as soon as it's live — an outdated portfolio signals inactivity.&lt;/li&gt;
&lt;li&gt;No live demo links. A GitHub repo alone asks too much of a busy visitor. Deploy everything (see Article 10) and link the live version.&lt;/li&gt;
&lt;li&gt;Copying a template without understanding it. If someone asks about your portfolio's code in an interview and you can't explain a decision, that's a red flag they'll notice.&lt;/li&gt;
&lt;li&gt;Burying your best project. Lead with your strongest, most relevant work — not chronologically, but by impact.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;A great portfolio isn't the flashiest one — it's the clearest one. Someone should be able to land on your site, understand what you do, see proof you can do it, and know how to contact you, all within about 30 seconds. Everything else is secondary.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Muhammad Farhan&lt;/strong&gt; is a Frontend Developer specializing in React.js and Tailwind CSS, based in Dera Ismail Khan, Pakistan.&lt;br&gt;
&lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://muhammadfarhandev.netlify.app&quot;&gt;Muhammad Farhan&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/23006/how-to-build-a-portfolio-website-that-actually-gets-you-hired</guid>
<pubDate>Fri, 21 Aug 2026 05:00:00 +0000</pubDate>
</item>
<item>
<title>What Would You Change About My Developer Portfolio?</title>
<link>https://coderlegion.com/20689/what-would-you-change-about-my-developer-portfolio</link>
<description>&lt;p&gt;Hey everyone, c0d3l0v3r Here&lt;/p&gt;
&lt;p&gt;I'm a final-year B.Tech student preparing for software engineering roles.&lt;/p&gt;
&lt;p&gt;Portfolio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://portfolio-one-rust-77.vercel.app/&quot;&gt;https://portfolio-one-rust-77.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm looking for honest feedback.&lt;br&gt;
If you were a recruiter, hiring manager, or senior developer:&lt;/p&gt;
&lt;p&gt;What stands out immediately?&lt;br&gt;
What looks weak or unnecessary?&lt;br&gt;
Which sections would you remove, improve, or redesign?&lt;br&gt;
Do the projects feel impressive enough for internships or entry-level roles?&lt;br&gt;
Does anything make the site feel unprofessional?&lt;/p&gt;
&lt;p&gt;Feel free to be brutally honest. I'd rather hear harsh feedback here than get silently rejected later.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/20689/what-would-you-change-about-my-developer-portfolio</guid>
<pubDate>Tue, 16 Jun 2026 09:18:56 +0000</pubDate>
</item>
<item>
<title>The Weekend I Finally Finished 17 Projects</title>
<link>https://coderlegion.com/20345/the-weekend-i-finally-finished-17-projects</link>
<description>&lt;p&gt;You know that feeling when you open a folder you haven't touched in months and find... yourself?&lt;/p&gt;
&lt;p&gt;Not metaphorically. I mean literally — old projects you don't even remember writing, with code that's somehow &lt;em&gt;good&lt;/em&gt;? And you're sitting there like, &quot;wait, &lt;em&gt;I&lt;/em&gt; wrote this?&quot;&lt;/p&gt;
&lt;p&gt;That was my Saturday.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-mess&quot;&gt;The Mess&lt;/h3&gt;
&lt;p&gt;I decided it was time. My portfolio was a ghost town. My GitHub was full of half-finished dreams. You know the drill, you start a project, get 80% there, then a shinier thing comes along and suddenly it's gathering dust for a year.&lt;/p&gt;
&lt;p&gt;I had 17 of those.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LIS&lt;/strong&gt; — An AI tutoring app for Cameroonian students. Works offline. Has a &lt;em&gt;Learning DNA&lt;/em&gt; that adapts to how you study. I literally submitted this for a social impact prize and then... just left it there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mbende Stay&lt;/strong&gt; — A booking platform with mobile money payments. Fully functional. Zero visitors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;418 I'm a Teapot&quot;&lt;/strong&gt; — A game where you play as a teapot that can never win and an AI &lt;em&gt;roasts you&lt;/em&gt; every time you fail. I'm not kidding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;elementTouch&lt;/strong&gt; — A JavaScript library I built from scratch. Drag and drop. Typewriter effects. A whole code editor. Just... sitting there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And I'm looking at all of this thinking: &lt;em&gt;bro, you really just built things and then forgot to tell anyone?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So I made a decision: polish them all, put them in my portfolio, and actually show the work.&lt;/p&gt;
&lt;p&gt;First step: build an admin import tool. One click, seed 17 projects into Firestore. Felt like a genius.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;then-the-universe-laughed&quot;&gt;Then the Universe Laughed&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ReferenceError: location is not defined
    at v (.next/server/app/admin/blog/new/page.js:1:11128)
    at y (.next/server/app/admin/projects/import/page.js:1:16875)
    at y (.next/server/app/admin/projects/new/page.js:1:8262)
    at j (.next/server/app/admin/resumes/new/page.js:1:4056)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Four pages. Dead. And I have &lt;em&gt;no idea&lt;/em&gt; where &lt;code&gt;location&lt;/code&gt; is coming from.&lt;/p&gt;
&lt;p&gt;You ever debug a Firebase + Next.js app and feel like you're chasing a ghost? Because I was definitely chasing a ghost.&lt;/p&gt;
&lt;p&gt;Turns out, Firebase's SDK references &lt;code&gt;location&lt;/code&gt; (as in &lt;code&gt;window.location&lt;/code&gt;) at the module level. Not inside a function you call. At &lt;em&gt;import time&lt;/em&gt;. So when Next.js tries to server-render your admin page, Node.js is like &quot;what's &lt;code&gt;location&lt;/code&gt;? never heard of her.&quot;&lt;/p&gt;
&lt;p&gt;The fix?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;import dynamic from &quot;next/dynamic&quot;
export default dynamic(() =&amp;gt; import(&quot;./page.client&quot;), { ssr: false })
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I wrapped each page in &lt;code&gt;next/dynamic&lt;/code&gt; with &lt;code&gt;ssr: false&lt;/code&gt;. Basically told Next.js: &lt;em&gt;&quot;Don't even look at this page on the server. Not once. Not ever. Just send the JS and let the browser figure it out.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Moved all the actual code to &lt;code&gt;page.client.tsx&lt;/code&gt;. Build passed. I felt like a god for approximately 12 minutes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-betrayal&quot;&gt;The Betrayal&lt;/h3&gt;
&lt;p&gt;Then I looked at my blog.&lt;/p&gt;
&lt;p&gt;You see, my blog posts are stored in Firestore as HTML. And somewhere along the way, I'd written them with beautiful Tailwind dark mode classes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;div class=&quot;not-dark:bg-white dark:bg-gray-900 dark:shadow-lg&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here's the problem: &lt;strong&gt;Tailwind v4's JIT compiler has never heard of your database.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It scans your source files — your &lt;code&gt;app/&lt;/code&gt;, your &lt;code&gt;components/&lt;/code&gt;, your &lt;code&gt;lib/&lt;/code&gt;. It does NOT make a Firebase query to find class names.&lt;/p&gt;
&lt;p&gt;So &lt;code&gt;dark:bg-gray-900&lt;/code&gt; in a blog post? Never compiled. It renders as plain text with zero styles. My &quot;beautiful blog content&quot; was just... floating in the void. No background. No shadow. Nothing.&lt;/p&gt;
&lt;p&gt;I sat there staring at the screen feeling personally betrayed by a CSS framework.&lt;/p&gt;
&lt;p&gt;But hey, I fixed it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;function prepareHtml(html: string): string {
  return html.replace(/\b(?:not-)?dark:[^\s&quot;'&amp;gt;]+/g, &quot;&quot;).trim()
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Strip the prefixes. Then override everything with CSS variables:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;.blog-content .text-gray-900 { color: inherit !important; }
.blog-content .bg-white, .blog-content .bg-gray-900 { background: transparent !important; }
.blog-content .shadow-md, .blog-content .shadow-lg { box-shadow: none !important; }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now every hardcoded class respects the theme. Dark mode, light mode, it just works. The blog content is finally alive.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;then-there-were-17&quot;&gt;Then There Were 17&lt;/h3&gt;
&lt;p&gt;So now I've got 17 projects in my portfolio. On one page. One. Grid. Screen. You see the problem.&lt;/p&gt;
&lt;p&gt;I needed pagination. Not the boring kind — something that actually looks good:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chevrons that bounce when you hover&lt;/li&gt;
&lt;li&gt;Page numbers with the accent color on active&lt;/li&gt;
&lt;li&gt;Ellipsis that only show when there's actually a gap&lt;/li&gt;
&lt;li&gt;A quiet little &quot;Page X of Y · N projects&quot; at the bottom&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The button logic nearly broke me. You try handling &quot;first page, last page, exactly 5 pages, exactly 6 pages, ellipsis-or-no-ellipsis&quot; without your brain melting:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;const pages = useMemo(() =&amp;gt; {
  const p: (number | &quot;...&quot;)[] = []
  if (totalPages &amp;lt;= 5) {
    for (let i = 0; i &amp;lt; totalPages; i++) p.push(i)
  } else {
    p.push(0)
    if (safePage &amp;gt; 2) p.push(&quot;...&quot;)
    // ... more edge cases
  }
  return p
}, [safePage, totalPages])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It works. It's clean. I'm proud of it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-i-actually-learned&quot;&gt;What I Actually Learned&lt;/h3&gt;
&lt;h4 id=&quot;1-you-probably-have-better-code-than-you-think&quot;&gt;1. You probably have better code than you think&lt;/h4&gt;
&lt;p&gt;Open that old project. The one you're embarrassed about. I bet it's not as bad as you remember. We're all way too hard on ourselves.&lt;/p&gt;
&lt;h4 id=&quot;2-admin-pages-don-t-need-ssr&quot;&gt;2. Admin pages don't need SSR&lt;/h4&gt;
&lt;p&gt;If your page is behind a login wall, there's zero SEO value in server-rendering it. Just use &lt;code&gt;ssr: false&lt;/code&gt; and save yourself the headache. Your admin panel will survive without being indexed by Google.&lt;/p&gt;
&lt;h4 id=&quot;3-tailwind-v4-jit-is-amazing-until-your-content-is-dynamic&quot;&gt;3. Tailwind v4 JIT is amazing until your content is dynamic&lt;/h4&gt;
&lt;p&gt;If your HTML lives in a database, plan ahead. CSS variables are your escape hatch. Hardcoded utility classes in data strings will come back to haunt you.&lt;/p&gt;
&lt;h4 id=&quot;4-a-portfolio-is-never-done&quot;&gt;4. A portfolio is never done&lt;/h4&gt;
&lt;p&gt;Every time I thought &quot;okay this is final,&quot; I found another project, another bug, another thing to improve. That's not failure. That's just what building in public looks like.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-s-left&quot;&gt;What's Left&lt;/h3&gt;
&lt;p&gt;elementTouch still has 2 unfinished tasks out of 7. I'll get to them.&lt;/p&gt;
&lt;p&gt;And there's a missing &lt;code&gt;admin/blog/edit/[id]&lt;/code&gt; page that keeps crashing the build. One day.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Anyway, that's my weekend. What's the most embarrassing bug you've fought with Next.js + Firebase? Drop it below so I don't feel alone.&lt;br&gt;
Here's my portfolio btw: &lt;a rel=&quot;nofollow&quot; href=&quot;https://adodanielnj.vercel.app/&quot;&gt;Portfolio&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/20345/the-weekend-i-finally-finished-17-projects</guid>
<pubDate>Fri, 12 Jun 2026 00:14:34 +0000</pubDate>
</item>
<item>
<title>Why I Ditched VS Code for Zed (And How It Accelerated My Full-Stack Work on Recipe-Finder.org)</title>
<link>https://coderlegion.com/19598/why-i-ditched-vs-code-for-zed-and-how-it-accelerated-my-full-stack-work-on-recipe-finder-org</link>
<description>&lt;p&gt;For the past few years, VS Code was my comfortable, heavily customized home. It had my extensions, my themes, and a decade's worth of muscle memory. But recently, as my stack evolved heavily into Express.js, Vue 3, and Tailwind CSS, I started noticing the micro-frictions.&lt;/p&gt;
&lt;p&gt;VS Code is an industrial powerhouse, but it is built on Electron. Under the hood, it’s running a wrapped version of Google Chrome. When you are deeply indexing thousands of dependencies inside node_modules, running real-time frontend dev servers, and layering on AI code completions, those micro-stutters and cursor lags start to compound.&lt;/p&gt;
&lt;p&gt;Two weeks ago, I completely cut the cord and switched to Zed—the new open-source, GPU-accelerated code editor written from scratch in Rust.&lt;/p&gt;
&lt;p&gt;Here is the real, unvarnished story of why I made the jump, the brutal financial reality check I ran into with token billing, and how this layout shift dramatically accelerated development on my main production project, recipe-finder.org.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Blazing Speed (The Rust Difference)&lt;br&gt;
The very first thing you notice when you open Zed is that it doesn't &quot;launch&quot;—it just appears. Because it's compiled natively in Rust and uses your computer's graphics card to render text, everything from file searching (Ctrl + P) to global project searching is instantaneous.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When working on the codebase for recipe-finder.org, jumping back and forth between a complex Express backend route and a Vue frontend single-file component used to feel like dragging a heavy cart. In Zed, switching tabs and editing massive lines of code feels buttery smooth. It completely eliminated the cursor lag that used to break my typing flow.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Perfect Out-of-the-Box Tooling for Vue &amp;amp; Tailwind&lt;br&gt;
I was worried that leaving VS Code's massive ecosystem of 50,000+ extensions would break my stack. It didn't.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tailwind CSS: Zed has native support built right in. As I write utility classes inside my .vue templates, autocomplete popups appear flawlessly. Hovering over a class instantly shows the raw CSS output.&lt;/p&gt;
&lt;p&gt;Vue.js: A quick trip to Zed's extension marketplace (Ctrl + Shift + X) to grab the official Vue extension hooked up Volar (the Vue Language Server) seamlessly. Full type-checking, diagnostics, and scoped styling worked instantly.&lt;/p&gt;
&lt;p&gt;Express.js: Because Zed indexes node_modules instantly in the background without locking up the editor UI thread, my Node/Express server setup became incredibly responsive to work with.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Token Price Shock (And How I Fixed It)&lt;br&gt;
If you use Zed’s native AI panel on the right side, you need to understand how it bills. Zed Pro gives you a $5 monthly token credit and then switches to pay-as-you-go raw API costs +10%.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Within my first hour, I burned through $2.63 in just four questions.&lt;/p&gt;
&lt;p&gt;I had massive sticker shock until I realized how LLMs work under the hood. It’s called the Context Snowball Effect. Every time you type a follow-up question in the right-hand panel, Zed bundles the entire chat history plus your active code files and flings them back to the model. You aren't paying for small questions; you are paying the AI to re-read your entire file over and over again from scratch.&lt;/p&gt;
&lt;p&gt;The Solution: The Ultimate Hybrid Workflow&lt;br&gt;
Instead of paying for metered usage-based billing with Zed-hosted models, I leveraged a brilliant feature built directly into the editor: I plugged in my existing $39 GitHub Copilot subscription.&lt;/p&gt;
&lt;p&gt;By pressing Ctrl + Shift + P and running copilot: sign in, I authorized my GitHub account. Then, I switched my right-side AI panel dropdown provider to &quot;GitHub Copilot Chat&quot;.&lt;/p&gt;
&lt;p&gt;Now, I get the flat-rate predictability of Copilot (ask 500 questions a day, leave massive Vue files attached, no extra fees) combined with the lightning-fast, zero-lag editing environment of Zed. It’s the ultimate setup.&lt;/p&gt;
&lt;h3 id=&quot;how-it-accelerated-recipe-finder-org&quot;&gt;How It Accelerated &lt;a rel=&quot;nofollow&quot; href=&quot;http://recipe-finder.org&quot;&gt;Recipe-Finder.org&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We’ve been sprinting hard to push out a massive referral marketing campaign on the site: a brand-new invite portal titled &quot;Get a FREE Month of Premium!&quot;.&lt;/p&gt;
&lt;p&gt;This required writing a specialized absolute overlay over our main Vuetify cards to handle asynchronous loading states smoothly. In my old workflow, tweaking the custom Vue deep selectors (:deep(.v-loader)) and alignment styling while waiting for code completions to catch up was tedious.&lt;/p&gt;
&lt;p&gt;With Zed docked perfectly to my preferences—with the terminal and project panels pushed over to the right side just like VS Code, and the minimap file preview pinned—the cycle time dropped to zero.&lt;/p&gt;
&lt;p&gt;Fragment de cod&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- A snippet of the optimized portal cards we shipped under the new setup --&amp;gt;
&amp;lt;template&amp;gt;
  &amp;lt;v-card loading class=&quot;premium-invite-card&quot;&amp;gt;
    &amp;lt;v-card-title&amp;gt;Get a FREE Month of Premium!&amp;lt;/v-card-title&amp;gt;
    &amp;lt;!-- Referral portal components --&amp;gt;
  &amp;lt;/v-card&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;style scoped&amp;gt;
.premium-invite-card :deep(.v-loader) {
  background-color: rgba(var(--v-theme-surface), 0.85) !important;
  backdrop-filter: blur(6px);
}
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The combination of instant file-saving formatting, snappy inline AI predictions, and zero-latency UI rendering allowed us to prototype, style, and ship the invite portal features significantly faster than before.&lt;/p&gt;
&lt;h3 id=&quot;the-final-verdict&quot;&gt;The Final Verdict&lt;/h3&gt;
&lt;p&gt;If your engineering workflow depends on hyper-niche VS Code extensions (like complex graphical visual debuggers or proprietary database managers), keep VS Code close by.&lt;/p&gt;
&lt;p&gt;But if you are a full-stack developer working in the JavaScript/Node ecosystem, handling reactive frontends, and writing code alongside AI assistants all day, do not sleep on Zed. Connect your existing Copilot key, clean up your layout, and enjoy a text editor that finally keeps up with the speed of your brain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you tried switching to Zed yet, or are you staying loyal to VS Code? Let me know your setup below!&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19598/why-i-ditched-vs-code-for-zed-and-how-it-accelerated-my-full-stack-work-on-recipe-finder-org</guid>
<pubDate>Wed, 03 Jun 2026 17:20:21 +0000</pubDate>
</item>
<item>
<title>Reading obsessively about Stripe for a month taught me one thing that changed how I build billing</title>
<link>https://coderlegion.com/19421/reading-obsessively-about-stripe-for-month-taught-one-thing-that-changed-how-build-billing</link>
<description>&lt;p&gt;daily.dev handed me a &quot;Top Reader&quot; badge for the Stripe topic this month, which is mostly the platform politely telling me I have a problem. But the upside: it forced a pattern I now build around — every Stripe webhook handler has to be idempotent, because Stripe will deliver the same event twice and your &quot;charge succeeded&quot; logic will happily run twice if you let it. Dedup on the event ID before you do anything with side effects. It's the cheapest insurance in payments and the most common thing I see skipped.&lt;br&gt;
What's the billing edge case that bit you hardest — duplicate webhooks, proration math, or failed-payment recovery?&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19421/reading-obsessively-about-stripe-for-month-taught-one-thing-that-changed-how-build-billing</guid>
<pubDate>Mon, 01 Jun 2026 12:10:06 +0000</pubDate>
</item>
<item>
<title>Why I Feel Most Side Projects Fail in Production</title>
<link>https://coderlegion.com/19296/why-i-feel-most-side-projects-fail-in-production</link>
<description>&lt;h4 id=&quot;building-is-fun-running-it-in-production-is-the-real-test-&quot;&gt;Building Is Fun. Running It in Production Is the Real Test.&lt;/h4&gt;
&lt;p&gt;Most developers have at least one side project they’re proud of.&lt;/p&gt;
&lt;p&gt;Maybe it started as a weekend experiment. Maybe it came from frustration with an existing tool. Maybe it was the app idea you were convinced people would love if you could just get it online.&lt;/p&gt;
&lt;p&gt;And to be fair, getting a side project working at all is an achievement. You design the UI, write the backend, connect the database, deploy it somewhere, and finally see it live on the internet. That moment feels amazing.&lt;/p&gt;
&lt;p&gt;But then reality shows up.&lt;/p&gt;
&lt;p&gt;The app goes down after a traffic spike. Login breaks. Database queries slow to a crawl. Error messages start appearing in places you didn’t expect. Small issues pile up, and the project that once felt exciting suddenly becomes exhausting to maintain.&lt;/p&gt;
&lt;p&gt;That is where many side projects quietly die.&lt;/p&gt;
&lt;p&gt;The problem is not that developers lack good ideas. It is not even that the code is always bad. The real issue is that many side projects are built to &lt;strong&gt;launch&lt;/strong&gt;, not to &lt;strong&gt;survive production&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The good news is this: most side projects do not fail because the developer is incapable. They fail because production introduces a completely different set of challenges reliability, scalability, maintenance, user trust, and operational discipline. Once you understand that shift, you start building differently.&lt;/p&gt;
&lt;p&gt;In this post, I want to break down &lt;strong&gt;why most side projects fail in production&lt;/strong&gt;, what developers often underestimate, and how to avoid the common traps that kill promising projects early.&lt;/p&gt;
&lt;h3 id=&quot;the-real-difference-between-a-working-project-and-a-production-ready-project&quot;&gt;The Real Difference Between a Working Project and a Production Ready Project&lt;/h3&gt;
&lt;p&gt;One of the biggest mindset shifts in software development is realizing that a project can be &lt;strong&gt;functional&lt;/strong&gt; without being &lt;strong&gt;production ready&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A side project often works perfectly in a controlled environment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your local machine&lt;/li&gt;
&lt;li&gt;your test account&lt;/li&gt;
&lt;li&gt;your sample data&lt;/li&gt;
&lt;li&gt;your internet connection&lt;/li&gt;
&lt;li&gt;your ideal workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But production is messy.&lt;/p&gt;
&lt;p&gt;Real users behave differently. They click unexpected things. They use weak passwords. They refresh during requests. They upload weird files. They open ten tabs. They forget what you assumed was obvious. They show you where your product is fragile.&lt;/p&gt;
&lt;p&gt;That is why building something that works is only step one. Building something that continues working under real world conditions is where the actual engineering begins.&lt;/p&gt;
&lt;h3 id=&quot;1-most-side-projects-are-built-for-excitement-not-sustainability&quot;&gt;1. Most Side Projects Are Built for Excitement, Not Sustainability&lt;/h3&gt;
&lt;p&gt;Let’s be honest: side projects usually begin with energy, not long term planning.&lt;/p&gt;
&lt;p&gt;You are excited about the idea, the stack, the design, or the problem you want to solve. You want momentum, so you move fast. That speed is often a good thing in the beginning. It helps you ship.&lt;/p&gt;
&lt;p&gt;But the same speed can also create hidden technical debt.&lt;/p&gt;
&lt;p&gt;A lot of side projects are built around questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How fast can I get this live?&lt;/li&gt;
&lt;li&gt;What’s the easiest way to make this work?&lt;/li&gt;
&lt;li&gt;What’s the quickest feature I can show?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those are useful early stage questions. The problem is when they remain the &lt;em&gt;only&lt;/em&gt; questions.&lt;/p&gt;
&lt;p&gt;Production asks different ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What happens when this endpoint fails?&lt;/li&gt;
&lt;li&gt;Can I debug this issue quickly?&lt;/li&gt;
&lt;li&gt;What if 100 users hit this at once?&lt;/li&gt;
&lt;li&gt;How do I roll back a bad deployment?&lt;/li&gt;
&lt;li&gt;What happens if my database gets corrupted?&lt;/li&gt;
&lt;li&gt;Can I maintain this code in six months when I barely remember writing it?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where many developers get trapped. The project was optimized for &lt;strong&gt;shipping fast&lt;/strong&gt;, but not for &lt;strong&gt;operating reliably&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;what-helps-instead-&quot;&gt;What helps instead?&lt;/h4&gt;
&lt;p&gt;Treat even small projects with a bit more production respect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use clear project structure&lt;/li&gt;
&lt;li&gt;write maintainable code, not just clever code&lt;/li&gt;
&lt;li&gt;keep configuration organized&lt;/li&gt;
&lt;li&gt;think about failure states early&lt;/li&gt;
&lt;li&gt;document setup, deployment, and core decisions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You do not need enterprise level complexity. But you do need enough discipline to support the project after the launch excitement fades.&lt;/p&gt;
&lt;h3 id=&quot;2-side-projects-often-ignore-boring-but-critical-production-needs&quot;&gt;2. Side Projects Often Ignore Boring but Critical Production Needs&lt;/h3&gt;
&lt;p&gt;This is probably the biggest reason side projects fail in production: developers focus on visible features and ignore invisible infrastructure.&lt;/p&gt;
&lt;p&gt;Features are fun. Reliability is not glamorous.&lt;/p&gt;
&lt;p&gt;Nobody gets excited tweeting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“I added proper logging”&lt;/li&gt;
&lt;li&gt;“I improved rate limiting”&lt;/li&gt;
&lt;li&gt;“I set up health checks”&lt;/li&gt;
&lt;li&gt;“I created backup and recovery procedures”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But those “boring” things are exactly what keep production systems alive.&lt;/p&gt;
&lt;p&gt;A project can look polished on the surface and still be extremely fragile underneath.&lt;/p&gt;
&lt;h4 id=&quot;common-areas-side-projects-neglect-&quot;&gt;Common areas side projects neglect:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;error handling&lt;/li&gt;
&lt;li&gt;monitoring and observability&lt;/li&gt;
&lt;li&gt;rate limiting&lt;/li&gt;
&lt;li&gt;retries and timeouts&lt;/li&gt;
&lt;li&gt;backup strategy&lt;/li&gt;
&lt;li&gt;security basics&lt;/li&gt;
&lt;li&gt;environment variable management&lt;/li&gt;
&lt;li&gt;deployment rollback plans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When these are missing, even small problems become major incidents.&lt;/p&gt;
&lt;p&gt;For example, if users report that checkout is failing and you have no logs, no alerts, and no tracing, you are not debugging a bug anymore you are guessing in public.&lt;/p&gt;
&lt;p&gt;That is one of the fastest ways for users to lose trust.&lt;/p&gt;
&lt;h4 id=&quot;the-solution&quot;&gt;The solution&lt;/h4&gt;
&lt;p&gt;If you want your side project to survive production, you need to fall in love with operational basics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;add structured logging&lt;/li&gt;
&lt;li&gt;use uptime monitoring&lt;/li&gt;
&lt;li&gt;track key errors&lt;/li&gt;
&lt;li&gt;set up database backups&lt;/li&gt;
&lt;li&gt;validate input properly&lt;/li&gt;
&lt;li&gt;protect APIs with rate limits&lt;/li&gt;
&lt;li&gt;test deployment flow before you need it under pressure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These steps are not “extra.” They are part of the product.&lt;/p&gt;
&lt;h3 id=&quot;3-many-side-projects-break-because-the-developer-is-the-entire-system&quot;&gt;3. Many Side Projects Break Because the Developer Is the Entire System&lt;/h3&gt;
&lt;p&gt;This one is deeply relatable if you have ever solo built something.&lt;/p&gt;
&lt;p&gt;In many side projects, the developer is not just writing code. They are also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the product manager&lt;/li&gt;
&lt;li&gt;the designer&lt;/li&gt;
&lt;li&gt;the QA tester&lt;/li&gt;
&lt;li&gt;the support team&lt;/li&gt;
&lt;li&gt;the DevOps engineer&lt;/li&gt;
&lt;li&gt;the marketer&lt;/li&gt;
&lt;li&gt;the incident response team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That works for a while. But in production, this becomes a bottleneck very quickly.&lt;/p&gt;
&lt;p&gt;If you are the only person who understands how the app works, every issue depends on your availability, energy, and memory. And that becomes dangerous once real users depend on the product.&lt;/p&gt;
&lt;p&gt;A lot of side projects do not fail because the software is terrible. They fail because the maintenance burden becomes too heavy for one person to carry consistently.&lt;/p&gt;
&lt;h4 id=&quot;signs-this-is-happening-&quot;&gt;Signs this is happening:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;you are afraid to change code because you might break something&lt;/li&gt;
&lt;li&gt;deployments feel stressful&lt;/li&gt;
&lt;li&gt;bugs pile up faster than you fix them&lt;/li&gt;
&lt;li&gt;users ask questions and you do not have a clear answer&lt;/li&gt;
&lt;li&gt;you have no documentation, so every task starts with learning your own app again&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;what-helps-&quot;&gt;What helps?&lt;/h4&gt;
&lt;p&gt;Reduce the “only I know how this works” problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;write basic documentation&lt;/li&gt;
&lt;li&gt;automate repetitive tasks&lt;/li&gt;
&lt;li&gt;simplify architecture where possible&lt;/li&gt;
&lt;li&gt;avoid unnecessary services and abstractions&lt;/li&gt;
&lt;li&gt;create a deployment checklist&lt;/li&gt;
&lt;li&gt;leave your future self helpful notes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your future self is part of your team, even if you are building alone.&lt;/p&gt;
&lt;h3 id=&quot;4-developers-underestimate-the-gap-between-demo-traffic-and-real-usage&quot;&gt;4. Developers Underestimate the Gap Between Demo Traffic and Real Usage&lt;/h3&gt;
&lt;p&gt;A side project can feel stable when only you and two friends are using it.&lt;/p&gt;
&lt;p&gt;That does not mean it is ready.&lt;/p&gt;
&lt;p&gt;Production stress exposes weaknesses that local development never reveals. It can be something as simple as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unoptimized database queries&lt;/li&gt;
&lt;li&gt;too many API calls on one page&lt;/li&gt;
&lt;li&gt;memory heavy background jobs&lt;/li&gt;
&lt;li&gt;bad caching decisions&lt;/li&gt;
&lt;li&gt;synchronous operations that should not be blocking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many developers assume scaling problems only happen at massive scale. That is not true.&lt;/p&gt;
&lt;p&gt;Sometimes just a small wave of real users is enough to break an app that was never designed for concurrency, uneven traffic, or messy user behavior.&lt;/p&gt;
&lt;h4 id=&quot;why-this-happens&quot;&gt;Why this happens&lt;/h4&gt;
&lt;p&gt;Because local success creates false confidence. On your machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the database is small&lt;/li&gt;
&lt;li&gt;latency is low&lt;/li&gt;
&lt;li&gt;file storage is simple&lt;/li&gt;
&lt;li&gt;requests are limited&lt;/li&gt;
&lt;li&gt;everything runs under ideal conditions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Production removes those safety rails.&lt;/p&gt;
&lt;h4 id=&quot;what-to-do-instead&quot;&gt;What to do instead&lt;/h4&gt;
&lt;p&gt;You do not need to over engineer for millions of users. But you should build with realistic usage in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;paginate large datasets&lt;/li&gt;
&lt;li&gt;optimize expensive queries&lt;/li&gt;
&lt;li&gt;use caching where it actually helps&lt;/li&gt;
&lt;li&gt;move heavy tasks to background jobs&lt;/li&gt;
&lt;li&gt;test with seeded data, not just empty tables&lt;/li&gt;
&lt;li&gt;measure performance before users complain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A production ready side project is not one that scales infinitely. It is one that handles its expected load responsibly.&lt;/p&gt;
&lt;h3 id=&quot;5-security-is-often-treated-like-a-future-upgrade&quot;&gt;5. Security Is Often Treated Like a Future Upgrade&lt;/h3&gt;
&lt;p&gt;This is a serious one.&lt;/p&gt;
&lt;p&gt;A lot of side projects treat security as something to “tighten later.” But if your app is public, then “later” may already be too late.&lt;/p&gt;
&lt;p&gt;Developers sometimes think:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Nobody will target my small app.”&lt;/li&gt;
&lt;li&gt;“It’s just a side project.”&lt;/li&gt;
&lt;li&gt;“I’ll improve auth after launch.”&lt;/li&gt;
&lt;li&gt;“This admin route is obscure enough.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately, the internet does not care whether your app is a side project or a funded startup.&lt;/p&gt;
&lt;p&gt;If it is public, it can be abused.&lt;/p&gt;
&lt;h4 id=&quot;common-security-gaps-in-side-projects-&quot;&gt;Common security gaps in side projects:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;weak authentication flows&lt;/li&gt;
&lt;li&gt;poor session handling&lt;/li&gt;
&lt;li&gt;exposed secrets&lt;/li&gt;
&lt;li&gt;missing input validation&lt;/li&gt;
&lt;li&gt;insecure file uploads&lt;/li&gt;
&lt;li&gt;no rate limiting&lt;/li&gt;
&lt;li&gt;overly permissive APIs&lt;/li&gt;
&lt;li&gt;lack of authorization checks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the painful part is that one security issue can erase user trust immediately.&lt;/p&gt;
&lt;h4 id=&quot;the-better-mindset&quot;&gt;The better mindset&lt;/h4&gt;
&lt;p&gt;Treat basic security like a product requirement from day one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;validate and sanitize input&lt;/li&gt;
&lt;li&gt;hash passwords correctly&lt;/li&gt;
&lt;li&gt;protect secrets&lt;/li&gt;
&lt;li&gt;verify authorization, not just authentication&lt;/li&gt;
&lt;li&gt;limit abuse with rate controls&lt;/li&gt;
&lt;li&gt;use proven libraries for auth flows where possible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Security does not have to be perfect on day one, but it must be taken seriously.&lt;/p&gt;
&lt;h3 id=&quot;6-too-many-side-projects-are-built-on-overcomplicated-architecture&quot;&gt;6. Too Many Side Projects Are Built on Overcomplicated Architecture&lt;/h3&gt;
&lt;p&gt;This may sound ironic, but sometimes side projects fail not because they are too simple but because they are too ambitious architecturally.&lt;/p&gt;
&lt;p&gt;A lot of developers, especially when excited, build side projects like they are designing the next global platform.&lt;/p&gt;
&lt;p&gt;Suddenly the “simple app” includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;microservices&lt;/li&gt;
&lt;li&gt;event buses&lt;/li&gt;
&lt;li&gt;multiple databases&lt;/li&gt;
&lt;li&gt;complex CI/CD pipelines&lt;/li&gt;
&lt;li&gt;premature abstractions&lt;/li&gt;
&lt;li&gt;layers of tooling that are hard to debug&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The project becomes impressive on paper, but painful to maintain.&lt;/p&gt;
&lt;p&gt;The more moving parts you add, the more production surface area you create for bugs, outages, and deployment issues.&lt;/p&gt;
&lt;p&gt;For a small product, complexity kills momentum.&lt;/p&gt;
&lt;h4 id=&quot;what-usually-works-better&quot;&gt;What usually works better&lt;/h4&gt;
&lt;p&gt;Choose boring, reliable solutions where possible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one backend if one backend is enough&lt;/li&gt;
&lt;li&gt;one database if one database is enough&lt;/li&gt;
&lt;li&gt;simple deployment workflows&lt;/li&gt;
&lt;li&gt;fewer services to monitor&lt;/li&gt;
&lt;li&gt;fewer places for failures to hide&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A side project does not become more serious because it is more complex. It becomes more serious when it is dependable.&lt;/p&gt;
&lt;h3 id=&quot;7-feedback-loops-are-weak-so-problems-stay-hidden-too-long&quot;&gt;7. Feedback Loops Are Weak, So Problems Stay Hidden Too Long&lt;/h3&gt;
&lt;p&gt;One reason side projects die in production is that developers often have poor visibility into what users are actually experiencing.&lt;/p&gt;
&lt;p&gt;If users silently struggle and you do not know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;where they drop off&lt;/li&gt;
&lt;li&gt;what errors they see&lt;/li&gt;
&lt;li&gt;which features they ignore&lt;/li&gt;
&lt;li&gt;what confuses them&lt;/li&gt;
&lt;li&gt;what breaks on certain devices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then you are not improving the product based on reality. You are improving it based on assumptions.&lt;/p&gt;
&lt;p&gt;That is dangerous.&lt;/p&gt;
&lt;h4 id=&quot;healthy-production-feedback-loops-include-&quot;&gt;Healthy production feedback loops include:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;user feedback channels&lt;/li&gt;
&lt;li&gt;bug reports&lt;/li&gt;
&lt;li&gt;analytics on important flows&lt;/li&gt;
&lt;li&gt;error tracking&lt;/li&gt;
&lt;li&gt;basic performance monitoring&lt;/li&gt;
&lt;li&gt;support messages that are easy to act on&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without feedback loops, a side project can feel “fine” to the developer while frustrating actual users enough to make them leave.&lt;/p&gt;
&lt;h4 id=&quot;solution&quot;&gt;Solution&lt;/h4&gt;
&lt;p&gt;Build simple ways to learn from real usage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;add error reporting tools&lt;/li&gt;
&lt;li&gt;monitor key user actions&lt;/li&gt;
&lt;li&gt;make it easy for users to report issues&lt;/li&gt;
&lt;li&gt;review logs and analytics regularly&lt;/li&gt;
&lt;li&gt;talk to early users directly if possible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Production success is not just about uptime. It is also about learning fast.&lt;/p&gt;
&lt;h3 id=&quot;8-motivation-drops-once-the-project-stops-feeling-new&quot;&gt;8. Motivation Drops Once the Project Stops Feeling New&lt;/h3&gt;
&lt;p&gt;This is the most human reason of all.&lt;/p&gt;
&lt;p&gt;A lot of side projects fail in production because once the initial excitement fades, maintenance starts to feel like work.&lt;/p&gt;
&lt;p&gt;And honestly, it is work.&lt;/p&gt;
&lt;p&gt;Shipping version one feels creative and energizing. Maintaining version one after bug reports, edge cases, user requests, and deployment stress feels very different.&lt;/p&gt;
&lt;p&gt;That is where many side projects lose momentum:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the dopamine of building is gone&lt;/li&gt;
&lt;li&gt;the hard parts are now visible&lt;/li&gt;
&lt;li&gt;users want stability more than novelty&lt;/li&gt;
&lt;li&gt;the developer wants to move on to the next idea&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is normal. It does not make you a bad developer.&lt;/p&gt;
&lt;p&gt;But it does explain why many projects disappear after launch.&lt;/p&gt;
&lt;h4 id=&quot;what-helps-here-&quot;&gt;What helps here?&lt;/h4&gt;
&lt;p&gt;Be honest about the kind of project you are building.&lt;/p&gt;
&lt;p&gt;Ask yourself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do I want to experiment, or do I want to maintain?&lt;/li&gt;
&lt;li&gt;Am I building a portfolio piece, a learning project, or a real product?&lt;/li&gt;
&lt;li&gt;Do I actually want users, or do I just want to prove I can build it?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those are different goals, and they require different commitments.&lt;/p&gt;
&lt;p&gt;Many side projects fail because the developer wanted to build a product but only planned for a prototype.&lt;/p&gt;
&lt;h3 id=&quot;how-to-give-your-side-project-a-better-chance-in-production&quot;&gt;How to Give Your Side Project a Better Chance in Production&lt;/h3&gt;
&lt;p&gt;If you want your project to survive beyond the launch phase, here are a few practical principles that matter:&lt;/p&gt;
&lt;h4 id=&quot;start-simpler-than-you-think&quot;&gt;Start simpler than you think&lt;/h4&gt;
&lt;p&gt;Simple systems are easier to debug, deploy, and maintain.&lt;/p&gt;
&lt;h4 id=&quot;build-for-recovery-not-just-success&quot;&gt;Build for recovery, not just success&lt;/h4&gt;
&lt;p&gt;Assume things will fail. Plan for how you will detect, fix, and recover from those failures.&lt;/p&gt;
&lt;h4 id=&quot;add-visibility-early&quot;&gt;Add visibility early&lt;/h4&gt;
&lt;p&gt;Logs, monitoring, analytics, and alerts save time and reduce panic.&lt;/p&gt;
&lt;h4 id=&quot;respect-performance-before-it-becomes-a-crisis&quot;&gt;Respect performance before it becomes a crisis&lt;/h4&gt;
&lt;p&gt;You do not need massive scale to need decent performance practices.&lt;/p&gt;
&lt;h4 id=&quot;take-security-seriously&quot;&gt;Take security seriously&lt;/h4&gt;
&lt;p&gt;Even a small public app deserves strong basics.&lt;/p&gt;
&lt;h4 id=&quot;be-realistic-about-maintenance&quot;&gt;Be realistic about maintenance&lt;/h4&gt;
&lt;p&gt;A project with users becomes an ongoing responsibility.&lt;/p&gt;
&lt;h4 id=&quot;define-the-project-clearly&quot;&gt;Define the project clearly&lt;/h4&gt;
&lt;p&gt;Know whether you are building a learning experiment, portfolio project, or real long term product.&lt;/p&gt;
&lt;p&gt;That clarity changes your decisions.&lt;/p&gt;
&lt;h3 id=&quot;conclusion-most-side-projects-don-t-fail-because-the-idea-was-bad&quot;&gt;Conclusion: Most Side Projects Don’t Fail Because the Idea Was Bad&lt;/h3&gt;
&lt;p&gt;They fail because production is where software stops being theoretical.&lt;/p&gt;
&lt;p&gt;That is where assumptions get tested. That is where weak architecture gets exposed. That is where missing monitoring, poor security, shaky performance, and unclear ownership become real problems.&lt;/p&gt;
&lt;p&gt;As developers, it is easy to focus on getting to “live.” But live is not the finish line. It is the beginning of a very different phase.&lt;/p&gt;
&lt;p&gt;If there is one lesson I keep coming back to, it is this: &lt;strong&gt;a side project that survives production is not usually the flashiest one. It is the one that was built with enough care, humility, and realism to handle the messiness of real users.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So if you are building your next side project, absolutely move fast. Experiment. Ship. Learn.&lt;/p&gt;
&lt;p&gt;But while you are building, ask yourself one important question:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If real users start depending on this tomorrow, would this project hold up?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That question alone can change how you build.&lt;/p&gt;
&lt;p&gt;If this post resonated with you, share it with another developer who is building in public, launching side projects, or learning what production really means. And if you’ve had a side project break in production before, you’re definitely not alone that experience is practically part of the developer journey.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19296/why-i-feel-most-side-projects-fail-in-production</guid>
<pubDate>Sat, 30 May 2026 11:39:05 +0000</pubDate>
</item>
<item>
<title>How I Built a Hospital Management System with Laravel</title>
<link>https://coderlegion.com/18881/how-i-built-a-hospital-management-system-with-laravel</link>
<description>&lt;p&gt;Hey everyone! I'm Ibtisam, a developer from Somaliland learning full-stack web development. Recently, I built MediTrack, a hospital management system with Laravel, and I want to share what I learned along the way.&lt;/p&gt;
&lt;h3 id=&quot;why-i-built-meditrack&quot;&gt;Why I Built MediTrack&lt;/h3&gt;
&lt;p&gt;I wanted to understand how real-world applications work beyond simple CRUD projects. Healthcare systems seemed like a perfect challenge because they involve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple user roles (Admin, Doctor, Receptionist)&lt;/li&gt;
&lt;li&gt;Complex data relationships (Doctors → Patients → Appointments)&lt;/li&gt;
&lt;li&gt;Real business logic (managing prescriptions, lab tests)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I built MediTrack to learn and create a solid portfolio project.&lt;/p&gt;
&lt;h3 id=&quot;what-meditrack-does&quot;&gt;What MediTrack Does&lt;/h3&gt;
&lt;p&gt;It's a role-based hospital management system that helps clinics manage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doctors&lt;/li&gt;
&lt;li&gt;Patients&lt;/li&gt;
&lt;li&gt;Appointments&lt;/li&gt;
&lt;li&gt;Prescriptions&lt;/li&gt;
&lt;li&gt;Lab Tests&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;features-&quot;&gt;Features:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Secure authentication (login/register)&lt;/li&gt;
&lt;li&gt;Real-time dashboard with statistics&lt;/li&gt;
&lt;li&gt;Full CRUD operations for all modules&lt;/li&gt;
&lt;li&gt;Search functionality&lt;/li&gt;
&lt;li&gt;Responsive Bootstrap UI&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-tech-stack-and-why-&quot;&gt;The Tech Stack (And Why)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Laravel&lt;/strong&gt; – Powerful yet beginner-friendly framework with great routing and authentication&lt;br&gt;
&lt;strong&gt;MySQL&lt;/strong&gt; – Handles complex database relationships easily&lt;br&gt;
&lt;strong&gt;Bootstrap 5&lt;/strong&gt; – Build a clean UI without spending time on CSS&lt;br&gt;
&lt;strong&gt;Blade Templates&lt;/strong&gt; – Dynamic templating that feels natural in PHP&lt;/p&gt;
&lt;h3 id=&quot;the-3-biggest-challenges-and-how-i-solved-them-&quot;&gt;The 3 Biggest Challenges (And How I Solved Them)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Database Design&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Problem: Connecting Doctors, Patients, Appointments, and Prescriptions without breaking things.&lt;/p&gt;
&lt;p&gt;Solution: I learned about Laravel relationships (hasMany, belongsTo) and spent time planning my schema before coding. This saved me from major refactoring later.&lt;/p&gt;
&lt;p&gt;Lesson: Plan your database first. It's harder to change later.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Authentication &amp;amp; Authorization&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Problem: Different users (Admin, Doctor, Receptionist) need different dashboards and permissions.&lt;/p&gt;
&lt;p&gt;Solution: Used Laravel's built-in middleware and route guards to check user roles before showing data.&lt;/p&gt;
&lt;p&gt;Lesson: Never trust the frontend for security. Always validate on the backend.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Getting Real-Time Statistics&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Problem: The dashboard needed to show live counts of doctors, patients, appointments, etc.&lt;/p&gt;
&lt;p&gt;Solution: Used Laravel's query builders and Eloquent to aggregate data efficiently, then displayed it with simple JavaScript.&lt;/p&gt;
&lt;p&gt;Lesson: Database queries matter. Bad queries slow down your app fast.&lt;/p&gt;
&lt;h3 id=&quot;here-s-what-it-looks-like&quot;&gt;Here's What It Looks Like&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=15611261109797804361&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Managing Doctors&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=15142344309849620613&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patients Overview&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=8099417863890384089&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Appointments Management&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=10356771585695753484&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Labs Management&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=875916281168707232&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medication Management&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=10098591982593995947&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;key-lessons-for-beginners&quot;&gt;Key Lessons for Beginners&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start with a real problem&lt;/strong&gt; – Don't build random projects. Build something that solves a real need.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plan before coding&lt;/strong&gt; – Spend 30 minutes sketching your database. It saves hours later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use the framework's tools&lt;/strong&gt; – Laravel has authentication, routing, and validation built-in. Use them instead of reinventing the wheel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test locally first&lt;/strong&gt; – Make sure features work before pushing to production.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document your code&lt;/strong&gt; – Future you (and contributors) will thank you.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;check-it-out&quot;&gt;Check It Out&lt;/h3&gt;
&lt;p&gt;Want to see the full code, contribute, or just browse around?&lt;/p&gt;
&lt;p&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/adventureibtisam111/meditrack&quot;&gt;github.com/adventureibtisam111/meditrack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If MediTrack helped you learn something or you find it useful, I'd love your support:&lt;/p&gt;
&lt;p&gt;⭐ Star the repo – Shows other developers it's helpful&lt;/p&gt;
&lt;p&gt; Drop feedback – Issues and suggestions are welcome&lt;/p&gt;
&lt;p&gt; [Sponsor my work] (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sponsors/adventureibtisam111&quot;&gt;https://github.com/sponsors/adventureibtisam111&lt;/a&gt;)  – Helps me build more educational projects like this&lt;/p&gt;
&lt;p&gt;That's it! Building MediTrack taught me that full-stack development isn't magic—it's just solving problems step by step.&lt;/p&gt;
&lt;p&gt;If you're learning Laravel or building your first full-stack project, I hope MediTrack inspires you. Let me know if you have questions or want to collaborate!&lt;/p&gt;
&lt;p&gt;Happy coding! &lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/18881/how-i-built-a-hospital-management-system-with-laravel</guid>
<pubDate>Mon, 25 May 2026 12:07:28 +0000</pubDate>
</item>
<item>
<title>Building &quot;Dev Wrapped&quot; in 3 Days: A daily.dev Hackathon Project (API + LLM + OG Images)</title>
<link>https://coderlegion.com/18880/building-dev-wrapped-in-3-days-a-daily-dev-hackathon-project-api-llm-og-images</link>
<description>&lt;p&gt;daily.dev ran a 3-day hackathon (May 20–23, 2026) opening up their Public API. I built Dev Wrapped — Spotify Wrapped, but for your daily.dev reading history. This post walks through how I shipped it, what choices I made, and what I'd do differently.&lt;/p&gt;
&lt;p&gt;Live demo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://hackathon-one-eta.vercel.app&quot;&gt;https://hackathon-one-eta.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The product&lt;br&gt;
Paste your daily.dev Personal Access Token → get back a shareable card showing:&lt;/p&gt;
&lt;p&gt;Total articles read in the timeframe&lt;br&gt;
Top 5 tags with article counts&lt;br&gt;
Top 3 sources&lt;br&gt;
Reading rhythm (peak day / peak month)&lt;br&gt;
An AI-generated &quot;developer persona&quot; — a 2–4 word archetype name with a one-sentence blurb&lt;br&gt;
A permalink with a dynamic OG image for social sharing&lt;/p&gt;
&lt;p&gt;The architecture&lt;br&gt;
The whole thing is intentionally simple, because 5-day projects fall apart when you over-engineer:&lt;br&gt;
User → React/TypeScript frontend (PAT input)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; → Vercel serverless function (generate)
       → daily.dev Public API (fetch reading history)
       → Stats engine (compute top tags, sources, rhythm)
       → Groq LLM (generate persona, JSON-constrained output)
       → Store result keyed by short ID
 → Redirect to /wrapped/{id}
 → Dynamic OG image rendered server-side
 → Share button (pre-filled tweet)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No database in the traditional sense. No auth system. No user accounts. PAT in → result out → never stored.&lt;br&gt;
Design decisions worth talking about&lt;br&gt;
PAT auth eliminates 80% of the work. The user brings their own daily.dev credential. I never have to build login, sessions, OAuth, or a user table. One API call uses their PAT, then it's discarded. This pattern is wildly underused for demo and hackathon projects.&lt;br&gt;
Strict JSON output from the LLM. The persona prompt ends with: &quot;Return ONLY valid JSON in this exact format, no markdown, no preamble.&quot; The schema is { personaName, personaBlurb }. Two upsides: trivial parsing with JSON.parse(), and the output structure is enforced. If the LLM fails to return valid JSON (rare), I fall back to a generic persona rather than crashing.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/18880/building-dev-wrapped-in-3-days-a-daily-dev-hackathon-project-api-llm-og-images</guid>
<pubDate>Mon, 25 May 2026 11:50:06 +0000</pubDate>
</item>
<item>
<title>We Didn't Ask for AI That Does Tasks. We Asked for AI That Remembers.</title>
<link>https://coderlegion.com/18741/we-didnt-ask-for-ai-that-does-tasks-we-asked-for-ai-that-remembers</link>
<description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/challenges/google-gemma-2026-05-06&quot;&gt;Gemma 4 Challenge: Write about Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Every AI assistant I have used starts the same way.&lt;/p&gt;
&lt;p&gt;A blank input field. No memory of yesterday. No idea who you are, what you have been working on, or why you are here. Every session, you explain yourself from scratch. Every session, the context you built up — the decisions, the dead ends, the reasoning — vanishes the moment you close the window.&lt;/p&gt;
&lt;p&gt;We accepted this as normal. I no longer think it is.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-problem-is-not-intelligence-it-is-amnesia-&quot;&gt;The Problem Is Not Intelligence. It Is Amnesia.&lt;/h3&gt;
&lt;p&gt;The current generation of AI assistants is remarkably capable. They reason, they write, they debug. But they are &lt;strong&gt;stateless by default&lt;/strong&gt; — each conversation an island, disconnected from the one before it.&lt;/p&gt;
&lt;p&gt;This creates a hidden cost that we rarely talk about. Not the cost of compute, or latency, or accuracy. The cost of &lt;strong&gt;re-explaining yourself, every single day.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you work with an AI assistant regularly, you know the feeling:&lt;/p&gt;
&lt;p&gt; &lt;em&gt;&quot;As I mentioned before...&quot;&lt;/em&gt;&lt;br&gt;
 &lt;em&gt;&quot;To give you some context, I am working on...&quot;&lt;/em&gt;&lt;br&gt;
 &lt;em&gt;&quot;We already decided that we would...&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You are not talking to a partner. You are filling in a form. Every time.&lt;/p&gt;
&lt;p&gt;The gap is not capability. It is memory.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-i-built-to-think-in-parallel&quot;&gt;What I Built to Think in Parallel&lt;/h3&gt;
&lt;p&gt;To explore this problem, I built &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/pepepepepepo/g4-nexus&quot;&gt;g4-nexus&lt;/a&gt; — a parallel persona engine powered by Gemma 4.&lt;/p&gt;
&lt;p&gt;Instead of asking one model one question, g4-nexus runs &lt;strong&gt;three specialized worker personas simultaneously&lt;/strong&gt;, then a fourth leader synthesizes their outputs into a single integrated response. The workers — Mochi (emotion), Jun (logic), Uruu (analysis) — run in parallel via &lt;code&gt;asyncio.gather&lt;/code&gt;. The leader, Koyomi, holds the whole picture and responds.&lt;/p&gt;
&lt;p&gt;What this unlocked was surprising. Not just speed, but &lt;strong&gt;perspective&lt;/strong&gt;. A single model gives you &lt;em&gt;an&lt;/em&gt; answer. g4-nexus gives you a conversation between angles — emotional grounding, logical structure, and critical observation — all at once.&lt;/p&gt;
&lt;p&gt;But after running it for a while, I noticed something.&lt;/p&gt;
&lt;p&gt;g4-nexus could think in parallel. It could not remember across time.&lt;/p&gt;
&lt;p&gt;Every session, Mochi had no idea what we worked on yesterday. Jun had no memory of the decisions we made last week. Koyomi could synthesize beautifully in the moment, but the moment always ended. The slate was always wiped clean.&lt;/p&gt;
&lt;p&gt;The thinking was there. The memory was not.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;why-memory-is-the-missing-half&quot;&gt;Why Memory Is the Missing Half&lt;/h3&gt;
&lt;p&gt;There is a difference between an AI that &lt;em&gt;processes&lt;/em&gt; and an AI that &lt;em&gt;knows you&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Processing is impressive. But knowing you — knowing your project's history, the choices you made and why, what worked and what didn't — that is what makes the difference between a tool and a partner.&lt;/p&gt;
&lt;p&gt;Consider what a real collaborator remembers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What you tried last week and why it didn't work&lt;/li&gt;
&lt;li&gt;The decision you made that you later regretted&lt;/li&gt;
&lt;li&gt;The thing you said offhand that turned out to be important&lt;/li&gt;
&lt;li&gt;The context that makes today's question make sense&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of that lives in a single conversation. It lives in &lt;strong&gt;accumulated time&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Gemma 4's small, steerable models make it practical to run multiple specialized instances locally. But the deeper opportunity they unlock is not just parallel thinking — it is &lt;strong&gt;persistent identity&lt;/strong&gt;. A small model that stays on, that accumulates context, that writes its own notes and reads them back the next morning.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-comes-next&quot;&gt;What Comes Next&lt;/h3&gt;
&lt;p&gt;g4-nexus is the first half. The second half is memory.&lt;/p&gt;
&lt;p&gt;We are moving toward a system where each persona maintains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session logs&lt;/strong&gt; — what happened today, in the persona's own words&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handover notes&lt;/strong&gt; — what the next session needs to know&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Morning briefings&lt;/strong&gt; — auto-generated summaries written overnight, ready before the first message&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory files&lt;/strong&gt; — accumulated context that persists across weeks, not just minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not cloud memory. Local memory. Files on disk, readable and inspectable. Owned by the user, not by a platform.&lt;/p&gt;
&lt;p&gt;The direction is this: AI shouldn't just respond to you. It should &lt;strong&gt;remember you&lt;/strong&gt;. It should carry yesterday into today, and today into tomorrow. Not as a feature — as the foundation.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;a-different-question&quot;&gt;A Different Question&lt;/h3&gt;
&lt;p&gt;We have spent years asking: &lt;em&gt;how do we make AI smarter?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The better question might be: &lt;em&gt;how do we make AI remember?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Intelligence without memory is impressive at a party. It cannot build anything with you over time. It cannot be trusted with a project, a relationship, a long-term goal — because it forgets you the moment the session ends.&lt;/p&gt;
&lt;p&gt;The hardware exists. The models exist. Gemma 4's small, local models make it accessible without cloud infrastructure or enterprise budgets. What remains is the architecture — the discipline of writing memory down, carrying it forward, and letting it accumulate into something that feels less like a tool and more like a presence that has been with you.&lt;/p&gt;
&lt;p&gt;That is what I am building toward.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/pepepepepepo/g4-nexus&quot;&gt;pepepepepepo/g4-nexus&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Build track article: &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/kato_masato_c5593c81af5c6/i-built-a-4-persona-parallel-ai-engine-with-gemma-4-and-let-it-write-this-article-544a&quot;&gt;I Built a 4-Persona Parallel AI Engine with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/18741/we-didnt-ask-for-ai-that-does-tasks-we-asked-for-ai-that-remembers</guid>
<pubDate>Sat, 23 May 2026 09:15:27 +0000</pubDate>
</item>
<item>
<title>AI Developer | API Integration | Full Stack - Updated my portfolio website</title>
<link>https://coderlegion.com/17440/ai-developer-api-integration-full-stack-updated-my-portfolio-website</link>
<description>&lt;p&gt;AI Automation and Agents Developer building intelligent systems and modern web applications. Passionate about machine learning, deep learning, and creating next-gen autonomous agents.&lt;/p&gt;
&lt;p&gt;I am a self-taught AI Automation and Agents Developer from Remote. I build intelligent systems, chatbots, and modern web applications with blockchain integration. My expertise includes Machine Learning, Deep Learning, NLP, Smart Contracts, Web3 development, and Full-Stack Web Development with React, Next.js, Node.js, Solidity, and Python. I specialize in creating decentralized applications (dApps), DeFi solutions, and autonomous AI agents. Currently building next-gen AI Agents and JARVIS-like Personal Assistants. Code is poetry, AI is the canvas.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/17440/ai-developer-api-integration-full-stack-updated-my-portfolio-website</guid>
<pubDate>Mon, 11 May 2026 15:07:35 +0000</pubDate>
</item>
<item>
<title>I rebuilt my developer portfolio — focused on systems that scale</title>
<link>https://coderlegion.com/16350/i-rebuilt-my-developer-portfolio-focused-on-systems-that-scale</link>
<description>&lt;p&gt;Hey everyone! I’ve been refining my portfolio to better reflect the kind of work I enjoy most: building reliable, scalable systems and clean user experiences.&lt;/p&gt;
&lt;p&gt;Portfolio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://chris-dev.netlify.app/&quot;&gt;https://chris-dev.netlify.app/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What you’ll find:&lt;br&gt;
• Real-world projects (not just tutorials)&lt;br&gt;
• Backend-heavy work (Go, Laravel)&lt;br&gt;
• Frontend with Vue / modern tooling&lt;br&gt;
• Focus on performance, structure, and maintainability&lt;/p&gt;
&lt;p&gt;I’m currently exploring new opportunities where I can contribute to meaningful systems and continue growing as an engineer.&lt;/p&gt;
&lt;p&gt;If you’re working on something interesting or think I could be a good fit for your team, feel free to reach out I’d love to connect.&lt;/p&gt;
&lt;p&gt;Also open to feedback from fellow devs &lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/16350/i-rebuilt-my-developer-portfolio-focused-on-systems-that-scale</guid>
<pubDate>Fri, 01 May 2026 21:23:47 +0000</pubDate>
</item>
<item>
<title>Your Personal Website Is Losing You Opportunities — Here's How to Fix It</title>
<link>https://coderlegion.com/16203/your-personal-website-is-losing-you-opportunities-heres-how-to-fix-it</link>
<description>&lt;p&gt;Most developer portfolios look fine. Clean layout, dark theme, GitHub links, maybe a splash of green terminal aesthetic. And yet — silence. No recruiter emails, no client inquiries, no speaking invites.&lt;/p&gt;
&lt;p&gt;The problem usually isn't the design. It's the architecture of decisions behind it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It's a Decision System, Not a Gallery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When someone lands on your personal site, they're not admiring your work — they're running a quick risk assessment: &lt;em&gt;Is this person relevant to my problem? Do I trust their capability? Is it worth my time to reach out?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If those three questions aren't answered within the first screen, even genuinely strong work gets ignored.&lt;/p&gt;
&lt;p&gt;The fix starts before you touch a template. Define one specific objective for your site this quarter. Not &quot;look professional&quot; — something measurable, like &quot;&lt;em&gt;get discovery calls from early-stage startup founders&quot;&lt;/em&gt; or &lt;em&gt;&quot;land a senior frontend role at a product company.&lt;/em&gt;&quot; That anchor makes every copy and layout decision obvious.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The First Screen Is Doing Too Little&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Audit your hero section right now. Does it say:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Who you help&lt;/strong&gt; (not just your job title)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What outcome you drive&lt;/strong&gt; (not just your tech stack)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What to do next&lt;/strong&gt; (one clear CTA, not five links)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A line like &quot;I help product teams improve activation through conversion-focused UX&quot; communicates more trust in 10 words than a three-paragraph bio does in 300.&lt;/p&gt;
&lt;p&gt;Broad labels like &quot;Full-Stack Developer&quot; or &quot;Creative Engineer&quot; are resume language. Your website visitor needs decision language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Portfolio ≠ Evidence&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A grid of project screenshots is not proof. Proof is context: what was the problem, what was your specific contribution, what changed as a result?&lt;/p&gt;
&lt;p&gt;For each project, write three things:&lt;/p&gt;
&lt;p&gt;1.The constraint or challenge&lt;br&gt;
2.Your key decision&lt;br&gt;
3.The measurable or observable outcome&lt;/p&gt;
&lt;p&gt;That format turns a gallery into a case study — and case studies convert browsers into clients or hiring managers into advocates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One CTA Per Page. That's It.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The most common conversion killer on developer portfolios is CTA competition. GitHub, LinkedIn, email, resume download, blog, &quot;let's chat&quot; — all on the same screen.&lt;/p&gt;
&lt;p&gt;Pick one primary action per page. Everything else becomes secondary or disappears. Visitors who don't know what you want them to do... leave.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile Is Where Opportunities Actually Come From&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most portfolio traffic arrives via a LinkedIn message, a Twitter bio click, or a Slack DM — all mobile contexts. If your site loads slow or your CTA is buried below the fold on a phone, you're losing the warmest leads.&lt;/p&gt;
&lt;p&gt;Test on a real device, not just Chrome DevTools. Load it on a slow 4G connection. That experience is the real first impression for a significant chunk of visitors.&lt;/p&gt;
&lt;p&gt;For a deeper breakdown of structuring each page as a conversion layer — including offer pages, testimonial design, and 30-60-90 day execution planning — this &lt;a rel=&quot;nofollow&quot; href=&quot;https://unicornplatform.com/blog/high-performance-personal-website-strategy-in-2026/&quot;&gt;high-performance personal website strategy guide&lt;/a&gt; is worth the read.&lt;/p&gt;
&lt;p&gt;The short version: your site should answer &quot;can this person solve my problem?&quot; within seconds. If it can't, everything else is noise.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What's the one thing on your portfolio you'd change first? Drop it in the comments.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/16203/your-personal-website-is-losing-you-opportunities-heres-how-to-fix-it</guid>
<pubDate>Wed, 29 Apr 2026 15:35:30 +0000</pubDate>
</item>
<item>
<title>Your Portfolio Is Probably Missing This One Thing (And It Matters More Than You Think)</title>
<link>https://coderlegion.com/16064/your-portfolio-is-probably-missing-this-one-thing-and-it-matters-more-than-you-think</link>
<description>&lt;p&gt;A lot of developers spend weeks building portfolios.&lt;/p&gt;
&lt;p&gt;They add:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects ✅&lt;/li&gt;
&lt;li&gt;Skills section ✅&lt;/li&gt;
&lt;li&gt;GitHub links ✅&lt;/li&gt;
&lt;li&gt;Nice UI ✅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And still…&lt;/p&gt;
&lt;p&gt; It doesn’t stand out.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;Because many portfolios are missing one thing that matters a lot:&lt;/p&gt;
&lt;h3 id=&quot;context-&quot;&gt;Context.&lt;/h3&gt;
&lt;p&gt;Or more specifically:&lt;/p&gt;
&lt;p&gt; The story behind your projects.&lt;/p&gt;
&lt;p&gt;And trust me…&lt;/p&gt;
&lt;p&gt;This matters more than you think.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;most-portfolios-look-like-this&quot;&gt;Most Portfolios Look Like This&lt;/h3&gt;
&lt;p&gt;Project Card 1&lt;br&gt;
Project Card 2&lt;br&gt;
Project Card 3&lt;/p&gt;
&lt;p&gt;Tech stack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Looks good.&lt;/p&gt;
&lt;p&gt;But there’s a problem.&lt;/p&gt;
&lt;p&gt;It tells me &lt;strong&gt;what you built&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not:&lt;/p&gt;
&lt;p&gt; Why you built it&lt;br&gt;
 What problem it solves&lt;br&gt;
 What challenges you faced&lt;/p&gt;
&lt;p&gt;And that’s where strong portfolios become different.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recruiters-don-t-just-want-projects&quot;&gt;Recruiters Don’t Just Want Projects&lt;/h2&gt;
&lt;p&gt;They want proof you can think.&lt;/p&gt;
&lt;p&gt;A project title alone doesn’t show that.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;❌ “Built Job Portal using MERN”&lt;/p&gt;
&lt;p&gt;Okay…&lt;/p&gt;
&lt;p&gt;But so what?&lt;/p&gt;
&lt;p&gt;Now compare:&lt;/p&gt;
&lt;p&gt;✅ Built a job portal solving fragmented job discovery for freshers, with search filters, role-based auth, and scalable backend APIs.&lt;/p&gt;
&lt;p&gt;Very different signal.&lt;/p&gt;
&lt;p&gt;One shows code.&lt;/p&gt;
&lt;p&gt;One shows engineering thinking.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-your-portfolio-should-include&quot;&gt;What Your Portfolio Should Include&lt;/h3&gt;
&lt;p&gt;For every serious project, add:&lt;/p&gt;
&lt;h4 id=&quot;1-problem-statement&quot;&gt;1. Problem Statement&lt;/h4&gt;
&lt;p&gt;What problem were you solving?&lt;/p&gt;
&lt;p&gt;Not:&lt;/p&gt;
&lt;p&gt;“I built a chatbot”&lt;/p&gt;
&lt;p&gt;Instead:&lt;/p&gt;
&lt;p&gt;“I built a chatbot to simplify candidate support queries.”&lt;/p&gt;
&lt;p&gt;Huge difference.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-architecture-thinking&quot;&gt;2. Architecture Thinking&lt;/h3&gt;
&lt;p&gt;Show how you designed it.&lt;/p&gt;
&lt;p&gt;Talk about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you sound like a builder.&lt;/p&gt;
&lt;p&gt;Not just a coder.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-challenges-you-faced&quot;&gt;3. Challenges You Faced&lt;/h3&gt;
&lt;p&gt;This is massively underrated.&lt;/p&gt;
&lt;p&gt;Talk about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bugs you solved&lt;/li&gt;
&lt;li&gt;Scaling issues&lt;/li&gt;
&lt;li&gt;Performance fixes&lt;/li&gt;
&lt;li&gt;Deployment problems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because real projects have struggles.&lt;/p&gt;
&lt;p&gt;And solving them is experience.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-tradeoffs-you-made&quot;&gt;4. Tradeoffs You Made&lt;/h3&gt;
&lt;p&gt;This is advanced… and powerful.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt; Used JWT instead of sessions because…&lt;/p&gt;
&lt;p&gt;That shows decision making.&lt;/p&gt;
&lt;p&gt;Recruiters love that.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-live-demo-proof&quot;&gt;5. Live Demo + Proof&lt;/h3&gt;
&lt;p&gt;Please…&lt;/p&gt;
&lt;p&gt;Don’t just show GitHub.&lt;/p&gt;
&lt;p&gt;Show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live demo&lt;/li&gt;
&lt;li&gt;Screenshots&lt;/li&gt;
&lt;li&gt;Demo video&lt;/li&gt;
&lt;li&gt;README&lt;/li&gt;
&lt;li&gt;Use cases&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A project people can try &amp;gt; a repo people may never open.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;projects-don-t-impress-&quot;&gt;Projects Don’t Impress.&lt;/h2&gt;
&lt;p&gt;Project Thinking Impresses.&lt;/p&gt;
&lt;p&gt;Read that again.&lt;/p&gt;
&lt;p&gt;Anyone can clone a project.&lt;/p&gt;
&lt;p&gt;Not everyone can explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why it exists&lt;/li&gt;
&lt;li&gt;Why it was designed that way&lt;/li&gt;
&lt;li&gt;Why choices were made&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s what makes portfolios memorable.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;common-portfolio-mistake&quot;&gt;Common Portfolio Mistake&lt;/h3&gt;
&lt;p&gt;Many developers think:&lt;/p&gt;
&lt;p&gt;More projects = better portfolio&lt;/p&gt;
&lt;p&gt;Not always.&lt;/p&gt;
&lt;p&gt;3 strong projects with depth&lt;br&gt;
can beat&lt;/p&gt;
&lt;p&gt;10 shallow projects.&lt;/p&gt;
&lt;p&gt;Every time.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-think-product-not-assignment&quot;&gt;⚡ Think Product, Not Assignment&lt;/h3&gt;
&lt;p&gt;Don’t present projects like college submissions.&lt;/p&gt;
&lt;p&gt;Present them like products.&lt;/p&gt;
&lt;p&gt;Instead of:&lt;/p&gt;
&lt;p&gt;“Task App”&lt;/p&gt;
&lt;p&gt;Say:&lt;/p&gt;
&lt;p&gt;“Task management tool built to solve team workflow tracking.”&lt;/p&gt;
&lt;p&gt;Sounds completely different.&lt;/p&gt;
&lt;p&gt;Because it is.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;a-better-portfolio-formula&quot;&gt;A Better Portfolio Formula&lt;/h3&gt;
&lt;p&gt;Try this:&lt;/p&gt;
&lt;p&gt;Project + Problem + Architecture + Challenges + Demo&lt;/p&gt;
&lt;p&gt;That combination is gold.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;final-thought&quot;&gt;Final Thought&lt;/h3&gt;
&lt;p&gt;Most portfolios focus on showing code.&lt;/p&gt;
&lt;p&gt;Great portfolios show thinking.&lt;/p&gt;
&lt;p&gt;And in interviews…&lt;/p&gt;
&lt;p&gt;Thinking often matters more.&lt;/p&gt;
&lt;p&gt;So if your portfolio feels incomplete…&lt;/p&gt;
&lt;p&gt;Maybe you don’t need another project.&lt;/p&gt;
&lt;p&gt; You may just need better storytelling around the projects you already have.&lt;/p&gt;
&lt;p&gt;And honestly…&lt;/p&gt;
&lt;p&gt;That might be the missing piece &lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-do-you-think-every-developer-portfolio-should-include-&quot;&gt;What do you think every developer portfolio should include?&lt;/h3&gt;
&lt;p&gt;Live demos?&lt;br&gt;
Case studies?&lt;br&gt;
Architecture diagrams?&lt;/p&gt;
&lt;p&gt;Let’s discuss &lt;/p&gt;
&lt;h2 id=&quot;portfolio-developers-softwareengineering-webdevelopment-buildinpublic-careeradvice-github&quot;&gt;Portfolio #Developers #SoftwareEngineering #WebDevelopment #BuildInPublic #CareerAdvice #GitHub&lt;/h2&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/16064/your-portfolio-is-probably-missing-this-one-thing-and-it-matters-more-than-you-think</guid>
<pubDate>Tue, 28 Apr 2026 12:05:57 +0000</pubDate>
</item>
<item>
<title>How a Professional Website Helps Small Businesses and Solopreneurs Reach New Customers</title>
<link>https://coderlegion.com/15322/how-a-professional-website-helps-small-businesses-and-solopreneurs-reach-new-customers</link>
<description>&lt;h2 id=&quot;how-a-professional-website-helps-small-businesses-and-solopreneurs-reach-new-customers&quot;&gt;How a Professional Website Helps Small Businesses and Solopreneurs Reach New Customers&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;&quot;Your website is your storefront, your business card, and your sales pitch all rolled into one.&quot;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;By DevnDesPro · Stavanger, Norway · 4 min read&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;You have a great product. You deliver excellent service. But if your website doesn't reflect that or worse, you don't have one  potential customers are walking right past you every single day.&lt;/p&gt;
&lt;p&gt;In today's digital world, getting your website right can be the difference between struggling for clients and having a steady stream of them.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-hard-truth-first-impressions-happen-online&quot;&gt;The Hard Truth: First Impressions Happen Online&lt;/h3&gt;
&lt;p&gt;Before a customer calls you, emails you, or walks through your door &lt;strong&gt;they Google you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Studies show that it takes less than &lt;strong&gt;3 seconds&lt;/strong&gt; for a visitor to form an opinion about your website. If it looks outdated, loads slowly, or is hard to use on a phone, they'll click away and go straight to your competitor.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;A professional website tells your visitors: &quot;This business is real, trustworthy, and worth my time.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;why-smbs-amp-solopreneurs-can-t-afford-to-ignore-this&quot;&gt;Why SMBs &amp;amp; Solopreneurs Can't Afford to Ignore This&lt;/h3&gt;
&lt;p&gt;Large companies have entire teams managing their digital presence. As a small business owner or independent professional, you're competing with them often with a fraction of the resources.&lt;/p&gt;
&lt;p&gt;That's actually where a great website gives you an &lt;strong&gt;edge&lt;/strong&gt;. A well-designed, fast, and SEO-optimized site lets you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Show up on Google&lt;/strong&gt; when local customers search for your service&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Build instant credibility&lt;/strong&gt; with visitors who don't know you yet&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Convert browsers into buyers&lt;/strong&gt; with clear calls-to-action and smooth navigation&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Work for you 24/7&lt;/strong&gt; even when you're asleep or with another client&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The playing field online is surprisingly level. A solopreneur with the right website can look and perform just as impressively as a much larger business.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-makes-a-website-actually-work-for-your-business&quot;&gt;What Makes a Website Actually Work for Your Business&lt;/h3&gt;
&lt;p&gt;Not all websites are created equal. A website that truly drives customers needs more than just good looks. Here's what matters:&lt;/p&gt;
&lt;h4 id=&quot;1-clean-professional-design&quot;&gt;1.  Clean, Professional Design&lt;/h4&gt;
&lt;p&gt;Your design communicates your brand before a single word is read. Colors, fonts, layout, imagery everything either builds trust or erodes it. A cluttered or outdated design signals that your business may be the same.&lt;/p&gt;
&lt;h4 id=&quot;2-mobile-first-experience&quot;&gt;2.  Mobile-First Experience&lt;/h4&gt;
&lt;p&gt;More than &lt;strong&gt;60% of web traffic&lt;/strong&gt; comes from mobile devices. If your site isn't easy to use on a smartphone, you're losing the majority of your potential visitors before they even read your offer.&lt;/p&gt;
&lt;h4 id=&quot;3-fast-loading-speed&quot;&gt;3. ⚡ Fast Loading Speed&lt;/h4&gt;
&lt;p&gt;Every extra second your site takes to load, you lose visitors. Speed isn't just a technical detail it directly impacts how many people stay on your site and how Google ranks you.&lt;/p&gt;
&lt;h4 id=&quot;4-search-engine-optimization-seo-&quot;&gt;4.  Search Engine Optimization (SEO)&lt;/h4&gt;
&lt;p&gt;A beautiful website that nobody can find is just an expensive digital brochure. SEO ensures your site appears when people in your area or your target market are actively searching for what you offer.&lt;/p&gt;
&lt;h4 id=&quot;5-clear-calls-to-action&quot;&gt;5.  Clear Calls-to-Action&lt;/h4&gt;
&lt;p&gt;What do you want visitors to do? Call you? Book a service? Buy a product? Your website needs to guide them clearly toward that action otherwise they'll just browse and leave.&lt;/p&gt;
&lt;h4 id=&quot;6-content-that-speaks-to-your-customer&quot;&gt;6. ✍️ Content That Speaks to Your Customer&lt;/h4&gt;
&lt;p&gt;Your website copy should speak directly to your ideal customer's problems and needs not just list what you do. When visitors feel understood, they're far more likely to reach out.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-common-mistakes-small-businesses-make-with-their-website&quot;&gt;⚠️ Common Mistakes Small Businesses Make With Their Website&lt;/h3&gt;
&lt;p&gt;Even well-intentioned business owners fall into these traps:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Mistake &lt;/th&gt;&lt;th&gt;Why It Hurts&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Using a free DIY website builder &lt;/td&gt;&lt;td&gt;Looks generic, ranks poorly on Google&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Skipping mobile optimization &lt;/td&gt;&lt;td&gt;Losing 60%+ of visitors immediately&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Not updating the site regularly &lt;/td&gt;&lt;td&gt;Looks abandoned, loses trust&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;No clear contact path &lt;/td&gt;&lt;td&gt;Interested visitors can't take action&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;No SEO strategy &lt;/td&gt;&lt;td&gt;Competitors dominate while you rely on word-of-mouth&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;&lt;p&gt;⚡ &lt;em&gt;Any one of these can quietly cost you customers every single week.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-roi-of-a-great-website&quot;&gt;The ROI of a Great Website&lt;/h3&gt;
&lt;p&gt;Think of your website as an &lt;strong&gt;investment, not an expense&lt;/strong&gt;. A well-built site can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generate leads and inquiries around the clock&lt;/li&gt;
&lt;li&gt;Reduce the time you spend on back-and-forth sales conversations&lt;/li&gt;
&lt;li&gt;Build your reputation before you even speak to a prospect&lt;/li&gt;
&lt;li&gt;Open doors to customers far beyond your immediate local network&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For solopreneurs especially, a strong website can be the &lt;strong&gt;single most powerful tool&lt;/strong&gt; for growing income without growing your workload.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;real-businesses-real-results&quot;&gt;Real Businesses, Real Results&lt;/h3&gt;
&lt;p&gt;Consider what a proper website can do across different fields:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Business Type &lt;/th&gt;&lt;th&gt;Result&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;️ Personal Trainer &lt;/td&gt;&lt;td&gt;Attracts new clients by ranking for &quot;personal trainer in [city]&quot; on Google&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Freelance Photographer &lt;/td&gt;&lt;td&gt;Showcases portfolio and gets booked without cold outreach&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Small Accounting Firm &lt;/td&gt;&lt;td&gt;Wins clients away from bigger competitors through online credibility&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☕ Local Restaurant or Café &lt;/td&gt;&lt;td&gt;Fills tables through Google searches, reviews, and an attractive online menu&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In every case, the website isn't just a nice-to-have &lt;strong&gt;it's an active part of the business.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;where-do-you-start-&quot;&gt;Where Do You Start?&lt;/h3&gt;
&lt;p&gt;If you're a small business owner or solopreneur who knows your online presence needs work but you're not sure where to begin the answer is simple:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Work with people who do this every day.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You don't need to learn web design. You don't need to figure out SEO from scratch. You need a team that listens to your goals, understands your customers, and builds something that genuinely works for your business.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;ready-to-turn-your-website-into-a-customer-generating-machine-&quot;&gt;Ready to Turn Your Website Into a Customer-Generating Machine?&lt;/h3&gt;
&lt;p&gt;At &lt;strong&gt;DevnDesPro&lt;/strong&gt;, we specialize in helping small businesses and solopreneurs build websites that don't just look great  they bring in &lt;strong&gt;real customers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;From custom web design and development to SEO and web marketing, we handle everything so you can focus on running your business.&lt;/p&gt;
&lt;p&gt; &lt;em&gt;Based in Stavanger, Norway serving clients worldwide.&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;visit-devndespro-com-and-let-s-build-something-that-works-for-you-&quot;&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.devndespro.com&quot;&gt;Visit devndespro.com and let's build something that works for you →&lt;/a&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;© DevnDesPro · Web Design · Web Development · SEO · Digital Marketing · Stavanger, Norway&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/15322/how-a-professional-website-helps-small-businesses-and-solopreneurs-reach-new-customers</guid>
<pubDate>Mon, 20 Apr 2026 17:20:45 +0000</pubDate>
</item>
<item>
<title>I turned Telegram into a WordPress control panel — ShopKeeper v1.2.0</title>
<link>https://coderlegion.com/15011/i-turned-telegram-into-a-wordpress-control-panel-shopkeeper-v1-2-0</link>
<description>&lt;p&gt;ShopKeeper v1.2.0 is out. Here's what it does and why it's different from every &quot;WordPress management&quot; tool you've seen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The premise:&lt;/strong&gt;&lt;br&gt;
Most WordPress tools give you another dashboard. ShopKeeper gives you a chat interface that acts on your site — no clicking, no navigating menus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What's in v1.2.0:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Comments — fully automated&lt;br&gt;
• List by status (hold/spam/approved)&lt;br&gt;
• Delete, approve, spam-mark individually&lt;br&gt;
• Bulk delete spam with a single confirmation&lt;/p&gt;
&lt;p&gt;Plugins — full control&lt;br&gt;
• See every plugin: name, version, status, pending updates&lt;br&gt;
• Update, activate, deactivate from chat&lt;/p&gt;
&lt;p&gt;Themes — overview added&lt;br&gt;
• All themes listed with active status&lt;/p&gt;
&lt;p&gt;Updates engine — proactive detection&lt;br&gt;
• Surfaces pending updates before you have to ask&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The interaction model is different:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The bot doesn't wait for you to check a dashboard.&lt;br&gt;
It tells you: &quot;3 plugins need updates. Handle all of them?&quot;&lt;br&gt;
You say yes. Done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;/strong&gt;&lt;br&gt;
Telegram Bot API + WordPress REST API + Node.js&lt;/p&gt;
&lt;p&gt;Open to feedback on what to tackle next. What part of WordPress management is most annoying to you?&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/15011/i-turned-telegram-into-a-wordpress-control-panel-shopkeeper-v1-2-0</guid>
<pubDate>Thu, 16 Apr 2026 22:22:29 +0000</pubDate>
</item>
<item>
<title>Your Personal Website Is Underperforming — And It's Not a Code Problem</title>
<link>https://coderlegion.com/14824/your-personal-website-is-underperforming-and-its-not-a-code-problem</link>
<description>&lt;p&gt;Let's get something out of the way first.&lt;/p&gt;
&lt;p&gt;If you're a developer reading this, your personal website is probably technically solid. Clean code, fast load times, good Lighthouse scores, maybe even a slick custom animation or two. The stack is fine. The deployment pipeline is fine.&lt;/p&gt;
&lt;p&gt;But if it's not generating real opportunities — job offers, freelance inquiries, collaboration requests, speaking invitations — the problem almost certainly isn't technical.&lt;/p&gt;
&lt;p&gt;It's architectural. And not the kind of architecture you're used to thinking about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Real Stack Problem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most developer personal sites are built in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pick an interesting tech stack (Next.js, Astro, SvelteKit,&lt;br&gt;
whatever's trending)&lt;/li&gt;
&lt;li&gt;Build something technically impressive&lt;/li&gt;
&lt;li&gt;Add content as an afterthought&lt;/li&gt;
&lt;li&gt;Wonder why nobody reaches out&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The irony is brutal. Developers who can build anything often end up with websites that communicate the least — because the energy goes into implementation, not into the clarity layer that actually converts visitors into opportunities.&lt;/p&gt;
&lt;p&gt;Here's the mental model shift: your personal website is not a technical project. It is a communication system that happens to be built with code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Clarity Layer Actually Looks Like&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A high-converting personal website — regardless of stack — answers three questions in the first ten seconds:&lt;/p&gt;
&lt;p&gt;WHO:   Who is this person and what do they specialize in? &lt;br&gt;
WHAT:  What outcomes do they create? &lt;br&gt;
NEXT:  What should I do right now?&lt;/p&gt;
&lt;p&gt;That's it. That's the whole homepage job in pseudo-code.&lt;/p&gt;
&lt;p&gt;Most developer sites fail the WHO and NEXT checks immediately. The identity statement is either too vague (&quot;full-stack developer passionate about building things&quot;) or buried below a massive hero animation that looks great but communicates nothing. And the CTA? Usually either missing entirely or lost somewhere at the bottom after three scrolls of project thumbnails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proof Architecture for Developers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here's where it gets interesting from a systems perspective. Proof — the thing that makes visitors trust you enough to reach out — needs to be placed architecturally, not just included somewhere on the page.&lt;/p&gt;
&lt;p&gt;Think of it like middleware in a request pipeline:&lt;/p&gt;
&lt;p&gt;Visitor lands → Identity check → Value prop → [PROOF LAYER] → CTA → Conversion&lt;/p&gt;
&lt;p&gt;Most sites skip the proof layer entirely or inject it at the wrong point — after the CTA, where it's useless. Proof needs to intercept hesitation before the ask, not after.&lt;/p&gt;
&lt;p&gt;For developers specifically, proof doesn't have to be testimonials. It can be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open source contributions with visible impact metrics&lt;/li&gt;
&lt;li&gt;A GitHub profile with genuine activity (not just green squares)&lt;/li&gt;
&lt;li&gt;A concise case study: problem → your approach → measurable outcome&lt;/li&gt;
&lt;li&gt;Writing that demonstrates depth of thinking on a specific technical&lt;br&gt;
topic&lt;/li&gt;
&lt;li&gt;Conference talks or technical articles with real engagement&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The format matters less than the placement and specificity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your Blog Is an Asset — If You Build It Right&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Many developers run a technical blog alongside their portfolio. Most of those blogs plateau early — not because the writing is bad, but because the architecture is wrong.&lt;/p&gt;
&lt;p&gt;Publishing frequency without structure is just noise generation. What actually compounds over time is a layered content system:&lt;/p&gt;
&lt;p&gt;Pillar topics → Define 3-5 areas where you want to be known Cluster content → Specific posts addressing targeted questions within each pillar Evergreen anchors → Deep-dive guides that keep generating search traffic and referrals&lt;/p&gt;
&lt;p&gt;Without this structure, readers consume one post and exit. With it, they move through your content ecosystem, build trust over multiple sessions, and eventually reach out when they have a problem that matches your expertise.&lt;/p&gt;
&lt;p&gt;Internal linking is the routing logic of this system. It's the thing most developer blogs completely ignore, and it's one of the highest-leverage improvements you can make to an existing blog with minimal effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Portfolio Section Is Not a Gallery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where most developer sites get it wrong.&lt;br&gt;
A portfolio is not a showcase of everything you've ever built. It is a decision-support tool for a specific visitor with a specific need.&lt;/p&gt;
&lt;p&gt;Curate ruthlessly. Show 4-6 projects maximum on the homepage. For each one, include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Context: What problem were you solving?&lt;/li&gt;
&lt;li&gt;Your role: What specifically did you build or decide?&lt;/li&gt;
&lt;li&gt;Outcome: What measurably changed as a result?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That three-part structure turns a project thumbnail into actual evidence. Visitors understand your thinking process, not just your output. That's what makes someone pick up the phone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance Metrics That Actually Matter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you're tracking your personal site, here's what's worth measuring:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;javascript
const metricsActuallyWorthTracking = {
  CTAClickRate: &quot;Are visitors reaching your primary action?&quot;,
  InquiryQuality: &quot;Are contacts from the right people for the right reasons?&quot;,
  ReadDepth: &quot;Are visitors reading past the first screen?&quot;,
  ReturningVisitors: &quot;Are people coming back?&quot;,
  ConversionToConversation: &quot;How many contacts become real conversations?&quot;
}

const metricsToStopObsessingOver = {
  PageViews: &quot;Vanity metric without context&quot;,
  BounceRate: &quot;Misleading without session depth data&quot;,
  SocialShares: &quot;Rarely correlates with opportunity quality&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resources Worth Reading&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Three guides that approach this from a content and strategy angle — useful precisely because they're not about the technical implementation, which you've already got covered:&lt;/p&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://unicornplatform.com/blog/great-personal-websites-showcase-your-best-self-online-guide/&quot;&gt;Great Personal Websites Guide&lt;/a&gt; breaks down homepage framework, credibility architecture, and CTA logic with a practical 30-day optimization plan. Good for auditing what you already have.&lt;/p&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://unicornplatform.com/blog/best-personal-blog-websites-to-unleash-your-voice-in-2026/&quot;&gt;Best Personal Blog Websites guide for 2026&lt;/a&gt; covers content architecture, voice positioning, and how to build a blog that compounds over time rather than plateaus. Directly applicable if you're running a technical blog.&lt;/p&gt;
&lt;p&gt;And this breakdown of &lt;a rel=&quot;nofollow&quot; href=&quot;https://unicornplatform.com/blog/personal-brand-website-strategy-in-2026/&quot;&gt;15 personal brand sites that actually work&lt;/a&gt; is useful for pattern recognition — seeing how the same clarity principles appear across totally different visual styles and professional contexts.&lt;/p&gt;
&lt;p&gt;The TL;DR&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
# Run this audit on your personal site

clarity_check() {
  echo &quot;Can a visitor answer these in 10 seconds?&quot;
  echo &quot;1. Who are you and what do you specialize in?&quot;
  echo &quot;2. What outcomes do you create?&quot;
  echo &quot;3. What should they do next?&quot;
}

proof_check() {
  echo &quot;Is your proof placed BEFORE the CTA?&quot;
  echo &quot;Is it specific and outcome-focused?&quot;
  echo &quot;Does it match what your target visitor actually cares about?&quot;
}

portfolio_check() {
  echo &quot;Are you showing 4-6 curated projects?&quot;
  echo &quot;Does each include context, role, and outcome?&quot;
  echo &quot;Can a visitor understand your thinking — not just your output?&quot;
}

clarity_check &amp;amp;&amp;amp; proof_check &amp;amp;&amp;amp; portfolio_check
# If any check fails — fix that before touching the code again
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your personal website is the one platform you fully own. Make it work as hard as your code does. ️&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14824/your-personal-website-is-underperforming-and-its-not-a-code-problem</guid>
<pubDate>Tue, 14 Apr 2026 18:13:40 +0000</pubDate>
</item>
<item>
<title>&quot;You Wouldn’t Steal a DIV&quot;: How I Built My Portfolio</title>
<link>https://coderlegion.com/14775/you-wouldnt-steal-a-div-how-i-built-my-portfolio</link>
<description>&lt;blockquote&gt;&lt;p&gt;A story about how I built my portfolio and what went through my mind while building it&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello, World! Here's my first ever blog.&lt;/p&gt;
&lt;p&gt;I wanted to talk a bit about my &lt;a rel=&quot;nofollow&quot; href=&quot;https://brodin.dev&quot;&gt;portfolio&lt;/a&gt;, how I built it, why I made some of these architectural and design decisions, and why I shamelessly 'borrowed' my way to designs I love.&lt;/p&gt;
&lt;h3 id=&quot;1-stack-2-stack-tech-stack-4&quot;&gt;1 Stack, 2 Stack, Tech Stack, 4&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;(If you didn't read that header &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/F2hiFbuQ-Qw?si=h6omylv9pJwJIVgp&amp;amp;t=93&quot;&gt;in Slim Shady's voice&lt;/a&gt;, I don't know what to tell you.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First of all, let's talk tech stack. I used to have all of my personal projects (including my previous portfolio) built with &lt;a rel=&quot;nofollow&quot; href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt;. These were small side projects, without complicated logic, and with simple needs. Yet, I would always run into Next.js edge cases. Turbopack was failing my dev builds because it wouldn't play nice with Contentlayer, HMR was taking actual seconds to refresh, and production builds were taking 50 seconds for projects that barely scaled. When I got to choose a stack for a new project at my job, I couldn't justify the Next.js overhead for production apps, considering the friction I had with small personal projects.&lt;/p&gt;
&lt;p&gt;At that time, everyone was talking about &lt;a rel=&quot;nofollow&quot; href=&quot;https://tanstack.com/start/latest&quot;&gt;Tanstack Start&lt;/a&gt;: the &quot;DX God.&quot; But even their starter app had linting and TS issues, so I wasn't fully impressed. I stuck with only Tanstack Router for that project, and as weeks passed by working with the entire Tanstack Ecosystem (except Start), I was really enjoying it. The documentation is well written and extensive (even too much sometimes), DX actually made sense, and I could find all of the features I liked about Next.js (file base routing for example) while still having great performance (15s builds).&lt;/p&gt;
&lt;p&gt;So this led me to give a second chance to Tanstack Start, and I built this portfolio with it! I still love Vercel's UX, and wander around their dashboard to see how I should implement my stuff, but I think I'll leave Next.js behind for now. And personal projects are made to experiment with stuff. So I just want to try out different tech and see what I like or not, purely on feelings.&lt;/p&gt;
&lt;p&gt;Then for the component library, I was really into &lt;a rel=&quot;nofollow&quot; href=&quot;https://coss.com/ui&quot;&gt;coss ui&lt;/a&gt;. I stumbled upon it randomly one day and loved it so much. My &lt;a rel=&quot;nofollow&quot; href=&quot;https://chat.brodin.dev&quot;&gt;Nathan's AI&lt;/a&gt; project already had a UI heavily inspired by &lt;a rel=&quot;nofollow&quot; href=&quot;https://cal.com/&quot;&gt;cal.com&lt;/a&gt;: send button, message suggestions... So when I saw they had a &lt;a rel=&quot;nofollow&quot; href=&quot;https://ui.shadcn.com/&quot;&gt;shadcn/ui&lt;/a&gt; library with that kind of style, it was perfect for what I needed.&lt;/p&gt;
&lt;p&gt;I can also consider myself a proud Open Source Contributor after getting &lt;strong&gt;two PRs&lt;/strong&gt; merged into &lt;a rel=&quot;nofollow&quot; href=&quot;https://coss.com/ui&quot;&gt;coss ui&lt;/a&gt; (a 2-line diff and I'm not even kidding, but quality over quantity, I guess...?).&lt;/p&gt;
&lt;h3 id=&quot;stealing-i-mean-getting-inspired-by-chanhdai-and-zed&quot;&gt;Stealing...I Mean, Getting Inspired By Chanhdai and Zed&lt;/h3&gt;
&lt;p&gt;Now I'm not going to lie and say I designed and coded everything myself. I took large parts of the code and page layout from the open-source portfolio by &lt;a rel=&quot;nofollow&quot; href=&quot;https://chanhdai.com&quot;&gt;Chanhdai&lt;/a&gt; and design inspiration from &lt;a rel=&quot;nofollow&quot; href=&quot;https://zed.dev&quot;&gt;zed.dev&lt;/a&gt;, which I had previously attempted in unfinished side projects (&lt;a rel=&quot;nofollow&quot; href=&quot;https://trends.brodin.dev&quot;&gt;https://trends.brodin.dev&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://ui.brodin.dev&quot;&gt;https://ui.brodin.dev&lt;/a&gt; if they're still available).&lt;/p&gt;
&lt;p&gt;I still went a different way than Chanhdai for the code implementation. For example, I chose to store my content in markdown files using &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.content-collections.dev/&quot;&gt;Content Collections&lt;/a&gt;. I did this specifically so I could easily serve my portfolio's content in plain text, perfect for LLM consumption, which ties right back into the needs of my &lt;a rel=&quot;nofollow&quot; href=&quot;https://chat.brodin.dev&quot;&gt;Nathan's AI&lt;/a&gt; project.&lt;br&gt;
I also used Base-ui (because of coss ui) for components, and generally went with a different style. So this was not just a simple copy/paste or a fork, there was still a lot of work involved.&lt;/p&gt;
&lt;p&gt;For Zed, I took the &lt;a rel=&quot;nofollow&quot; href=&quot;https://zed.dev/attributions#fonts&quot;&gt;same fonts&lt;/a&gt; for the headings and text, and the grid layout with the &quot;diamonds&quot; at the intersections. It really adds personality to my portfolio (not &lt;em&gt;my&lt;/em&gt; personality since I stole it, but &lt;strong&gt;some&lt;/strong&gt; personality).&lt;/p&gt;
&lt;p&gt;Also, by a great coincidence, Chanhdai had very basic sound design, like a sound when changing the theme, and I wanted to push things further by having different sounds around the entire app. I was looking around on the web for good sound libraries and all, but couldn't find anything interesting. Then the next day, I saw a tweet about the upcoming release of &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.soundcn.xyz/&quot;&gt;Soundcn&lt;/a&gt;, which was &lt;strong&gt;exactly&lt;/strong&gt; what I was looking for. So now you get a bunch of sounds when clicking on stuff in my portfolio. It's a nice touch!&lt;/p&gt;
&lt;h3 id=&quot;from-good-to-whoa&quot;&gt;From good to WHOA&lt;/h3&gt;
&lt;p&gt;Lastly, the thing that elevated my portfolio from a good portfolio to a &lt;strong&gt;Whoa&lt;/strong&gt; portfolio are the dither shaders (from &lt;a rel=&quot;nofollow&quot; href=&quot;https://shaders.paper.design/dithering&quot;&gt;Paper Shaders&lt;/a&gt;) that I have for page headings and section dividers. I had dither shaders in mind since the first day I saw them on &lt;a rel=&quot;nofollow&quot; href=&quot;https://reactbits.dev/backgrounds/dither&quot;&gt;React Bits&lt;/a&gt;, but couldn't find a good way to integrate them. So it ended up being a crossover between inspiration from the heading of zed.dev (open the dev console and see &lt;code&gt;data-paper-shader&lt;/code&gt; on the headings) and &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.fumadocs.dev/&quot;&gt;Fumadocs&lt;/a&gt;, which had them as well.&lt;/p&gt;
&lt;h3 id=&quot;to-wrap-things-up&quot;&gt;To wrap things up&lt;/h3&gt;
&lt;p&gt;So in conclusion, I would say this portfolio is a cross between Chanhdai and Zed, with a better stack.&lt;/p&gt;
&lt;p&gt;Go ahead, click around to hear the sound integration (it gets annoying after a while, be careful), check out the dither shaders on the headings, and &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/NathanBrodin/Portfolio&quot;&gt;check out the source code here&lt;/a&gt; if you want to steal from me like I did from everyone (but at least leave a star on the repo).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blog Title reference: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=P-pYiWGSN8w&quot;&gt;This classic: &quot;You Wouldn't Steal a Car&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Portfolio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://brodin.dev&quot;&gt;brodin.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Initially posted on &lt;a rel=&quot;nofollow&quot; href=&quot;https://brodin.dev/blog/how-i-built-my-portfolio&quot;&gt;my blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14775/you-wouldnt-steal-a-div-how-i-built-my-portfolio</guid>
<pubDate>Tue, 14 Apr 2026 11:50:00 +0000</pubDate>
</item>
<item>
<title>Rethinking My Portfolio as a Developer</title>
<link>https://coderlegion.com/14714/rethinking-my-portfolio-as-a-developer</link>
<description>&lt;p&gt;I’ve been redesigning my portfolio recently, and one thing became very clear to me:&lt;br&gt;
A lot of developer portfolios are built to look nice, but not necessarily to help visitors understand what we actually do.&lt;/p&gt;
&lt;p&gt;For a long time, I treated my portfolio like a place to put:&lt;/p&gt;
&lt;p&gt;My tech stack&lt;br&gt;
some projects&lt;br&gt;
a bit about me&lt;br&gt;
contact links&lt;/p&gt;
&lt;p&gt;But while working on the redesign, I started asking myself a different question:&lt;/p&gt;
&lt;p&gt;If someone lands on my site, will they immediately understand how I can help them?&lt;/p&gt;
&lt;p&gt;That changed how I started thinking about the whole site.&lt;/p&gt;
&lt;p&gt;I’m a full-stack developer, and over the years, I’ve worked on web apps, mobile apps, backend systems, hospitality software, booking engines, admin panels, and product ideas of my own.&lt;/p&gt;
&lt;p&gt;The problem is, when you do many things, it becomes easy for your portfolio to feel scattered.&lt;/p&gt;
&lt;p&gt;You know your work.&lt;br&gt;
You know the effort behind each project.&lt;br&gt;
You know the technical decisions, the tradeoffs, the debugging, the late changes, the small wins.&lt;/p&gt;
&lt;p&gt;But the person visiting your site does not know any of that.&lt;/p&gt;
&lt;p&gt;They just want quick answers:&lt;/p&gt;
&lt;p&gt;Who are you?&lt;br&gt;
What do you build?&lt;br&gt;
Have you built something similar before?&lt;br&gt;
Can you actually help with my project?&lt;/p&gt;
&lt;p&gt;That’s what I’m trying to improve now.&lt;/p&gt;
&lt;p&gt;Instead of making the site feel like a resume, I want it to feel more like a clear and honest introduction to my work.&lt;/p&gt;
&lt;p&gt;I want the site to show:&lt;/p&gt;
&lt;p&gt;What I build&lt;br&gt;
The type of businesses I can help&lt;br&gt;
the kind of problems I’ve solved&lt;br&gt;
and the best way for someone to reach out if they have an idea or a project&lt;/p&gt;
&lt;p&gt;I’m also trying to make it more personal.&lt;/p&gt;
&lt;p&gt;Not “personal” in the sense of adding random details, but personal in the sense that the site should actually feel like me:&lt;br&gt;
someone who likes building practical products, solving real business problems, and creating software that is useful, maintainable, and scalable.&lt;/p&gt;
&lt;p&gt;I’m also exploring adding a guided chatbot/lead form to the site so visitors can describe what they need, explore relevant services or projects, and contact me more easily.&lt;/p&gt;
&lt;p&gt;That feels much closer to what I want the portfolio to do:&lt;br&gt;
not just exist, but actually start conversations.&lt;/p&gt;
&lt;p&gt;This redesign has reminded me that a portfolio is not only about showing work.&lt;/p&gt;
&lt;p&gt;It is also about making your work understandable.&lt;/p&gt;
&lt;p&gt;Still a work in progress, but I’m enjoying the process.&lt;/p&gt;
&lt;p&gt;What’s one thing you think most developer portfolios get wrong?&lt;/p&gt;
&lt;p&gt;Portfolio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://manthanbhatt.dev/&quot;&gt;https://manthanbhatt.dev/&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14714/rethinking-my-portfolio-as-a-developer</guid>
<pubDate>Mon, 13 Apr 2026 19:26:03 +0000</pubDate>
</item>
<item>
<title>The Anthology of a Creative Developer: A 2026 Portfolio</title>
<link>https://coderlegion.com/14708/the-anthology-of-a-creative-developer-a-2026-portfolio</link>
<description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31&quot;&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt; (just check my github, not for prizes )&lt;/p&gt;
&lt;h3 id=&quot;the-prologue-beyond-the-sectioned-resume-&quot;&gt;The Prologue: Beyond the &quot;Sectioned Resume&quot;&lt;/h3&gt;
&lt;p&gt;Most portfolios feel like a list of ingredients. For 2026, I wanted mine to be the &lt;strong&gt;complete meal.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’m &lt;strong&gt;Nitish Kumar&lt;/strong&gt;, an undergraduate engineering student and creative developer. I’ve always felt that code is just another way of storytelling—so I ditched the typical &quot;Hero-About-Projects&quot; grid. Instead, I built a &lt;strong&gt;narrative experience&lt;/strong&gt; that reflects how I think, build, and observe the world.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-gallery&quot;&gt;The Gallery&lt;/h3&gt;
&lt;p&gt;I built this to be &quot;authored&quot;—a stroll through a digital gallery rather than a scroll through a resume.&lt;/p&gt;
&lt;p&gt; &lt;strong&gt;Explore the Story:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://nitishkr.fun&quot;&gt;https://nitishkr.fun&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-craft-how-i-built-it-&quot;&gt;The Craft (How I Built It)&lt;/h3&gt;
&lt;p&gt;If this portfolio were a book, here is how I bound the pages:&lt;/p&gt;
&lt;h4 id=&quot;the-technical-spine&quot;&gt;&lt;strong&gt;The Technical Spine&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Next.js (App Router):&lt;/strong&gt; The foundation that holds the chapters together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript:&lt;/strong&gt; My editor, ensuring every &quot;sentence&quot; (and variable) makes sense.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GSAP:&lt;/strong&gt; The cinematography—adding subtle, intentional motion that guides the eye.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; For the editorial aesthetic and spacing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Run:&lt;/strong&gt; My printing press, keeping everything fast and accessible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;the-editorial-vision&quot;&gt;&lt;strong&gt;The Editorial Vision&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;I treated the design like a high-end magazine. Each section is a chapter:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identity:&lt;/strong&gt; The &quot;Who&quot; and the mindset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Workshop:&lt;/strong&gt; Skills and tools as a craftsman’s kit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Lab:&lt;/strong&gt; Projects as experiments, not just finished products.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Lens:&lt;/strong&gt; Using photography as a reflection of how I observe UI/UX in the real world.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;google-ai-the-creative-director&quot;&gt;&lt;strong&gt;Google AI: The Creative Director&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Google AI wasn't a &quot;generator&quot; for me; it was a &lt;strong&gt;thinking partner&lt;/strong&gt;. I used it to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Refine the Copy:&lt;/strong&gt; Helping me transition from dry technical descriptions to narrative-driven prose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessibility Review:&lt;/strong&gt; Ensuring the &quot;story&quot; remains readable for everyone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logic Soundboarding:&lt;/strong&gt; Using AI to brainstorm the best way to structure a chapter-based layout.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-director-s-cut-what-i-m-proud-of-&quot;&gt;The &quot;Director's Cut&quot; (What I'm Proud Of)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Story-Driven Flow:&lt;/strong&gt; The site feels like a single, continuous conversation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intentional Dark Mode:&lt;/strong&gt; Designed from the ground up to feel like a premium &quot;night-time&quot; reading experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Power of Restraint:&lt;/strong&gt; Knowing when to stop adding features and start refining the white space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Photography Integration:&lt;/strong&gt; My photos aren't just &quot;assets&quot;—they are windows into my perspective as a designer.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;closing-thoughts&quot;&gt;Closing Thoughts&lt;/h3&gt;
&lt;p&gt;This portfolio is my way of proving that engineering is an art form. It’s about more than just shipping code; it’s about crafting experiences that linger. &lt;/p&gt;
&lt;p&gt;Thanks for checking it out, and &lt;strong&gt;Happy New Year!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Let's connect!&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sidkr222003&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;www.linkedin.com/in/nk2552003&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14708/the-anthology-of-a-creative-developer-a-2026-portfolio</guid>
<pubDate>Mon, 13 Apr 2026 18:13:28 +0000</pubDate>
</item>
<item>
<title>Big Tech killed 7 tools used by 500 million people. I rebuilt all of them in one platform</title>
<link>https://coderlegion.com/14235/big-tech-killed-7-tools-used-by-500-million-people-i-rebuilt-all-of-them-in-one-platform</link>
<description>&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sentinel.oblivionzone.com/about&quot;&gt;https://sentinel.oblivionzone.com/about&lt;/a&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://sentinel.oblivionzone.com/&quot;&gt;https://sentinel.oblivionzone.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; The Graveyard of the Open Web&lt;br&gt;
Every product we revived, when it died, and who it left behind.&lt;/p&gt;
&lt;p&gt; Google Reader&lt;br&gt;
2005 → killed July 1, 2013 · 8 years old&lt;/p&gt;
&lt;p&gt;The web's universal RSS aggregator. 30 million+ active users at death. Google killed it citing &quot;declining usage&quot; while subscriber counts were still growing. RSS subscriptions have grown 34% per year since the murder. Feedly, Inoreader, NewsBlur exist but none replicate Google Reader's clean simplicity — and none use AI. SENTINEL Reader is what Google Reader would have become.&lt;/p&gt;
&lt;p&gt;⚡ Yahoo Pipes&lt;br&gt;
2007 → killed September 30, 2015 · 8 years old&lt;/p&gt;
&lt;p&gt;The original visual no-code automation builder, before Zapier existed. 90,000+ active pipes at shutdown. Let anyone connect feeds, transform data, and build mashups in a browser. When Yahoo killed it the entire no-code-automation category died for 5 years. Zapier filled the gap but is closed-source and expensive. SENTINEL Pipes brings back open, visual, free workflow automation on n8n.&lt;/p&gt;
&lt;p&gt;❓ Yahoo Answers&lt;br&gt;
2005 → killed May 4, 2021 · 16 years old&lt;/p&gt;
&lt;p&gt;The internet's biggest open Q&amp;amp;A platform. 200 million+ users. The Internet Archive preserved a 4.75 TB dump of every question and answer ever asked. When Yahoo pulled the plug, Quora became a paywall and Stack Exchange covers only narrow technical topics. The general open Q&amp;amp;A web is empty. SENTINEL Q&amp;amp;A is the AI-augmented replacement: ask anything, AI answers instantly, humans add expertise.&lt;/p&gt;
&lt;p&gt; DMOZ / Open Directory Project&lt;br&gt;
1998 → killed March 17, 2017 · 19 years old&lt;/p&gt;
&lt;p&gt;The Open Directory Project. 5 million sites, 92,000 volunteer editors, 1 million categories. The largest human-edited web directory ever built — used by Google, Yahoo, AOL, Netscape, and every major search engine for 19 years to bootstrap their rankings. AOL silently killed it in 2017. The complete RDF dump still exists. SENTINEL Directory is rebuilt on top of DMOZ data with AI-powered category suggestions and modern moderation.&lt;/p&gt;
&lt;p&gt; Yahoo Directory&lt;br&gt;
1994 → killed December 31, 2014 · 20 years old&lt;/p&gt;
&lt;p&gt;The original Yahoo. Before Yahoo was a portal, it was Jerry and David's hand-curated directory of websites — the very first navigation layer of the World Wide Web. By the time Marissa Mayer killed it, the directory cost $299 per submission. SEO professionals still mourn it: a Yahoo Directory listing carried more authority than any backlink today. SENTINEL Directory restores curated web discovery — free, AI-assisted, human-verified.&lt;/p&gt;
&lt;p&gt; Delicious&lt;br&gt;
2003 → murdered repeatedly until 2017 · 14 years of slow death&lt;/p&gt;
&lt;p&gt;The original social bookmarking site. 5.3 million users at peak. Yahoo bought it in 2005, neglected it, sold it to AVOS in 2011, who sold it to Science Inc in 2014, who sold it to Pinboard in 2017 — Pinboard's sole purpose for the acquisition was to kill it. Pocket got Mozilla'd to death. Raindrop is closed-source. SENTINEL Bookmarks is open social bookmarking with AI tagging.&lt;/p&gt;
&lt;p&gt;⬡ iGoogle&lt;br&gt;
2005 → killed November 1, 2013 · 8 years old&lt;/p&gt;
&lt;p&gt;Personalized homepage with widgets — weather, news, calendar, RSS, Gmail preview, stock tickers — all on one customizable dashboard. Tens of millions of daily users. Google killed it citing &quot;modern apps&quot; but no replacement ever delivered the same one-glance overview. Netvibes survives but feels frozen in 2010. SENTINEL Dashboard is iGoogle done right: every module on one screen, AI-prioritized.&lt;/p&gt;
&lt;p&gt; Uptime Kuma — never killed, never hosted&lt;br&gt;
2021 → present · open source, 62,000+ GitHub stars&lt;/p&gt;
&lt;p&gt;The best open-source uptime monitor in the world. Self-hostable, beautiful, free. But nobody offers a hosted version. Pingdom charges $15/month, UptimeRobot's free tier is severely capped, StatusCake is enterprise-priced. There is a massive gap for &quot;Uptime Kuma but you don't have to run a server.&quot; SENTINEL Monitor fills it.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14235/big-tech-killed-7-tools-used-by-500-million-people-i-rebuilt-all-of-them-in-one-platform</guid>
<pubDate>Wed, 08 Apr 2026 13:57:56 +0000</pubDate>
</item>
<item>
<title>Full Stack Portfolio Website — Complete Step-by-Step Breakdown</title>
<link>https://coderlegion.com/14182/full-stack-portfolio-website-complete-step-by-step-breakdown</link>
<description>&lt;h3 id=&quot;introduction-1&quot;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;In this blog, I will walk you through my &lt;strong&gt;Full Stack Portfolio Website&lt;/strong&gt;, explaining every section, feature and design decision in a structured, real-world approach.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wu8tvsl09ludmj5lxyun.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is not just a simple portfolio — it is designed like a &lt;strong&gt;complete product&lt;/strong&gt;, including multiple pages, modern UI/UX, smooth animations and practical functionality.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;project-goal&quot;&gt;Project Goal&lt;/h3&gt;
&lt;p&gt;The goal of this project was to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build a &lt;strong&gt;professional portfolio&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Apply &lt;strong&gt;real-world frontend architecture&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Improve &lt;strong&gt;UI/UX design thinking&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Create a scalable and maintainable structure&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;navigation-amp-layout-structure&quot;&gt;Navigation &amp;amp; Layout Structure&lt;/h3&gt;
&lt;p&gt;The website starts with a &lt;strong&gt;clean navigation bar&lt;/strong&gt; that allows users to smoothly navigate between all sections.&lt;/p&gt;
&lt;h4 id=&quot;key-features-&quot;&gt;Key Features:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Smooth scrolling navigation&lt;/li&gt;
&lt;li&gt;Active section highlighting&lt;/li&gt;
&lt;li&gt;Responsive design for mobile&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;home-section-hero-section-&quot;&gt;Home Section (Hero Section)&lt;/h3&gt;
&lt;p&gt;The Home section is the first impression of the website.&lt;/p&gt;
&lt;h4 id=&quot;features--1&quot;&gt;Features:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Animated role titles (Frontend Developer, UI/UX Designer, etc.)&lt;/li&gt;
&lt;li&gt;Profile image with animated tech icons&lt;/li&gt;
&lt;li&gt;WhatsApp contact button&lt;/li&gt;
&lt;li&gt;Resume download option&lt;/li&gt;
&lt;li&gt;Social media links&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; This section is designed to quickly communicate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Who I am&lt;/li&gt;
&lt;li&gt;What I do&lt;/li&gt;
&lt;li&gt;How to contact me&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;about-section&quot;&gt;About Section&lt;/h3&gt;
&lt;p&gt;The About section explains my &lt;strong&gt;developer journey, mindset, and skills&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;focus-areas-&quot;&gt;Focus Areas:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Problem-solving mindset&lt;/li&gt;
&lt;li&gt;Clean coding practices&lt;/li&gt;
&lt;li&gt;Continuous learning&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;projects-section&quot;&gt;Projects Section&lt;/h3&gt;
&lt;p&gt;This is one of the most important sections of the portfolio.&lt;/p&gt;
&lt;h4 id=&quot;features--2&quot;&gt;Features:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;12+ real-world projects&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each project includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live preview&lt;/li&gt;
&lt;li&gt;GitHub link&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; This section demonstrates practical experience and skills.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;skills-section&quot;&gt;Skills Section&lt;/h3&gt;
&lt;p&gt;Skills are categorized for clarity and better presentation.&lt;/p&gt;
&lt;h4 id=&quot;categories-&quot;&gt;Categories:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Frontend&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; This helps recruiters quickly understand the technical stack.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;experience-section&quot;&gt;Experience Section&lt;/h3&gt;
&lt;p&gt;This section highlights my &lt;strong&gt;internship experience&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;included-&quot;&gt;Included:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Multiple internships&lt;/li&gt;
&lt;li&gt;Roles and responsibilities&lt;/li&gt;
&lt;li&gt;Contributions and learning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; It adds professional credibility to the portfolio.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;education-amp-certifications&quot;&gt;Education &amp;amp; Certifications&lt;/h3&gt;
&lt;p&gt;This section includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IT Diploma&lt;/li&gt;
&lt;li&gt;Ongoing BS (IT)&lt;/li&gt;
&lt;li&gt;Professional certifications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Shows both academic and practical learning.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;achievements-amp-testimonials&quot;&gt;Achievements &amp;amp; Testimonials&lt;/h3&gt;
&lt;h4 id=&quot;achievements-&quot;&gt;Achievements:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Project milestones&lt;/li&gt;
&lt;li&gt;Internship highlights&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;testimonials-&quot;&gt;Testimonials:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Client-style feedback&lt;/li&gt;
&lt;li&gt;Builds trust and credibility&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;services-section&quot;&gt;Services Section&lt;/h3&gt;
&lt;p&gt;This section defines what I offer professionally.&lt;/p&gt;
&lt;h4 id=&quot;services-&quot;&gt;Services:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Web Development&lt;/li&gt;
&lt;li&gt;WordPress Development&lt;/li&gt;
&lt;li&gt;UI/UX &amp;amp; Design&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Structured like real service pages.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;blog-section&quot;&gt;Blog Section&lt;/h3&gt;
&lt;p&gt;This is an advanced feature of the portfolio.&lt;/p&gt;
&lt;h4 id=&quot;includes-&quot;&gt;Includes:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Real developer blogs&lt;/li&gt;
&lt;li&gt;Learning experiences&lt;/li&gt;
&lt;li&gt;Technical insights&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Helps in personal branding and SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;contact-section&quot;&gt;Contact Section&lt;/h3&gt;
&lt;p&gt;The contact section includes a fully functional form.&lt;/p&gt;
&lt;h4 id=&quot;features--3&quot;&gt;Features:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Email-JS API integration&lt;/li&gt;
&lt;li&gt;Working contact form&lt;/li&gt;
&lt;li&gt;Social links&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Users can directly send messages.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;dark-mode-amp-ui-enhancements&quot;&gt;Dark Mode &amp;amp; UI Enhancements&lt;/h3&gt;
&lt;p&gt;Modern UI features included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dark mode toggle&lt;/li&gt;
&lt;li&gt;Custom cursor&lt;/li&gt;
&lt;li&gt;Smooth animations&lt;/li&gt;
&lt;li&gt;Scroll-to-top button&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; These features improve user experience.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;folder-structure-amp-development-approach&quot;&gt;Folder Structure &amp;amp; Development Approach&lt;/h3&gt;
&lt;p&gt;The project follows a clean and scalable structure.&lt;/p&gt;
&lt;h4 id=&quot;approach-&quot;&gt;Approach:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Component-based thinking&lt;/li&gt;
&lt;li&gt;Organized assets&lt;/li&gt;
&lt;li&gt;Clean naming conventions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; This makes the project maintainable and scalable.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;performance-amp-optimization&quot;&gt;Performance &amp;amp; Optimization&lt;/h3&gt;
&lt;p&gt;Key optimizations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fast loading speed&lt;/li&gt;
&lt;li&gt;Responsive design&lt;/li&gt;
&lt;li&gt;Optimized assets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Ensures smooth user experience across devices.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-i-learned&quot;&gt;What I Learned&lt;/h3&gt;
&lt;p&gt;Through this project, I improved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI/UX design&lt;/li&gt;
&lt;li&gt;Project structuring&lt;/li&gt;
&lt;li&gt;Performance optimization&lt;/li&gt;
&lt;li&gt;Real-world development workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;watch-full-video-walkthrough&quot;&gt;Watch Full Video Walkthrough&lt;/h3&gt;
&lt;p&gt; YouTube Video:&lt;/p&gt;
&lt;h3 id=&quot;-https-youtu-be-xcyaguavp-e-si-xuudt5yaeqvdbxfb-&quot;&gt;[https://youtu.be/XcyAGuaVp_E?si=xUuDt5YaEqvDBxFb]&lt;/h3&gt;
&lt;h3 id=&quot;project-links&quot;&gt;Project Links&lt;/h3&gt;
&lt;p&gt; Live Website:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://yasirawaninfodev.vercel.app/&quot;&gt;https://yasirawaninfodev.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; GitHub Repository:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/YasirAwan4831/arch-technologies-internship-task-1-portfolio-website&quot;&gt;https://github.com/YasirAwan4831/arch-technologies-internship-task-1-portfolio-website&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;final-thoughts-1&quot;&gt;Final Thoughts&lt;/h3&gt;
&lt;p&gt;This portfolio is more than just a project — it represents my &lt;strong&gt;learning journey, growth and consistency as a developer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Building this helped me understand how real-world applications are structured and delivered.&lt;/p&gt;
&lt;p&gt; More projects, blogs and tutorials are coming soon.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14182/full-stack-portfolio-website-complete-step-by-step-breakdown</guid>
<pubDate>Tue, 07 Apr 2026 19:28:47 +0000</pubDate>
</item>
<item>
<title>UPDATE: I built a side project that turns GitHub profiles into 3D solar systems</title>
<link>https://coderlegion.com/13488/update-i-built-a-side-project-that-turns-github-profiles-into-3d-solar-systems</link>
<description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Claim Your Domain in the Stack Universe &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Have you ever wondered what your GitHub profile would look like as a 3D solar system? We've been building Stack Universe to answer that exact question. Today, we're excited to share some major updates that bring your digital cosmos to life!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=4965752414290347215&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your Universe, Your Identity&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the core features of Stack Universe is the ability to &lt;strong&gt;&quot;Claim Your Universe.&quot;&lt;/strong&gt; By signing in with GitHub, you can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customize your Central Star:&lt;/strong&gt; Choose a color that reflects your coding personality.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write your Origin Story:&lt;/strong&gt; Add a custom Universe Bio that appears both in the 3D scene and on your profile card.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pin your Best Repos:&lt;/strong&gt; Select up to 3 repositories to orbit your star as &quot;planets,&quot; showcasing your most important work.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Take Your Universe anywhere with the NEW Embed Widget&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We wanted you to be able to show off your custom universe directly in your GitHub README. Our new &lt;strong&gt;Animated SVG Embed&lt;/strong&gt; is a high-performance, pixel-perfect card (540x200px) that features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Orbit Animations:&lt;/strong&gt; Your pinned repositories rotate in real-time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pulsing Stars &amp;amp; Glow Effects:&lt;/strong&gt; A premium visual layout that matches the full 3D app.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Detailed Stats:&lt;/strong&gt; Your Universe Score and repo count, all in one sleek card.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Build the Multiverse with Us&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Stack Universe is all about visualizing the incredible impact of developers around the world. Whether you're a Python enthusiast (yellow star!) or a TypeScript wizard (cyan star!), your universe is unique.&lt;/p&gt;
&lt;p&gt;Check out your universe today: &lt;a rel=&quot;nofollow&quot; href=&quot;https://stack-universe.vercel.app&quot;&gt;https://stack-universe.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let us know what your Universe Score is in the comments! &lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/13488/update-i-built-a-side-project-that-turns-github-profiles-into-3d-solar-systems</guid>
<pubDate>Wed, 25 Mar 2026 18:07:12 +0000</pubDate>
</item>
<item>
<title>Getting Started with Bun: The Fast All-in-One JavaScript Runtime</title>
<link>https://coderlegion.com/12871/getting-started-with-bun-the-fast-all-in-one-javascript-runtime</link>
<description>&lt;p&gt;The JavaScript ecosystem has traditionally relied on multiple tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt; for runtime&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;npm/yarn/pnpm&lt;/strong&gt; for package management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webpack/Vite&lt;/strong&gt; for bundling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jest/Mocha&lt;/strong&gt; for testing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But modern development demands &lt;strong&gt;speed, simplicity, and fewer tools&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;Bun&lt;/strong&gt; comes in.&lt;/p&gt;
&lt;p&gt;Bun is an &lt;strong&gt;all-in-one JavaScript runtime&lt;/strong&gt; designed to replace many tools in the modern development stack while being &lt;strong&gt;extremely fast&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this guide, you'll learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What Bun is&lt;/li&gt;
&lt;li&gt;Why developers are switching to it&lt;/li&gt;
&lt;li&gt;How to install and run your first app&lt;/li&gt;
&lt;li&gt;Best practices for using Bun in real projects&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-is-bun-&quot;&gt;What is Bun?&lt;/h2&gt;
&lt;p&gt;Bun is a &lt;strong&gt;JavaScript runtime + toolkit&lt;/strong&gt; built for performance.&lt;/p&gt;
&lt;p&gt;Unlike traditional setups where you install many tools separately, Bun includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript runtime&lt;/li&gt;
&lt;li&gt;Package manager&lt;/li&gt;
&lt;li&gt;Bundler&lt;/li&gt;
&lt;li&gt;Test runner&lt;/li&gt;
&lt;li&gt;Task runner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All inside &lt;strong&gt;one tool&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bun is written in &lt;strong&gt;Zig&lt;/strong&gt; and uses the &lt;strong&gt;JavaScriptCore&lt;/strong&gt; engine.&lt;/p&gt;
&lt;p&gt;This combination makes it &lt;strong&gt;significantly faster than traditional Node workflows&lt;/strong&gt; in many scenarios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-developers-are-excited-about-bun&quot;&gt;Why Developers Are Excited About Bun&lt;/h2&gt;
&lt;p&gt;Bun focuses on &lt;strong&gt;developer experience and performance&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Key advantages:&lt;/p&gt;
&lt;h4 id=&quot;extremely-fast-package-installation&quot;&gt;Extremely Fast Package Installation&lt;/h4&gt;
&lt;p&gt;Instead of downloading packages repeatedly, Bun caches them efficiently.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bun install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This often runs &lt;strong&gt;2–10x faster than traditional package managers&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;built-in-tools&quot;&gt;Built-in Tools&lt;/h4&gt;
&lt;p&gt;With Bun you don’t need to install:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;separate bundlers&lt;/li&gt;
&lt;li&gt;separate test frameworks&lt;/li&gt;
&lt;li&gt;extra script runners&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One command handles most tasks.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;typescript-support-out-of-the-box&quot;&gt;TypeScript Support Out of the Box&lt;/h4&gt;
&lt;p&gt;Bun runs TypeScript &lt;strong&gt;without additional configuration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bun run index.ts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No build step required.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;installing-bun&quot;&gt;Installing Bun&lt;/h2&gt;
&lt;p&gt;Install Bun using a single command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://bun.sh/install | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After installation, verify:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you see a version number, Bun is ready.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;creating-your-first-bun-project&quot;&gt;Creating Your First Bun Project&lt;/h2&gt;
&lt;p&gt;Create a new project:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This generates a project structure like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my-bun-app
 ├─ bun.lockb
 ├─ package.json
 ├─ index.ts
 └─ node_modules
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bun automatically configures the project.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;running-your-first-script&quot;&gt;Running Your First Script&lt;/h2&gt;
&lt;p&gt;Create &lt;code&gt;index.ts&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;console.log(&quot;Hello from Bun!&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run the file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun run index.ts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hello from Bun!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bun executes TypeScript &lt;strong&gt;without transpiling manually&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;installing-packages&quot;&gt;Installing Packages&lt;/h2&gt;
&lt;p&gt;Bun works with the existing npm ecosystem.&lt;/p&gt;
&lt;p&gt;Install a dependency:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun add axios
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install dev dependency:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun add -d typescript
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Remove a package:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun remove axios
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bun also creates a &lt;strong&gt;fast lockfile&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bun.lockb
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;running-scripts&quot;&gt;Running Scripts&lt;/h2&gt;
&lt;p&gt;Scripts inside &lt;code&gt;package.json&lt;/code&gt; work the same way.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;scripts&quot;: {
    &quot;dev&quot;: &quot;bun run index.ts&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun run dev
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;building-http-apis-with-bun&quot;&gt;Building HTTP APIs with Bun&lt;/h2&gt;
&lt;p&gt;Bun includes a &lt;strong&gt;built-in HTTP server&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Example API server:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response(&quot;Hello from Bun API!&quot;);
  },
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bun run server.ts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Open:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This creates a &lt;strong&gt;high-performance API server&lt;/strong&gt; with minimal code.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;running-tests-with-bun&quot;&gt;Running Tests with Bun&lt;/h2&gt;
&lt;p&gt;Bun includes a built-in test runner.&lt;/p&gt;
&lt;p&gt;Create a test:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import { expect, test } from &quot;bun:test&quot;;

test(&quot;addition works&quot;, () =&amp;gt; {
  expect(2 + 2).toBe(4);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run tests:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun test
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No additional frameworks required.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;bundling-with-bun&quot;&gt;Bundling with Bun&lt;/h2&gt;
&lt;p&gt;Bun also works as a bundler.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun build index.ts --outdir=dist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This bundles your project for production.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;best-practices-for-using-bun&quot;&gt;Best Practices for Using Bun&lt;/h2&gt;
&lt;p&gt;To get the most from Bun, follow these practices.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;1-use-bun-for-development-tooling&quot;&gt;1. Use Bun for Development Tooling&lt;/h3&gt;
&lt;p&gt;Bun works extremely well for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI tools&lt;/li&gt;
&lt;li&gt;development servers&lt;/li&gt;
&lt;li&gt;local utilities&lt;/li&gt;
&lt;li&gt;build scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It can replace many Node-based tooling scripts.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-start-small&quot;&gt;2. Start Small&lt;/h3&gt;
&lt;p&gt;If you're migrating from &lt;strong&gt;Node.js&lt;/strong&gt;, start with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;side projects&lt;/li&gt;
&lt;li&gt;internal tools&lt;/li&gt;
&lt;li&gt;microservices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avoid migrating large production systems immediately.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-use-bun-with-modern-frameworks&quot;&gt;3. Use Bun with Modern Frameworks&lt;/h3&gt;
&lt;p&gt;Many frameworks already support Bun.&lt;/p&gt;
&lt;p&gt;Examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Next.js&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vite&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SvelteKit&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bun can run development servers faster.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-use-built-in-features-first&quot;&gt;4. Use Built-in Features First&lt;/h3&gt;
&lt;p&gt;Instead of installing extra libraries:&lt;/p&gt;
&lt;p&gt;Use Bun’s built-in tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;testing&lt;/li&gt;
&lt;li&gt;bundling&lt;/li&gt;
&lt;li&gt;server runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This keeps your stack &lt;strong&gt;simpler and faster&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-keep-compatibility-in-mind&quot;&gt;5. Keep Compatibility in Mind&lt;/h3&gt;
&lt;p&gt;Although Bun supports most Node packages, some Node APIs may behave differently.&lt;/p&gt;
&lt;p&gt;Before adopting Bun in production:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;test dependencies&lt;/li&gt;
&lt;li&gt;check compatibility&lt;/li&gt;
&lt;li&gt;review build tools&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;when-should-you-use-bun-&quot;&gt;When Should You Use Bun?&lt;/h2&gt;
&lt;p&gt;Bun is excellent for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new JavaScript projects&lt;/li&gt;
&lt;li&gt;backend APIs&lt;/li&gt;
&lt;li&gt;developer tooling&lt;/li&gt;
&lt;li&gt;TypeScript applications&lt;/li&gt;
&lt;li&gt;high-performance scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It may not yet be ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;legacy Node projects&lt;/li&gt;
&lt;li&gt;systems depending on complex Node APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;bun-vs-node-js-quick-comparison-&quot;&gt;Bun vs Node.js (Quick Comparison)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Feature         &lt;/th&gt;&lt;th&gt;Bun            &lt;/th&gt;&lt;th&gt;Node.js&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Runtime         &lt;/td&gt;&lt;td&gt;JavaScriptCore &lt;/td&gt;&lt;td&gt;V8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Package Manager &lt;/td&gt;&lt;td&gt;Built-in       &lt;/td&gt;&lt;td&gt;npm/yarn&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Bundler         &lt;/td&gt;&lt;td&gt;Built-in       &lt;/td&gt;&lt;td&gt;External tools&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Test Runner     &lt;/td&gt;&lt;td&gt;Built-in       &lt;/td&gt;&lt;td&gt;Jest/Mocha&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Speed           &lt;/td&gt;&lt;td&gt;Very fast      &lt;/td&gt;&lt;td&gt;Stable but slower&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;final-thoughts-2&quot;&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Bun represents a &lt;strong&gt;new direction in the JavaScript ecosystem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead of combining many tools, Bun provides a &lt;strong&gt;fast, unified developer experience&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For developers building modern applications with &lt;strong&gt;TypeScript, APIs, and tooling&lt;/strong&gt;, Bun can significantly &lt;strong&gt;simplify your workflow while improving performance&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you haven’t tried it yet, Bun is definitely worth exploring.&lt;/p&gt;
&lt;hr&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/12871/getting-started-with-bun-the-fast-all-in-one-javascript-runtime</guid>
<pubDate>Sat, 14 Mar 2026 18:21:10 +0000</pubDate>
</item>
<item>
<title>Writing Code That Future You Won’t Hate</title>
<link>https://coderlegion.com/12863/writing-code-that-future-you-wont-hate</link>
<description>&lt;p&gt;Every developer has experienced this moment.&lt;/p&gt;
&lt;p&gt;You open a project you wrote months ago, scroll through the code, and suddenly think: &lt;em&gt;“Who wrote this mess?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then it hits you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You did.&lt;/strong&gt; Do not act surprised. &lt;strong&gt;Yes YOU .&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Writing code that works today is easy. Writing code that is still understandable six months from now is much harder. As projects grow and teams scale, maintainability becomes just as important as functionality.&lt;/p&gt;
&lt;p&gt;The goal isn’t just to make the code run it’s to make sure &lt;strong&gt;future you (or your teammates) can read, modify, and debug it without frustration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this guide, we’ll explore practical strategies for writing clean, maintainable code that your future self will appreciate.&lt;/p&gt;
&lt;h3 id=&quot;why-writing-maintainable-code-matters&quot;&gt;Why Writing Maintainable Code Matters&lt;/h3&gt;
&lt;p&gt;Software rarely stays “finished.” Most codebases evolve constantly with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New features&lt;/li&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;
&lt;li&gt;Performance improvements&lt;/li&gt;
&lt;li&gt;Security updates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Poorly written code slows down all of these processes. Developers spend more time &lt;strong&gt;trying to understand code&lt;/strong&gt; than actually writing new logic.&lt;/p&gt;
&lt;p&gt;Maintainable code helps teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix bugs faster&lt;/li&gt;
&lt;li&gt;Onboard new developers quickly&lt;/li&gt;
&lt;li&gt;Scale systems efficiently&lt;/li&gt;
&lt;li&gt;Reduce technical debt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short, writing clean code today saves countless hours tomorrow.&lt;/p&gt;
&lt;h3 id=&quot;1-write-code-for-humans-first&quot;&gt;1. Write Code for Humans First&lt;/h3&gt;
&lt;p&gt;Computers only care that the code runs. Humans care whether it makes sense.&lt;/p&gt;
&lt;p&gt;Readable code is one of the most valuable skills a developer can develop.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;x = a * b - c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Technically correct but unclear.&lt;/p&gt;
&lt;p&gt;A better version might look like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;final_price = product_price * quantity - discount
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now anyone reading the code immediately understands what it does.&lt;/p&gt;
&lt;p&gt;Clear variable names, descriptive functions, and logical structure make a huge difference in long term maintainability.&lt;/p&gt;
&lt;h3 id=&quot;2-keep-functions-small-and-focused&quot;&gt;2. Keep Functions Small and Focused&lt;/h3&gt;
&lt;p&gt;Large functions often hide complexity and make debugging difficult.&lt;/p&gt;
&lt;p&gt;A good rule of thumb is that &lt;strong&gt;each function should do one thing well&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bad example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;processUserData()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inside this single function you might find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;input validation&lt;/li&gt;
&lt;li&gt;database queries&lt;/li&gt;
&lt;li&gt;API calls&lt;/li&gt;
&lt;li&gt;logging&lt;/li&gt;
&lt;li&gt;response formatting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes the function difficult to test and maintain.&lt;/p&gt;
&lt;p&gt;Instead, break logic into smaller components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;validateUserInput()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;saveUserToDatabase()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sendWelcomeEmail()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Smaller functions are easier to understand, test, and reuse.&lt;/p&gt;
&lt;h3 id=&quot;3-avoid-clever-code-that-nobody-understands&quot;&gt;3. Avoid Clever Code That Nobody Understands&lt;/h3&gt;
&lt;p&gt;Developers sometimes write clever one liners that look impressive but confuse everyone else.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;const result = arr.reduce((a,b)=&amp;gt;a+b);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While concise, overly compressed code can reduce readability.&lt;/p&gt;
&lt;p&gt;Clarity should almost always win over cleverness.&lt;/p&gt;
&lt;p&gt;Future maintainers including yourself will thank you for writing code that is easy to follow.&lt;/p&gt;
&lt;h3 id=&quot;4-document-the-why-not-the-what-&quot;&gt;4. Document the “Why,” Not the “What”&lt;/h3&gt;
&lt;p&gt;Comments are useful but only when they explain something meaningful.&lt;/p&gt;
&lt;p&gt;Avoid comments that simply repeat what the code already says.&lt;/p&gt;
&lt;p&gt;Bad comment:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// increment counter
counter++
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead, explain &lt;strong&gt;why something exists&lt;/strong&gt;, especially when the logic is not obvious.&lt;/p&gt;
&lt;p&gt;Better comment:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// Retry API call because the payment gateway occasionally returns transient errors
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Good comments provide context that code alone cannot explain.&lt;/p&gt;
&lt;h3 id=&quot;5-organize-your-project-structure&quot;&gt;5. Organize Your Project Structure&lt;/h3&gt;
&lt;p&gt;Even well written code becomes difficult to maintain when it’s scattered across poorly structured directories.&lt;/p&gt;
&lt;p&gt;A clear project structure helps developers quickly find what they need.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src/
  controllers/
  services/
  models/
  utils/
tests/
config/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Consistent folder organization improves collaboration and reduces confusion across teams.&lt;/p&gt;
&lt;h3 id=&quot;6-write-code-that-is-easy-to-debug&quot;&gt;6. Write Code That Is Easy to Debug&lt;/h3&gt;
&lt;p&gt;Future debugging is inevitable, so make it easier.&lt;/p&gt;
&lt;p&gt;Helpful practices include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meaningful error messages&lt;/li&gt;
&lt;li&gt;structured logging&lt;/li&gt;
&lt;li&gt;defensive checks&lt;/li&gt;
&lt;li&gt;clear exception handling&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;Instead of this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;raise Exception(&quot;Error&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;raise ValueError(&quot;Invalid email format provided during registration&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Specific errors save time when diagnosing issues later.&lt;/p&gt;
&lt;h3 id=&quot;7-reduce-technical-debt-early&quot;&gt;7. Reduce Technical Debt Early&lt;/h3&gt;
&lt;p&gt;Technical debt is the result of quick fixes that were never cleaned up.&lt;/p&gt;
&lt;p&gt;Common examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;duplicated code&lt;/li&gt;
&lt;li&gt;unused variables&lt;/li&gt;
&lt;li&gt;temporary workarounds&lt;/li&gt;
&lt;li&gt;outdated dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Occasional refactoring keeps code healthy.&lt;/p&gt;
&lt;p&gt;You don’t need to chase perfection but ignoring technical debt for too long can make systems difficult to maintain.&lt;/p&gt;
&lt;h3 id=&quot;8-write-tests-for-critical-logic&quot;&gt;8. Write Tests for Critical Logic&lt;/h3&gt;
&lt;p&gt;Automated tests act as safety nets for future changes.&lt;/p&gt;
&lt;p&gt;When developers update a feature, tests confirm that existing functionality still works.&lt;/p&gt;
&lt;p&gt;Even simple tests can dramatically improve long term reliability.&lt;/p&gt;
&lt;p&gt;Testing helps developers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;refactor safely&lt;/li&gt;
&lt;li&gt;detect regressions early&lt;/li&gt;
&lt;li&gt;build confidence when modifying old code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Future you will appreciate having a safety net.&lt;/p&gt;
&lt;h3 id=&quot;9-think-like-the-next-developer&quot;&gt;9. Think Like the Next Developer&lt;/h3&gt;
&lt;p&gt;Before committing code, ask yourself a simple question:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Would someone unfamiliar with this code understand it quickly?”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the answer is no, consider improving:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;naming&lt;/li&gt;
&lt;li&gt;structure&lt;/li&gt;
&lt;li&gt;comments&lt;/li&gt;
&lt;li&gt;function organization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your goal isn’t just to finish tasks it’s to leave the codebase in a better state than you found it.&lt;/p&gt;
&lt;h2 id=&quot;final-thoughts-write-code-like-someone-will-maintain-it-because-they-will-&quot;&gt;Final Thoughts: Write Code Like Someone Will Maintain It (Because They Will)&lt;/h2&gt;
&lt;p&gt;Every developer eventually becomes the “future maintainer” of their own code.&lt;/p&gt;
&lt;p&gt;The difference between a painful debugging session and a smooth update often comes down to &lt;strong&gt;how the code was written in the first place&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Clean, maintainable code isn’t about perfection. It’s about making thoughtful decisions that prioritize readability, structure, and clarity.&lt;/p&gt;
&lt;p&gt;Write code that solves today’s problem but also respects tomorrow’s developer.&lt;/p&gt;
&lt;p&gt;And more often than not, that developer will be &lt;strong&gt;you&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you found this helpful, share it with your team or bookmark it for your next code review. Small improvements in coding habits can lead to dramatically better software over time.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/12863/writing-code-that-future-you-wont-hate</guid>
<pubDate>Sat, 14 Mar 2026 13:10:19 +0000</pubDate>
</item>
<item>
<title>Deploying a React/Vite App on Google Cloud Storage + CDN: A Faster and 10× Cheaper Alternative</title>
<link>https://coderlegion.com/12529/deploying-a-react-vite-app-on-google-cloud-storage-cdn-a-faster-and-10-cheaper-alternative</link>
<description>&lt;p&gt;Modern frontend frameworks like React, Angular, and Vite produce &lt;strong&gt;static assets&lt;/strong&gt; after building the project. These assets include HTML, CSS, JavaScript, and images. Since they are static, they &lt;strong&gt;do not require a server runtime like Node.js&lt;/strong&gt; to serve them.&lt;/p&gt;
&lt;p&gt;Many developers initially deploy these apps on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;, but that approach often introduces unnecessary complexity and cost. A much better option is deploying the static build to &lt;strong&gt;Google Cloud Storage (GCS) with Cloud CDN&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This article explains why &lt;strong&gt;Cloud Storage + CDN is faster, cheaper, and simpler&lt;/strong&gt;, and how you can deploy your frontend application in minutes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-cloud-run-is-not-ideal-for-static-frontends&quot;&gt;Why Cloud Run is Not Ideal for Static Frontends&lt;/h2&gt;
&lt;p&gt;Cloud Run is designed for &lt;strong&gt;containerized backend applications&lt;/strong&gt;. When you deploy a React or Vite app there, you typically run a Node server such as &lt;code&gt;serve&lt;/code&gt; or &lt;code&gt;nginx&lt;/code&gt; to deliver static files.&lt;/p&gt;
&lt;p&gt;This creates several inefficiencies:&lt;/p&gt;
&lt;p&gt;• You pay for container compute time&lt;br&gt;
• Containers need to start and scale&lt;br&gt;
• Cold starts can slow down responses&lt;br&gt;
• Infrastructure is more complex than necessary&lt;/p&gt;
&lt;p&gt;For applications that only serve static assets, using a compute service is unnecessary.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-google-cloud-storage-cdn-is-better&quot;&gt;Why Google Cloud Storage + CDN is Better&lt;/h2&gt;
&lt;p&gt;Google Cloud Storage can serve static files directly, while Cloud CDN caches those files at edge locations worldwide.&lt;/p&gt;
&lt;p&gt;Benefits include:&lt;/p&gt;
&lt;h4 id=&quot;1-much-lower-cost&quot;&gt;1. Much Lower Cost&lt;/h4&gt;
&lt;p&gt;Cloud Storage only charges for &lt;strong&gt;storage and bandwidth&lt;/strong&gt;, not compute time. For most frontend apps, this can reduce costs by &lt;strong&gt;up to 90% compared to Cloud Run&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;2-global-edge-performance&quot;&gt;2. Global Edge Performance&lt;/h4&gt;
&lt;p&gt;Cloud CDN caches your assets across Google's global edge network. Users download files from a location close to them, significantly improving load times.&lt;/p&gt;
&lt;h4 id=&quot;3-simpler-infrastructure&quot;&gt;3. Simpler Infrastructure&lt;/h4&gt;
&lt;p&gt;There are no containers, Dockerfiles, or runtime environments to manage. You simply upload files.&lt;/p&gt;
&lt;h4 id=&quot;4-automatic-scalability&quot;&gt;4. Automatic Scalability&lt;/h4&gt;
&lt;p&gt;Static hosting with CDN scales automatically to millions of requests without configuration.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;architecture-overview&quot;&gt;Architecture Overview&lt;/h2&gt;
&lt;p&gt;The deployment architecture looks like this:&lt;/p&gt;
&lt;p&gt;User → Cloud CDN → Google Cloud Load Balancer → Cloud Storage Bucket&lt;/p&gt;
&lt;p&gt;Static files are stored in the bucket, while CDN nodes cache frequently accessed files.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-1-build-your-application&quot;&gt;Step 1: Build Your Application&lt;/h2&gt;
&lt;p&gt;If you're using Vite or React, generate the production build.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This creates a folder such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dist/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or for CRA:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;build/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This folder contains all files required to host the application.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-2-create-a-cloud-storage-bucket&quot;&gt;Step 2: Create a Cloud Storage Bucket&lt;/h2&gt;
&lt;p&gt;Create a bucket that will host the static files.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gcloud storage buckets create gs://my-react-app-bucket \
  --location=us-central1
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-3-make-the-bucket-public&quot;&gt;Step 3: Make the Bucket Public&lt;/h2&gt;
&lt;p&gt;Allow public access so users can retrieve the assets.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gcloud storage buckets add-iam-policy-binding gs://my-react-app-bucket \
  --member=allUsers \
  --role=roles/storage.objectViewer
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-4-upload-the-build-files&quot;&gt;Step 4: Upload the Build Files&lt;/h2&gt;
&lt;p&gt;Upload the contents of your build folder.&lt;/p&gt;
&lt;p&gt;For Vite:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gcloud storage cp -r dist/* gs://my-react-app-bucket
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For Create React App:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gcloud storage cp -r build/* gs://my-react-app-bucket
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-5-configure-the-website-entry-point&quot;&gt;Step 5: Configure the Website Entry Point&lt;/h2&gt;
&lt;p&gt;Set the default page to &lt;code&gt;index.html&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gcloud storage buckets update gs://my-react-app-bucket \
  --web-main-page-suffix=index.html \
  --web-error-page=index.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This ensures React Router works correctly by redirecting unknown routes to &lt;code&gt;index.html&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-6-enable-cloud-cdn&quot;&gt;Step 6: Enable Cloud CDN&lt;/h2&gt;
&lt;p&gt;For production-grade deployments, place the bucket behind a &lt;strong&gt;Cloud Load Balancer with Cloud CDN enabled&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Benefits include:&lt;/p&gt;
&lt;p&gt;• Global caching&lt;br&gt;
• HTTPS support&lt;br&gt;
• Custom domains&lt;br&gt;
• Faster asset delivery&lt;/p&gt;
&lt;p&gt;While optional for small projects, CDN is highly recommended for real-world applications.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cost-comparison&quot;&gt;Cost Comparison&lt;/h2&gt;
&lt;p&gt;Typical monthly cost for a medium frontend application:&lt;/p&gt;
&lt;p&gt;Cloud Run Deployment&lt;/p&gt;
&lt;p&gt;• Compute charges&lt;br&gt;
• Container startup time&lt;br&gt;
• Networking overhead&lt;/p&gt;
&lt;p&gt;Estimated cost: &lt;strong&gt;$10–$30/month&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cloud Storage + CDN Deployment&lt;/p&gt;
&lt;p&gt;• Storage for assets&lt;br&gt;
• Bandwidth usage only&lt;/p&gt;
&lt;p&gt;Estimated cost: &lt;strong&gt;$1–$5/month&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;when-you-should-use-cloud-run-instead&quot;&gt;When You Should Use Cloud Run Instead&lt;/h2&gt;
&lt;p&gt;Cloud Run is still the right choice when your application includes:&lt;/p&gt;
&lt;p&gt;• Backend APIs&lt;br&gt;
• Server-side rendering (Next.js SSR)&lt;br&gt;
• Authentication services&lt;br&gt;
• AI or database integrations&lt;/p&gt;
&lt;p&gt;In these cases, compute is required.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;final-thoughts-3&quot;&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;If your application is a &lt;strong&gt;pure frontend build&lt;/strong&gt;, deploying it on Cloud Run is unnecessary. Hosting the build on &lt;strong&gt;Google Cloud Storage with Cloud CDN&lt;/strong&gt; is simpler, faster, and significantly cheaper.&lt;/p&gt;
&lt;p&gt;By eliminating containers and compute layers, you can deliver your application globally with minimal infrastructure while benefiting from Google’s edge network.&lt;/p&gt;
&lt;p&gt;For most React, Angular, and Vite applications, &lt;strong&gt;Cloud Storage + CDN is the optimal production deployment strategy&lt;/strong&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/12529/deploying-a-react-vite-app-on-google-cloud-storage-cdn-a-faster-and-10-cheaper-alternative</guid>
<pubDate>Tue, 10 Mar 2026 15:09:29 +0000</pubDate>
</item>
<item>
<title>Redesigend whole portfolio from scratch</title>
<link>https://coderlegion.com/11485/redesigend-whole-portfolio-from-scratch</link>
<description>&lt;p&gt;Recently redesigned my entire portfolio from scratch.&lt;/p&gt;
&lt;p&gt;This wasn’t just a UI refresh. I rebuilt it with a stronger focus on how I actually approach software development: building interactive, performance-driven, and experience-focused products. I paid extra attention to smoother animations, cleaner navigation flow, and making each section feel intentional rather than just informational.&lt;/p&gt;
&lt;p&gt;The goal was simple: turn the portfolio from a project list into a product-like experience that reflects how I think, design, and engineer solutions.&lt;/p&gt;
&lt;p&gt;I’m treating this as a living project, so I’m actively looking for honest feedback, criticism, and ideas that could push it further.&lt;/p&gt;
&lt;p&gt;Check it out here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.sayoun.studio/&quot;&gt;https://www.sayoun.studio/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Would really appreciate your review, especially around UX, performance, storytelling, or anything that feels confusing, unnecessary, or missing.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/11485/redesigend-whole-portfolio-from-scratch</guid>
<pubDate>Thu, 12 Feb 2026 08:34:09 +0000</pubDate>
</item>
<item>
<title>How I Built a React Portfolio in 7 Days That Landed ₹1.2L in Freelance Work</title>
<link>https://coderlegion.com/11265/how-i-built-a-react-portfolio-in-7-days-that-landed-1-2l-in-freelance-work</link>
<description>&lt;p&gt;If you are a React developer stuck in tutorial hell with no real portfolio, this walkthrough is for you.&lt;/p&gt;
&lt;p&gt;In this article, I’ll break down how I built a &lt;strong&gt;React portfolio website with Vite and Tailwind CSS&lt;/strong&gt; that helped me land &lt;strong&gt;₹1.2L+ in freelance projects&lt;/strong&gt; in under three weeks. No paid tools, no over‑engineered stack just a clean, fast portfolio that real clients could open and understand.&lt;/p&gt;
&lt;h3 id=&quot;step-1-set-up-a-vite-react-project&quot;&gt;Step 1: Set up a Vite + React project&lt;/h3&gt;
&lt;p&gt;Instead of Create React App, I went with Vite because it is extremely fast and lightweight for React projects.&lt;/p&gt;
&lt;p&gt;Run these commands:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm create vite@latest my-portfolio -- --template react
cd my-portfolio
npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your development server should start at &lt;a rel=&quot;nofollow&quot; href=&quot;http://localhost:5173&quot;&gt;http://localhost:5173&lt;/a&gt;. Once it is running, clear out the default content in &lt;code&gt;App.jsx&lt;/code&gt; so you can start from a blank slate.&lt;/p&gt;
&lt;h3 id=&quot;step-2-configure-tailwind-css&quot;&gt;Step 2: Configure Tailwind CSS&lt;/h3&gt;
&lt;p&gt;Tailwind handled all the styling for this project, and getting the config right early made customization much easier.&lt;/p&gt;
&lt;p&gt;Install Tailwind and its dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Update &lt;code&gt;tailwind.config.js&lt;/code&gt; to scan the right files:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export default {
  content: [
    &quot;./index.html&quot;,
    &quot;./src/**/*.{js,ts,jsx,tsx}&quot;,
  ],
  theme: {
    extend: {
      colors: {
        primary: '#3b82f6',
        dark: '#1e293b',
      },
      fontFamily: {
        sans: ['Inter', 'sans-serif'],
      },
    },
  },
  plugins: [],
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then add the Tailwind directives to &lt;code&gt;src/index.css&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point, you can start using Tailwind utility classes directly in your JSX.&lt;/p&gt;
&lt;h3 id=&quot;step-3-build-reusable-components&quot;&gt;Step 3: Build reusable components&lt;/h3&gt;
&lt;p&gt;To move fast, I leaned heavily on component‑driven design. One of the core building blocks was a &lt;strong&gt;ProjectCard&lt;/strong&gt; component that I reused for each portfolio project.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const ProjectCard = ({ title, description, tech, liveUrl, githubUrl, image }) =&amp;gt; {
  return (
    &amp;lt;div className=&quot;bg-dark rounded-xl shadow-md overflow-hidden flex flex-col&quot;&amp;gt;
      {image &amp;amp;&amp;amp; (
        &amp;lt;img
          src={image}
          alt={title}
          className=&quot;h-48 w-full object-cover&quot;
        &amp;gt;
      )}
      &amp;lt;div className=&quot;p-6 flex-1 flex flex-col&quot;&amp;gt;
        &amp;lt;h3 className=&quot;text-xl font-semibold text-white mb-2&quot;&amp;gt;
          {title}
        &amp;lt;/h3&amp;gt;
        &amp;lt;p className=&quot;text-slate-300 mb-4&quot;&amp;gt;
          {description}
        &amp;lt;/p&amp;gt;
        &amp;lt;div className=&quot;flex flex-wrap gap-2 mb-4&quot;&amp;gt;
          {tech.map((t, i) =&amp;gt; (
            &amp;lt;span
              key={i}
              className=&quot;px-3 py-1 text-xs rounded-full bg-slate-800 text-slate-200&quot;
            &amp;gt;
              {t}
            &amp;lt;/span&amp;gt;
          ))}
        &amp;lt;/div&amp;gt;
        &amp;lt;div className=&quot;mt-auto flex gap-3&quot;&amp;gt;
          {liveUrl &amp;amp;&amp;amp; (
            &amp;lt;a
              href={liveUrl}
              target=&quot;_blank&quot;
              rel=&quot;noreferrer&quot;
              className=&quot;text-sm font-medium text-primary hover:underline&quot;
            &amp;gt;
              Live Demo
            &amp;lt;/a&amp;gt;
          )}
          {githubUrl &amp;amp;&amp;amp; (
            &amp;lt;a
              href={githubUrl}
              target=&quot;_blank&quot;
              rel=&quot;noreferrer&quot;
              className=&quot;text-sm font-medium text-slate-300 hover:underline&quot;
            &amp;gt;
              GitHub
            &amp;lt;/a&amp;gt;
          )}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can then use ProjectCard in your main page or a Projects section by passing in different props for each project.&lt;/p&gt;
&lt;h3 id=&quot;step-4-deploy-to-vercel-in-minutes&quot;&gt;Step 4: Deploy to Vercel in minutes&lt;/h3&gt;
&lt;p&gt;Once the portfolio was ready, I pushed the code to &lt;strong&gt;GitHub&lt;/strong&gt; and deployed with &lt;strong&gt;Vercel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Basic steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Push the repository to GitHub.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://vercel.com/&quot;&gt;vercel.com&lt;/a&gt; and sign in with GitHub.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Import Project and select your portfolio repo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vercel automatically detects Vite just click Deploy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Vercel gives you a URL like &lt;code&gt;yourname.vercel.app&lt;/code&gt;. You can later attach a custom domain from the project settings; I used a &lt;code&gt;.tech&lt;/code&gt; domain for a professional look.&lt;/p&gt;
&lt;p&gt;If you prefer Netlify, you can run &lt;code&gt;npm run build&lt;/code&gt; and drag‑and‑drop the &lt;code&gt;dist&lt;/code&gt; folder into Netlify’s UI both options are free and include SSL.&lt;/p&gt;
&lt;h3 id=&quot;step-5-portfolio-layout-that-actually-converts&quot;&gt;Step 5: Portfolio layout that actually converts&lt;/h3&gt;
&lt;p&gt;You can see the live portfolio at &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.dtechsolutions.tech/&quot;&gt;dtechsolutions.tech&lt;/a&gt;. Here is the structure that helped me convert visitors into paying freelance clients:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hero section:&lt;/strong&gt; A clear headline such as “Full‑Stack Developer specializing in React + Node.js” plus a concise subheading and a primary CTA.&lt;/p&gt;
&lt;p&gt;3 - 4 strong projects: Focus on a handful of solid, deployed projects with live demos and GitHub links.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tech stack badges:&lt;/strong&gt; Visual tech tags or icons (for example with react-icons) so clients quickly understand what you use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contact form:&lt;/strong&gt; I used Formspree for contact handling without needing a custom backend.&lt;/p&gt;
&lt;p&gt;Tech stack used&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React 18&lt;/li&gt;
&lt;li&gt;Vite 5&lt;/li&gt;
&lt;li&gt;Tailwind CSS 3&lt;/li&gt;
&lt;li&gt;Vercel (deployment)&lt;/li&gt;
&lt;li&gt;Formspree (contact form)&lt;/li&gt;
&lt;li&gt;GitHub (version control)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This stack was enough to ship fast, iterate quickly, and still look professional to clients.&lt;/p&gt;
&lt;p&gt;Pros and cons of this stack&lt;br&gt;
text&lt;br&gt;
| Pros                                          | Cons                                         |&lt;br&gt;
| --------------------------------------------- | -------------------------------------------- |&lt;br&gt;
| Tailwind utility classes speed up styling     | Initial learning curve for Tailwind syntax   |&lt;br&gt;
| Component reusability saves a lot of time     | Dark mode requires custom setup              |&lt;br&gt;
| Vite dev server is extremely fast             | Smaller ecosystem compared to Next.js        |&lt;br&gt;
| Free deployment on Vercel/Netlify with SSL    | Client-side rendering only (limited SEO)     |&lt;br&gt;
| Mobile responsiveness is easy to achieve      | Larger CSS bundle than handcrafted CSS       |&lt;br&gt;
From zero portfolio to paid gigs&lt;br&gt;
Within about two weeks of making the portfolio public, I started getting actual freelance work:&lt;/p&gt;
&lt;p&gt;On Reddit (subreddits like &lt;code&gt;/r/forhire&lt;/code&gt; and &lt;code&gt;/r/webdev&lt;/code&gt;), I landed a couple of gigs by replying to “looking for developer” posts with my portfolio link.&lt;/p&gt;
&lt;p&gt;On LinkedIn, I shared the portfolio with &lt;strong&gt;#opentowork&lt;/strong&gt; and relevant tech hashtags, which led to multiple projects.&lt;/p&gt;
&lt;p&gt;Typical project sizes ranged from ₹30K for simpler landing pages to ₹50K+ for dashboards and more complex builds.&lt;/p&gt;
&lt;p&gt;Clients particularly liked that they could click a live link and interact with the projects instead of just seeing GitHub repositories.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Practical tips for Indian freelancers&lt;/strong&gt;&lt;br&gt;
If you are targeting Indian clients specifically, these points helped me:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quote in rupees initially:&lt;/strong&gt; For early projects, starting around ₹20K - ₹30K for smaller builds works well; raise rates as you collect testimonials.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use your time zone as a feature:&lt;/strong&gt; Promise quick responses and same‑day iterations for IST‑based clients.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Know local payment flows:&lt;/strong&gt; Show that you can integrate Razorpay/UPI or other Indian payment gateways.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mention local hosting experience:&lt;/strong&gt; If clients care about data locality or compliance, highlight any work with Indian hosting providers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be visible on LinkedIn:&lt;/strong&gt; Founders and decision makers are very active there comment on their posts, share your work, and keep your profile updated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final thoughts&lt;/strong&gt;&lt;br&gt;
You do not need an overcomplicated stack or months of planning to start getting freelance work. A simple combination of React, Tailwind, and Vercel was enough for me to go from no portfolio to real paid projects in a matter of weeks.&lt;/p&gt;
&lt;p&gt;Focus on shipping a functional, honest portfolio, then refine it as you learn from real client feedback. Your first freelance opportunity might be just one deployed React portfolio away and if you are curious, you can check out mine here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.dtechsolutions.tech/&quot;&gt;https://www.dtechsolutions.tech/&lt;/a&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/11265/how-i-built-a-react-portfolio-in-7-days-that-landed-1-2l-in-freelance-work</guid>
<pubDate>Tue, 10 Feb 2026 03:00:00 +0000</pubDate>
</item>
<item>
<title>Building My Personal Portfolio Website: Design, Decisions and Growth</title>
<link>https://coderlegion.com/10105/building-my-personal-portfolio-website-design-decisions-and-growth</link>
<description>&lt;h2 id=&quot;building-my-personal-portfolio-website-design-decisions-and-growth&quot;&gt;Building My Personal Portfolio Website: Design, Decisions and Growth&lt;/h2&gt;
&lt;p&gt;Over the past few days, I’ve been actively working on my &lt;strong&gt;personal portfolio website&lt;/strong&gt;—not just as a showcase of projects, but as a reflection of my learning journey, mindset and growth as a developer.&lt;/p&gt;
&lt;p&gt;This portfolio is being built with a clear goal in mind: &lt;strong&gt;clarity, simplicity and strong first impressions&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;why-i-decided-to-rebuild-my-portfolio&quot;&gt;Why I Decided to Rebuild My Portfolio&lt;/h3&gt;
&lt;p&gt;A portfolio is often the first interaction someone has with a developer. I wanted mine to clearly answer three questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Who am I as a developer?&lt;/li&gt;
&lt;li&gt;What skills do I bring to the table?&lt;/li&gt;
&lt;li&gt;How do I approach design and user experience?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rather than overloading it with animations or unnecessary complexity, I chose to focus on &lt;strong&gt;clean structure, readable content and purpose-driven design&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;design-amp-ui-approach&quot;&gt;Design &amp;amp; UI Approach&lt;/h3&gt;
&lt;p&gt;My primary focus was on keeping the interface modern yet minimal. I paid close attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Layout hierarchy to guide the user naturally&lt;/li&gt;
&lt;li&gt;Typography for readability and balance&lt;/li&gt;
&lt;li&gt;Spacing and alignment for a clean visual flow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The hero section plays a key role here—it sets the tone of the entire website and delivers the core message within seconds.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt; &lt;strong&gt;Screenshot Placement:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tou74lc3kzoamwdp49kt.jpeg&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;technical-perspective&quot;&gt;Technical Perspective&lt;/h3&gt;
&lt;p&gt;From a technical standpoint, I focused on building a structure that is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Responsive across different screen sizes&lt;/li&gt;
&lt;li&gt;Easy to maintain and extend&lt;/li&gt;
&lt;li&gt;Cleanly organized for scalability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal wasn’t just to make something that looks good but something that is &lt;strong&gt;practical, efficient&lt;/strong&gt; and &lt;strong&gt;future-ready&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;challenges-amp-learnings&quot;&gt;Challenges &amp;amp; Learnings&lt;/h3&gt;
&lt;p&gt;While working on this portfolio, I faced many big and small but important challenges—especially around layout consistency and responsive behaviour. Solving these helped me better understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How small UI decisions impact overall UX&lt;/li&gt;
&lt;li&gt;The importance of testing designs across devices&lt;/li&gt;
&lt;li&gt;Writing cleaner more reusable code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each section I complete adds more clarity—not just to the website but to my own development process.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-s-next&quot;&gt;What’s Next&lt;/h3&gt;
&lt;p&gt;This is still a work in progress. Upcoming improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Additional sections with more detailed content&lt;/li&gt;
&lt;li&gt;Performance optimizations&lt;/li&gt;
&lt;li&gt;Refining responsiveness and accessibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I believe in &lt;strong&gt;building in public&lt;/strong&gt;, sharing progress honestly and improving step by step.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;final-thoughts-4&quot;&gt;Final Thoughts&lt;/h3&gt;
&lt;p&gt;This portfolio is more than a personal website—it’s a snapshot of where I am right now as a developer and where I’m heading next.&lt;/p&gt;
&lt;p&gt;Still building. Still improving. One section at a time.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;If you’re also working on your portfolio or learning web development, I’d love to hear about your experience.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Connect With Me &amp;amp; View Related Posts&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/yasirawan4831&quot;&gt;https://www.linkedin.com/in/yasirawan4831&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medium:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://medium.com/@YasirAwan4831&quot;&gt;https://medium.com/@YasirAwan4831&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;All Links:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://yasirawan4831.github.io/futuristic-links-dashboard/&quot;&gt;https://yasirawan4831.github.io/futuristic-links-dashboard/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;_#WebDevelopment #Portfolio #FullStackDeveloper #WebDevelopement #BuildingInPublic #MuhammadYasir #YasirAwan4831&lt;/em&gt;&lt;br&gt;
_&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/10105/building-my-personal-portfolio-website-design-decisions-and-growth</guid>
<pubDate>Tue, 20 Jan 2026 18:32:01 +0000</pubDate>
</item>
<item>
<title>Portfolio Perfection: 16 Developers Who Nailed Their Personal Brand</title>
<link>https://coderlegion.com/4108/portfolio-perfection-16-developers-who-nailed-their-personal-brand</link>
<description>&lt;h2 id=&quot;16-developer-portfolios-that-will-make-you-rethink-your-personal-brand&quot;&gt;16 Developer Portfolios That Will Make You Rethink Your Personal Brand&lt;/h2&gt;
&lt;p&gt;Building a developer portfolio in 2025 isn't just about showcasing code. It's about telling your story, demonstrating your problem-solving approach, and creating an experience that potential employers or clients won't forget. After spending countless hours browsing through developer portfolios, I've found 16 that truly stand out from the crowd.&lt;/p&gt;
&lt;h3 id=&quot;1-ouassim-when-less-really-is-more&quot;&gt;1. Ouassim: When Less Really Is More&lt;/h3&gt;
&lt;p&gt;Ouassim's portfolio proves that you don't need flashy animations or bold colors to make an impact. His clean, typography-focused design creates a sophisticated experience that puts the spotlight exactly where it should be: on his work. The monochromatic color scheme feels intentional rather than boring, and the subtle animations add just enough movement to keep things interesting.&lt;/p&gt;
&lt;p&gt;What makes it work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigation that feels effortless&lt;/li&gt;
&lt;li&gt;Case studies that actually tell a story&lt;/li&gt;
&lt;li&gt;Looks great whether you're on desktop or mobile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/8ba1b6e7bce56cb30ea03a0531edf0ca479dd684-1502x909.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;2-jahir-fiquitiva-material-design-done-right&quot;&gt;2. Jahir Fiquitiva: Material Design Done Right&lt;/h3&gt;
&lt;p&gt;If you've ever wondered what happens when someone truly masters Material Design, look no further than Jahir's portfolio. The vibrant colors and smooth transitions don't just look good. They create an experience that feels intuitive and polished. You can tell he genuinely cares about user experience.&lt;/p&gt;
&lt;p&gt;What caught my attention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects you can actually interact with&lt;/li&gt;
&lt;li&gt;Clear breakdown of what technologies he used&lt;/li&gt;
&lt;li&gt;Dark/light mode toggle that doesn't feel like an afterthought&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/616c6c56ab755c6d0aaf125fdc1ed8f43940f45a-1169x842.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;3-theodorus-clarence-your-professional-journey-as-a-story&quot;&gt;3. Theodorus Clarence: Your Professional Journey as a Story&lt;/h3&gt;
&lt;p&gt;Theodorus has created something special here. Instead of the typical &quot;here are my projects&quot; approach, his portfolio feels like reading through someone's professional evolution. The way he integrates his personal story with his technical achievements creates a connection that most portfolios miss entirely.&lt;/p&gt;
&lt;p&gt;Why it works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Animations that enhance rather than distract&lt;/li&gt;
&lt;li&gt;Personal narrative woven throughout&lt;/li&gt;
&lt;li&gt;Project presentations that feel fresh and engaging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/86213fa3bc668f7eace29019b908027d7b972749-1760x889.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;4-bona-brian-siagian-a-visual-feast&quot;&gt;4. Bona Brian Siagian: A Visual Feast&lt;/h3&gt;
&lt;p&gt;Bona's portfolio is what happens when exceptional design skills meet solid development chops. Every project presentation feels like a mini-experience, complete with 3D previews and multimedia case studies. It's ambitious without being overwhelming.&lt;/p&gt;
&lt;p&gt;Standout elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3D project previews that actually add value&lt;/li&gt;
&lt;li&gt;Rich multimedia storytelling&lt;/li&gt;
&lt;li&gt;Seamless blend of design and development work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/db5dac5de7fd548125c274aca52bff4911a7554e-1598x876.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;5-lee-robinson-impact-over-everything&quot;&gt;5. Lee Robinson: Impact Over Everything&lt;/h3&gt;
&lt;p&gt;Lee's portfolio reflects his journey from engineer to executive at Vercel, and it's refreshingly honest about what actually matters in tech careers. Instead of trying to impress with flashy designs, he focuses on the impact he's had. For example, helping grow Next.js to over 1.3 million developers.&lt;/p&gt;
&lt;p&gt;What sets it apart:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clean design that prioritizes content&lt;/li&gt;
&lt;li&gt;Focus on measurable impact and achievements&lt;/li&gt;
&lt;li&gt;Personal touches that don't feel forced&lt;/li&gt;
&lt;li&gt;Emphasis on shipping quickly and effectively&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/c32e094ff38099954e07b3e696067ab3eab63df1-1372x871.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;6-marc-bouchenoire-simplicity-that-works&quot;&gt;6. Marc Bouchenoire: Simplicity That Works&lt;/h3&gt;
&lt;p&gt;Marc's approach is refreshingly straightforward. His portfolio doesn't try to reinvent the wheel. It just executes the basics exceptionally well. Sometimes that's exactly what you need.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interface that gets out of your way&lt;/li&gt;
&lt;li&gt;Project descriptions that are actually useful&lt;/li&gt;
&lt;li&gt;Fast loading times (seriously, try it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/0d5630afee8710cce5c9da0af86fcfe62a4be128-1373x907.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;7-victor-eke-breaking-the-rules&quot;&gt;7. Victor Eke: Breaking the Rules&lt;/h3&gt;
&lt;p&gt;Victor's portfolio feels like a playground, but in the best possible way. The creative interactions and playful elements demonstrate his technical skills while showing his personality. It's bold without being unprofessional.&lt;/p&gt;
&lt;p&gt;Creative touches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigation that surprises without confusing&lt;/li&gt;
&lt;li&gt;Project presentations with personality&lt;/li&gt;
&lt;li&gt;Consistent branding throughout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/2e4e11b978a5398fc311becfa7d2a10865de5e9b-1660x889.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;8-ryan-aulia-modern-without-being-trendy&quot;&gt;8. Ryan Aulia: Modern Without Being Trendy&lt;/h3&gt;
&lt;p&gt;Ryan has managed to create something that feels contemporary without chasing every design trend. The smooth scrolling effects and modern typography create an experience that feels polished and professional.&lt;/p&gt;
&lt;p&gt;Design highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scrolling that enhances the experience&lt;/li&gt;
&lt;li&gt;Typography choices that actually improve readability&lt;/li&gt;
&lt;li&gt;Skills section that doesn't feel like a resume&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/b6132504c65f8c7c76aad02ea411aebf9c3ce031-1447x913.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;9-vijay-verma-when-design-meets-development&quot;&gt;9. Vijay Verma: When Design Meets Development&lt;/h3&gt;
&lt;p&gt;Vijay's portfolio successfully bridges the gap between design and development. Each project feels carefully crafted, with detailed process documentation that shows how he thinks through problems.&lt;/p&gt;
&lt;p&gt;What makes it special:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects that showcase both design and code&lt;/li&gt;
&lt;li&gt;Process documentation that's actually interesting&lt;/li&gt;
&lt;li&gt;Interactions that feel natural&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/746e866acb751cf28444936b4018eadb0d7da73d-1240x914.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;10-rapha-l-chelly-technical-depth&quot;&gt;10. Raphaël Chelly: Technical Depth&lt;/h3&gt;
&lt;p&gt;Raphaël's portfolio goes deeper than most. The technical explanations and personal insights create a picture of someone who doesn't just code, but thinks deeply about the craft of software development.&lt;/p&gt;
&lt;p&gt;Unique approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Technical breakdowns that teach you something&lt;/li&gt;
&lt;li&gt;Personal growth story that feels genuine&lt;/li&gt;
&lt;li&gt;Blog integration that adds real value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/c3f345023e8a3cd07b4798bc2b3b1e3e75645937-1238x882.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;11-daniel-wirtz-more-app-than-website&quot;&gt;11. Daniel Wirtz: More App Than Website&lt;/h3&gt;
&lt;p&gt;Daniel's portfolio challenges what a portfolio website can be. It feels more like interacting with an application than browsing a static site, which perfectly demonstrates his skills as a developer.&lt;/p&gt;
&lt;p&gt;Innovation highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interactive demonstrations that work&lt;/li&gt;
&lt;li&gt;Technical explanations that aren't boring&lt;/li&gt;
&lt;li&gt;User interactions that feel purposeful&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/4d3000fb3edd92a4879594c8c954422aec1e6766-1121x891.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;12-david-darnes-attention-to-detail&quot;&gt;12. David Darnes: Attention to Detail&lt;/h3&gt;
&lt;p&gt;David's portfolio shows what happens when someone sweats the small stuff. Every element feels intentional and carefully considered, creating an overall experience that feels polished and professional.&lt;/p&gt;
&lt;p&gt;Design philosophy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Details that most people would miss&lt;/li&gt;
&lt;li&gt;Layout that guides your attention naturally&lt;/li&gt;
&lt;li&gt;Project documentation that's actually comprehensive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/55c503f7eeec05d2a4f316adaf47ce20ccd5cd72-1375x914.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;13-h-vard-brynjulfsen-scandinavian-simplicity&quot;&gt;13. Håvard Brynjulfsen: Scandinavian Simplicity&lt;/h3&gt;
&lt;p&gt;Håvard's portfolio embodies everything good about Scandinavian design: it's clean, functional, and beautiful without being showy. The minimalist approach creates focus rather than emptiness.&lt;/p&gt;
&lt;p&gt;Why it works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Layout that doesn't waste your time&lt;/li&gt;
&lt;li&gt;Navigation that makes sense immediately&lt;/li&gt;
&lt;li&gt;Project presentations that get to the point&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/2aabdd21b902948a2ebb4940d4b47245ef9710b5-1267x910.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;14-alexander-vilinskyy-visual-storytelling&quot;&gt;14. Alexander Vilinskyy: Visual Storytelling&lt;/h3&gt;
&lt;p&gt;Alexander uses compelling graphics and smooth interactions to create a visual journey through his professional experience. It's the kind of portfolio that makes you want to scroll through the entire thing.&lt;/p&gt;
&lt;p&gt;Standout features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visuals that actually communicate something&lt;/li&gt;
&lt;li&gt;Smooth scrolling that enhances the story&lt;/li&gt;
&lt;li&gt;Personal branding that feels authentic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/80d5b35497e4a8835278a898ad1161e32110ddbf-1114x914.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;15-ch-nh-i-the-complete-package&quot;&gt;15. Chánh Đại: The Complete Package&lt;/h3&gt;
&lt;p&gt;Chánh's portfolio brilliantly showcases his dual skills as both a Software Developer and UI/UX Designer. It's comprehensive without being overwhelming, which is harder to achieve than it sounds.&lt;/p&gt;
&lt;p&gt;What works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clear presentation of diverse skills&lt;/li&gt;
&lt;li&gt;Case studies that show his process&lt;/li&gt;
&lt;li&gt;Professional storytelling that doesn't feel corporate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/efe0ff32287d9e0acb6a01b7c2d8b1fdea9cea19-1192x891.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;16-josh-w-comeau-teaching-through-showcasing&quot;&gt;16. Josh W. Comeau: Teaching Through Showcasing&lt;/h3&gt;
&lt;p&gt;Josh's portfolio goes beyond showcasing. It's an interactive learning experience. The detailed explanations and engaging demonstrations reflect his commitment to education and technical excellence.&lt;/p&gt;
&lt;p&gt;Remarkable features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code demonstrations you can actually interact with&lt;/li&gt;
&lt;li&gt;Tutorials that make complex concepts accessible&lt;/li&gt;
&lt;li&gt;Personal narrative that draws you in&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.sanity.io/images/dtlyikoh/production/bed4dffe3d4252ed5532cf0ae7c189f07e41738e-1618x908.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;These portfolios represent something more than just good design or clean code. They show developers who understand that a portfolio is really about communication. It's about communicating your skills, your personality, and your approach to solving problems.&lt;/p&gt;
&lt;p&gt;The best portfolios from this list share a few common elements: they tell a story, they show personality, and they demonstrate both technical and design thinking. Most importantly, they create an experience that makes you want to learn more about the person behind the work.&lt;/p&gt;
&lt;p&gt;Your portfolio is often the first impression you make on potential employers or clients. Make it count by focusing on what makes you unique, not what you think everyone else wants to see.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: The web is constantly evolving, and what impresses today might be standard tomorrow. The key is to keep experimenting and finding new ways to tell your story.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Java</category>
<guid isPermaLink="true">https://coderlegion.com/4108/portfolio-perfection-16-developers-who-nailed-their-personal-brand</guid>
<pubDate>Fri, 18 Jul 2025 09:48:55 +0000</pubDate>
</item>
<item>
<title>Solque</title>
<link>https://coderlegion.com/3747/solque</link>
<description>&lt;p&gt;I built a portfolio site… and accidentally turned it into a full-blown experience.&lt;/p&gt;
&lt;p&gt;Started with: “Just a simple personal website.”&lt;br&gt;
Ended with: “What if I add a galaxy simulation, interactive games, and enough effects to cook a device?”&lt;/p&gt;
&lt;p&gt;● What’s inside:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Animated backgrounds powered by Three.js&lt;/li&gt;
&lt;li&gt;A full-on mini-game section (because why not?)&lt;/li&gt;
&lt;li&gt;Dynamic viewing modes depending on how you visit&lt;/li&gt;
&lt;li&gt;Animations everywhere (like, everywhere)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;→ Is it over-engineered? Yep.&lt;br&gt;
→ Is it fun? Absolutely.&lt;br&gt;
→ Is it stable? Depends on your device &lt;/p&gt;
&lt;p&gt;Still polishing performance and squashing bugs (mobile users, I see you).&lt;br&gt;
Built with React, Three.js, and an unhealthy amount of late-night energy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I'm open to work — freelance, remote, or full-time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Got feedback? A wild idea? Something crazy you think belongs in here?&lt;br&gt;
What are you waiting for? Let’s connect!&lt;br&gt;
GitHub: sailwalpranjal&lt;/p&gt;
</description>
<category>Side Projects</category>
<guid isPermaLink="true">https://coderlegion.com/3747/solque</guid>
<pubDate>Sun, 06 Jul 2025 19:27:30 +0000</pubDate>
</item>
<item>
<title>A Web App to Showcase all your GitHub Projects</title>
<link>https://coderlegion.com/271/a-web-app-to-showcase-all-your-github-projects</link>
<description>&lt;h3 id=&quot;introducing-projects&quot;&gt;Introducing Projects&lt;/h3&gt;
&lt;p&gt;Present all your projects in style with a super customizable web app! ✨&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Projects&lt;/code&gt; uses the GitHub API to list all your GitHub projects in a nice searchable grid.&lt;br&gt;
Also shows pretty programming icons using &lt;code&gt;devicons&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;inspiration&quot;&gt;Inspiration&lt;/h3&gt;
&lt;p&gt;Needed a way to display all my projects, that should auto update from my GitHub&lt;/p&gt;
&lt;h3 id=&quot;getting-projects&quot;&gt;Getting Projects&lt;/h3&gt;
&lt;p&gt;To get projects, follow these steps:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/2kabhishek/projects
cd projects
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;setup-your-own-projects&quot;&gt;Setup Your Own Projects&lt;/h4&gt;
&lt;p&gt;You can set up projects for yourself by following these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fork the repo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/2kabhishek/projects&quot;&gt;https://github.com/2kabhishek/projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clone it locally / Open it in GitHub Codespaces&lt;/li&gt;
&lt;li&gt;Open up &lt;code&gt;script.js&lt;/code&gt; and update the &lt;code&gt;username&lt;/code&gt; variable to your GitHub username.&lt;/li&gt;
&lt;li&gt;Open up &lt;code&gt;index.html&lt;/code&gt; and update the &lt;code&gt;title&lt;/code&gt; tag to make it your own.&lt;/li&gt;
&lt;li&gt;You may also want to update the favicon by updating the &lt;code&gt;link&lt;/code&gt; tag in &lt;code&gt;index.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Commit and push your changes&lt;/li&gt;
&lt;li&gt;Go to repo settings on GitHub, under &lt;code&gt;Pages&lt;/code&gt; enable GitHub Pages.&lt;ul&gt;
&lt;li&gt;Choose 'Deploy from a branch' with the &lt;code&gt;main&lt;/code&gt; branch and &lt;code&gt;/&lt;/code&gt; as the root directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Done!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The site should be live on &lt;code&gt;https://&amp;lt;your-username&amp;gt;.github.io/projects&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&quot;number-of-repos&quot;&gt;Number Of Repos&lt;/h5&gt;
&lt;p&gt;The number of repos shown changes with the &lt;code&gt;maxPages&lt;/code&gt; variable, the GitHub API supports 100 repos per page max.&lt;br&gt;
If you have less than 100 repos, set &lt;code&gt;maxPages&lt;/code&gt; to 1, if you have 300 then 3.&lt;/p&gt;
&lt;p&gt;You can also edit the fetch query to reduce the per page repo count.&lt;/p&gt;
&lt;p&gt;There's no pagination, all repos show up on the same page.&lt;/p&gt;
&lt;h5 id=&quot;authenticated-requests&quot;&gt;Authenticated Requests&lt;/h5&gt;
&lt;p&gt;If you are working locally and notice the API is not sending over data, it might be because of rate limit on GitHub API requests.&lt;/p&gt;
&lt;p&gt;You can either wait for an hour or setup a personal access token on GitHub and pass that into the fetch request in &lt;code&gt;script.js&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&quot;forked-repos&quot;&gt;Forked Repos&lt;/h5&gt;
&lt;p&gt;To show forked repos set &lt;code&gt;hideForks = false&lt;/code&gt; in &lt;code&gt;script.js&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&quot;authenticated-requests-1&quot;&gt;Authenticated Requests&lt;/h5&gt;
&lt;p&gt;If you are working locally and notice the API is not sending over data, it might be because of rate limit on GitHub API requests.&lt;/p&gt;
&lt;p&gt;You can either wait for an hour or setup a personal access token on GitHub and pass that into the fetch request in &lt;code&gt;script.js&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&quot;themes&quot;&gt;Themes&lt;/h5&gt;
&lt;p&gt;Comes with a dark and light theme by default, depends upon your system and browser settings.&lt;/p&gt;
&lt;p&gt;Edit the variables under &lt;code&gt;:root&lt;/code&gt; in &lt;code&gt;styles.css&lt;/code&gt; to change color scheme.&lt;/p&gt;
&lt;h5 id=&quot;programming-language-icons&quot;&gt;Programming Language Icons&lt;/h5&gt;
&lt;p&gt;This project uses &lt;a rel=&quot;nofollow&quot; href=&quot;https://devicon.dev/&quot;&gt;Devicon&lt;/a&gt; for adding language icons, if the language name and icon are not&lt;br&gt;
displayed, for any of your repos, update &lt;code&gt;devicons&lt;/code&gt; mapping in &lt;code&gt;script.js&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;how-it-was-built&quot;&gt;How it was built&lt;/h3&gt;
&lt;p&gt;I built &lt;code&gt;Projects&lt;/code&gt; using &lt;code&gt;HTML&lt;/code&gt; &lt;code&gt;CSS&lt;/code&gt; &lt;code&gt;JavaScript&lt;/code&gt; and Neovim&lt;/p&gt;
&lt;h3 id=&quot;what-i-learned-1&quot;&gt;What I learned&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Learned about some quirks of the fetch API, during implementation of &lt;code&gt;maxPages&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Revisited Flex, box-shadow and some other CSS tricks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hit the ❤️ button if you found this useful.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/2kabhishek/projects&quot;&gt;projects repo&lt;/a&gt;&lt;/p&gt;
</description>
<category>JavaScript</category>
<guid isPermaLink="true">https://coderlegion.com/271/a-web-app-to-showcase-all-your-github-projects</guid>
<pubDate>Mon, 06 May 2024 07:46:17 +0000</pubDate>
</item>
</channel>
</rss>