BloomCycle is a mobile-first React app for privately tracking periods, estimated ovulation, fertility windows, symptoms, mood, flow, notes, and body signals.
- Three-step first-run onboarding for feature orientation, cycle profile setup, and privacy preferences
- In-app Privacy Policy and Terms of Use available before and after sign-in
- Dashboard with cycle day, next expected period, estimated ovulation, and fertile window
- Calendar visualization for period and fertility estimates
- Symptom, mood, flow, and notes tracking
- Body Signal Journal for cramps, cravings, sleep, energy, acne, headache, mood, and stress
- Daily care check-in for water, sleep, medication completion, mood, symptoms, flow, and notes
- Today's Body Insight and phase-based self-care suggestions
- Cycle Confidence Score and Cycle Signature
- Cycle analytics for average length, regularity, mood, symptoms, sleep, and water
- Personalized browser reminders for period and ovulation estimates, pregnancy milestones, medications, hydration, and daily wellness check-ins
- PDF cycle and care reports
- Optional per-account Secure Cloud Sync with automatic login hydration and cross-device record merging
- Copyable partner or gynecologist summary using patient details
- Private Mode for less sensitive on-screen wording
- Email, username, and password registration
- Password reset links delivered by email
- Browser-only cycle data storage
- React 19
- Vite 7
- CSS
- Browser localStorage for cycle records
- Firebase Authentication for accounts and password-reset email
npm install
npm run devOpen http://localhost:5173/.
- Create a project in the Firebase console.
- Add a Web app to the Firebase project.
- In Authentication > Sign-in method, enable Email/Password.
- Create a Cloud Firestore database.
- Copy
.env.exampleto.env. - Replace the example values with the Web app configuration from Firebase.
- Publish the included
firestore.rulesin the Firebase console, or deploy them with Firebase CLI. - Restart
npm run devafter changing.env.
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_APP_ID=your_firebase_app_idThe .env file is ignored by Git and must not be committed.
The included Firestore rules allow each authenticated user to access only documents below their own user ID. Do not enable open development rules for production.
npm run buildFirebase Authentication manages account passwords, login sessions, and reset emails. Health records remain local unless the user enables Secure Cloud Sync. When enabled, BloomCycle merges cloud records after login and syncs later changes. Cloud documents are stored beneath the authenticated user's Firebase UID and protected by the included Firestore rules. Settings include separate controls to clear local records and delete the synced cloud record.
Browser reminders work while BloomCycle is open. Reliable closed-app reminders require a deployed push-notification service and explicit user permission.
This app is for tracking and educational purposes only. It should not replace medical advice. Cycle, ovulation, and fertile-window dates are estimates.
See HOW_BLOOMCYCLE_WAS_BUILT.md for the complete coding guide. A Microsoft Word version is also included.
BloomCycle was designed and developed by Agatha Nweze.
Throughout the development process, ChatGPT (OpenAI) provided guidance on software architecture, debugging, Firebase integration, deployment with Vercel, troubleshooting, and general development best practices. The application design, implementation, testing, and final technical decisions were completed by the project author.
This project also reflects a personal learning journey in React, Firebase, GitHub, Vercel, and modern web application development.