Key Features:
Daily Water Intake Tracking:
The app tracks the user’s daily water intake, starting from 0 oz and incrementing as the user logs more water consumed using the available intake options.
Intake options include preset amounts (8 oz, 12 oz, 16 oz, and 20 oz), which users can add to their total intake by pressing the respective buttons.
Customizable Daily Water Intake Goal:
Users can set a daily water intake goal with a default value of 80 oz.
The user can choose from several predefined goal options (80 oz, 120 oz, 160 oz, and 200 oz).
There is a button with a trophy icon that allows the user to open a goal selection sheet to change the goal.
Progress Visualization:
A horizontal water bottle graphic visually shows the progress toward the daily goal. The water bottle fills up based on how close the user is to reaching their goal.
The progress is shown in real-time, and the text overlay indicates the exact intake amount versus the goal (e.g., 40/80 oz).
Units Display:
The app shows the total water intake in three units: ounces (oz), liters (L), and gallons (gal).
Each unit display has a unique design with gradient backgrounds and shadows to give it a glass-like visual effect.
Notifications:
Users can enable or disable notifications to remind them to drink water throughout the day. The bell icon shows the status of notifications (enabled or disabled).
The app integrates with the UserNotifications framework to handle notification permissions and delivery.
Dark Mode Toggle:
The app includes a toggle for switching between light and dark modes.
The sun and moon icons provide visual feedback on the current mode, and the app changes its color scheme accordingly.
Undo and Reset Functions:
Undo Last Intake: If the user mistakenly logs water intake, they can undo their last action, which removes the last intake amount from the total.
Reset: Users can reset their total intake to 0 at any time, and the app also automatically resets the intake every 24 hours.
The reset functionality ensures that users start with a clean slate each day.
Goal Achievement Notification:
When the user reaches their daily goal, the app shows a congratulatory alert message. This alert only appears once per day after the goal is met.
Haptic Feedback:
Various interactions, such as toggling dark mode, adding water, undoing the last intake, or resetting the intake, trigger haptic feedback for a more immersive experience.
Visual Design:
The app includes modern UI elements, including custom button designs with gradient backgrounds, shadows, and rounded corners to create a sleek, visually engaging experience.
The background and UI colors dynamically adapt to light or dark mode to ensure a smooth visual experience regardless of the user's settings.
Loading Screen:
The app displays a loading screen with a progress indicator when the app first launches. The loading screen appears for a set time before transitioning to the main content.
Local Data Storage:
The app uses UserDefaults to store important user data, such as the total water intake and the last reset date. This allows users to continue where they left off, even after closing the app.
The app does not track or share user data externally, and all data is stored locally on the device.
How the App Works:
When the app starts, it displays a loading screen before transitioning to the main water tracking interface.
Users can add water to their intake using the available preset options. Their progress toward the daily goal is visually represented in a water bottle graphic.
Users can toggle notifications, switch between dark and light mode, undo their last intake, or reset their intake completely. The daily goal can also be customized to match the user's preferences.
Once the user reaches their daily goal, the app displays a congratulatory alert, and it resets everything after 24 hours for a fresh start the next day.