0% found this document useful (0 votes)
16 views27 pages

Python File Tracking System Project

The document outlines a project report on a 'File Tracking System' developed using Python, aimed at modernizing the file approval process in government engineering departments. It features a secure, role-based login system and a structured three-tier approval workflow to enhance transparency, accountability, and efficiency while reducing paperwork and administrative delays. The system architecture includes a frontend built with HTML/CSS, a backend using Django, and a SQLite database for storage, with various user roles defined for effective task management.

Uploaded by

denimworld12
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views27 pages

Python File Tracking System Project

The document outlines a project report on a 'File Tracking System' developed using Python, aimed at modernizing the file approval process in government engineering departments. It features a secure, role-based login system and a structured three-tier approval workflow to enhance transparency, accountability, and efficiency while reducing paperwork and administrative delays. The system architecture includes a frontend built with HTML/CSS, a backend using Django, and a SQLite database for storage, with various user roles defined for effective task management.

Uploaded by

denimworld12
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Department of Computer Engineering

Mini Project
Subject: Skill base Lab course: Python Programming
SE SEM-IV

A PROJECT REPORT ON
“File Tracking System”

by

Name Roll No.


Gayatri Gupta A429
Nikhil Gupta A430
Umed Indulkar A437

under the guidance of


Prof. Deepak Gaikar
Abstract

The File Tracking System is a Python-based application designed to streamline and digitize the file approval

process in government engineering departments. It introduces a secure, role-based login system to ensure

proper access control and task delegation. The approval workflow follows a structured three-tier hierarchy

where files are initially reviewed by Assistant Engineers, then forwarded to Deputy Engineers, and finally

approved by Executive Engineers. This systematic process maintains the official chain of command and

promotes accountability at every level. The system offers several key benefits, including real-time tracking

of file status, a paperless and faster workflow, secure document storage, and transparent decision-making.

By reducing manual errors and administrative workload, the File Tracking System modernizes traditional

file management and enhances operational efficiency across departments.


Problem Definition:

Traditional file management systems in government engineering departments are typically paper-based,

leading to slow processing, frequent misplacement of documents, and significant delays. The lack of

transparency in tracking file progress and the reliance on manual approvals contribute to administrative

inefficiencies. Moreover, without a centralized system, it becomes difficult to monitor who accessed or

approved a file, making record-keeping and accountability a challenge. To address these issues, this project

proposes the development of a digital File Tracking System using Python. The system offers secure, role-

based access for Admins and Employees and supports real-time file tracking through a structured three-

level approval hierarchy involving Assistant Engineers, Deputy Engineers, and Executive Engineers. This

digital workflow not only enhances transparency and accountability but also significantly reduces

paperwork, administrative overhead, and processing delays. With features like centralized monitoring,

automated approval logs, and secure document handling, the system aims to modernize traditional file

management, making the entire process faster, more reliable, and easier to audit.
Design/Methodology:

The File Tracking System is developed using a structured and modular approach, ensuring smooth
functionality, scalability, and ease of maintenance. The system is designed with a three-tier
architecture: Frontend (UI), Backend (Logic and APIs), and Database (Storage and Retrieval). It
includes distinct modules for login, file processing, and approval workflows.

1. System Architecture Design:


• Frontend:
Developed using HTML, CSS, and JavaScript (optionally with Bootstrap). Provides user interfaces
for Admin and Employee logins, dashboards, file submission, and tracking.
• Backend:
Implemented using Python with Django. It handles request processing, routing, session
management, and application logic.
• Database:
SQLite is used for storing user details, file records, status logs, and approval history.

2. User Roles and Permissions:


• Admin:
o Manage employee accounts
o Upload and assign files
o Monitor file status and generate reports
• Employee (Three Types):
o Assistant Engineer: Initial reviewer of files
o Deputy Engineer: Mid-level approval
o Executive Engineer: Final approval authority
Each role has restricted access based on responsibilities, enforced through role-based access control.

3. Workflow Methodology:
1. Login Module: Authenticates users and redirects based on their role.
2. Dashboard Module: Displays relevant information such as assigned files, status, and pending
tasks.
3. File Upload & Assignment (Admin): Admin uploads files and assigns them to the first-level
reviewer.
4. Approval Chain:
▪ Files are reviewed by Assistant Engineer.
▪ Upon approval, forwarded to Deputy Engineer.
▪ Then, passed to Executive Engineer for final approval.
▪ At each step, status and timestamps are recorded.
5. Tracking & Logs: Every file’s status, reviewer, and approval time are logged and available in
real-time.

4. Development Methodology:
The system is developed using the Incremental Model:
• Phase 1: Set up basic login and role-based redirection.
• Phase 2: Implement file upload and assignment features.
• Phase 3: Add multi-level approval process.
• Phase 4: Integrate tracking, logs, and admin dashboard.
• Phase 5: Final testing, deployment, and user feedback loop.

5. Security Features:
• Password hashing for login credentials
• Session management for secure access
• Input validation to prevent SQL injection and form misuse
Figure:
Hardware Requirements:

• Hardware Specification: - Processor Intel Pentium V or higher


• Clock Speed: - 1.7 GHz or more
• System Bus: - 64 bits
• RAM: 4 GB
• HDD: 512 GB
• Monitor: LCD Monitor
• Keyboard: Standard keyboard
• Mouse: Compatible mouse

Software Requirements:

• Operating System: Windows 10/11, macOS, or any Linux distribution (Ubuntu preferred for
production)

• Python: Version 3.11.11

• Python Dependencies: Installed via [Link], typically includes: Django, gunicorn (for
deployment), whitenoise (for static files)

• Database: SQLite3 (default, comes with Django)

• Web Server (for Deployment): Gunicorn (WSGI HTTP Server), Render (for hosting), GitHub
(code repository & CI/CD)

• Frontend Libraries: HTML, CSS, JavaScript, Bootstrap (for responsive UI)

• Admin Panel: Comes with Django, with built-in password hashing + salting

• Browser: Any modern browser: Chrome, Firefox, Edge


Source Code:

# [Link]
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
[Link]('DJANGO_SETTINGS_MODULE', 'file_tracking.settings')
try:
from [Link] import execute_from_command_line
except ImportError as exc:
raise ImportError("Couldn't import Django. Are you sure it's installed?") from exc
execute_from_command_line([Link])
if __name__ == '__main__':
main()

# [Link]
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().[Link]
SECRET_KEY = [Link]('SECRET_KEY', 'dev-secret-key')
DEBUG = True
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'app',
]
MIDDLEWARE = [
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
]
ROOT_URLCONF = 'file_tracking.urls'
TEMPLATES = [
{
'BACKEND': '[Link]',
'DIRS': [[Link](BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'[Link].context_processors.debug',
'[Link].context_processors.request',
'[Link].context_processors.auth',
'[Link].context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'file_tracking.[Link]'
DATABASES = {
'default': {
'ENGINE': '[Link].sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
AUTH_PASSWORD_VALIDATORS = [
{'NAME': '[Link].password_validation.UserAttributeSimilarityValidator'},
{'NAME': '[Link].password_validation.MinimumLengthValidator'},
{'NAME': '[Link].password_validation.CommonPasswordValidator'},
{'NAME': '[Link].password_validation.NumericPasswordValidator'},
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = [[Link](BASE_DIR, 'static')]
STATIC_ROOT = [Link](BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = '[Link]'
MEDIA_URL = '/media/'
MEDIA_ROOT = [Link](BASE_DIR, 'media')
DEFAULT_AUTO_FIELD = '[Link]'
LOGIN_URL = 'login'

# [Link]
from [Link] import path
from . import views
urlpatterns = [
path('', [Link], name='home'),
path('about/', [Link], name='about'),
path('contact/', [Link], name='contact'),
path('login/', views.user_login, name='login'),
path('logout/', views.user_logout, name='logout'),
path('admin/dashboard/', views.admin_dashboard, name='admin_dashboard'),
path('admin/add-employee/', views.add_employee, name='add_employee'),
path('admin/view-employees/', views.view_employees, name='view_employees'),
path('employee/dashboard/', views.employee_dashboard, name='employee_dashboard'),
path('employee/upload-file/', views.upload_file, name='upload_file'),
path('employee/view-requests/', views.view_requests, name='view_requests'),
path('employee/view-status/', views.view_status, name='view_status'),
path('employee/change-password/', views.change_password, name='change_password'),
path('employee/file/<int:file_id>/review/', views.approve_reject_file, name='approve_reject_file'),
]

# [Link]
from [Link] import admin
from .models import EmployeeProfile, File, ApprovalHistory
@[Link](EmployeeProfile)
class EmployeeProfileAdmin([Link]):
list_display = ('user', 'designation', 'department', 'gender', 'mobile')
list_filter = ('designation', 'department', 'gender')
search_fields = ('user__username', 'user__email', 'user__first_name', 'user__last_name', 'department')
@[Link](File)
class FileAdmin([Link]):
list_display = ('title', 'uploaded_by', 'status', 'date_uploaded')
list_filter = ('status',)
search_fields = ('title', 'description', 'uploaded_by__username')
date_hierarchy = 'date_uploaded'
@[Link](ApprovalHistory)
class ApprovalHistoryAdmin([Link]):
list_display = ('file', 'approved_by', 'status', 'approved_at')
list_filter = ('status',)
search_fields = ('file__title', 'approved_by__username')
date_hierarchy = 'approved_at'

#[Link]
from [Link] import AppConfig
class AppConfig(AppConfig):
default_auto_field = '[Link]'
name = 'app'
#[Link]
from django import forms
from [Link] import User
from [Link] import UserCreationForm, PasswordChangeForm
from .models import EmployeeProfile, File

class EmployeeCreationForm([Link]):
name = [Link](max_length=100)
email = [Link]()
password = [Link](widget=[Link]())

class Meta:
model = EmployeeProfile
fields = ['gender', 'dob', 'designation', 'department', 'mobile']
widgets = {
'dob': [Link](attrs={'type': 'date'}),
}

def save(self, commit=True):


user_data = {
'username': self.cleaned_data['email'],
'email': self.cleaned_data['email'],
'first_name': self.cleaned_data['name'].split()[0],
'last_name': ' '.join(self.cleaned_data['name'].split()[1:]) if len(self.cleaned_data['name'].split()) > 1
else '',
}
user = [Link].create_user(**user_data, password=self.cleaned_data['password']
profile = super().save(commit=False)
[Link] = user
if commit:
[Link]()
return profile
class FileUploadForm([Link]):
class Meta:
model = File
fields = ['title', 'description', 'file_upload']
widgets = {
'description': [Link](attrs={'rows': 4}),
)
def __init__(self, *args, **kwargs):
[Link] = [Link]('user', None)
super().__init__(*args, **kwargs)
def clean_file_upload(self):
file = self.cleaned_data.get('file_upload')
if file:
file_extension = [Link]('.')[-1].lower()
if file_extension not in ['pdf', 'doc', 'docx']:
raise [Link]("Only PDF or DOC files are allowed.")
return file
def save(self, commit=True):
instance = super().save(commit=False)
instance.uploaded_by = [Link]
# Find an assistant engineer to review
from [Link] import Q
from .models import EmployeeProfile
assistant = [Link](
profile__designation='assistant',
profile__department=[Link]
).first()
instance.current_reviewer = assistant
[Link] = 'pending_assistant'
if commit:
[Link]()
return instance
class CustomPasswordChangeForm(PasswordChangeForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
[Link]['old_password'].[Link]({'class': 'form-control'})
[Link]['new_password1'].[Link]({'class': 'form-control'})
[Link]['new_password2'].[Link]({'class': 'form-control'})

Hosted Website: [Link]

All Profiles:
Gayatri 123456gg (assistant engineer)
Nikhil 123456ng (Deputy Engineer)
Umed 123456ui (Executive Engineer
Paul 123456pa(assistant engineer)
Anakin 123456dv(Deputy Engineer)
Eren 123456ey (Executive Engineer
#[Link]
from [Link] import models
from [Link] import User
from [Link] import timezone
class EmployeeProfile([Link]):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
('O', 'Other'),
)
DESIGNATION_CHOICES = (
('assistant', 'Assistant Engineer'),
('deputy', 'Deputy Engineer'),
('executive', 'Executive Engineer'),
)
user = [Link](User, on_delete=[Link], related_name='profile')
gender = [Link](max_length=1, choices=GENDER_CHOICES)
dob = [Link]()
designation = [Link](max_length=20, choices=DESIGNATION_CHOICES)
department = [Link](max_length=100)
mobile = [Link](max_length=15)
def __str__(self):
return f"{[Link].get_full_name()} - {self.get_designation_display()}"
class File([Link]):
STATUS_CHOICES = (
('pending_assistant', 'Pending Approval (Assistant)'),
('pending_deputy', 'Pending Approval (Deputy)'),
('pending_executive', 'Pending Approval (Executive)'),
('approved', 'Approved'),
('rejected', 'Rejected'),
)
title = [Link](max_length=200)
description = [Link]()
file_upload = [Link](upload_to='files/')
uploaded_by = [Link](User, on_delete=[Link],
related_name='uploaded_files')
status = [Link](max_length=20, choices=STATUS_CHOICES, default='pending_assistant')
current_reviewer = [Link](User, on_delete=models.SET_NULL, null=True, blank=True,
related_name='files_to_review')
date_uploaded = [Link](default=[Link])
def __str__(self):
return [Link]
class ApprovalHistory([Link]):
file = [Link](File, on_delete=[Link], related_name='approvals')
approved_by = [Link](User, on_delete=[Link])
approved_at = [Link](default=[Link])
status = [Link](max_length=20, choices=(('approved', 'Approved'), ('rejected', 'Rejected')))
comments = [Link](blank=True, null=True)
def __str__(self):
return f"{[Link]} - {[Link]} by {self.approved_by.get_full_name()}"

#[Link]
from [Link] import render, redirect, get_object_or_404
from [Link] import login_required, user_passes_test
from [Link] import authenticate, login, logout
from [Link] import messages
from [Link] import AuthenticationForm
from [Link] import User
from [Link] import Q
from .models import EmployeeProfile, File, ApprovalHistory
from .forms import EmployeeCreationForm, FileUploadForm, CustomPasswordChangeForm

def is_admin(user):
return user.is_superuser

def home(request):
return render(request, '[Link]')

def about(request):
return render(request, '[Link]')

def contact(request):
return render(request, '[Link]')

def user_login(request):
if [Link] == 'POST':
form = AuthenticationForm(request, data=[Link])
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
if user.is_superuser:
return redirect('admin_dashboard')
else:
return redirect('employee_dashboard')
else:
[Link](request, "Invalid username or password.")
else:
[Link](request, "Invalid username or password.")
else:
form = AuthenticationForm()
return render(request, '[Link]', {'form': form})

def user_logout(request):
logout(request)
return redirect('home')

# Admin views
@login_required
@user_passes_test(is_admin)
def admin_dashboard(request):
return render(request, 'admin/admin_home.html')

@login_required
@user_passes_test(is_admin)
def add_employee(request):
if [Link] == 'POST':
form = EmployeeCreationForm([Link])
if form.is_valid():
[Link]()
[Link](request, "Employee added successfully!")
return redirect('view_employees')
else:
form = EmployeeCreationForm()
return render(request, 'admin/add_employee.html', {'form': form})

@login_required
@user_passes_test(is_admin)
def view_employees(request):
employees = [Link]()
return render(request, 'admin/view_employees.html', {'employees': employees})

# Employee views
@login_required
def employee_dashboard(request):
if [Link].is_superuser:
return redirect('admin_dashboard')
return render(request, 'employee/[Link]')

@login_required
def upload_file(request):
if [Link] == 'POST':
form = FileUploadForm([Link], [Link], user=[Link])
if form.is_valid():
[Link]()
[Link](request, "File uploaded successfully and sent for approval.")
return redirect('view_status')
else:
form = FileUploadForm()
return render(request, 'employee/upload_file.html', {'form': form})

@login_required
def view_requests(request):
user_profile = [Link]

# Get files that this user needs to review based on designation


if user_profile.designation == 'assistant':
files = [Link](status='pending_assistant', current_reviewer=[Link])
elif user_profile.designation == 'deputy':
files = [Link](status='pending_deputy', current_reviewer=[Link])
elif user_profile.designation == 'executive':
files = [Link](status='pending_executive', current_reviewer=[Link])
else:
files = [Link]()

return render(request, 'employee/view_requests.html', {'files': files})

@login_required
def view_status(request):
files = [Link](uploaded_by=[Link])
return render(request, 'employee/view_status.html', {'files': files})

@login_required
def change_password(request):
if [Link] == 'POST':
form = CustomPasswordChangeForm([Link], [Link])
if form.is_valid():
[Link]()
[Link](request, "Your password was successfully updated!")
return redirect('employee_dashboard')
else:
[Link](request, "Please correct the error below.")
else:
form = CustomPasswordChangeForm([Link])
return render(request, 'employee/change_password.html', {'form': form})

@login_required
def approve_reject_file(request, file_id):
file = get_object_or_404(File, id=file_id)

if [Link] == 'POST':
action = [Link]('action')
comments = [Link]('comments', '')

if action not in ['approve', 'reject']:


[Link](request, "Invalid action.")
return redirect('view_requests')

# Record the approval/rejection


[Link](
file=file,
approved_by=[Link],
status='approved' if action == 'approve' else 'rejected',
comments=comments
)

if action == 'reject':
[Link] = 'rejected'
file.current_reviewer = None
[Link]()
[Link](request, "File has been rejected.")
return redirect('view_requests')

# If approved, move to next level


user_profile = [Link]

if user_profile.designation == 'assistant':
# Find a deputy engineer to review
deputy = [Link](
profile__designation='deputy',
profile__department=user_profile.department
).first()
if deputy:
[Link] = 'pending_deputy'
file.current_reviewer = deputy
else:
[Link](request, "No deputy engineer found to review this file.")
return redirect('view_requests')

elif user_profile.designation == 'deputy':


# Find an executive engineer to review
executive = [Link](
profile__designation='executive',
profile__department=user_profile.department
).first()

if executive:
[Link] = 'pending_executive'
file.current_reviewer = executive
else:
[Link](request, "No executive engineer found to review this file.")
return redirect('view_requests')

elif user_profile.designation == 'executive':


# Final approval
[Link] = 'approved'
file.current_reviewer = None

[Link]()
[Link](request, "File has been approved and moved to the next stage.")
return redirect('view_requests')

return render(request, 'employee/approve_reject.html', {'file': file})


Snapshot of Output (Result):

Fig. Home Page

Fig. Login Page


Fig. Help Page

Fig. database page 1


Fig. database page 2

Fig. database page 3


Fig. Dashboard page

Fig. Admin Dashboard


Fig. View Request Page

Fig. Review File Page


Fig. Approve Page
Conclusion:

The File Tracking System is a significant step forward in transforming traditional, paper-based workflows
into an efficient and transparent digital process within government engineering departments. Developed
using Python and Django, the system addresses major challenges faced by public sector offices, such as
delays, lack of transparency, misplacement of documents, and high administrative overhead.

Through its role-based authentication system, the application ensures that users (Admins and Engineers)
have access only to the features they need, safeguarding sensitive information and preventing
unauthorized file handling. By introducing a structured three-level approval hierarchy—Assistant
Engineer, Deputy Engineer, and Executive Engineer—the system enforces proper delegation and
accountability, replicating the real-world chain of command digitally.

The system’s modular architecture, built on the Django framework, supports clear separation of
concerns—handling user sessions, file uploads, role-based dashboards, and approval logs seamlessly. The
use of SQLite as the backend database ensures fast local development, while integration with deployment
platforms like Render and GitHub allows the system to be hosted and maintained reliably in production
environments. Furthermore, the inclusion of real-time file tracking and logging mechanisms adds an extra
layer of transparency and auditability.

Security is a cornerstone of the system, with features like password hashing, session validation, and input
sanitization implemented to protect data integrity. Additionally, the responsive frontend using HTML,
CSS, and Bootstrap makes the platform accessible across devices, enhancing user experience.

In conclusion, the File Tracking System not only reduces the reliance on physical paperwork but also
fosters a culture of digital efficiency, traceability, and transparency. It minimizes delays and errors while
providing a scalable solution for government departments aiming to modernize their internal workflows.
With future enhancements such as notifications, analytics, and document versioning, this system can
evolve into a comprehensive document lifecycle management platform suitable for any public sector
organization.
References:

• Django Documentation: [Link]


• Bootstrap Documentation: [Link]
• SQLite Documentation: [Link]
• Python Official Site – [Link]

Common questions

Powered by AI

The File Tracking System supports transparency and accountability through a structured three-level approval hierarchy and real-time tracking/logging features. Each file’s status, reviewers, and approval times are recorded and visible in real-time. The hierarchy involving Assistant Engineers, Deputy Engineers, and Executive Engineers ensures that files move through proper channels, which replicates the official chain of command. This systematic approach allows for clear accountability and a transparent record of actions taken on each file .

The File Tracking System implements several security measures to ensure data integrity. These include password hashing to protect login credentials, session management to secure access, and input validation to prevent security vulnerabilities like SQL injection. Additionally, Django's built-in middleware features contribute to securing user sessions and data handling .

The File Tracking System is developed using a structured, modular approach combined with the Incremental Model of development. It uses a three-tier architecture with frontend, backend, and database components. The system is implemented in phases, starting with basic login features and progressing through file upload, a multi-level approval process, and ending with tracking and logging capabilities. These methodologies ensure scalability, ease of maintenance, and enhance the system's overall effectiveness and reliability .

The three-tier hierarchy in the File Tracking System's approval workflow is crucial as it replicates the real-world chain of command, ensuring proper delegation and accountability. Files undergo a series of reviews starting from Assistant Engineers, moving to Deputy Engineers, and finally receiving approval from Executive Engineers. This process prevents bypassing of necessary authority levels, maintains accountability at each stage, and ensures that the decision-making process is both thorough and transparent .

The File Tracking System enhances operational efficiency by digitizing workflows in public sector departments, reducing reliance on paper, and automating the file approval process. Real-time file tracking, centralized monitoring, and role-based secure access minimize administrative overhead, processing delays, and human errors, streamlining the entire process .

The File Tracking System uses the Incremental Model by developing and implementing the system in phases. Initially, basic login and redirection features were set up, followed by file upload capabilities, a multi-level approval process, and finally, tracking and admin dashboard features. This model allows developers to test each component incrementally, making it easier to pinpoint and resolve issues, and ensures adaptability and scalability as new features are needed .

The File Tracking System has significant potential for future enhancements, such as integrating notifications for immediate file status updates and alerts for pending tasks, adding analytics for performance and process optimization, and implementing version control for document lifecycle management. These enhancements could make the system even more efficient, providing deeper insights into operations and further reducing response times .

The File Tracking System offers several main benefits, including a secure, role-based login system for proper access control, a reduced reliance on physical paperwork through a digital workflow, real-time file tracking, and the maintenance of a structured three-tier approval hierarchy to ensure accountability. The system enhances operational efficiency, reduces manual errors, and provides transparent decision-making processes .

Role-based access control in the File Tracking System restricts access to features based on user roles, thus ensuring security and efficiency. Admins manage employee accounts, upload and assign files, whereas different employee roles (Assistant Engineers, Deputy Engineers, Executive Engineers) have increasing levels of responsibility with access limited to their specific tasks, like initial review, mid-level approval, and final approval. This structured permission system prevents unauthorized file handling and promotes accountability .

The system architecture of the File Tracking System is designed for easy maintenance and scalability through its three-tier structure. The architecture separates concerns into frontend, backend, and database components, each fulfilling specific roles. This modular approach allows components to be updated or replaced independently without affecting the entire system, facilitating scalability and simplifying maintenance tasks .

You might also like