This guide assumes you have never coded before. Every step tells you exactly what to click, type, or copy. Follow them in order, top to bottom. Don't skip ahead.
Total cost: $0. The only possible future cost is $99/year, and only if you later want the app on the Apple App Store — this guide skips that entirely for now.
-
Node.js — this lets your computer run the app's code. Go to https://nodejs.org, click the button that says "LTS", download it, and open the installer. Click "Next" through all the default options.
-
Git — this lets you save and upload your code to GitHub. Go to https://git-scm.com/downloads, download it for your operating system, and install it with all default options (just keep clicking "Next").
-
A code editor — this is where you'll open and look at the files. We recommend VS Code: go to https://code.visualstudio.com, download it, install it.
That's it for computer setup. You will not need to write any new code — everything is already written for you in the files provided.
- Go to https://github.com and click "Sign up" (skip this if you already have an account).
- Once logged in, click the + icon in the top-right corner → New repository.
- Name it
threadline. Leave everything else as-is. Click Create repository. - GitHub will show you a page with some commands. Ignore those for now — we'll use simpler ones below.
- Unzip the
threadlinefolder you downloaded from this conversation onto your computer (for example, onto your Desktop). - Open a terminal window:
- Windows: press the Windows key, type "Command Prompt", press Enter.
- Mac: press Cmd+Space, type "Terminal", press Enter.
- Type this, then press Enter, to move into the folder (adjust the path if you put it
somewhere other than the Desktop):
cd Desktop/threadline - Now type each of these lines one at a time, pressing Enter after each:
Replace
git init git add . git commit -m "First upload" git branch -M main git remote add origin https://github.com/YOUR-USERNAME/threadline.git git push -u origin mainYOUR-USERNAMEwith your actual GitHub username. It may ask you to log in — follow the on-screen prompts. - Refresh your GitHub repository page in your browser. You should now see all the files there.
You just uploaded your code to GitHub — that part is done forever, you'll only repeat the
last 3 lines (
add,commit,push) whenever you make future changes.
Supabase is where every contact, reminder, and expense Anupam adds actually gets saved, permanently, for free.
- Go to https://supabase.com and click Start your project. Sign up (it's free).
- Click New Project.
- Fill in:
- Name:
threadline - Database Password: make one up and write it down somewhere safe — you'll rarely need it, but don't lose it.
- Region: pick whichever is closest to where Anupam is based.
- Name:
- Click Create new project. Wait about 2 minutes while it sets itself up (there's a loading screen — just wait).
- Once it's ready, click the gear icon (Settings) in the left sidebar → API.
- You'll see two things you need:
- Project URL (looks like
https://abcdefgh.supabase.co) - anon public key (a long string of letters and numbers)
- Project URL (looks like
- Keep this browser tab open — you'll copy these in Step 4.
This step creates the actual "filing cabinets" that store contacts, reminders, and expenses.
- In Supabase, click SQL Editor in the left sidebar.
- Click New query.
- Open the file
supabase/schema.sqlfrom the threadline folder (open it in VS Code, or any text editor, or Notepad). - Select all the text in that file (Ctrl+A or Cmd+A), copy it (Ctrl+C or Cmd+C).
- Paste it into the Supabase SQL Editor box (Ctrl+V or Cmd+V).
- Click the green Run button (bottom-right).
- You should see "Success. No rows returned." That means it worked. If you see a red error, make sure you copied the entire file, not just part of it.
- In Supabase, click Authentication in the left sidebar → Providers.
- Click on Email.
- Find the toggle that says "Allow new users to sign up" and turn it OFF. This is the single most important step — it means no one, ever, can create a new account.
- Now go to Authentication → Users (in the left sidebar).
- Click Add user → Create new user.
- Type in Anupam's real email address and make up a password (write this password down too — you'll type it in one time in Step 6).
- Click Create user.
You have now created the one and only account this app will ever have.
These are two small free cloud functions that do the smart parts: understanding what Anupam says out loud, and fetching news headlines. This version uses Google Gemini, which has a free tier that needs no credit card and no billing at all for personal use like this.
-
Get a free Gemini API key:
- Go to https://aistudio.google.com/apikey
- Sign in with any Google account.
- Click Create API Key. Copy the key it gives you (a long string of letters and numbers). No credit card, no billing setup, nothing to pay — this is genuinely free.
-
Install the Supabase command-line tool. In your terminal, type:
npm install -g supabase -
Log in:
supabase loginThis opens your browser — click "Authorize."
-
Link your project (find "your-project-ref" in your Supabase Project URL from Step 2 — it's the part before
.supabase.co):supabase link --project-ref your-project-ref -
Save your Gemini API key as a secret (replace with your real key):
supabase secrets set GEMINI_API_KEY=your-real-gemini-key-here -
Deploy both functions:
supabase functions deploy extract-contact supabase functions deploy get-news
That's it — the "brain" behind voice add and the news feed are now live, at completely no cost.
- In the
threadlinefolder, find the file called.env.example. - Make a copy of it and rename the copy to exactly
.env(no ".example" at the end). - Open
.envin your text editor. Replace the placeholder text with your real values from Step 2:EXPO_PUBLIC_SUPABASE_URL=https://your-real-project.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=your-real-anon-key - Save the file.
- In your terminal, make sure you're still inside the
threadlinefolder (cd Desktop/threadline). - Type:
This downloads everything the app needs. It may take a few minutes — that's normal.
npm install
Important: because the voice-recognition feature uses your phone's real microphone system (not something a simple preview tool can do), we need to build a real installable app file rather than using the basic "Expo Go" preview app. Don't worry — this is still completely free, just one extra step.
- Install the free build tool:
npm install -g eas-cli - Create a free Expo account if you don't have one (it'll prompt you):
eas login - Start the build:
eas build --platform android --profile preview - It will ask a few yes/no questions the first time (like "Generate a new Android Keystore?") — just press Enter to accept the defaults each time.
- This uploads your code to Expo's free servers and builds the actual app file. It takes roughly 10–20 minutes. You'll see a progress link in your terminal — you can click it to watch the progress in your browser.
- When it's done, you'll get a link ending in
.apk. Open that link on Anupam's Android phone (or email/text it to him) and tap it — Android will ask to confirm installing an app from outside the Play Store. Tap "Install anyway" (this is completely safe, it's just Android being cautious about apps not from its store).
The app is now installed on his phone and fully working — voice recognition, contacts, reminders, expenses, and news, all live and saving to the database.
The very first time Anupam (or you, setting it up for him) opens the app, it will show a "one-time setup" sign-in screen. This is separate from the daily 1972 code.
- Type in the email and password you created for him in Step 4.
- Tap Connect Account.
- The app will now remember this forever — he will never see this screen again unless he deletes and reinstalls the app.
- From now on, every time he opens the app, he'll just see the 1972 keypad — nothing else.
- Open the app → type 1972 → he's in.
- Tap Add → tap the microphone → speak naturally → review what the AI understood → tap Save Connection.
- Tap Contacts to search, view, or edit anyone.
- Tap Home to see who to follow up with, upcoming reminders, and this month's expenses — with "+ Add" buttons right there for reminders and expenses.
- Tap News for headlines pulled directly from BBC, NPR, CNBC, and MarketWatch.
Any part of the app that's empty (no contacts yet, no reminders yet, no expenses yet) will simply say so in plain words, instead of looking broken or blank.
Whenever you or a developer changes any file:
git add .
git commit -m "describe what you changed"
git push
Then, if you want a new version installed on the phone, repeat Step 8's eas build command —
it produces a fresh .apk link to reinstall.
Everything in this project already includes the iPhone-specific permission text needed (you can
see it in app.json under "ios"), so no code needs to change. The only two differences later:
- You'll need an Apple Developer account ($99/year) — this is Apple's rule, not something this app or Supabase charges you.
- Instead of
eas build --platform android, you'd run:and follow Expo's prompts to connect your Apple Developer account.eas build --platform ios
Until you're ready for that, Android works today at no cost at all.
| Item | Cost |
|---|---|
| GitHub | Free |
| Supabase (database, login, cloud functions) | Free |
| Expo + EAS Android build | Free |
| Gemini API (the "understand what I said" feature) | Free — no billing required |
| iPhone App Store distribution (optional, later) | $99/year — skip for now |
You can have this fully working on Android today for genuinely $0.