Trekking Management Application
Adventure organizations require efficient systems to manage trekking activities involving
trek organizers, staff, and participants. Currently, many trekking groups rely on
spreadsheets, phone calls, or manual coordination, which makes it difficult to manage
trek approvals, track bookings, avoid overbooking, and maintain trek history.
You are required to build a Trekking Management Application web application that
allows Admin, Trek Staff, and Users (Trekkers) to interact with the system based on
their roles.
Frameworks to be used
These are the mandatory frameworks on which the project has to be built.
• Flask for application back-end
• Jinja2 templating, HTML, CSS and Bootstrap for application front-end
• SQLite for database (no other database is permitted)
• JS should NOT be used for executing the core requirements
Note:
• All demos should be possible on your local machine.
• The database must be created programmatically (via table creation or model
code).
• Manual database creation (such as using DB Browser for SQLite) is NOT allowed.
Roles & Functionalities
1. Admin: Admin is the pre-existing superuser of the application.
• Can add, edit, or remove trek
• Can manage (add or remove) trek staff
• Can assign staff to a particular trek
• Can view all the users, staff, and treks
• Can search treks, staff, or users by name or ID
• Can blacklist users or staff if required
2. Trek Staff: staff members that carry out trekking and guide trekkers
• Can log in only after being created by Admin
• Can view assigned treks by Admin
• Can update trek details such as:
• Available slots
• Trek status (Open/Closed)
• Can view list of users registered for their treks
3. User (Trekker)
• Can register and log in
• Can view approved/open treks
• Can search and filter treks based on difficulty, location
• Can book treks
• Can view booking status and trekking history
Key Terminologies
1. Admin: A user with the highest level of access who manages the entire trekking
system.
2. Trek Staff: A staff member responsible for managing and coordinating assigned
treks.
3. User (Trekker): A participant who books and participates in trekking activities.
4. Trek: A trekking event created and managed in the system.
Attributes:
• Trek ID
• Trek Name
• Location
• Difficulty (Easy / Moderate / Hard)
• Duration (in days)
• Available Slots
• Assigned Staff ID
• Status (Pending / Approved / Open / Closed / Completed)
• Start Date
• End Date
• Extra fields etc.
5. Booking: A record of a user booking a trek.
Attributes:
• Booking ID
• User ID
• Trek ID
• Booking Date
• Status (Booked / Cancelled / Completed)
• Extra fields etc.
6. Staff Profile: Details of a registered staff member.
Attributes:
• Staff ID
• Name
• Contact Details
• Assigned Trek(s)
• Status
• Extra fields etc.
Note: The above tables and fields are not exhaustive. Students can add more/less
tables and fields as required.
Similar Apps
• [Link]
• [Link]
• [Link]
Application Wireframe
Trekking Management Application soon to be updated…
Note: The provided wireframe is intended only to illustrate the application's flow and
demonstrate navigation.
• Replication of exact UI is NOT mandatory.
• Students are encouraged to design their own UI while maintaining the
application's intended functionality and flow.
Core Features
1. Authentication
• Login system for Admin, Trek Staff, and Users
• Registration allowed only for Users
• Admin must pre-exist in the database (no admin registration).
2. Admin Functionalities
• Admin dashboard must display:
• Total number of treks
• Total number of users and staffs
• Total number of bookings
• Admin can:
• Create and manage treks routes
• Add a new trek staff
• Assign staff to treks
• View all bookings
• Search users, staff, and treks
• Deactivate or blacklist users/staff
3. Trek Staff Functionalities
• Staff dashboard should display:
• Assigned treks by admin
• Number of registered users per trek
• Staff can:
• Update trek slots and status
• View and manage participant list
• Mark trek as started/completed
4. User Functionalities
• Users must self-register and log in
• User dashboard should display:
• Available treks
• Booked treks
• Trek status
• Users can:
• Book treks
• View booking status
• View trekking history
• Edit their profile
• Search treks
5. Other Core Functionalities
• Prevent overbooking beyond available slots
• Ensure only assigned staff can manage a trek
• Allow users to book only if trek status is Open
• Maintain complete booking history for each user
• Allow admin to view all historical trekking data
Recommended and/or Optional Functionalities
• API resources to interact with treks, users, and bookings
• Role-based access control using Flask extensions such as Flask-Login or Flask-
Security
• APIs can return JSON or be built using Flask extensions like Flask-RESTful
• Frontend validation using HTML5 or JavaScript
• Backend validation inside Flask controllers
• Clean and responsive UI using Bootstrap (no other CSS framework allowed)
• Charts for trekking statistics (e.g., popular treks, bookings)
• Any additional feature relevant to trekking management