Skip to content

Neel2107/task-timer

Repository files navigation

Task Timer

Task Timer is a React Native app built with Expo, enabling users to create task rooms, manage tasks, and receive notifications for task reminders.


Setup Instructions

  1. Clone the repository:

    git clone https://github.com/Neel2107/task-timer.git
    cd task-timer
  2. Install dependencies:

    npm install
  3. Start the development server:

    npx expo start
  4. Open the app:


Assumptions

  • Users need notification permissions for task reminders.
  • Notifications are scheduled based on task starts_in attributes, which may include days, hours, minutes, or seconds.
  • Tasks and task rooms are retrieved via mock APIs (api module).
  • There can be multiple task rooms at a time, and tasks are associated with specific rooms.

Technical Decisions

  1. Architecture:

    • File-based Routing: Simplifies navigation with Expo Router.
    • Hooks: Custom hooks like useTasks and useAuth centralize logic and maintain separation of concerns.
  2. Notifications:

    • Expo Notifications: Used for scheduling, canceling, and handling task reminders.
    • Custom notification categories are implemented for actions (Done, Skip).
  3. State Management:

    • Context API: For managing global state (e.g., task rooms).
  4. Styling:

    • NativeWind: Utility-first CSS framework for consistent, responsive UI.
    • Customizable themes for branding.
  5. Keyboard Handling:

    • Ensures proper handling of the keyboard using react-native-keyboard-controller to prevent UI overlap.
  6. Task Scheduling:

    • Notifications are uniquely identified by task IDs, ensuring no duplication or early triggers.

Features

Task Rooms

  • 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.

Tasks

  • 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

  • Notifications trigger based on starts_in duration.
  • Actionable buttons (Done, Skip) dismiss the notification.
  • Custom notification icon enhances user experience.

Authentication

  • 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.

Visual Enhancements

  • 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.

Screen Recording

task-timer-001.mp4

Screenshots

custom-app-icon custom-notification-icon custom-splash-image login-screen empty-task-rooms empty-room task-rooms-list tasks-list

APK Link

Link

Credits

About

A React Native application that helps users manage time-boxed tasks in a room-based system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors