{
  "id": 105903,
  "title": "I built a free fitness tracker with no backend and no account — here's what I learned",
  "url": "https://urgent.news/2026/08/03/i-built-a-free-fitness-tracker-with-no-backend-and-no-account-heres",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-03T23:17:19.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/uhdallas/i-built-a-free-fitness-tracker-with-no-backend-and-no-account-heres-what-i-learned-58pb"
  },
  "original_language": "en",
  "account": "A few months ago, the author grew tired of calorie trackers that either required paying for basic features or demanded users create an account to log their food. This led to the creation of Nawtch, a free fitness tracker that operates entirely within the browser and stores data locally using IndexedDB, without requiring any account sign-up. The app's name was originally \"Foop,\" but it was changed due to it being taken by other apps. The author emphasizes the importance of checking name availability before starting a project.\n\nThe initial development of Nawtch was done as a single-page application (SPA) with client-side JavaScript routing. However, this approach had two significant drawbacks once the author started considering growth potential. Firstly, there was no SEO value as Google could only index a single URL, regardless of the features present. Secondly, the lack of individual entry points made it difficult for users to find specific features without going through the homepage. To address these issues, the author rebuilt Nawtch into a multi-page application, with separate pages for index, foods, weight, programs, and history. Each page had its own metadata and could be loaded independently, making the app more accessible and user-friendly.\n\nA crucial technical consideration during the development process was the scope of IndexedDB, which is tied to the origin rather than the HTML file. This meant that splitting the app into multiple pages was technically feasible, but the author had to be cautious and audit every instance of in-memory state being passed between views, as it now needed to be handled separately due to the distinct page loads. Despite the challenges, the author successfully migrated the app and ensured that data persisted seamlessly across page loads on the same domain.\n\nWhen it came to monetization, the author initially planned a three-tier system: free (with limited features), a one-time Premium unlock, and a Premier subscription for cloud sync. However, upon further reflection, they realized that the entire purpose of Nawtch was to provide \"no friction, no accounts, and no paywalls.\" Therefore, the author scrapped the monetization plan and decided to keep Nawtch free forever, with all features unlocked and no account required. The primary sources of revenue for the app are non-intrusive banner ads and, eventually, a paid tier that specifically caters to cloud sync or AI-assisted logging. The author emphasizes the importance of monetization that aligns with the actual costs associated with providing these features, rather than imposing unnecessary paywalls.",
  "summary": "A few months ago I got tired of every calorie tracker either paywalling basic features or demanding I create an account just to log a banana. So I built Nawtch — a free fitness tracker that runs entirely in your browser, stores everything locally via IndexedDB, and never asks you to sign up. Here's the messy, honest version of how it actually came together. It didn't start as \"Nawtch\" The app was…",
  "key_points": [
    "Nawtch is a free fitness tracker with no backend or account required.",
    "Initially named \"Foop,\" the app's name was changed due to availability issues.",
    "The author rebuilt Nawtch into a multi-page application to improve SEO and user experience."
  ],
  "editors_take": "The author's shift from planned monetization tiers to a strictly free model with non-intrusive ads aligns with their goal of providing frictionless access, potentially setting a new standard for user-centric app design.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}