COMP639 Studio Project – Semester 1 2024

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.

WEED BIOSECURITY GUIDE

Develop a Flask Python Web App functioning as a biosecurity guide, providing information on weeds that are 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: Gardeners, 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 a garden weed 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 a garden weed 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 Gardener 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: Gardener, Staff and Administrator.

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

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

 Gardener users need to view the guide which will contain a primary image of each weed, its common name, and its weed type (e.g. vine, shrub, herb etc). Clicking on each primary image will reveal further detailed information such as scientific name, description, impacts, control methods, and further images.

 Staff should be able to manage their own profile (update personal information and change password), view Gardener 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 gardeners (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

• Gardener profile: first name, last name, gardener 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.

• Weed Guide (weed id, common name, scientific name, weed type, description, 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://www.weedbusters.org.nz/what-are-weeds/weed-list/

o https://www.massey.ac.nz/about/colleges-schools-and-institutes/college-of-sciences/our-research/themes-and-research-strengths/plant-science-research/new-zealand-weeds-database/

o https://www.mpi.govt.nz/dmsdocument/3664-National-Pest-Plant-Accord-manual-Reprinted-in-February-2020-minor-amendments-only (includes weed types)

• The database should contain at least 5 gardeners users, 3 staff, one administrator and 20 weeds (ensure you have a range of different weed types).

• Include a content 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 a garden weed theme. w

 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 weed biosecurity guide that has a garden weed 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.

发表评论

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