davep33l / checklist-central

0 stars 0 forks source link

Checklist Central

Overview

Home Page Image

Within many businesses there is a requirement to have repeatable checks throughout the day to ensure the business runs smoothly and important tasks are completed effectively and within a timely mannar. The real world problem is that some of these checklist are housed in different media types. These can be excel spreadsheets, word documents or even printed out pieces of paper. This scenario poses a few problems; it can be time consuming to create these checklists each time they are needed, they can consume physical resources like paper and printer ink, they can be difficult to store and retrive information for audit purposes in an efficient way if they are stored on paper (and even if they are stored digitally as spreadsheets, as they could become lost, deleted, misused, overriden etc). Also some of these checks can have associated procedures related to them that may be housed in a separate place and may require a user to locate the relevant procedures to effectively complete the task.

Checklist Manager is a solution to this problem, it enables businesses to define digital checklists within a secure application. Providing features such as, Checklist and Task template definition, initialisation of a checklist template as an instance and the associated task templates as an instance at the click of a button, dual authorisation checks, custom profile for access to high level departments by restricting access to other departments, easy to use interface to add all the required information required on a checklist/task.

Agile Methodology

This project was planned using agile methodology. User stories were created and added to a board using the Github projects tool. The project can be found here.

The project was split into 3 main sprints.

User Experience (UX)

Strategy

Business Goals: To digitalise the manual nature of checklists and tasks to be generated digitally on a schedule within a business setting.

User/Business Value: Provides value to the users by having repeatable tasks stored digitally for re-use in a constistent and secure way. Allowing for easy retrival, user creation or new checklists and tasks, all with a clean UI and user experience.

Research: From personal experience (and experience of 100's of colleagues I have worked with and asked opinions of) in working within a publicly listed company for 20 years, the need for reproducable and auditable checklists and tasks that have been completed is high on the list of priorities in running an efficient operations team. Lots of time and effort is spent working with auditors, team members, management and the like, in ensuring procedures and tasks required to complete those proceudres are are documented in a robust and maintainable way.

Hierarchical Structure of an organisation

Below is the structure in which many organisations will manage their teams and workflows, with the below showing the placement of the checklists and tasks within separate teams and departments within the organisation. Building an application that fits this model will likely suit many different organisations.

Organisation Structure

Wireframes

Below are the wireframes created as part of the design process. The application is kept sleek and minimal as the main priorty of the application is task control and not to disract the user.

Wireframe

Surface

A bootstrap theme called Pulse was used, which was obtained from here. So that the development would be quick and easy, as well as maintain a consistent style across the application.

Database Desgin

UML Diagram

Here is the design of the database. Showing the connection between the department and the teams and the underlying templates. With reference to the templates from the instances of the checklists and tasks. Also a profile which links back to the user model in order to append additional information.

Database Design

Tools / Technology Used

Wireframing

Tool Type Purpose
Balsamiq Desktop Software Used for creating wireframes for the project.

Diagramming

Tool Type Purpose
draw.io Online Software Used to create flow charts, diagrams, and scenario diagrams for the project.

Development

Tool Type Purpose
VS Code Desktop Software The application used to develop the website. Various extensions such as Markdown Preview Github Styling, Git Graph were utilized to assist with the development process.
python Desktop Software Requirement for development.
Windows Subsystem for Linux Desktop Software To enable the development environment match as closely as possible the deployment environment as both are Linux based. Changed mid-project from Windows to WSL in order to natively trial some python libraries and OS-specific commands
Heroku CLI Desktop Software Used to provide a local deployment for easier testing (using heroku local command).
PG4 Admin Desktop Software Used to access the database and see the tables created for validation during development

Version Control

Tool Type Purpose
Git Desktop Software Used as version control from the terminal inside VS Code and was pushed to a remote repository hosted by github.com.
Github Online Software Used to store the code used for the website and to host the website using GitHub Pages.

Backend Framework

Tool Type Purpose
Django (4.2.13) Backend Framework Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design.

Deployment

Tool Type Purpose
Heroku Online Software Used to deploy the project.

Python Packages

Tool Type Purpose
venv Python Package/Library Used to create a virtual environment for package management.
Gunicorn (20.1) Backend Webserver Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX.
dj_database_url (2.1.0) Python Package/Library This simple Django utility allows you to use a database url as an environment variable within a django application

Miscellaneous

Tool Type Purpose
Am I Responsive? Online Software Used to create the responsive image for the top of the readme.
CI Python pep8 Linter Online Software Used to lint my python code according to pep8 guidelines.
HTML Validator Online Software Used to validate my html pages
CSS Validator (Jigsaw) Online Software Used to validate my html pages

Features

Future Features

Manual Testing

HTML Validation

Test # Page Outcome Evidence
1 checklist_instance_confirm_delete.html pass checklist_instance_confirm_delete
2 checklist_template_confirm_delete.html pass checklist_template_confirm_delete
3 department_confirm_delete.html pass department_confirm_delete
4 task_template_confirm_delete.html pass task_template_confirm_delete
5 team_confirm_delete.html pass team_confirm_delete
6 user_confirm_delete.html pass user_confirm_delete
7 checklist_instance_list.html pass checklist_instance_list
8 checklist_template_list.html pass checklist_template_list
9 department_list.html pass department_list
10 task_instance_list.html pass task_instance_list
11 task_template_list.html pass task_template_list
12 team_list.html pass team_list
13 user_list.html pass user_list
14 checklist_template_edit.html pass checklist_template_edit
15 department_edit.html pass department_edit
16 task_instance_edit.html pass task_instance_edit
17 task_template_edit.html pass task_template_edit
18 team_edit.html pass team_edit
19 user_edit.html pass user_edit
20 index.html pass index
21 initialise_checklists.html pass initialise_checklists

CSS Validation

Test # Page Outcome Evidence
1 style.css pass style

Python PEP8 Validation

Test # Page Outcome Evidence
1 admin.py pass admin
2 apps.py pass alt text
3 forms.py pass forms
4 models.py pass models
5 urls.py pass urls
6 views.py pass views

Feature / functionality testing

Test # Feature/functionality Outcome Evidence
1 That an admin user can see the admin dropdown pass feature_test_1
2 That an standard user cannot see the admin dropdown pass feature_test_2
3 That there is a notifcation for a user being logged in pass feature_test_2
4 That a standard user can only see the departments they are assigned to pass feature_test_4 feature_test_4_1
5 That an admin user can see all the tasks and see all the navigation and the status of the task pass feature_test_1
6 That you cannot complete a task that is already complete pass feature_test_6
7 That the same user cannot verify a task pass feature_test_7
8 That two different users can process and verify a task pass feature_test_8
9 Full features of adding a department, adding a team, adding a checklist template, adding a task template and initialising a template pass feature_test_9
10 Admin user can add a department to a user once they have an account on the system. No tasks are shown for that user until they have been assigned a department pass feature_test_10

Deployment

The code for this project is housed on Github, the database is managed by the CodeInstitute and the projected was deployed to Heroku.

The project can be cloned or forked from the this link.

Pre-requisits for deployment

References

The django documentation and the LMS provided me with the tools and information I needed to complete this project.