A simple iOS app for tracking your daily health symptoms, medications, and notes. Built with Flutter and designed to feel native on iPhone (Cupertino Widgets). Most of the code was written by Cursor.
Health Notes helps you keep track of your health over time. You can:
- Record symptoms, medications, and notes with timestamps
- View trends and patterns in your health data
- Keep your data private and secure
- Access your notes from any device
- Flutter SDK installed
- iOS Simulator or iPhone for testing
- Google account for sign-in
-
Also see the
cursor-design-docs/
dir -
Clone and install dependencies
git clone <repository-url> cd health_notes flutter pub get
-
Set up your environment
- Create a
.env
file in the project root - Add your Supabase and Google OAuth credentials (see setup guide below)
- Create a
-
Generate code
flutter packages pub run build_runner build
-
Run the app
flutter run
- Create a new project at supabase.com
- Run the SQL commands from
supabase_setup.sql
in your Supabase SQL Editor - Get your project URL and anon key from Settings > API
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable Google Sign-In API
- Create OAuth 2.0 credentials for iOS
- Add your bundle identifier (found in
ios/Runner/Info.plist
)
Create a .env
file in the project root:
URL=your_supabase_project_url
ANON_KEY=your_supabase_anon_key
GOOGLE_WEB_CLIENT_ID=your_google_client_id
./deploy_to_iphone
flutter run --device-id=your_iphone_id
Note: Make sure your iPhone is in Developer Mode and you've trusted your Mac.
./deploy_to_simulator
- 🔐 Secure Sign-in: Use your Google account to sign in
- 📱 Native iOS Design: Feels like a built-in iPhone app
- 📊 Health Trends: See patterns in your symptoms over time
- 🔒 Private Data: Your health notes are private and secure
- 📅 Easy Date Selection: Built-in date picker for accurate timestamps
- 🔄 Sync: Your data syncs across all your devices
lib/
├── models/ # Data structures
├── screens/ # App screens and UI
├── providers/ # State management
├── services/ # API and authentication
├── widgets/ # Reusable UI components
└── utils/ # Helper functions
When you change data models:
flutter packages pub run build_runner build --delete-conflicting-outputs
"No devices found"
- Make sure your iPhone is connected via USB
- Check that Developer Mode is enabled on your iPhone
- Try disconnecting and reconnecting your device
"Build failed"
- Run
flutter clean
thenflutter pub get
- Make sure all environment variables are set in
.env
"Authentication error"
- Verify your Google OAuth credentials are correct
- Check that your bundle identifier matches in Google Cloud Console
- Check the
scripts/README.md
for detailed deployment troubleshooting - Review the
cursor-design-docs/
directory, for more documentation
The app icon is generated from assets/icons/base_icon_img.png
. To update it:
- Replace the base image (1024x1024 PNG recommended)
- Run
./assets/icons/generate_ios_icons.sh
- The new icons will be automatically generated
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
None.