Remindy is a smart medication reminder and tracker built to help users manage their long-term medical needs. It features offline auto-save capabilities, smart duration tracking, and asynchronous WhatsApp Notifications to ensure you or your loved ones never miss a dose.
Built for Shipathon 2026 🚢
- Smart Tracking: Automatically calculates the remaining days of your longest medication ("Longest Meds" countdown) based on the start date.
- Auto-Decrement Stock: Medication stock automatically decreases based on your daily intake schedule.
- Offline Auto-Save: Your data is always safe. Remindy uses local storage (
shared_preferences) to save your data instantly without needing an internet connection. - WhatsApp Notifications: Sends real-time WhatsApp messages when a medication is marked as "Done" or "Missed", supporting international phone numbers.
- Seamless Onboarding: Remembers if you've completed the setup, skipping the onboarding/login process on subsequent app launches.
- Frontend: Flutter (Dart)
- State Management: Native
ValueListenableBuilder(No third-party packages) - Local Storage:
shared_preferences - Backend / Bot: Node.js,
whatsapp-web.js/ Baileys (Custom GoWa Server)
This application uses a custom Node.js server to handle WhatsApp notifications. To test the complete flow (including WhatsApp messages), please follow these steps carefully:
- Flutter SDK installed.
- Node.js installed.
- A smartphone with an active WhatsApp account (to act as the bot sender).
git clone [https://github.com/queenshafarania/remindy_app.git](https://github.com/queenshafarania/remindy_app.git)
cd remindy_app
- Open your terminal and navigate to the server directory:
cd gowa_server
- Install the required Node.js dependencies:
npm install
- Start the server:
node index.js
- A QR Code will be generated in your terminal. Open WhatsApp on your phone, navigate to Linked Devices, and scan the QR code.
- Once it says "Ready" or "Connected" in the terminal, leave this terminal open and running in the background.
Since the WhatsApp server is running locally on your machine, you need to point the Flutter app to your computer's local IPv4 address.
- Open your terminal and find your machine's local IP address (e.g.,
192.168.x.x). - Open the Flutter project in your code editor.
- Navigate to
lib/services/whatsapp_service.dart. - Locate the
baseUrlvariable and replace127.0.0.1with your computer's actual local IP address:
// Change this:
static const String baseUrl = '[http://127.0.0.1:3000/send/text](http://127.0.0.1:3000/send/text)';
// To something like this (keep the port :3000 or whatever port you use):
static const String baseUrl = '[http://192.168.1.5:3000/send/text](http://192.168.1.5:3000/send/text)';
(Note: Do not use localhost or 127.0.0.1 if you are testing on a physical Android/iOS device via a cable).
(If you are testing the Flutter app on a physical Android or iOS device, both your test phone and your computer must be connected to the exact same Wi-Fi network. Additionally, you must use your machine's local IP address (like 192.168.1.x), because localhost or 127.0.0.1 will not work on a physical device.)
- Open a new terminal tab (leave the server running in the first tab).
- Ensure you are in the root
remindy_appdirectory. - Install Flutter dependencies:
flutter pub get
- Run the app on your preferred emulator or physical device:
flutter run
- Open the app and complete the initial onboarding (enter a name and family phone number with country code, e.g.,
+62812...or+1415...). - Add a new medicine via the manual input form (or use the provided dummy data).
- Go to the Track screen.
- Tap the Consume (Done) or Miss button for a scheduled medicine.
- Watch your WhatsApp receive an automated notification from the bot!
Queenshafa Rania
Asiyah
Vocational High School Student (Software Engineering)
Created for Shipathon 2026