-
Notifications
You must be signed in to change notification settings - Fork 0
User Dashboard
- Stores user punch in and out time.
- Total work time.
- Allocate new task and track the timings.
- Analyzed view of task and project timings.
- User login authentication.
Application can be used in various companies where user works under some projects.
Required inputs:
- Email address
- Password
Login authentication performed using Rest API.
Future scope: Initialize punch-in/out based on user presence on a WiFi zone (working location). Wifi MAC address should match with office Wifi MAC address (Set by admin).
Two conditions in initial load:
1. Opening first time on current date:
- Check previous working day's punch_out_time. If it is null ask user to update it.
- Update Punch in time
- Start punch in timer
- Start any task from the schedule or add new task
- Update start time of task
- Start task timer
2. Date already exist
- Fetch previous timings of task and work time
- Start task and punch in/out timer
- Update database
Database will be updated in these five situations:
- While opening application
- Application moves to background
- Application moves to foreground
- Transition between application pages
- Application terminated
Required inputs:
- Task name
- Task Description (Optional)
- Project name
Actions:
- Save task: Stores to the database all above fields except start time
- Start task: Stores to the database with start time
1. Day Activity View:
- Displays all the tasks with respect to date
- Representation in the form of single horizontal bar graph
- X- axis label: from 8AM to 8PM
- X- axis value: single horizontal bar graph represents user task timings
2. Week Activities View:
- Displays all the tasks with respect to week
- Representation in the form of vertical bar graph
- X- axis label: from Monday to Sunday
- Y- axis values: vertical bar graph represents user work timings
- By clicking bar, page should move to the day activity view
3. Month Activities View:
- Displays all the tasks with respect to month
- Representation in the form of calendar
- Each day will contains circle view which will describe total work time on that date
- By clicking day in the calendar, page should move to the day activity view
- Filter tasks based on projects
- Sort tasks based on task, task duration and projects
Entities
1. Projects (Table Name: Projects)
- project_id - Int
- project_name - String
- project_icon_url - URL
- total_time - Int
- start_date - Date
- project_color : STRING (hexa decimal number)
- percentage_finished : Int
2. Punch In/Out Time (Table Name: Punch_in_out_time)
- punch_in_time - Date
- punch_out_time - Date
3. Tasks (Table Name: Tasks)
- local_task_id - Int (Auto increment)
- server_task_id - Int
- project_id - Int (Refers to project -> projectId)
- task_name - String
- task_description - String
- start_time - Date
- end_time - Date
- is_work_in_progress - Bool
4. Tasks Time (Table Name: Tasks_time)
- time_id - Int (Auto Increment)
- taskId - Int (Refers to tasks -> taskId)
- date - Date
- startTime - Int (seconds)
- endTime - Int (seconds)
Tasks timings are stored in seconds for example, 12:00:00 AM as 0, 12:01:00 AM as 60, 08:00:00 AM as 28800, etc.
Integer storage makes easy to calculate work and task timing with respect to the date.
Project table updated from admin panel and remaining 3 tables updated in client application.
Entity data handled by 4 different classes:
- ProjectDBController for Projects
- UserTimesDBController for PunchInOutTime
- TasksDBController for Task
- TaskDBController for BreakInformation
These 4 classes provides functionality to store, retrieve, update and delete the database.
![]()
![]()
![]()