FemTracker is a modern mobile application designed to help users track and manage their menstrual product usage safely. Built with React Native and Expo, it provides real-time duration tracking, smart notifications, and usage history for better period care practices.
- Real-time Usage Tracking: Monitor the duration of tampon and menstrual cup usage
- Smart Reminders: Receive notifications for recommended and maximum usage times
- Usage History: View and track your product usage patterns over time
- Clean UI: Modern, intuitive interface with clear status indicators
- Safety First: Built-in timers and warnings to prevent extended use
- Offline Support: All data stored locally on your device
- React Native
- Expo
- TypeScript
- React Native Paper
- AsyncStorage
- Expo Notifications
- Linear Gradient
- Lottie Animations
- Node.js (v14 or later)
- npm or yarn
- Expo CLI
- iOS Simulator (for iOS development)
- Android Studio and Android SDK (for Android development)
-
Clone the repository
git clone https://github.com/ChanMeng666/FemTracker.git cd FemTracker
-
Install dependencies
npm install # or yarn install
-
Start the development server
npx expo start
-
Run on your preferred platform
- Press
i
for iOS simulator - Press
a
for Android emulator - Scan QR code with Expo Go app for physical device
- Press
FemTracker/
├── app/ # Main application screens
├── assets/ # Images, fonts, and other static files
├── components/ # Reusable UI components
├── constants/ # App constants and configurations
├── hooks/ # Custom React hooks
├── services/ # Core services (storage, notifications)
├── src/ # Source files
│ └── theme/ # UI theme and styling
└── types/ # TypeScript type definitions
The app follows a clean architecture pattern with:
- Hooks for business logic and state management
- Services for core functionalities
- Local storage for data persistence
- Theme-based styling system
- Type-safe development with TypeScript
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the Apache-2.0 license - see the Apache-2.0 license file for details.
- Expo for the amazing development platform
- React Native Paper for the Material Design components
- All contributors who have helped shape this project
Chan Meng
- LinkedIn: chanmeng666
- GitHub: ChanMeng666