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).
2
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-ofsciences/our-research/themes-and-research-strengths/plant-science-research/newzealand-weeds-database/
o https://www.mpi.govt.nz/dmsdocument/3664-National-Pest-Plant-Accord-manualReprinted-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
3
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 (computing@lincoln.ac.nz) 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.
4
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,
请加QQ:99515681 邮箱:99515681@qq.com WX:codehelp