A mobile application built with React Native and Expo that helps patients track their medication intake. This app was developed as part of the Ngoane Health Tech internship application process.
- User Authentication: Sign up, login, and logout functionality
- Medication Management: Add, view, and delete medications
- Medication Tracking: Mark medications as taken or skipped for different times of day
- Medication History: View historical records of medication intake
- Offline Support: All data is stored locally on the device
- Clean UI/UX: Intuitive interface with visual cues for medication status
- React Native: Cross-platform mobile framework
- Expo: Development platform for React Native
- TypeScript: Type-safe JavaScript
- NativeWind: Tailwind CSS for React Native
- React Navigation: Navigation library for React Native
- React Native Paper: Material Design components
- AsyncStorage: Local storage solution
- React Hook Form: Form handling library
- Date-fns: JavaScript date utility library
-
Folder Structure: Organized by feature and type for better scalability
src/components: Reusable UI componentssrc/screens: App screens and pagessrc/contexts: React context providerssrc/hooks: Custom React hookssrc/utils: Utility functionssrc/types: TypeScript type definitions
-
State Management: Used React Context API for authentication state and local storage (AsyncStorage) for persistent data
-
Styling: Utilized NativeWind (Tailwind CSS for React Native) for consistent styling and faster development
-
User Experience:
- Color-coded status indicators
- Intuitive navigation flow
- Form validation with clear error messages
- Loading states and empty states
- Pull-to-refresh functionality
-
Clone the repository:
git clone <repository-url> cd medTrack -
Install dependencies:
bun install # or npm install -
Start the development server:
bun start # or npm start -
Run on a device or emulator:
- Scan the QR code with the Expo Go app on your device
- Press 'a' to run on an Android emulator
- Press 'i' to run on iOS simulator (Mac only)
- Press 'w' to run in web browser
- Push notifications for medication reminders
- Medication adherence analytics and visualizations
- Barcode scanning for adding medications
- Multi-language support
- Cloud sync across devices
- Healthcare provider integration
This project is for demonstration purposes as part of the Ngoane Health Tech internship application.
- Identified key pain points for patients: forgetting to take medication, lack of a simple tracking system
- Focused on building a minimalist solution that addresses core needs without overwhelming users
- React Native with Expo: Chosen for rapid development and cross-platform capability
- TypeScript: Implemented for type safety and improved developer experience
- NativeWind (Tailwind CSS): Selected for consistent styling and development speed
- Local Storage: Used AsyncStorage for data persistence, prioritizing offline functionality
- Context API: Chosen over Redux for simpler state management appropriate for app scale
- Implemented a clear visual hierarchy with actionable cards
- Used color-coding for intuitive status recognition (taken/skipped/pending)
- Designed dedicated screens for distinct operations (listing, details, adding) to minimize cognitive load
- Implemented time-based tracking (morning, afternoon, evening, night) for better usability
- Authentication Flow: Simple yet secure local authentication system
- Medication Management: CRUD operations for medications
- Tracking System: Time-of-day based tracking with status indicators
- History View: Chronological display of medication adherence
- Offline-First: All data persists locally on the device
- Date/Time Handling: Implemented robust date-fns library for consistent date operations
- Form Validation: Used React Hook Form for reliable validation with minimal re-renders
- Component Organization: Created a structured hierarchy of components for maximum reusability
- Data Persistence: Implemented wrapper functions around AsyncStorage for better error handling
- Install dependencies:
bun installornpm install - Start the development server:
bun startornpm start - Run on a device: Scan the QR code with Expo Go or use emulator/simulator
- React Native & Expo
- TypeScript
- NativeWind (Tailwind CSS for React Native)
- React Navigation
- React Native Paper
- AsyncStorage
- React Hook Form
- Date-fns
- Push notifications for medication reminders
- Analytics dashboard for adherence patterns
- Cloud synchronization for multi-device usage
- Healthcare provider data sharing