<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: John</title>
    <description>The latest articles on Forem by John (@johnnylemonny).</description>
    <link>https://forem.com/johnnylemonny</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3868757%2F52777a3a-3f32-4bcd-8f3c-002c1983dcac.jpg</url>
      <title>Forem: John</title>
      <link>https://forem.com/johnnylemonny</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/johnnylemonny"/>
    <language>en</language>
    <item>
      <title>How to Build a Public Open-Source Project People Actually Want to Clone, Use, and Contribute To</title>
      <dc:creator>John</dc:creator>
      <pubDate>Mon, 13 Apr 2026 12:42:18 +0000</pubDate>
      <link>https://forem.com/johnnylemonny/how-to-build-a-public-open-source-project-people-actually-want-to-clone-use-and-contribute-to-4lmg</link>
      <guid>https://forem.com/johnnylemonny/how-to-build-a-public-open-source-project-people-actually-want-to-clone-use-and-contribute-to-4lmg</guid>
      <description>&lt;p&gt;Most public repositories do &lt;strong&gt;not&lt;/strong&gt; fail because the code is bad.&lt;/p&gt;

&lt;p&gt;They fail because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nobody understands &lt;strong&gt;why the project exists&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;it is hard to &lt;strong&gt;run locally&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;the repository looks like an abandoned side experiment,&lt;/li&gt;
&lt;li&gt;and there is no clear reason for anyone to come back a second time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to build public open-source projects that attract attention on GitHub, earn stars, and gain real users, you have to think about your repository as more than a folder of code.&lt;/p&gt;

&lt;p&gt;You have to treat it like a &lt;strong&gt;public product&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I’ll show you how to build modern open-source projects so they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;look credible from the first visit,&lt;/li&gt;
&lt;li&gt;are easy to run,&lt;/li&gt;
&lt;li&gt;invite contributions,&lt;/li&gt;
&lt;li&gt;and have a much better chance of growing organically.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Start with a problem, not with a stack
&lt;/h2&gt;

&lt;p&gt;A very common mistake looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’m going to build a new project in Next.js / FastAPI / Rust / Bun to practice.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That may be a fine learning project, but it rarely turns into a strong &lt;strong&gt;public&lt;/strong&gt; project.&lt;/p&gt;

&lt;p&gt;Repositories that have the best chance of getting traction usually solve &lt;strong&gt;one clear problem&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;they save time,&lt;/li&gt;
&lt;li&gt;simplify something,&lt;/li&gt;
&lt;li&gt;automate something repetitive,&lt;/li&gt;
&lt;li&gt;or show a modern, opinionated way to build something useful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Better ideas than “another starter”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a starter with a &lt;strong&gt;real-world use case&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;a boilerplate for a specific product type,&lt;/li&gt;
&lt;li&gt;a tool that solves a small but frequent developer pain point,&lt;/li&gt;
&lt;li&gt;a team-ready repository template,&lt;/li&gt;
&lt;li&gt;a dashboard, generator, CLI, integration, or mini-SaaS released as open source.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A good rule of thumb:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you can’t describe the project in one sentence &lt;strong&gt;without naming technologies&lt;/strong&gt;, the idea is probably still too vague.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This is a project built with React, Node, Prisma, and Docker.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This is an open-source starter for building admin panels with authentication, roles, billing, and deployment already set up.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;People click on problems.&lt;br&gt;&lt;br&gt;
Not on stacks.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Build a small but complete vertical slice
&lt;/h2&gt;

&lt;p&gt;A public project does not need to be huge.&lt;br&gt;&lt;br&gt;
It needs to feel &lt;strong&gt;complete&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a big difference.&lt;/p&gt;

&lt;p&gt;It is far better to show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;working authentication,&lt;/li&gt;
&lt;li&gt;one clean core workflow,&lt;/li&gt;
&lt;li&gt;solid UI,&lt;/li&gt;
&lt;li&gt;sensible folder structure,&lt;/li&gt;
&lt;li&gt;documentation,&lt;/li&gt;
&lt;li&gt;and a simple deployment path,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;than to show 27 half-finished features.&lt;/p&gt;

&lt;p&gt;The most shareable open-source projects are often the ones that create this feeling quickly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Okay, this works. I can see how I would use this.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s why modern public apps should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clear onboarding,&lt;/li&gt;
&lt;li&gt;a demo or screenshots,&lt;/li&gt;
&lt;li&gt;fast local setup,&lt;/li&gt;
&lt;li&gt;sample data,&lt;/li&gt;
&lt;li&gt;a useful &lt;code&gt;.env.example&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;and one obvious way to run the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If someone needs 40 minutes just to reach the first useful screen, you lose most potential users.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Treat your README like a landing page
&lt;/h2&gt;

&lt;p&gt;In practice, your README is your project’s homepage.&lt;/p&gt;

&lt;p&gt;That is where visitors decide, often within seconds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether to stay or leave,&lt;/li&gt;
&lt;li&gt;whether to star the repo,&lt;/li&gt;
&lt;li&gt;whether to clone it,&lt;/li&gt;
&lt;li&gt;or whether to close the tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good README does &lt;strong&gt;not&lt;/strong&gt; begin with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Project X is a modern application that aims to…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It begins with a &lt;strong&gt;clear value proposition&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What your README should include near the top
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. A one-line pitch
&lt;/h4&gt;

&lt;p&gt;Make it obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what it is,&lt;/li&gt;
&lt;li&gt;who it is for,&lt;/li&gt;
&lt;li&gt;and why it matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An open-source SaaS starter for building modern web apps with auth, billing, roles, and deployment built in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  2. A screenshot, GIF, or live demo
&lt;/h4&gt;

&lt;p&gt;People understand software much faster when they can &lt;strong&gt;see&lt;/strong&gt; it.&lt;/p&gt;

&lt;p&gt;If it’s an application, show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the dashboard,&lt;/li&gt;
&lt;li&gt;onboarding,&lt;/li&gt;
&lt;li&gt;settings,&lt;/li&gt;
&lt;li&gt;or the core workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. A “why this exists” section
&lt;/h4&gt;

&lt;p&gt;Briefly explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what problem you are solving,&lt;/li&gt;
&lt;li&gt;how the project is different,&lt;/li&gt;
&lt;li&gt;when someone should use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. A fast start section
&lt;/h4&gt;

&lt;p&gt;Keep it short and practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clone,&lt;/li&gt;
&lt;li&gt;install,&lt;/li&gt;
&lt;li&gt;env,&lt;/li&gt;
&lt;li&gt;run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Key features
&lt;/h4&gt;

&lt;p&gt;Not every feature.&lt;br&gt;&lt;br&gt;
Only the ones that actually communicate the value.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. A roadmap
&lt;/h4&gt;

&lt;p&gt;People are more likely to follow a project when they can see where it is going.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. A contributor section
&lt;/h4&gt;

&lt;p&gt;Even a short one helps.&lt;br&gt;&lt;br&gt;
It should be obvious how someone can get involved.&lt;/p&gt;

&lt;p&gt;A README does not need to be long.&lt;br&gt;&lt;br&gt;
It needs to be &lt;strong&gt;clear, concrete, and easy to scan&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. A public repository has to inspire trust
&lt;/h2&gt;

&lt;p&gt;A lot of repositories look promising at first glance.&lt;/p&gt;

&lt;p&gt;Then you open them and discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no license,&lt;/li&gt;
&lt;li&gt;no idea whether the code can be used,&lt;/li&gt;
&lt;li&gt;no contribution rules,&lt;/li&gt;
&lt;li&gt;no issue templates,&lt;/li&gt;
&lt;li&gt;no signal that the project is actively maintained.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want people to take your project seriously, you need the &lt;strong&gt;trust layer&lt;/strong&gt; of open source.&lt;/p&gt;

&lt;p&gt;At minimum, have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LICENSE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CODE_OF_CONDUCT.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SECURITY.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;issue and pull request templates&lt;/li&gt;
&lt;li&gt;a meaningful repository description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the details that separate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“I uploaded some code”
from&lt;/li&gt;
&lt;li&gt;“I’m building a project people can join.”&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Optimize the first five minutes
&lt;/h2&gt;

&lt;p&gt;The most important moment is &lt;strong&gt;not&lt;/strong&gt; when someone stars your repo.&lt;/p&gt;

&lt;p&gt;The most important moment is when someone tries to &lt;strong&gt;run it locally&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If they hit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing environment variables,&lt;/li&gt;
&lt;li&gt;outdated setup instructions,&lt;/li&gt;
&lt;li&gt;confusing scripts,&lt;/li&gt;
&lt;li&gt;broken migrations,&lt;/li&gt;
&lt;li&gt;or secrets hidden in config files,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;they are usually gone.&lt;/p&gt;

&lt;p&gt;That’s why you should test your project as if you were a stranger discovering it for the first time.&lt;/p&gt;

&lt;h3&gt;
  
  
  My simple pre-release checklist
&lt;/h3&gt;

&lt;p&gt;Before making a repo public, I ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can a new person run this without asking me questions?&lt;/li&gt;
&lt;li&gt;Does the README answer the most obvious setup questions?&lt;/li&gt;
&lt;li&gt;Is the configuration predictable?&lt;/li&gt;
&lt;li&gt;Are the error messages understandable?&lt;/li&gt;
&lt;li&gt;Do sample data or seed scripts help show value quickly?&lt;/li&gt;
&lt;li&gt;Are the script names obvious?&lt;/li&gt;
&lt;li&gt;Can this project run on a clean machine without guesswork?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This usually matters more than one more feature.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Package the repository like a product
&lt;/h2&gt;

&lt;p&gt;Strong public projects are not only well-built.&lt;br&gt;&lt;br&gt;
They are also &lt;strong&gt;well-packaged&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you want more visibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose a clear repository name,&lt;/li&gt;
&lt;li&gt;write a sharp description,&lt;/li&gt;
&lt;li&gt;use relevant tags/topics,&lt;/li&gt;
&lt;li&gt;add a social preview image,&lt;/li&gt;
&lt;li&gt;publish real releases,&lt;/li&gt;
&lt;li&gt;show progress through changelogs and updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially important for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modern web apps,&lt;/li&gt;
&lt;li&gt;starters,&lt;/li&gt;
&lt;li&gt;boilerplates,&lt;/li&gt;
&lt;li&gt;developer tools,&lt;/li&gt;
&lt;li&gt;templates,&lt;/li&gt;
&lt;li&gt;and infrastructure projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People often judge project quality from the repository page itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is the name clear,&lt;/li&gt;
&lt;li&gt;is the description useful,&lt;/li&gt;
&lt;li&gt;is the value obvious,&lt;/li&gt;
&lt;li&gt;does the project look active?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your code can be excellent and still get ignored if the repository looks neglected.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Build community around the problem, not just the code
&lt;/h2&gt;

&lt;p&gt;A lot of people think open source is only about pull requests.&lt;/p&gt;

&lt;p&gt;That is too narrow.&lt;/p&gt;

&lt;p&gt;People can add value in many ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reporting bugs,&lt;/li&gt;
&lt;li&gt;suggesting features,&lt;/li&gt;
&lt;li&gt;improving documentation,&lt;/li&gt;
&lt;li&gt;testing edge cases,&lt;/li&gt;
&lt;li&gt;sharing feedback,&lt;/li&gt;
&lt;li&gt;explaining how they use the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why you should create a space not only for code changes, but for discussion and learning.&lt;/p&gt;

&lt;p&gt;Helpful tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;issue templates,&lt;/li&gt;
&lt;li&gt;labels like &lt;code&gt;good first issue&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;help wanted&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;a public roadmap,&lt;/li&gt;
&lt;li&gt;a list of contribution ideas,&lt;/li&gt;
&lt;li&gt;an FAQ,&lt;/li&gt;
&lt;li&gt;discussion threads,&lt;/li&gt;
&lt;li&gt;or a feedback board.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The less friction people feel, the more likely they are to participate.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Publish early, but do not publish chaos
&lt;/h2&gt;

&lt;p&gt;“Ship early” is good advice.&lt;/p&gt;

&lt;p&gt;But “make it public early” does &lt;strong&gt;not&lt;/strong&gt; mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Throw everything online before it makes sense.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before you promote a project, make sure it is at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understandable,&lt;/li&gt;
&lt;li&gt;runnable,&lt;/li&gt;
&lt;li&gt;documented,&lt;/li&gt;
&lt;li&gt;and safe to share publicly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters even more if you are building in public on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;X,&lt;/li&gt;
&lt;li&gt;LinkedIn,&lt;/li&gt;
&lt;li&gt;DEV,&lt;/li&gt;
&lt;li&gt;Reddit,&lt;/li&gt;
&lt;li&gt;Hacker News,&lt;/li&gt;
&lt;li&gt;newsletters,&lt;/li&gt;
&lt;li&gt;or YouTube.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the most common mistakes in open source is promoting a project too early:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;before the README is useful,&lt;/li&gt;
&lt;li&gt;before setup works,&lt;/li&gt;
&lt;li&gt;before the value proposition is clear.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;p&gt;Traffic arrives, but it does not turn into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stars,&lt;/li&gt;
&lt;li&gt;watchers,&lt;/li&gt;
&lt;li&gt;issues,&lt;/li&gt;
&lt;li&gt;contributors,&lt;/li&gt;
&lt;li&gt;or real users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is better to publish a week later and make a strong first impression.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Think repo-first for modern apps
&lt;/h2&gt;

&lt;p&gt;If you are building a modern app in public, your repository is part of the product.&lt;/p&gt;

&lt;p&gt;It does not just store code. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sells the idea,&lt;/li&gt;
&lt;li&gt;documents decisions,&lt;/li&gt;
&lt;li&gt;builds trust,&lt;/li&gt;
&lt;li&gt;shows quality,&lt;/li&gt;
&lt;li&gt;and invites people in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A modern repository should answer these questions immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does this do?&lt;/li&gt;
&lt;li&gt;Why does it exist?&lt;/li&gt;
&lt;li&gt;How do I run it?&lt;/li&gt;
&lt;li&gt;How do I use it?&lt;/li&gt;
&lt;li&gt;How do I report a problem?&lt;/li&gt;
&lt;li&gt;How do I contribute?&lt;/li&gt;
&lt;li&gt;What direction is the project going?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those answers are visible from the beginning, your repository starts working for you even when you are offline.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. A simple checklist before publishing on GitHub
&lt;/h2&gt;

&lt;p&gt;Use this as a lightweight definition of done for any public project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] The project solves a specific problem&lt;/li&gt;
&lt;li&gt;[ ] There is a clear use case to show&lt;/li&gt;
&lt;li&gt;[ ] The value can be explained in one or two sentences&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Repository
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] The README is clear and concrete&lt;/li&gt;
&lt;li&gt;[ ] There is a screenshot, GIF, or demo&lt;/li&gt;
&lt;li&gt;[ ] There is a &lt;code&gt;LICENSE&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] There is a &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] There is a &lt;code&gt;CODE_OF_CONDUCT.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] There is a &lt;code&gt;SECURITY.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Issue and PR templates are ready&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] There is an &lt;code&gt;.env.example&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Setup works from zero&lt;/li&gt;
&lt;li&gt;[ ] Commands are simple and predictable&lt;/li&gt;
&lt;li&gt;[ ] There is seed or sample data&lt;/li&gt;
&lt;li&gt;[ ] The project runs without guesswork&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Visibility
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] The repo has a good description&lt;/li&gt;
&lt;li&gt;[ ] The repository name is easy to understand&lt;/li&gt;
&lt;li&gt;[ ] Relevant tags/topics are added&lt;/li&gt;
&lt;li&gt;[ ] A first release is prepared&lt;/li&gt;
&lt;li&gt;[ ] The next steps are visible&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Open source does not win on code quality alone.&lt;/p&gt;

&lt;p&gt;It wins through a combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;usefulness&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;clarity&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;trust&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;easy onboarding&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;and &lt;strong&gt;consistent visible progress&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to build public projects that actually grow, do not just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do I write better code?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Will a random developer on the internet understand this project, run it, and want to come back?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because that is where real public open source begins.&lt;/p&gt;




&lt;p&gt;If you are building public repositories yourself, I’d love to know:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What kills open-source projects fastest in your experience — scope creep, weak onboarding, poor README, inconsistent updates, or something else?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>Working on Cabal v3: reviving a P2P mobile chat app with React Native</title>
      <dc:creator>John</dc:creator>
      <pubDate>Mon, 13 Apr 2026 08:33:42 +0000</pubDate>
      <link>https://forem.com/johnnylemonny/working-on-cabal-v3-reviving-a-p2p-mobile-chat-app-with-react-native-fd4</link>
      <guid>https://forem.com/johnnylemonny/working-on-cabal-v3-reviving-a-p2p-mobile-chat-app-with-react-native-fd4</guid>
      <description>&lt;p&gt;Right now I’m working on &lt;strong&gt;Cabal v3&lt;/strong&gt; — a modern &lt;strong&gt;peer-to-peer chat app for Android&lt;/strong&gt; built on top of the &lt;strong&gt;Cable protocol&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This project is both a modernization and a revival of the older &lt;strong&gt;cabal-mobile&lt;/strong&gt; effort:&lt;br&gt;
&lt;a href="https://github.com/cabal-club/cabal-mobile" rel="noopener noreferrer"&gt;https://github.com/cabal-club/cabal-mobile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The original project was created to let people chat with the &lt;strong&gt;P2P swarm&lt;/strong&gt; on mobile devices, and its last tagged release (&lt;code&gt;1.0&lt;/code&gt;) goes back to &lt;strong&gt;June 17, 2018&lt;/strong&gt;. Later, the project README pointed development toward a &lt;code&gt;v2&lt;/code&gt; branch, so the idea of evolving the mobile client has already been part of its history. &lt;a href="https://github.com/cabal-club/cabal-mobile/releases" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;a href="https://github.com/cabal-club/cabal-mobile/diffs/0?commit=b49c4b76fbe1af236de5baaac5f3282681f18951&amp;amp;name=master&amp;amp;qualified_name=refs%2Fheads%2Fmaster&amp;amp;sha1=42a9c097684dfc6705c684ba0f6f2ccbdd7c4e00&amp;amp;sha2=b49c4b76fbe1af236de5baaac5f3282681f18951&amp;amp;short_path=5a831ea&amp;amp;unchanged=expanded&amp;amp;w=false" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;a href="https://github.com/cabal-club/cabal-mobile/commit/master" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What makes this especially interesting to me is the protocol underneath it.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Cable&lt;/strong&gt; is a lightweight protocol for &lt;strong&gt;peer-to-peer private group chats&lt;/strong&gt;, where peers communicate directly instead of depending on a centralized server. The protocol is designed around encrypted communication between equal peers and the exchange of cryptographically signed chat data. &lt;a href="https://github.com/cabal-club/cable" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;a href="https://github.com/cabal-club/cable/blob/main/handshake.md" rel="noopener noreferrer"&gt;5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, this is not just an interesting open-source revival.&lt;br&gt;&lt;br&gt;
It’s also a really good opportunity to learn more about building a &lt;strong&gt;mobile frontend with React Native&lt;/strong&gt; while working on something rooted in decentralized communication.&lt;/p&gt;

&lt;p&gt;So this project sits at a really interesting intersection for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mobile development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React Native&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;open source&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;and &lt;strong&gt;peer-to-peer systems&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still early, but I’m excited to keep pushing it forward.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>android</category>
      <category>opensource</category>
      <category>mobile</category>
    </item>
    <item>
      <title>From NASA Exoplanet Query to ExoVault: Building a Better Data Exploration Experience</title>
      <dc:creator>John</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:25:13 +0000</pubDate>
      <link>https://forem.com/johnnylemonny/from-nasa-exoplanet-query-to-exovault-building-a-better-data-exploration-experience-4j06</link>
      <guid>https://forem.com/johnnylemonny/from-nasa-exoplanet-query-to-exovault-building-a-better-data-exploration-experience-4j06</guid>
      <description>&lt;p&gt;Other project idea I recently decided to build in public was inspired by the &lt;strong&gt;NASA Exoplanet Query&lt;/strong&gt; prompt from the App Ideas repository.&lt;/p&gt;

&lt;p&gt;That project eventually became &lt;strong&gt;ExoVault&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://github.com/johnnylemonny/ExoVault" rel="noopener noreferrer"&gt;https://github.com/johnnylemonny/ExoVault&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What started as a structured data query idea turned into something much more interesting for me:&lt;br&gt;
a more polished, cinematic interface for exploring NASA exoplanet archive data.&lt;/p&gt;




&lt;h2&gt;
  
  
  The original prompt
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;NASA Exoplanet Query&lt;/strong&gt; idea is already a really good challenge.&lt;/p&gt;

&lt;p&gt;It’s built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;working with NASA archive data,&lt;/li&gt;
&lt;li&gt;loading CSV efficiently,&lt;/li&gt;
&lt;li&gt;minimizing delays at startup,&lt;/li&gt;
&lt;li&gt;and building a query interface that lets users filter exoplanet data by fields like discovery year, method, host name, and facility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made it appealing right away.&lt;/p&gt;

&lt;p&gt;It wasn’t just about rendering data.&lt;br&gt;
It was about thinking carefully about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ingestion,&lt;/li&gt;
&lt;li&gt;structure,&lt;/li&gt;
&lt;li&gt;search,&lt;/li&gt;
&lt;li&gt;and presentation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What pulled me into this idea
&lt;/h2&gt;

&lt;p&gt;What interested me most wasn’t only the dataset.&lt;/p&gt;

&lt;p&gt;It was the possibility of taking something that could have been “just a query tool” and pushing it toward a better exploration experience.&lt;/p&gt;

&lt;p&gt;I kept thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if this felt less like a utility screen and more like a discovery product?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question shaped the direction of the whole project.&lt;/p&gt;

&lt;p&gt;Instead of building only the minimum query UI, I wanted to create something that felt more deliberate, more visually refined, and more enjoyable to explore.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;ExoVault&lt;/strong&gt; came from.&lt;/p&gt;




&lt;h2&gt;
  
  
  How ExoVault evolved
&lt;/h2&gt;

&lt;p&gt;In my version, the project became a more premium archive explorer built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a custom CSV-to-JSON data pipeline,&lt;/li&gt;
&lt;li&gt;a high-performance frontend,&lt;/li&gt;
&lt;li&gt;compare mode for exoplanetary systems,&lt;/li&gt;
&lt;li&gt;glassmorphic visuals,&lt;/li&gt;
&lt;li&gt;and a more cinematic browsing experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built ExoVault with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Astro&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and used a custom data pipeline to process NASA’s raw CSV into optimized JSON payloads.&lt;/p&gt;

&lt;p&gt;That part was especially satisfying because it made the project feel more complete end-to-end:&lt;br&gt;
not just UI, not just data handling, but both working together.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I wanted the project to feel like
&lt;/h2&gt;

&lt;p&gt;One of my goals with ExoVault was to make exploration feel intentional.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;filter,&lt;/li&gt;
&lt;li&gt;search,&lt;/li&gt;
&lt;li&gt;render rows,&lt;/li&gt;
&lt;li&gt;done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted the archive to feel like something people would actually want to browse.&lt;/p&gt;

&lt;p&gt;That meant paying attention to things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;visual hierarchy,&lt;/li&gt;
&lt;li&gt;transitions,&lt;/li&gt;
&lt;li&gt;compare flow,&lt;/li&gt;
&lt;li&gt;and how the interface frames the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think there’s a big difference between “showing information” and “creating a discovery experience.”&lt;/p&gt;

&lt;p&gt;This project made me think a lot about that difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I learned while building it
&lt;/h2&gt;

&lt;p&gt;A few things stood out while working on ExoVault:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data projects become more interesting when presentation is treated seriously
&lt;/h3&gt;

&lt;p&gt;A structured dataset can feel dry or compelling depending on how the experience is shaped.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Prompt-based ideas are often stronger than they first appear
&lt;/h3&gt;

&lt;p&gt;The original App Ideas brief gave me a very solid technical core.&lt;br&gt;
The interesting part came from deciding how to evolve it.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Frontend polish matters even in data-heavy apps
&lt;/h3&gt;

&lt;p&gt;If the interface feels flat, the whole experience feels flatter too.&lt;br&gt;
Good data presentation is also a UX problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Public repos push me toward stronger execution
&lt;/h3&gt;

&lt;p&gt;Knowing the project would live openly on GitHub made me care more about the quality of the pipeline, repo structure, documentation, and overall presentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I like using structured prompts as a starting point
&lt;/h2&gt;

&lt;p&gt;I think structured prompt repositories are one of the best ways to build momentum — especially if you don’t treat them as the finish line.&lt;/p&gt;

&lt;p&gt;That’s how I’m trying to use them.&lt;/p&gt;

&lt;p&gt;Not as instructions to copy,&lt;br&gt;
but as a framework to build from.&lt;/p&gt;

&lt;p&gt;The prompt gives me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;direction,&lt;/li&gt;
&lt;li&gt;constraints,&lt;/li&gt;
&lt;li&gt;and technical focus.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then the real project begins when I start asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how should this feel?&lt;/li&gt;
&lt;li&gt;what should be improved?&lt;/li&gt;
&lt;li&gt;what makes this worth sharing publicly?&lt;/li&gt;
&lt;li&gt;how can this become more than the base brief?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ExoVault is probably one of my clearest examples of that so far.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ExoVault:&lt;/strong&gt; &lt;a href="https://github.com/johnnylemonny/ExoVault" rel="noopener noreferrer"&gt;https://github.com/johnnylemonny/ExoVault&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://johnnylemonny.github.io/ExoVault/" rel="noopener noreferrer"&gt;https://johnnylemonny.github.io/ExoVault/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Ideas:&lt;/strong&gt; &lt;a href="https://github.com/florinpop17/app-ideas" rel="noopener noreferrer"&gt;https://github.com/florinpop17/app-ideas&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading 👋&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>astro</category>
      <category>typescript</category>
    </item>
    <item>
      <title>From a Calorie Counter Prompt to a Local-First Nutrition Tracker</title>
      <dc:creator>John</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:06:38 +0000</pubDate>
      <link>https://forem.com/johnnylemonny/from-a-calorie-counter-prompt-to-a-local-first-nutrition-tracker-239j</link>
      <guid>https://forem.com/johnnylemonny/from-a-calorie-counter-prompt-to-a-local-first-nutrition-tracker-239j</guid>
      <description>&lt;p&gt;One of the things I’ve been trying to do lately is take project prompts seriously enough to turn them into public, polished repositories instead of leaving them as half-finished exercises.&lt;/p&gt;

&lt;p&gt;That’s exactly what happened with &lt;strong&gt;NutraFlux&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://github.com/johnnylemonny/NutraFlux" rel="noopener noreferrer"&gt;https://github.com/johnnylemonny/NutraFlux&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project was inspired by the &lt;strong&gt;Calorie Counter&lt;/strong&gt; idea from the App Ideas repository, but I didn’t want to stop at “search foods and show calories.”&lt;/p&gt;

&lt;p&gt;I wanted to push it into something that felt faster, cleaner, and more product-like.&lt;/p&gt;




&lt;h2&gt;
  
  
  The original idea
&lt;/h2&gt;

&lt;p&gt;The original &lt;strong&gt;Calorie Counter&lt;/strong&gt; prompt is already a strong one.&lt;/p&gt;

&lt;p&gt;It focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;searching foods,&lt;/li&gt;
&lt;li&gt;showing matching results,&lt;/li&gt;
&lt;li&gt;calorie values,&lt;/li&gt;
&lt;li&gt;and working with structured nutritional data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also introduces useful technical constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transforming raw food data into a format that is easier to search,&lt;/li&gt;
&lt;li&gt;limiting results,&lt;/li&gt;
&lt;li&gt;and thinking about performance and search strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made it a really good foundation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What interested me most
&lt;/h2&gt;

&lt;p&gt;What grabbed my attention wasn’t just the calorie tracking part.&lt;/p&gt;

&lt;p&gt;It was the opportunity to build a nutrition tool that felt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;immediate,&lt;/li&gt;
&lt;li&gt;search-first,&lt;/li&gt;
&lt;li&gt;and frictionless.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of apps in this space feel slower or heavier than they need to.&lt;/p&gt;

&lt;p&gt;So instead of treating this as a basic exercise, I started asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What would this feel like if I designed it more like a fast, privacy-friendly product?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question eventually led to &lt;strong&gt;NutraFlux&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How NutraFlux evolved
&lt;/h2&gt;

&lt;p&gt;In my version, the idea became a &lt;strong&gt;local-first daily calorie and macro tracker&lt;/strong&gt; built around speed, privacy, and a more refined frontend experience.&lt;/p&gt;

&lt;p&gt;NutraFlux includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;instant search-first logging,&lt;/li&gt;
&lt;li&gt;wildcard food lookup,&lt;/li&gt;
&lt;li&gt;meal categories,&lt;/li&gt;
&lt;li&gt;calorie budgeting and progress indicators,&lt;/li&gt;
&lt;li&gt;favorites and recently used foods,&lt;/li&gt;
&lt;li&gt;adaptive design,&lt;/li&gt;
&lt;li&gt;and a more polished visual system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I liked most about building it was that the original prompt gave me a functional core — but the product identity came from the decisions I made around it.&lt;/p&gt;

&lt;p&gt;That’s where it stopped feeling like a challenge and started feeling like my own project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I made it local-first
&lt;/h2&gt;

&lt;p&gt;One of the biggest choices behind NutraFlux was making it &lt;strong&gt;strictly local-first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Everything lives in the browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nutritional data,&lt;/li&gt;
&lt;li&gt;settings,&lt;/li&gt;
&lt;li&gt;and food history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No account wall.&lt;br&gt;
No cloud sync.&lt;br&gt;
No user data leaving the device.&lt;/p&gt;

&lt;p&gt;I really liked that direction because it made the product feel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;faster,&lt;/li&gt;
&lt;li&gt;more private,&lt;/li&gt;
&lt;li&gt;and more focused.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also changed how I thought about UX.&lt;/p&gt;

&lt;p&gt;When everything happens instantly and locally, the interface itself has to carry more of the experience.&lt;br&gt;&lt;br&gt;
That made clarity, speed, and smooth interaction much more important.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I learned from building it
&lt;/h2&gt;

&lt;p&gt;A few things really stood out while working on this project:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. A strong prompt is a good starting point — not a limitation
&lt;/h3&gt;

&lt;p&gt;The base idea gave me a clear direction, but the interesting part was deciding how far to take it beyond the original brief.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Product feel matters as much as base functionality
&lt;/h3&gt;

&lt;p&gt;The app can technically work, but it still won’t feel complete unless the UI, feedback, and flow are treated with care.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Privacy can be part of the product identity
&lt;/h3&gt;

&lt;p&gt;Making NutraFlux local-first wasn’t just a technical detail.&lt;br&gt;&lt;br&gt;
It became one of the reasons the app feels different.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Public repos raise the bar in a good way
&lt;/h3&gt;

&lt;p&gt;Once I knew this would live publicly on GitHub, I thought more carefully about polish, structure, and presentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I like building from prompts this way
&lt;/h2&gt;

&lt;p&gt;I think project prompt repositories get underestimated sometimes.&lt;/p&gt;

&lt;p&gt;But for me, they’re useful because they remove just enough uncertainty to let me focus on what really matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interpretation,&lt;/li&gt;
&lt;li&gt;technical decisions,&lt;/li&gt;
&lt;li&gt;UX,&lt;/li&gt;
&lt;li&gt;polish,&lt;/li&gt;
&lt;li&gt;and project identity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NutraFlux is a good example of that.&lt;/p&gt;

&lt;p&gt;It started as inspiration from a calorie counter prompt.&lt;br&gt;
Now it’s part of the kind of public open-source work I want to keep building more of.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NutraFlux:&lt;/strong&gt; &lt;a href="https://github.com/johnnylemonny/NutraFlux" rel="noopener noreferrer"&gt;https://github.com/johnnylemonny/NutraFlux&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://johnnylemonny.github.io/NutraFlux/" rel="noopener noreferrer"&gt;https://johnnylemonny.github.io/NutraFlux/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Ideas:&lt;/strong&gt; &lt;a href="https://github.com/florinpop17/app-ideas" rel="noopener noreferrer"&gt;https://github.com/florinpop17/app-ideas&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading 👋&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>react</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>I Built a Free Hydration Tracker with No Signup: Here’s What I Learned</title>
      <dc:creator>John</dc:creator>
      <pubDate>Fri, 10 Apr 2026 16:56:20 +0000</pubDate>
      <link>https://forem.com/johnnylemonny/i-built-a-free-hydration-tracker-with-no-signup-heres-what-i-learned-1aon</link>
      <guid>https://forem.com/johnnylemonny/i-built-a-free-hydration-tracker-with-no-signup-heres-what-i-learned-1aon</guid>
      <description>&lt;p&gt;I recently built &lt;strong&gt;Drink Daily&lt;/strong&gt;, a hydration tracking web app designed to be &lt;strong&gt;free, simple to use, and available without registration&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🔗 Live app: &lt;a href="https://drink-daily.vercel.app/en" rel="noopener noreferrer"&gt;https://drink-daily.vercel.app/en&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This is one of the projects I’m most proud of so far, not just because it works, but because it reflects the kind of products I like building: practical, lightweight, and polished enough to feel good to use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;A lot of small health-related apps create friction too early.&lt;/p&gt;

&lt;p&gt;You open the app and immediately hit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a sign-up wall,&lt;/li&gt;
&lt;li&gt;limited functionality,&lt;/li&gt;
&lt;li&gt;too much clutter,&lt;/li&gt;
&lt;li&gt;or an interface that feels more like a form than a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to build something different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;useful from the first visit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;no registration required&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;clear and focused&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pleasant to interact with&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;good enough to feel like a real product, not just a demo&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hydration tracking felt like a good fit for that kind of experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Drink Daily is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Drink Daily&lt;/strong&gt; is a free hydration tracking app that helps users keep track of daily water intake without forcing account creation.&lt;/p&gt;

&lt;p&gt;The goal was to keep the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frictionless,&lt;/li&gt;
&lt;li&gt;fast,&lt;/li&gt;
&lt;li&gt;understandable,&lt;/li&gt;
&lt;li&gt;and easy to return to.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of overcomplicating the idea, I focused on making the core experience feel smooth and intentional.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I wanted to get right
&lt;/h2&gt;

&lt;p&gt;When I started building it, I cared about more than “just making it work.”&lt;/p&gt;

&lt;p&gt;I wanted the app to feel:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Simple
&lt;/h3&gt;

&lt;p&gt;The app should be easy to understand immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Lightweight
&lt;/h3&gt;

&lt;p&gt;No unnecessary barriers, no bloated flows, no forced registration.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Polished
&lt;/h3&gt;

&lt;p&gt;I enjoy building interfaces that feel refined, so I paid attention to layout, spacing, clarity, and the overall experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Actually usable
&lt;/h3&gt;

&lt;p&gt;Even for a small app, I wanted it to feel like something people could genuinely use — not just click through once.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I learned while building it
&lt;/h2&gt;

&lt;p&gt;Building Drink Daily taught me a lot about the difference between &lt;strong&gt;having features&lt;/strong&gt; and &lt;strong&gt;creating a good experience&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A few things stood out:&lt;/p&gt;

&lt;h3&gt;
  
  
  Product decisions matter as much as technical ones
&lt;/h3&gt;

&lt;p&gt;It’s easy to keep adding features, but choosing what &lt;strong&gt;not&lt;/strong&gt; to add is just as important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Small UX details make a huge difference
&lt;/h3&gt;

&lt;p&gt;Spacing, hierarchy, naming, and flow can completely change how “finished” a project feels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Friction shows up fast in simple apps
&lt;/h3&gt;

&lt;p&gt;When the app itself is simple, every unnecessary step becomes more noticeable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Public projects feel different
&lt;/h3&gt;

&lt;p&gt;Building something you’re willing to show publicly makes you think more carefully about quality, clarity, and polish.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’d improve next
&lt;/h2&gt;

&lt;p&gt;Like most projects, this one still has room to grow.&lt;/p&gt;

&lt;p&gt;Some things I’d like to improve or expand over time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deeper progress insights&lt;/li&gt;
&lt;li&gt;more personalized tracking options&lt;/li&gt;
&lt;li&gt;more refinement in the user flow&lt;/li&gt;
&lt;li&gt;additional quality-of-life improvements&lt;/li&gt;
&lt;li&gt;continued UI/UX polishing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also want to keep improving how I present and document my public work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I’m sharing it
&lt;/h2&gt;

&lt;p&gt;I’m currently growing my public developer profile and becoming more active in open source and build-in-public style sharing.&lt;/p&gt;

&lt;p&gt;This project felt like a good first thing to share because it reflects what I enjoy most:&lt;br&gt;
building practical web apps with a strong focus on &lt;strong&gt;clean UI&lt;/strong&gt;, &lt;strong&gt;smooth UX&lt;/strong&gt;, and &lt;strong&gt;modern frontend development&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you try the app, I’d genuinely appreciate any feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What feels good?&lt;/li&gt;
&lt;li&gt;What feels unclear?&lt;/li&gt;
&lt;li&gt;What would you improve?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://drink-daily.vercel.app/en" rel="noopener noreferrer"&gt;https://drink-daily.vercel.app/en&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/johnnylemonny" rel="noopener noreferrer"&gt;https://github.com/johnnylemonny&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading 👋&lt;br&gt;&lt;br&gt;
This is my first post here, so I’m excited to keep sharing more as I build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf3hklgrtzb8ii7kh98b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf3hklgrtzb8ii7kh98b.png" alt="Screenshot of the Drink Daily app" width="800" height="1632"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>typescript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
