safeeyes
Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗An Indian calorie and macro tracker that runs on your iPhone's Home Screen. It does not depend on a Claude plan.
iPhone (CutTrack app)
│ your log is kept on the phone first, so it works offline
▼
Your Vercel server (free) ── holds your secrets ──┐
├─ /api/drive → Google Drive (stores your data, no AI)
├─ /api/ai → OpenAI → Gemini → Groq (reads meals, photos, coach)
└─ /api/transcribe → OpenAI → Gemini → Groq (voice notes)
if one runs out of credit or fails, the next takes over
What lands in your Drive
My Drive/
└── CutTrack AI/
├── cuttrack-data.json ← everything, used to restore on a new phone
└── 2026/
└── 10 - October/
└── 2026-10-18.txt ← that day's entries with time, amount, macros and totals
CutTrack can only see files it created. It cannot read anything else in your Drive.
Cost: Vercel Hobby and Google Drive are free. OpenAI is pay-as-you-go; gpt-6-luna costs $0.10 per million input tokens, so a month of logging typically costs a few rupees. Gemini and Groq take over only when OpenAI can't answer.
You need:
AI keys live in GitHub secrets. The running app on Vercel can't read GitHub secrets directly, so the included Sync AI keys to Vercel action copies them across. It needs one extra secret,
VERCEL_TOKEN(step 4b).
OPENAI_API_KEY and GEMINI_API_KEY are in the repository's GitHub secrets. Add GROQ_API_KEY there whenever you have it, then run the sync action (step 4b).
OpenAI bills API use separately from ChatGPT: add credit at platform.openai.com → Billing.
cuttrack-app.zip on your laptop.cuttrack-ai, choose Private, then Create repository.cuttrack-app folder into the page. That means the api and icons folders plus index.html, sw.js, manifest.webmanifest, package.json, vercel.json and README.md.Check that the repo shows an api folder at the top level, not a cuttrack-app folder containing it.
Go to console.cloud.google.com. Accept the terms, then create a project named CutTrack. Make sure it's selected at the top.
Turn on the Drive API. Search "Google Drive API" in the top bar, open it, and click Enable.
Set up the sign-in screen. Open Google Auth Platform; in older layouts it's APIs & Services → OAuth consent screen.
CutTrack AI. Support email: your Gmail address.Choose what the app may access. Open Data Access → Add or remove scopes. Tick:
.../auth/drive.fileopenid.../auth/userinfo.emailClick Update, then Save.
Publish the app. Open Audience → Publish app → Confirm. This matters: if the app stays in "Testing", Google signs you out every 7 days. The scopes above are non-sensitive, so no Google review is needed.
Create the sign-in credentials. Open Clients; in older layouts it's Credentials → Create credentials → OAuth client ID.
CutTrack.Go to vercel.com and sign up with GitHub.
Click Add New… → Project, then Import your cuttrack-ai repo.
For Framework Preset, choose Other. Leave build settings empty.
Open Environment Variables and add each of these:
| Name | Value |
|---|---|
GOOGLE_CLIENT_ID | from step 3.6 |
GOOGLE_CLIENT_SECRET | from step 3.6 |
ALLOWED_EMAIL | [email protected] |
SESSION_SECRET | a random string of 32 or more characters (see below) |
For SESSION_SECRET, use a password generator, or run openssl rand -base64 36 on a Mac. Don't reuse a real password.
Click Deploy. When it finishes, copy your address, for example https://cuttrack-ai-xyz.vercel.app.
cuttrack-github, scope it to your account, choose an expiry, and copy it.VERCEL_TOKEN, paste the token, then click Add secret.Run it again whenever you add or change an AI key, for example when you add GROQ_API_KEY.
APP_URL with your address. No slash at the end.https://YOUR-ADDRESS.vercel.app/api/auth/callback
Then click Save. Google can take a few minutes to apply it.This is the beginning of the README. Read the rest at the original. Read the full README ↗