Time Tracker Application
Time Tracker Application
Prepared by:
Bardia Hassanzadeh
Client:
EEFA VFX Inc.
Spring 2024
Introduction:
The purpose of this Time Tracker application is to monitor and record the amount of
time spent on each application's various projects to assist in project management
and billing. This application will include a client-side and server-side component to
facilitate tracking, reporting, and project management.
Client-Side Requirements:
1. User Authentication:
● Login System: Users must be able to log in via a secure login system or
through remote access.
● User Accounts: Each user will have a unique account with a username and
password.
2. Project Selection:
● Project List: Users should see a list of available projects.
● Current Project: Users can select and switch between different projects they
are working on.
3. Activity Tracking:
● Active vs Idle Time: The application must be able to distinguish between
active and idle times by monitoring the use of various software (e.g., Maya,
Blender, etc.).
● Automatic Tracking: Automatically track the time when a user is active in a
project-related application.
● Manual Pause/Stop: Users should have the ability to manually pause or stop
the time tracking.
4. Reporting:
● Time Logs: Log the time spent on each project and generate a summary.
● Send Reports to Server: Automatically send project time logs to the server at
regular intervals or upon user request.
1
Server-Side Requirements:
1. Project Management:
● Add Projects: Admins must be able to add new projects to the system.
● Project Details: Store details of each project, including project name and
associated users.
2. User Management:
● User Accounts: Manage user accounts, including adding, updating, and
deleting users.
3. Reporting:
● Receive Reports: Receive time logs from client-side applications.
● Aggregate Data: Aggregate and store time logs by project and user.
● Generate Reports: Provide functionality to generate reports based on project
names and user activity.
Functional Requirements:
1. Client-Side:
● Login Authentication: Implement a secure login mechanism.
● Project Selection: Interface for users to select and switch projects.
● Activity Monitoring: Background service to monitor active applications.
● Manual Controls: Interface for users to pause and stop time tracking.
● Data Synchronization: Mechanism to send time logs to the server.
2. Server-Side:
● Project and User Management: Interfaces and APIs for managing projects and
users.
● Report Generation: Tools for generating detailed reports based on project and
user data.
2
● Data Storage: Secure storage for time logs and user data.
Non-Functional Requirements:
1. Security:
● Data Encryption: Encrypt data in transit and at rest.
● Access Control: Role-based access control for different user types (e.g.,
admin, user).
2. Performance:
● Scalability: The system should handle multiple users and projects without
degradation in performance.
● Efficiency: Efficient tracking and reporting mechanisms to minimize
performance impact on client devices.
3. Usability:
● User Interface: Intuitive and user-friendly interfaces on both client and server
sides.
● Accessibility: Ensure accessibility for users with disabilities.
This PRD outlines the necessary features and functionalities for a Time Tracker
application that aids in tracking and managing time spent on various projects,
thereby improving project management and billing accuracy.
3
Deliverables
Here is a detailed breakdown that includes both the features for the front-end and back-end,
as well as DevOps tasks starting from Month 3. This plan ensures that a minimum viable
product (MVP) is ready by the end of Month 2, and DevOps tasks are incorporated from
Month 3 onwards.
1. User Identification
○ Automatically identify the user based on the Windows login
2. Basic UI Setup
○ Basic layout and navigation using a Python GUI framework (e.g., Tkinter,
PyQt)
Back-End Features
1. Environment Setup
○ Set up PostgreSQL database
○ Initialize server environment (Node.js/Express or similar)
○ Set up version control repository (Git)
2. User Management API
○ Endpoint to receive user information from the Windows login (if necessary for
the backend)
3. Database Schema Design
○ Users table (id, username, windows_username, role, etc.)
Back-End Features
4
○ Endpoint to receive basic activity logs
3. Database Schema Extension
○ Projects table (id, name, description, created_at, updated_at)
○ User-project relationship table (user_id, project_id, role)
○ Activity logs table (id, user_id, project_id, activity_type, start_time, end_time,
duration)
4. Basic Reporting and Data Synchronization
○ Endpoint to send and receive basic time logs
○ Initial implementation for aggregating and storing activity data
By the end of Month 2, the MVP should include the following core features:
1. User Identification
○ Automatically identify the user based on the Windows login
2. Project Selection
○ Display and selection of projects
3. Basic Activity Tracking
○ Track active vs. idle time
○ Manual pause and stop controls
4. Basic UI
○ Basic layout, navigation, and initial user interface setup using a Python GUI
framework
5
Back-End Features
DevOps Setup
Back-End Features
1. Performance Optimization
○ Optimize server-side performance for handling multiple users and projects
DevOps Setup
1. Security Enhancements
○ Ensure secure data transmission and storage
Back-End Features
6
1. Security Enhancements
○ Data encryption and role-based access control
2. Scalability Planning
○ Plan and implement scalability strategies
DevOps Setup
1. Security in CI/CD
○ Integrate security checks in the pipeline
○ Implement vulnerability scanning
1. Usability Enhancements
○ User-friendly interface and accessibility compliance
Back-End Features
DevOps Setup
Back-End Features
DevOps Setup
1. Continuous Improvement
○ Continuously improve CI/CD processes
○ Implement new tools and techniques as needed