Task Timer is a React Native app built with Expo, enabling users to create task rooms, manage tasks, and receive notifications for task reminders.
-
Clone the repository:
git clone https://github.com/Neel2107/task-timer.git cd task-timer -
Install dependencies:
npm install
-
Start the development server:
npx expo start
-
Open the app:
- Development build: Follow Expo Development Build Guide.
- Android emulator or iOS simulator: Follow Expo's setup instructions.
- Expo Go App: Scan the QR code displayed after running
npx expo start.
- Users need notification permissions for task reminders.
- Notifications are scheduled based on task
starts_inattributes, which may include days, hours, minutes, or seconds. - Tasks and task rooms are retrieved via mock APIs (
apimodule). - There can be multiple task rooms at a time, and tasks are associated with specific rooms.
-
Architecture:
- File-based Routing: Simplifies navigation with Expo Router.
- Hooks: Custom hooks like
useTasksanduseAuthcentralize logic and maintain separation of concerns.
-
Notifications:
- Expo Notifications: Used for scheduling, canceling, and handling task reminders.
- Custom notification categories are implemented for actions (
Done,Skip).
-
State Management:
- Context API: For managing global state (e.g., task rooms).
-
Styling:
- NativeWind: Utility-first CSS framework for consistent, responsive UI.
- Customizable themes for branding.
-
Keyboard Handling:
- Ensures proper handling of the keyboard using
react-native-keyboard-controllerto prevent UI overlap.
- Ensures proper handling of the keyboard using
-
Task Scheduling:
- Notifications are uniquely identified by task IDs, ensuring no duplication or early triggers.
- Create new task rooms.
- View the list of existing rooms with timestamps.
- Local Data Persistence: Task room data is stored locally, ensuring that if the app is closed and reopened, the task rooms are retained.
- Fetch tasks for a specific room.
- "Get Next Task" feature fetches and schedules the next task.
- Display task details with scheduled notifications.
- Pull-to-Refresh: Users can refresh the task list by pulling down on the screen.
- Notifications trigger based on
starts_induration. - Actionable buttons (
Done,Skip) dismiss the notification. - Custom notification icon enhances user experience.
- Refresh Token Functionality: Automatically handles token expiration by using a refresh token to acquire a new access token without requiring the user to log in again.
- Token Validation at App Start: On app launch, checks for valid tokens to determine if the user is already authenticated.
- Secure Token Storage: Authentication tokens (access and refresh tokens) are securely stored using Expo Secure Store to ensure data security.
- Custom app icon for a distinctive application identity.
- Custom splash screen for a professional look and feel during app launch.
- Smooth Animations: Button press animations implemented using Reanimated for a polished and responsive user experience.
- High-Quality Assets: High-resolution icons, images, and splash screens are used to provide a visually appealing and professional appearance.
task-timer-001.mp4