COMP 639 Studio Project

COMP639 Studio Project – Semester 1 2024

Individual Assignment

Worth: 25%

Due: Tuesday, 12th March 2024 @ 5:00pm

Late Penalty:

Work not received by due time attracts an immediate penalty of up to 25% of the marks available. No work will be accepted after Thursday, 14th March 2024 5:00pm.

ANIMAL PEST BIOSECURITY GUIDE

Develop a Flask Python Web App functioning as a biosecurity guide, providing information on animal pests present in New Zealand.

IMPORTANT

This is an individual assessment. You must not collaborate or confer with others. You may help others by verbally explaining concepts and making suggestions in general terms, but without directly showing or sharing your own code. You must develop the logical structure, the detail of your code and the database on your own, even if you are working alongside others. Code that is copied or shares a similar logic to others will receive zero marks for both parties.

The use of Artificial Intelligence (AI) tools, such as ChatGPT, to complete this assessment is prohibited. Assessment answers will be analysed for evidence of the use of AI and penalties may be administered.

The University policy on Academic Integrity can be found here.

FUNCTIONAL REQUIREMENTS

The application should include a login system and separate dashboards for three user roles: Pest Controller, Staff and Administrator. Users should be able to login to the system and access their respective dashboards as well as to perform specific actions related to their role. The web app should have a responsive design and be styled to reflect the New Zealand animal pest theme. The focus of this assessment is on providing different level of access for different user roles.

Home Page

 Create an attractive home page which reflects the New Zealand animal pest theme and has links to login and registration.

User Login and Registration

You will need to:

 Create a login function with a single form where all users can enter a username and password (hidden).

 Implement a password hashing and salting techniques to ensure secure storage of user passwords.

 Provide a new user registration functionality that allows new Pest Controller users to register and create an account themselves. In this process they will provide their details and set a unique username and password (at least 8 characters long and have a mix of character types).

User Roles and Access Control

 Define three user roles: Pest Controller, Staff and Administrator.

 Implement a role-base access control system that restricts access to certain pages or features based on the user’s role.

 Pest Controller users should be able to manage their own profile (update personal information and change password).

 Pest Controller Users need to view the guide which will contain a primary image of each animal pest and its common name. Clicking on each primary image will reveal further detailed information such as scientific name, description, distribution, size, droppings, foot prints, impacts, control methods, and further images

 Staff should be able to manage their own profile (update personal information and change password), view Pest Controller profiles and manage the guide (view, add, update and delete details and images – including selecting the primary image).

 Administrators should have full access to the system and the ability to manage their own profile (update personal information and change password), manage Pest Controllers (view, add, update and delete), manage staff (view, add, update and delete) and manage the guide (view, add, update and delete details and images).

Data Requirements

• Pest Controller profile: first name, last name, pest controller id number, address, email, phone number, date joined, status (e.g., active, or inactive).

• Staff/Admin profile: staff number, first name, last name, email, work phone number, hire date, position, department, status.

• Animal Pest Guide (animal id, description, distribution, size, droppings, foot prints, impacts, control methods, and images (including which image is the primary image).

• Content can be sourced from the websites below as well as your own research:

o https://web.archive.org/web/20220122172540/https://www.pestdetective.org.nz/culprits/

o https://www.mpi.govt.nz/biosecurity/exotic-pests-and-diseases-in-new-zealand/long-term-biosecurity-management-programmes/controlling-pest-wallabies-in-nz/

• The database should contain at least 5 Pest Controllers users, 3 Staff, one Administrator, and 20 animal pests present in NZ.

• Include a sources page within your webapp with references of your content material.

• Design and implement a database schema and populate it with data to meet these requirements. In your design ensure you have considered data security, especially for usernames, passwords and biosecurity data.

Dashboard Pages

 Create separate dashboard pages for each user role.

 Design and implement a visually appealing user interface for each dashboard that reflects the New Zealand animal pest theme.

 Customise the functionality and features available on each dashboard based on the associated user role.

Deliverables

 A fully functional Flask Python web application for a New Zealand animal pest biosecurity guide that has an animal pest theme, with a login system and a role-based dashboards.

PROJECT REQUIREMENTS

You must

• Use only Python & Flask, Bootstrap CSS, JavaScript, MySQL. Do not use SQLAlchemy or ReactJS (or other similar technologies) in your solution.

• Create a NEW private GitHub repository called Biosecurity that contains:

o All Python, HTML, images and any other required files for the web app.

o A requirements.txt file showing the required pip packages.

o MySQL scripts for creating and populating the database.

o README file with comments.

o Your repository must have a .gitignore file and therefore not have a copy of your virtual environment.

o Add lincolnmac ([email protected]) as a collaborator to your new Biosecurity repository.

• Host your system (including database) using pythonAnywhere.

o Add lincolnmac as your “teacher” via the site configuration.

• Submit via the link on LEARN COMP639 Page the COMP639 Web App Hand-In Sheet. This includes details of:

o Your PythonAnywhere URL.

o Your GitHub repository URL.

o Usernames and Passwords for different users for testing purposes.

o Confirmation that certain files have been saved in you GitHub repository.

ASSIGNMENT HINTS

 Create your GitHub repository first and create all your required code and files in your local folder. We will be checking to see that you have multiple commit and push changes from your local computer to your GitHub repository.

 Spend some time sketching the structure of your application before you start developing. Think about which features could share the same (or nearly the same) templates. Remember that you can nest templates (templates within templates).

 Code for password hashing and session control has been provided on the Learn Page under additional learning materials.

MARKING CRITERIA

Criteria                                                                              Marks

Overall Structure and Organisation (Source Code)                    10

Consistent and visually appealing design across all pages          10

Database and Data Management                                            10

Add, update, and delete Biosecurity Guide                                5

Add, update, and delete users                                                10

Register new users                                                                 5

Change password                                                                   5

Biosecurity Guide List                                                            10

Login and logout                                                                  10

Dashboard specific based on user role                                     5

Error Handling and Validation                                                 10

Documentation and Readability                                              10

Total Marks                                                                          100

Excellent web app: All functions work as expected. The comments effectively describe code functionality. Code is well-organised and easy to follow, with thorough validation and error handling. Database schema is optimised, ensuring data integrity and security. User interface is intuitive and responsive across devices. Structure adheres to coding conventions.

Good web app: Some functions do not perform as expected. Comments clarify key parts of the code. Code readability is satisfactory. Validation, error handling, and user feedback are mostly implemented, with some gaps. Database schema design and implementation are acceptable, with room for improvement. User interface is generally consistent and responsive. Structure may have unnecessary repetition. Templates, modules, and components are used adequately, following coding conventions.

Fair web app: Some functions incomplete or produce errors. Limited comments, likely only in the header. Code is divided into appropriate units but lacks coherence and reusability, with unnecessary repetition. Some issues with templates, modules, components, and adherence to coding conventions. Readable for someone familiar with the task. UI lacks appeal, database design has flaws, limited validation and error handling.

Poor web app: Many functions are missing or cause errors. Code lacks comments and organisation, making it challenging to read. Validation, error handling, and user feedback are insufficiently implemented. Database design and operations have errors, neglecting data integrity and security. User interface usability and design suffer from multiple issues, with poor responsiveness. Code structure is flawed, lacking decomposition. Templates, modules, and components are misused, violating coding conventions.

发表评论

电子邮件地址不会被公开。 必填项已用*标注