<?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>DEV Community: Root Record Software Solutions</title>
    <description>The latest articles on DEV Community by Root Record Software Solutions (@rootrecord).</description>
    <link>https://dev.to/rootrecord</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%2F3911638%2F8744b55d-82a1-4bc1-99c8-1215e20562f3.png</url>
      <title>DEV Community: Root Record Software Solutions</title>
      <link>https://dev.to/rootrecord</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rootrecord"/>
    <language>en</language>
    <item>
      <title>RootRecord: A Practitioner's Map of the Ecosystem — Accounts, Mobile Apps, the Primary API, and Solana Tools</title>
      <dc:creator>Root Record Software Solutions</dc:creator>
      <pubDate>Mon, 04 May 2026 08:56:52 +0000</pubDate>
      <link>https://dev.to/rootrecord/rootrecord-a-practitioners-map-of-the-ecosystem-accounts-mobile-apps-the-primary-api-and-413n</link>
      <guid>https://dev.to/rootrecord/rootrecord-a-practitioners-map-of-the-ecosystem-accounts-mobile-apps-the-primary-api-and-413n</guid>
      <description>&lt;h2&gt;
  
  
  RootRecord: A Practitioner's Map of the Ecosystem
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RootRecord&lt;/strong&gt; builds multi-device software for people who want serious tools without unnecessary lock-in: mobile apps for weather and hazards, a full business office in your pocket, a central account hub, and browser-based Solana utilities for token creation and on-chain operations. A single &lt;strong&gt;RootRecord account&lt;/strong&gt; ties licensing, cloud sync where applicable, and optional earn-style programs together. The public &lt;strong&gt;primary API&lt;/strong&gt; lives at &lt;strong&gt;&lt;code&gt;https://api.rootrecord.info&lt;/code&gt;&lt;/strong&gt;. The marketing site and account portal are at &lt;strong&gt;&lt;code&gt;https://rootrecord.info&lt;/code&gt;&lt;/strong&gt;. The dedicated Solana tooling site is &lt;strong&gt;&lt;code&gt;https://solana.rootrecord.info&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article is a &lt;strong&gt;field guide&lt;/strong&gt;: what exists, how the pieces connect, and how to use them in a logical order.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. What RootRecord is building (in one page)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Canonical URL or host&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Marketing &amp;amp; accounts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Static site on Cloudflare Pages; sign-in and billing handoff to Workers&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rootrecord.info&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloudflare Worker: auth (via licence integration), D1-backed features, weather, business data, earn, push, locations, feedback, Solana-related plumbing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;api.rootrecord.info&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Licence / auth Worker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Companion Worker for signup, login, sessions, &lt;code&gt;/v1/me&lt;/code&gt;, entitlement, Stripe webhooks&lt;/td&gt;
&lt;td&gt;Deployed alongside the web stack (not the same process as the primary API)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mobile apps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React + Capacitor, Android-first; shared API and account model&lt;/td&gt;
&lt;td&gt;Installed from Play / sideload per app; source in RootRecord's mobile monorepo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Solana Tools (web)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Next.js app: wallet-connected SPL/Token-2022 flows, fees in SOL, optional referrals&lt;/td&gt;
&lt;td&gt;&lt;code&gt;solana.rootrecord.info&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Design principles that show up across the codebase:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One account, many apps&lt;/strong&gt; — Weather Manager, Business Manager, Account Hub, and Token Manager are meant to feel like one family: shared auth patterns and the same production API base where applicable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare at the center&lt;/strong&gt; — The primary Worker holds auth bridging, &lt;strong&gt;D1&lt;/strong&gt; SQL for per-user data (weather locations, business documents, earn balances, prefs), and integrations (weather providers, push, feedback webhooks, Solana-adjacent routes).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-custodial Solana&lt;/strong&gt; — Normal flows never ask RootRecord servers for private keys; users sign in their own wallets.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Create and manage your RootRecord account
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Where to sign up and sign in
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;&lt;code&gt;https://rootrecord.info&lt;/code&gt;&lt;/strong&gt; and use the &lt;strong&gt;account&lt;/strong&gt; area (the site loads configuration such as API base from its Pages functions — production points at the real Worker base).&lt;/li&gt;
&lt;li&gt;Complete &lt;strong&gt;signup&lt;/strong&gt; or &lt;strong&gt;login&lt;/strong&gt;. The licence Worker exposes routes such as &lt;code&gt;POST /v1/auth/signup&lt;/code&gt;, &lt;code&gt;POST /v1/auth/login&lt;/code&gt;, &lt;code&gt;GET /v1/me&lt;/code&gt;, &lt;code&gt;POST /v1/entitlement&lt;/code&gt;, and billing webhook handling.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;subscription or lifetime access&lt;/strong&gt;, use the site's billing links; after Stripe updates, apps often call &lt;strong&gt;&lt;code&gt;POST /api/auth/entitlement&lt;/code&gt;&lt;/strong&gt; on the primary API to refresh &lt;code&gt;pro_unlocked&lt;/code&gt;, &lt;code&gt;life_member&lt;/code&gt;, and related fields.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2.2 What "signed in" means in apps
&lt;/h3&gt;

&lt;p&gt;Mobile clients obtain a &lt;strong&gt;Bearer token&lt;/strong&gt; (JWT) and send it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Authorization: Bearer &amp;lt;token&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Guest-style usage may use a stable &lt;strong&gt;&lt;code&gt;device_id&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;X-Guest-Id&lt;/code&gt;&lt;/strong&gt; header depending on the flow — the Worker enforces &lt;code&gt;device_id&lt;/code&gt; for several auth paths when required.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Refreshing entitlements after billing
&lt;/h3&gt;

&lt;p&gt;After you change plans in the hosted billing portal (linked from &lt;code&gt;rootrecord.info&lt;/code&gt; account UX), open any RootRecord app and use its &lt;strong&gt;entitlement refresh&lt;/strong&gt; or re-login path so &lt;strong&gt;&lt;code&gt;POST /api/auth/entitlement&lt;/code&gt;&lt;/strong&gt; can sync &lt;strong&gt;Pro&lt;/strong&gt; / &lt;strong&gt;lifetime&lt;/strong&gt; state into the app.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The primary API: mental model and core routes
&lt;/h2&gt;

&lt;p&gt;Base URL: &lt;strong&gt;&lt;code&gt;https://api.rootrecord.info&lt;/code&gt;&lt;/strong&gt;. Paths below are under &lt;strong&gt;&lt;code&gt;/api/...&lt;/code&gt;&lt;/strong&gt; unless noted.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Authentication and profile
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Typical route&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Login / signup (mobile-shaped)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;POST /api/auth/login&lt;/code&gt;, &lt;code&gt;POST /api/auth/signup&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Bridges to licence Worker; upserts account rows in D1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session info&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;GET&lt;/code&gt; or &lt;code&gt;POST /api/auth/me&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Returns email, &lt;code&gt;account_id&lt;/code&gt;, &lt;code&gt;pro_unlocked&lt;/code&gt;, &lt;code&gt;life_member&lt;/code&gt;, subscription fields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logout&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /api/auth/logout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ends session server-side as implemented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entitlement refresh&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /api/auth/entitlement&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;After billing changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wipe Business cloud rows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /api/auth/wipe-business-data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Destructive; Business-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is also a &lt;strong&gt;&lt;code&gt;/v1/...&lt;/code&gt;&lt;/strong&gt; surface on the same Worker for Stripe checkout and selected custodial or advanced account paths (for example linked-wallet and custodial-wallet flows used by reward / treasury features).&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Weather, hazards, and the dashboard bundle
&lt;/h3&gt;

&lt;p&gt;For latitude/longitude queries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;GET /api/weather/current?lat=&amp;amp;lon=&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;GET /api/weather/forecast?lat=&amp;amp;lon=&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;GET /api/weather/alerts?lat=&amp;amp;lon=&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aggregated "everything at once" style data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;GET /api/dashboard?lat=&amp;amp;lon=&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additional hazard feeds (examples from the router): Canadian alerts, USGS earthquakes / tsunami bulletins, NASA EONET cyclones and wildfires. These are designed for apps that show &lt;strong&gt;multi-hazard&lt;/strong&gt; dashboards rather than a single generic forecast.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Saved locations (Weather)
&lt;/h3&gt;

&lt;p&gt;Authenticated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /api/locations&lt;/code&gt;&lt;/strong&gt; — list&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/locations&lt;/code&gt;&lt;/strong&gt; — create (name, latitude, longitude)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;PATCH /api/locations/:id&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;DELETE /api/locations/:id&lt;/code&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stored per user in D1 (&lt;code&gt;rrwm_locations&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Preferences (Weather)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;GET /api/me/prefs&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;POST /api/me/prefs&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current implementation centers on &lt;strong&gt;NOAA alert toggles&lt;/strong&gt; (&lt;code&gt;noaa_alerts_enabled&lt;/code&gt;). Apps may expose this as "alert preferences."&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Push notifications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/me/push-token&lt;/code&gt;&lt;/strong&gt; — register FCM token for the signed-in user&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/internal/push-broadcast&lt;/code&gt;&lt;/strong&gt; — operator-only broadcast (admin secret)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.6 Earn program (platform credits)
&lt;/h3&gt;

&lt;p&gt;Signed-in users participate via:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /api/earn/summary?app_id=&lt;/code&gt;&lt;/strong&gt; — balance and daily caps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/earn/heartbeat&lt;/code&gt;&lt;/strong&gt; — time-on-screen style accrual with server-enforced caps and anti-abuse gaps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/earn/checkin&lt;/code&gt;&lt;/strong&gt; — daily check-in style credit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Balances live in D1 (&lt;code&gt;rr_earn_balance&lt;/code&gt;, per-app daily tracking). &lt;strong&gt;Units&lt;/strong&gt; are integer credits; exact redemption semantics belong in product copy on the site or in-app, not duplicated here.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.7 Business Manager cloud sync
&lt;/h3&gt;

&lt;p&gt;Business data is stored as &lt;strong&gt;JSON documents&lt;/strong&gt; in D1 table &lt;strong&gt;&lt;code&gt;bm_owned_row&lt;/code&gt;&lt;/strong&gt;, keyed by user and collection names such as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;categories&lt;/code&gt;, &lt;code&gt;projects&lt;/code&gt;, &lt;code&gt;quick-actions&lt;/code&gt;, &lt;code&gt;time&lt;/code&gt;, &lt;code&gt;money&lt;/code&gt; (with &lt;code&gt;income&lt;/code&gt; / &lt;code&gt;expenses&lt;/code&gt;), &lt;code&gt;clients&lt;/code&gt;, &lt;code&gt;invoices&lt;/code&gt;, &lt;code&gt;products&lt;/code&gt;, &lt;code&gt;supplies&lt;/code&gt;, &lt;code&gt;schedule&lt;/code&gt;, &lt;code&gt;debts&lt;/code&gt;, &lt;code&gt;scheduled-expenses&lt;/code&gt;, &lt;code&gt;resources&lt;/code&gt;, &lt;code&gt;funds&lt;/code&gt;, &lt;code&gt;businesses&lt;/code&gt;, &lt;code&gt;settings&lt;/code&gt;, &lt;code&gt;dashboard&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;REST-shaped routes look like &lt;strong&gt;&lt;code&gt;/api/categories&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;/api/projects&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;/api/time&lt;/code&gt;&lt;/strong&gt;, etc., with &lt;strong&gt;GET&lt;/strong&gt; (list), &lt;strong&gt;POST&lt;/strong&gt; (create), &lt;strong&gt;PATCH&lt;/strong&gt; / &lt;strong&gt;DELETE&lt;/strong&gt; by id where implemented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; &lt;code&gt;GET /api/dashboard?lat=&amp;amp;lon=&lt;/code&gt; is reserved for &lt;strong&gt;Weather's&lt;/strong&gt; combined bundle. Business Manager uses paths like &lt;strong&gt;&lt;code&gt;/api/dashboard/summary&lt;/code&gt;&lt;/strong&gt; for business-specific summaries — the Worker explicitly avoids confusing the two.&lt;/p&gt;

&lt;p&gt;To delete all cloud business data for the account:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;DELETE /api/account/business-data&lt;/code&gt;&lt;/strong&gt; (or the wipe route mirrored under auth)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.8 Feedback
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;POST /api/feedback&lt;/code&gt;&lt;/strong&gt; — authenticated; forwards to a configured Discord webhook for triage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.9 Mobile operations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /api/mobile/version-policy&lt;/code&gt;&lt;/strong&gt; — minimum supported app versions and store URLs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GET /api/mobile/developer-messages&lt;/code&gt;&lt;/strong&gt; — in-app messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.10 Solana integration on the API
&lt;/h3&gt;

&lt;p&gt;The Worker includes routes for &lt;strong&gt;Solana site logging&lt;/strong&gt;, &lt;strong&gt;token-create Discord notify&lt;/strong&gt;, &lt;strong&gt;linked wallets&lt;/strong&gt;, &lt;strong&gt;custodial treasury mechanics&lt;/strong&gt;, and optional &lt;strong&gt;forwarding&lt;/strong&gt; of selected &lt;code&gt;/api/ecosystem/*&lt;/code&gt; calls to the Vercel-hosted Next app — so browser Solana features and server-side secrets can cooperate without exposing keys.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Mobile apps: how to use them (tutorial-style)
&lt;/h2&gt;

&lt;p&gt;All major RootRecord Android apps in this ecosystem share a common technical stack: &lt;strong&gt;React 18&lt;/strong&gt;, &lt;strong&gt;Tailwind&lt;/strong&gt;, &lt;strong&gt;React Router&lt;/strong&gt; (often HashRouter for Capacitor), &lt;strong&gt;Capacitor 6&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pnpm&lt;/code&gt;&lt;/strong&gt; workspaces. Production builds point &lt;strong&gt;&lt;code&gt;REACT_APP_BACKEND_URL&lt;/code&gt;&lt;/strong&gt; (or equivalent) at &lt;strong&gt;&lt;code&gt;https://api.rootrecord.info&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 Weather Manager
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Location-aware &lt;strong&gt;weather&lt;/strong&gt;, &lt;strong&gt;alerts&lt;/strong&gt;, and &lt;strong&gt;hazard&lt;/strong&gt; information with a mobile-first UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup (developers):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# From the Mobile monorepo root&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm weather:start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure &lt;code&gt;REACT_APP_BACKEND_URL&lt;/code&gt; to your API base (no trailing &lt;code&gt;/api&lt;/code&gt; — the client appends &lt;code&gt;/api&lt;/code&gt; paths).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Typical user flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the APK or Play build.&lt;/li&gt;
&lt;li&gt;Allow location or add &lt;strong&gt;saved locations&lt;/strong&gt; (synced via &lt;code&gt;/api/locations&lt;/code&gt; when signed in).&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;dashboard&lt;/strong&gt; to pull &lt;strong&gt;&lt;code&gt;/api/dashboard&lt;/code&gt;&lt;/strong&gt; with your coordinates.&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;NOAA-related prefs&lt;/strong&gt; under &lt;strong&gt;&lt;code&gt;/api/me/prefs&lt;/code&gt;&lt;/strong&gt; if the UI exposes them.&lt;/li&gt;
&lt;li&gt;Register &lt;strong&gt;push&lt;/strong&gt; token if you want alert pushes (&lt;strong&gt;&lt;code&gt;/api/me/push-token&lt;/code&gt;&lt;/strong&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Public distribution for consumers may use a &lt;strong&gt;separate public GitHub Releases&lt;/strong&gt; repo — builders work in the private monorepo.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Business Manager
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Time, money, clients, inventory, scheduling, work log, and reports — oriented toward &lt;strong&gt;small operators&lt;/strong&gt; who want structured books.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign in with the same RootRecord account.&lt;/li&gt;
&lt;li&gt;Create &lt;strong&gt;categories&lt;/strong&gt;, &lt;strong&gt;projects&lt;/strong&gt;, &lt;strong&gt;clients&lt;/strong&gt;, and &lt;strong&gt;time entries&lt;/strong&gt; — each syncs to the Worker under the &lt;strong&gt;&lt;code&gt;bm_*&lt;/code&gt;&lt;/strong&gt; collections.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;reports&lt;/strong&gt; (client-side PDF generation in-app) for exports.&lt;/li&gt;
&lt;li&gt;If you need a clean slate in the cloud, use the &lt;strong&gt;wipe business data&lt;/strong&gt; action (calls the API wipe).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Optional &lt;strong&gt;local FastAPI&lt;/strong&gt; backends exist in-repo for development; &lt;strong&gt;shipping APKs&lt;/strong&gt; talk to &lt;strong&gt;&lt;code&gt;api.rootrecord.info&lt;/code&gt;&lt;/strong&gt; directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Account Hub
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; &lt;strong&gt;Home + account + subscription + security + connected apps&lt;/strong&gt; — not a duplicate of Weather or Business feature depth.&lt;/p&gt;

&lt;p&gt;MVP screens wire to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/api/auth/me&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;/api/earn/summary&lt;/code&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;POST /api/auth/entitlement&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/api/me/prefs&lt;/code&gt;&lt;/strong&gt; (shared shape with Weather where keys overlap)&lt;/li&gt;
&lt;li&gt;Deep links to sibling apps via custom URL schemes (&lt;code&gt;weathermanager://&lt;/code&gt;, &lt;code&gt;businessmanager://&lt;/code&gt;) with store fallbacks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some advanced endpoints (password change, session list) may be &lt;strong&gt;progressively enhanced&lt;/strong&gt; when the Worker exposes them; the app degrades gracefully with "coming soon" if a route is absent.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 Token Manager (Solana mobile)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; &lt;strong&gt;Non-custodial&lt;/strong&gt; Solana: Phantom connect, watch-only mode, balances, send/receive, history, contacts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security model:&lt;/strong&gt; Never collect seed phrases. Phantom connects through &lt;strong&gt;&lt;code&gt;window.solana&lt;/code&gt;&lt;/strong&gt; in WebView or deep links.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend (local/dev):&lt;/strong&gt; FastAPI + Mongo for prefs, contacts, SOL price proxy — &lt;strong&gt;wallet identity is the public key&lt;/strong&gt;, not the RootRecord password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Heavy &lt;strong&gt;token mint creation&lt;/strong&gt; and advanced web-only tooling remain centered on &lt;strong&gt;&lt;code&gt;solana.rootrecord.info&lt;/code&gt;&lt;/strong&gt; in the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Solana Tools (web) — what you can do from the browser
&lt;/h2&gt;

&lt;p&gt;Canonical public URL: &lt;strong&gt;&lt;code&gt;https://solana.rootrecord.info&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Machine-readable overview for citations and definitions: &lt;strong&gt;&lt;code&gt;/llms.txt&lt;/code&gt;&lt;/strong&gt; on the deployed site, and &lt;strong&gt;&lt;code&gt;/operations/reference&lt;/code&gt;&lt;/strong&gt; for precise terminology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capabilities (high level):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt; SPL and Token-2022 mints with optional Metaplex metadata and &lt;strong&gt;Pinata IPFS&lt;/strong&gt; uploads (&lt;code&gt;/create&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage&lt;/strong&gt; authorities and supply: revoke mint/freeze authority, mint more, burn, update metadata, Token-2022 fee operations (&lt;code&gt;/tools&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Liquidity&lt;/strong&gt; with &lt;strong&gt;Raydium CPMM&lt;/strong&gt; (&lt;code&gt;/liquidity&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk sends&lt;/strong&gt; of SOL or SPL (&lt;code&gt;/bulk&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paper wallet&lt;/strong&gt; generator (&lt;code&gt;/wallet-generator&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token stats&lt;/strong&gt; and referral routes (&lt;code&gt;/token-stats&lt;/code&gt;, &lt;code&gt;/ref/[mint]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Referral query param&lt;/strong&gt; &lt;strong&gt;&lt;code&gt;?ref=&lt;/code&gt;&lt;/strong&gt; — a share of &lt;strong&gt;platform fees&lt;/strong&gt; can route to a referrer wallet in the same transaction (basis points configured in deployment).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fees:&lt;/strong&gt; Flat &lt;strong&gt;SOL&lt;/strong&gt; platform fees per paid action; live amounts are on &lt;strong&gt;&lt;code&gt;/pricing&lt;/code&gt;&lt;/strong&gt;. No subscription for the Solana site itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt; Next.js (App Router), &lt;code&gt;@solana/web3.js&lt;/code&gt;, wallet adapters. Sensitive keys such as &lt;strong&gt;Pinata JWT&lt;/strong&gt; stay in &lt;strong&gt;server route handlers&lt;/strong&gt; so they never ship to the browser bundle.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. For developers: running the Worker locally
&lt;/h2&gt;

&lt;p&gt;From the Web repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;cloudflare/rootrecord-primary
npm ci
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy &lt;strong&gt;&lt;code&gt;.dev.vars.example&lt;/code&gt;&lt;/strong&gt; to &lt;strong&gt;&lt;code&gt;.dev.vars&lt;/code&gt;&lt;/strong&gt; and fill secrets. Apply &lt;strong&gt;D1 migrations&lt;/strong&gt; with the scripts in that package before expecting DB-backed routes to work.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;licence Worker&lt;/strong&gt; is a separate package under &lt;code&gt;cloudflare/rootrecord-license&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Security and privacy — practical summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Passwords and JWTs&lt;/strong&gt; are handled by the auth/licence layer; mobile apps must store tokens in &lt;strong&gt;platform secure storage&lt;/strong&gt; (Keychain/Keystore) in production builds, not treat web &lt;code&gt;localStorage&lt;/code&gt; as the final answer for native.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solana&lt;/strong&gt;: User keys stay in the wallet app; RootRecord's servers don't replace Phantom or Solflare signing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custodial and treasury&lt;/strong&gt; features exist in the Worker for specific &lt;strong&gt;RRTT / rewards&lt;/strong&gt; flows — treat these as &lt;strong&gt;advanced&lt;/strong&gt; and subject to on-chain verification; read explorer details before asserting balances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback&lt;/strong&gt; may leave your message in Discord for staff — don't send secrets in feedback text.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: What is the "one true" API base for mobile?&lt;/strong&gt;&lt;br&gt;
A: &lt;strong&gt;&lt;code&gt;https://api.rootrecord.info&lt;/code&gt;&lt;/strong&gt; for shipping builds unless you're deliberately hitting staging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Does RootRecord replace QuickBooks or a national weather service?&lt;/strong&gt;&lt;br&gt;
A: No — Business Manager is a structured productivity and bookkeeping-style companion; Weather combines multiple &lt;strong&gt;public feeds&lt;/strong&gt; and provider data behind one API shape.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Where is Solana "creation" best done?&lt;/strong&gt;&lt;br&gt;
A: Full-featured &lt;strong&gt;browser&lt;/strong&gt; flows on &lt;strong&gt;&lt;code&gt;solana.rootrecord.info&lt;/code&gt;&lt;/strong&gt;. Mobile Token Manager targets &lt;strong&gt;day-to-day wallet&lt;/strong&gt; tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How does RootRecord fund infrastructure?&lt;/strong&gt;&lt;br&gt;
A: Subscriptions / licensing on &lt;code&gt;rootrecord.info&lt;/code&gt; for pro apps, and &lt;strong&gt;flat SOL fees&lt;/strong&gt; on the Solana tools site — see &lt;strong&gt;&lt;code&gt;/pricing&lt;/code&gt;&lt;/strong&gt; for current numbers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;RootRecord is building a &lt;strong&gt;coherent utility layer&lt;/strong&gt; — &lt;strong&gt;accounts and billing&lt;/strong&gt; on the web, &lt;strong&gt;data and sync&lt;/strong&gt; on Cloudflare Workers and D1, &lt;strong&gt;field apps&lt;/strong&gt; on Android, and &lt;strong&gt;chain utilities&lt;/strong&gt; in the browser — without pretending users must trust a single vendor with their keys. If you're integrating as a developer, start from &lt;strong&gt;&lt;code&gt;api.rootrecord.info&lt;/code&gt;&lt;/strong&gt;, read &lt;strong&gt;&lt;code&gt;GET /api&lt;/code&gt;&lt;/strong&gt; or health responses on deploys you control, and ship &lt;strong&gt;&lt;code&gt;Authorization: Bearer&lt;/code&gt;&lt;/strong&gt; from real sessions. If you're a user, start at &lt;strong&gt;&lt;code&gt;rootrecord.info&lt;/code&gt;&lt;/strong&gt;, pick &lt;strong&gt;Weather&lt;/strong&gt;, &lt;strong&gt;Business&lt;/strong&gt;, or &lt;strong&gt;Solana Tools&lt;/strong&gt;, and sign in once.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Last reviewed against engineering docs and Worker sources — May 2026. URLs and fee schedules may change; confirm production behavior before relying on any figures in production systems.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>rootrecord</category>
      <category>solana</category>
      <category>tutorial</category>
      <category>cloudflare</category>
    </item>
  </channel>
</rss>
