Track your friends' recurring daily schedules. Sign in with Google and your data syncs across all your devices.
- Custom schedules — Create cycle templates of any length (2–60 days). Mark each day as good, okay, or bad.
- Per-friend assignment — Assign any schedule to any friend with a start date.
- Schedule history — Change a friend's schedule anytime. Old schedules stay in the past, new ones apply forward.
- Retroactive first entry — A friend's first schedule extends infinitely into the past.
- Calendar views — Month and week views with color-coded availability dots.
- Cross-device sync — Firebase + Google sign-in. Same data on phone and laptop.
- Landing page — Animated sign-in page with demo visuals.
- Go to console.firebase.google.com
- Click Add project, name it anything (e.g.
friend-tracker) - Disable Google Analytics → Create project
- Go to Build → Authentication → Get started
- Under Sign-in method, click Google, toggle Enable
- Select your email as support email → Save
- Go to Build → Firestore Database → Create database
- Choose Start in production mode → pick a region → Enable
- Go to the Rules tab and replace with:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
- Click Publish
- Go to Project Overview → gear icon → Project settings
- Scroll to Your apps → click the Web icon (
</>) - Name it anything → Register app
- Copy the
firebaseConfigvalues intosrc/firebase.js
- Go to Build → Authentication → Settings → Authorized domains
- Click Add domain → add
YOUR_USERNAME.github.io
-
Create a new Public repo at github.com/new named
friend-tracker -
Make sure
baseinvite.config.jsmatches your repo name:base: '/friend-tracker/',
-
Push:
cd friend-tracker-deploy git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/YOUR_USERNAME/friend-tracker.git git push -u origin main
-
Go to repo → Settings → Pages → Source: GitHub Actions
-
Live at
https://YOUR_USERNAME.github.io/friend-tracker/in ~1 minute.
npm install
npm run devEach user document in Firestore (users/{uid}) stores:
- schedules — Array of schedule templates, each with a name, cycle length, and day status map
- friends — Array of friends, each with a schedule history (array of
{scheduleId, cycleStart, changedAt})
The first entry in a friend's schedule history applies retroactively to all past dates. Subsequent entries only apply from their start date forward.
- Firestore rules ensure users can only access their own data
- The Firebase API key is a public identifier, not a secret — access is controlled by rules + auth
- No sensitive data stored — just names, emojis, and dates