JB logo
CoffeeyOUTUBE
JB's avatarUgandan flag

JB 

Muke Johnbaptist

Go (Golang) expert · Creator of the Grit Framework

Blog
Next

40 Final-Year Fullstack Project Ideas — A Student's Handbook

40 final-year project ideas for fullstack developer students, each with a description, key features, a database design and full table schemas. Campus systems, business, health, fintech, agriculture and community apps — plus how to choose, a recommended tech stack, a projects-by-sector finder, and guidance for a strong final-year defense. A practical handbook to pick and build your capstone.

A practical guide with 40 project descriptions, database designs, and table structures, covering campus, business, health, and community systems


Introduction

A final year project is your chance to show that you can design, build, and deploy a complete system. For a fullstack developer, a good project has:

  • A real problem that people on campus (or beyond) actually face.
  • A frontend (React, Vue, Angular, or Flutter/React Native for mobile).
  • A backend API (Node.js/Express, Django, Laravel, Spring Boot, or ASP.NET).
  • A well-designed relational database (PostgreSQL or MySQL are recommended).
  • Authentication and role-based access control (students, lecturers, admins).
  • Extra depth: payments, notifications, reports, analytics, or integrations.

How to Choose

QuestionWhy it matters
Can I find real users to test with?Real feedback makes your defense stronger.
Is the scope achievable in 6 to 9 months?Finish a smaller system well rather than a huge one badly.
Does it show database design skill?Examiners love normalized schemas with clear relationships.
Does it have at least one "wow" feature?QR codes, maps, payments, charts, or notifications set you apart.

Conventions Used in This Document

  • PK = Primary Key, FK = Foreign Key, UQ = Unique.
  • All tables should also include created_at and updated_at timestamps (omitted in listings to save space).
  • Passwords must always be stored hashed (bcrypt or argon2), never as plain text.
  • Where a users table appears, it is the central authentication table with a role column (or a separate roles table).

Suggested Common Tech Stack

LayerOptions
FrontendReact + Tailwind, Vue 3, Angular, Next.js
BackendNode.js (Express/NestJS), Django REST, Laravel, Spring Boot
DatabasePostgreSQL (preferred), MySQL, optionally Redis for caching
AuthJWT + refresh tokens, or session cookies
DeploymentDocker, Render, Railway, VPS, or a campus server
ExtrasMobile Money / Stripe APIs, SMS/Email (Twilio, SendGrid), Google Maps API

Table of Contents

Part 1: Campus and Student Projects

  1. Campus Course Registration System
  2. QR-Based Student Attendance Tracker
  3. Online Examination and Quiz Platform
  4. Library Management System
  5. Hostel and Accommodation Booking System
  6. Campus Marketplace (Buy and Sell)
  7. Lost and Found Portal
  8. Alumni Network and Tracer Portal
  9. Final Year Project Management and Supervision System
  10. Campus Event Management and Ticketing
  11. Student Fees and Payment Management System
  12. Campus Shuttle and Transport Tracking
  13. Online Student Clearance System
  14. Automated Timetable Scheduler
  15. Campus Clinic Appointment and Records System
  16. Internship and Job Placement Portal
  17. Peer Tutoring and Study Group Platform
  18. Student Complaint and Feedback System
  19. Campus Canteen Pre-Ordering System
  20. Research and Thesis Repository

Part 2: Business and Community Projects

  1. Pharmacy Management and Inventory System
  2. Blood Donation Management System
  3. School Management System (Primary and Secondary)
  4. Private Clinic and Hospital Management System
  5. Point of Sale (POS) and Inventory System for Retail Shops
  6. Telemedicine and Online Doctor Consultation Platform
  7. SACCO and Village Savings Group Management System
  8. Church and Community Organization Management System
  9. Smart Farm Management and Agricultural Marketplace
  10. Rental Property and Real Estate Management System
  11. Hotel and Guest House Booking System
  12. Restaurant Management and Table Reservation System
  13. Employee, HR and Payroll Management System
  14. Child Immunization and Community Health Tracker
  15. Delivery and Boda-Boda Dispatch Platform
  16. Learning Management System (LMS) for Schools and Training Centers
  17. NGO Project, Donor and Grant Management System
  18. CRM and Invoicing System for SMEs
  19. Citizen Issue Reporting System for Local Government
  20. Garage and Vehicle Fleet Management System

Projects by Sector (Quick Finder)

SectorProjects
Health and Pharmacy15, 21, 22, 24, 26, 34
Education and Schools1, 2, 3, 4, 9, 14, 17, 20, 23, 36
Retail and Business25, 31, 32, 33, 38, 40
Finance and Payments11, 27, 37
Community, Faith and NGOs8, 18, 28, 37, 39
Agriculture29
Real Estate and Housing5, 30, 31
Transport and Logistics12, 35, 40
Student Life6, 7, 10, 16, 19

PART 1: Campus and Student Projects (1 to 20)


Project 1: Campus Course Registration System

Description

A web platform where students register for courses each semester, view prerequisites, check credit-unit limits, and see their registration status. Lecturers see class lists, and administrators manage courses, semesters, and registration windows. The system should block clashes (timetable conflicts), enforce prerequisites, and cap credit units.

Key Features

  • Student registration with prerequisite and credit-limit validation
  • Admin-controlled registration windows per semester
  • Lecturer class lists exportable to PDF/Excel
  • Registration slip generation (PDF)
  • Email notifications on approval or rejection

Database Design

A many-to-many relationship between students and courses is resolved through a registrations table. Courses can require other courses (a self-referencing many-to-many relationship via course_prerequisites). Semesters scope everything.

Tables

TableColumnsNotes
usersid (PK), email (UQ), password_hash, role, full_nameRoles: student, lecturer, admin
studentsid (PK), user_id (FK, UQ), reg_number (UQ), program_id (FK), year_of_studyOne-to-one with users
lecturersid (PK), user_id (FK, UQ), staff_number (UQ), department_id (FK)
departmentsid (PK), name, faculty_id (FK)
facultiesid (PK), name
programsid (PK), name, department_id (FK), duration_years
coursesid (PK), code (UQ), title, credit_units, department_id (FK)
course_prerequisitescourse_id (FK), prerequisite_id (FK)Composite PK
semestersid (PK), name, academic_year, reg_start, reg_end, is_active
course_offeringsid (PK), course_id (FK), semester_id (FK), lecturer_id (FK), capacityA course offered in a semester
registrationsid (PK), student_id (FK), offering_id (FK), status, registered_atUQ(student_id, offering_id)

Relationships: faculty → departments → programs → students; course ↔ course (prerequisites); student ↔ offering (registrations).


Project 2: QR-Based Student Attendance Tracker

Description

Lecturers start a class session and the system generates a time-limited, rotating QR code. Students scan it with their phones (via a web app or PWA) to mark attendance. Optional geofencing checks that the student is physically in the classroom. Reports show attendance percentage per student and per course, and flag students below the required threshold.

Key Features

  • Rotating QR codes (new token every 20-30 seconds) to prevent sharing
  • GPS/geofence validation
  • Attendance percentage dashboard and low-attendance alerts
  • Lecturer manual override with audit log
  • Export to Excel

Database Design

Each class meeting is a sessions row. Each scan creates an attendance_records row. QR tokens are stored with expiry to validate scans.

Tables

TableColumnsNotes
usersid, email, password_hash, role
studentsid, user_id (FK), reg_number, program_id
lecturersid, user_id (FK), staff_number
coursesid, code, title, lecturer_id (FK)
enrollmentsid, student_id (FK), course_id (FK)UQ pair
class_sessionsid, course_id (FK), started_by (FK), start_time, end_time, latitude, longitude, radius_m
qr_tokensid, session_id (FK), token (UQ), expires_atRotating tokens
attendance_recordsid, session_id (FK), student_id (FK), scanned_at, latitude, longitude, statusUQ(session_id, student_id)
attendance_overridesid, record_id (FK), changed_by (FK), old_status, new_status, reasonAudit trail
notificationsid, user_id (FK), message, is_read

Project 3: Online Examination and Quiz Platform

Description

Lecturers create question banks and schedule timed exams or quizzes. Students sit exams in a browser with a countdown timer, randomized questions, and auto-submission when time ends. Objective questions are auto-marked; essays go to the lecturer for manual grading. Includes basic anti-cheating measures such as tab-switch detection and question shuffling.

Key Features

  • Question bank with categories and difficulty
  • Randomized question and option order
  • Timer, auto-save answers, auto-submit
  • Auto-marking and manual marking for essays
  • Result analytics (average, pass rate, question difficulty analysis)

Database Design

Questions belong to a bank and can be reused across exams through a join table. Each student attempt stores its own answers.

Tables

TableColumnsNotes
usersid, email, password_hash, role
coursesid, code, title
question_banksid, course_id (FK), name, created_by (FK)
questionsid, bank_id (FK), type, text, marks, difficultytype: mcq, true_false, essay
question_optionsid, question_id (FK), option_text, is_correct
examsid, course_id (FK), title, start_time, end_time, duration_min, total_marks, shuffle
exam_questionsexam_id (FK), question_id (FK), order_noComposite PK
exam_attemptsid, exam_id (FK), student_id (FK), started_at, submitted_at, score, statusUQ(exam_id, student_id)
attempt_answersid, attempt_id (FK), question_id (FK), selected_option_id (FK, nullable), answer_text, marks_awarded
proctor_eventsid, attempt_id (FK), event_type, occurred_ate.g. tab_switch

Project 4: Library Management System

Description

A system for managing a campus library: cataloging books, issuing and returning them, tracking fines, handling reservations, and searching the catalog online. Includes barcode support so librarians can scan books and student ID cards. Students can reserve books, renew loans, and see their borrowing history.

Key Features

  • Catalog with search and filters (title, author, ISBN, category)
  • Issue/return with barcode scanning
  • Automatic fine calculation for overdue books
  • Reservations and renewals
  • Digital resources (PDF e-books) section

Database Design

Distinguish a book title (bibliographic record) from a book copy (physical item). Loans link members to copies.

Tables

TableColumnsNotes
usersid, email, password_hash, roleRoles: member, librarian, admin
membersid, user_id (FK), member_no (UQ), type, statusStudent/staff
authorsid, name, bio
categoriesid, name
booksid, isbn (UQ), title, publisher, year, category_id (FK), description
book_authorsbook_id (FK), author_id (FK)Many-to-many
book_copiesid, book_id (FK), barcode (UQ), shelf_location, condition, status
loansid, copy_id (FK), member_id (FK), issued_at, due_date, returned_at, renewed_count
reservationsid, book_id (FK), member_id (FK), reserved_at, status
finesid, loan_id (FK), amount, reason, is_paid, paid_at
ebooksid, book_id (FK), file_url, access_level

Project 5: Hostel and Accommodation Booking System

Description

Manages campus hostels and off-campus approved accommodation. Students browse hostels, view available rooms, apply for a bed space, and pay a booking deposit. Wardens approve allocations, manage room inventory, and record maintenance issues. Landlords of private hostels can list their properties for admin approval.

Key Features

  • Room and bed inventory with real-time availability
  • Application, approval, and allocation workflow
  • Payment of deposit and rent (Mobile Money integration)
  • Maintenance request tracking
  • Photo galleries and map locations of hostels

Database Design

Hierarchy: hostel → floor/block → room → bed. Bookings attach a student to a bed for a period.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, warden, landlord, admin
studentsid, user_id (FK), reg_number, genderGender matters for allocation
hostelsid, name, type, owner_id (FK), address, latitude, longitude, gender_policyon-campus / private
roomsid, hostel_id (FK), room_number, floor, type, price_per_semester, capacity
bedsid, room_id (FK), bed_label, status
hostel_imagesid, hostel_id (FK), image_url
bookingsid, student_id (FK), bed_id (FK), semester_id (FK), status, booked_at
paymentsid, booking_id (FK), amount, method, transaction_ref (UQ), status, paid_at
maintenance_requestsid, room_id (FK), reported_by (FK), description, status, resolved_at
semestersid, name, start_date, end_date

Project 6: Campus Marketplace (Buy and Sell)

Description

A student-to-student marketplace where users can sell second-hand textbooks, electronics, clothing, and services (laundry, tutoring, graphic design). Includes in-app chat between buyer and seller, product ratings, favourites, and a reporting tool for suspicious listings. Moderators approve or remove items.

Key Features

  • Listings with multiple images, categories, and price negotiation
  • Real-time chat (WebSockets)
  • Seller ratings and reviews
  • Wishlist/favourites and search with filters
  • Report and moderation workflow

Database Design

Listings belong to sellers and categories. Conversations are tied to a listing and two participants. Reviews are tied to completed transactions.

Tables

TableColumnsNotes
usersid, email, password_hash, role, phone, avatar_url
categoriesid, name, parent_id (FK, nullable)Nested categories
listingsid, seller_id (FK), category_id (FK), title, description, price, condition, status
listing_imagesid, listing_id (FK), image_url, is_primary
favouritesuser_id (FK), listing_id (FK)Composite PK
conversationsid, listing_id (FK), buyer_id (FK), seller_id (FK)
messagesid, conversation_id (FK), sender_id (FK), body, sent_at, is_read
transactionsid, listing_id (FK), buyer_id (FK), agreed_price, status, completed_at
reviewsid, transaction_id (FK, UQ), reviewer_id (FK), rating, comment
reportsid, listing_id (FK), reported_by (FK), reason, status, handled_by (FK)

Project 7: Lost and Found Portal

Description

A central place for reporting lost and found items on campus. Users post items with photos, location, and date. The system suggests possible matches between lost and found reports using category, keywords, date, and location similarity. Security offices verify ownership claims before handing items back.

Key Features

  • Report lost or found items with images and map pin
  • Automated match suggestions with a scoring algorithm
  • Claim and verification workflow (questions only the owner can answer)
  • Email/SMS notification when a potential match is found
  • Admin dashboard with statistics (most common lost items and hot-spots)

Database Design

Separate items for lost and found with a type column, and a matches table linking a lost report to a found report with a similarity score.

Tables

TableColumnsNotes
usersid, email, password_hash, role, phone
item_categoriesid, namePhones, ID cards, bags, keys...
locationsid, name, latitude, longitudeCampus places
itemsid, reporter_id (FK), type, category_id (FK), title, description, location_id (FK), event_date, statustype: lost/found
item_imagesid, item_id (FK), image_url
matchesid, lost_item_id (FK), found_item_id (FK), score, statusUQ pair
claimsid, found_item_id (FK), claimant_id (FK), proof_description, status, reviewed_by (FK)
verification_questionsid, found_item_id (FK), question, answer_hash
notificationsid, user_id (FK), message, is_read
handover_logsid, claim_id (FK), handed_by (FK), handed_at, notes

Project 8: Alumni Network and Tracer Portal

Description

Connects graduates with the university. Alumni create profiles, share employment updates, post job openings, mentor current students, and donate to campus projects. The university uses it as a graduate tracer study tool to collect employability statistics for accreditation.

Key Features

  • Alumni profiles with employment history
  • Job postings and mentorship requests
  • Tracer survey with analytics (employment rate by program)
  • Announcements, newsletters, and events
  • Donation campaigns

Database Design

Alumni are linked to graduation records. Employment history is one-to-many. Survey responses feed analytics.

Tables

TableColumnsNotes
usersid, email, password_hash, rolealumni, student, admin
alumni_profilesid, user_id (FK), program_id (FK), graduation_year, bio, linkedin_url, current_city
programsid, name, department
employment_historyid, alumni_id (FK), company, position, start_date, end_date, industry
job_postsid, posted_by (FK), title, company, description, deadline, status
mentorshipsid, mentor_id (FK), mentee_id (FK), topic, status, started_at
surveysid, title, description, opens_at, closes_at
survey_questionsid, survey_id (FK), question_text, type
survey_responsesid, survey_id (FK), alumni_id (FK), submitted_at
survey_answersid, response_id (FK), question_id (FK), answer_text
donation_campaignsid, title, goal_amount, deadline
donationsid, campaign_id (FK), donor_id (FK), amount, payment_ref

Project 9: Final Year Project Management and Supervision System

Description

A system to manage the entire final year project lifecycle: topic proposals, supervisor allocation, milestones, document submissions, supervisor feedback, meeting logs, defense scheduling, and final grading. It prevents duplicate topics and gives coordinators a bird's-eye view of every student's progress.

Key Features

  • Topic proposal submission and approval
  • Supervisor allocation with workload limits
  • Milestone tracking and deadline reminders
  • Document uploads with version history
  • Defense scheduling and panel scoring

Database Design

A project belongs to a student (or a group) and has one supervisor. Milestones, submissions, and meetings hang off the project. Defense scores connect panel members to projects.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, supervisor, coordinator, panelist
studentsid, user_id (FK), reg_number, program_id (FK)
supervisorsid, user_id (FK), department_id (FK), max_students
projectsid, title, abstract, status, supervisor_id (FK), academic_year
project_membersproject_id (FK), student_id (FK)Supports group projects
proposalsid, project_id (FK), submitted_at, status, reviewer_comment
milestonesid, name, due_date, academic_yeare.g. Chapter 1, Prototype
submissionsid, project_id (FK), milestone_id (FK), file_url, version, submitted_at
feedbackid, submission_id (FK), supervisor_id (FK), comment, grade
meetingsid, project_id (FK), scheduled_at, agenda, minutes, attended
defense_sessionsid, project_id (FK), venue, defense_time
defense_scoresid, session_id (FK), panelist_id (FK), score, remarks

Project 10: Campus Event Management and Ticketing

Description

Lets clubs and departments create events, sell or issue tickets, and manage attendees. Students discover events on a calendar, RSVP, receive QR-code tickets, and get reminders. Organizers check people in at the gate by scanning tickets and view real-time attendance and sales reports.

Key Features

  • Event creation with ticket types (free, regular, VIP)
  • Online payments and QR-coded e-tickets
  • Gate check-in scanner (web or mobile)
  • Calendar view and reminders
  • Organizer analytics dashboard

Database Design

Events have many ticket types; orders contain tickets; each ticket has a unique code for check-in.

Tables

TableColumnsNotes
usersid, email, password_hash, role
organizationsid, name, type, owner_id (FK)Clubs, departments
venuesid, name, capacity, location
eventsid, organization_id (FK), venue_id (FK), title, description, start_time, end_time, status
ticket_typesid, event_id (FK), name, price, quantity, sales_start, sales_end
ordersid, user_id (FK), total_amount, status, payment_ref
ticketsid, order_id (FK), ticket_type_id (FK), code (UQ), checked_in_at
rsvpsid, event_id (FK), user_id (FK), status
event_staffevent_id (FK), user_id (FK), roleGate scanners
remindersid, event_id (FK), user_id (FK), send_at, sent

Project 11: Student Fees and Payment Management System

Description

Handles tuition and other fee structures per program and semester, records payments (bank slips and Mobile Money), issues electronic receipts, tracks balances, and blocks result access or registration when fees are outstanding. Finance staff get reconciliation reports; students see their statements and can pay in installments.

Key Features

  • Fee structure configuration per program/year
  • Mobile Money and card payment integration (webhook handling)
  • Installment plans and scholarships/waivers
  • PDF receipts and statements
  • Defaulters report and clearance flag

Database Design

Fee items are grouped into fee structures. Each student gets an invoice per semester, and payments are allocated against invoices.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, bursar, admin
studentsid, user_id (FK), reg_number, program_id (FK)
fee_itemsid, name, descriptionTuition, library, ICT...
fee_structuresid, program_id (FK), semester_id (FK), year_of_study
fee_structure_itemsstructure_id (FK), fee_item_id (FK), amount
invoicesid, student_id (FK), semester_id (FK), total_amount, balance, status
invoice_linesid, invoice_id (FK), fee_item_id (FK), amount
paymentsid, invoice_id (FK), amount, method, transaction_ref (UQ), paid_at, recorded_by (FK)
receiptsid, payment_id (FK, UQ), receipt_no (UQ), issued_at
waiversid, student_id (FK), semester_id (FK), type, amount, approved_by (FK)Scholarships
installment_plansid, invoice_id (FK), due_date, amount, is_paid

Project 12: Campus Shuttle and Transport Tracking

Description

Tracks campus buses or shuttles in real time. Drivers share GPS location from a phone, and students see buses on a map with estimated arrival times at each stop. Includes route and schedule management, seat reservations for peak times, and incident reports.

Key Features

  • Live map with bus positions (WebSockets)
  • ETA calculation per stop
  • Route, stop, and schedule administration
  • Optional seat booking and QR boarding passes
  • Trip history and driver performance reports

Database Design

Routes consist of ordered stops. Trips are scheduled runs of a bus on a route by a driver. Location pings are stored as a high-volume time series.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, driver, admin
driversid, user_id (FK), license_no, phone
busesid, plate_number (UQ), capacity, status
routesid, name, description
stopsid, name, latitude, longitude
route_stopsroute_id (FK), stop_id (FK), stop_order, offset_minutesComposite PK
schedulesid, route_id (FK), bus_id (FK), driver_id (FK), departure_time, days_of_week
tripsid, schedule_id (FK), trip_date, started_at, ended_at, status
location_pingsid, trip_id (FK), latitude, longitude, speed, recorded_atIndex on (trip_id, recorded_at)
seat_bookingsid, trip_id (FK), student_id (FK), seat_no, status
incidentsid, trip_id (FK), reported_by (FK), description, severity

Project 13: Online Student Clearance System

Description

Replaces paper-based clearance forms that students carry from office to office. A graduating student starts a clearance request, and it flows through departments (library, finance, hostel, sports, faculty, records). Each office approves, rejects with a reason, or lists items to settle. When all approvals are in, a clearance certificate is generated.

Key Features

  • Configurable clearance workflow with ordered or parallel steps
  • Approval/rejection with comments
  • Live progress tracker for the student
  • Auto-checks (e.g., unpaid fees or unreturned books block approval)
  • Digital certificate with QR verification

Database Design

A clearance request spawns one approval row per department. Workflow definitions are stored in tables so admins can change them without code changes.

Tables

TableColumnsNotes
usersid, email, password_hash, role
studentsid, user_id (FK), reg_number, program_id (FK), graduation_year
clearance_departmentsid, name, officer_id (FK), step_order
clearance_requestsid, student_id (FK), status, submitted_at, completed_at
clearance_approvalsid, request_id (FK), department_id (FK), status, comment, acted_by (FK), acted_atUQ(request_id, department_id)
outstanding_itemsid, approval_id (FK), description, amount, is_resolved
certificatesid, request_id (FK, UQ), certificate_no (UQ), qr_token, issued_at
audit_logsid, user_id (FK), action, entity, entity_id, created_at

Project 14: Automated Timetable Scheduler

Description

Generates class and exam timetables automatically while respecting constraints: no lecturer or room double-booking, room capacity, lecturer availability, and student group clashes. Administrators can run the generator (using a constraint-solving or genetic algorithm), review conflicts, and manually adjust.

Key Features

  • Constraint-based automatic generation
  • Conflict detection and reporting
  • Drag-and-drop manual adjustment
  • Personalized timetables per student, lecturer, and room
  • Export to PDF and calendar (iCal)

Database Design

Time slots, rooms, lecturers, and student groups are resources. Timetable entries bind a course session to a slot, room, and lecturer. Constraints are stored as data.

Tables

TableColumnsNotes
usersid, email, password_hash, role
lecturersid, user_id (FK), department_id (FK), max_hours_per_week
coursesid, code, title, weekly_hours, requires_lab
student_groupsid, program_id (FK), year, size
group_coursesgroup_id (FK), course_id (FK)
course_lecturerscourse_id (FK), lecturer_id (FK)
roomsid, name, capacity, type (lecture/lab)
time_slotsid, day_of_week, start_time, end_time
lecturer_availabilitylecturer_id (FK), slot_id (FK), is_available
timetable_versionsid, semester_id (FK), name, status, generated_atDraft vs published
timetable_entriesid, version_id (FK), course_id (FK), group_id (FK), lecturer_id (FK), room_id (FK), slot_id (FK)UQ constraints on (version, room, slot) and (version, lecturer, slot)
conflictsid, version_id (FK), type, description, resolved

Project 15: Campus Clinic Appointment and Records System

Description

Digitizes the campus health center. Students book appointments, nurses record triage vitals, doctors enter diagnoses and prescriptions, and the pharmacy dispenses medicine and manages stock. Records are confidential and accessible only to authorized medical staff. Reports show common illnesses and stock levels.

Key Features

  • Online appointment booking and queue management
  • Electronic medical records with strict access control and audit logs
  • Prescription and pharmacy stock management
  • Referral letters (PDF)
  • Health statistics dashboard (anonymized)

Database Design

A patient has many visits; each visit includes vitals, diagnoses, and prescriptions. Pharmacy inventory is linked to dispensing.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, nurse, doctor, pharmacist, admin
patientsid, user_id (FK), reg_number, blood_group, allergies, emergency_contact
staffid, user_id (FK), specialization, license_no
appointmentsid, patient_id (FK), doctor_id (FK), scheduled_at, reason, status
visitsid, appointment_id (FK), patient_id (FK), checked_in_at, status
vitalsid, visit_id (FK), temperature, blood_pressure, pulse, weight, recorded_by (FK)
diagnosesid, visit_id (FK), doctor_id (FK), icd_code, description, notes
medicinesid, name, form, strength, unit_price
stock_batchesid, medicine_id (FK), quantity, expiry_date, received_at
prescriptionsid, visit_id (FK), medicine_id (FK), dosage, duration, quantity
dispensingid, prescription_id (FK), pharmacist_id (FK), quantity_given, dispensed_at
access_logsid, user_id (FK), patient_id (FK), action, accessed_atPrivacy audit

Project 16: Internship and Job Placement Portal

Description

Links students with employers offering internships and graduate jobs. Students build profiles and CVs and apply with one click. Employers post opportunities and review applicants. The career office manages employer partnerships, approves postings, and tracks placement statistics. Includes skill-based job recommendations.

Key Features

  • Student profile and CV builder (PDF export)
  • Employer registration and approval
  • Application tracking pipeline (applied, shortlisted, interview, offer)
  • Skill matching and recommendations
  • Interview scheduling and placement reports

Database Design

Skills form many-to-many relationships with students and jobs, which enables matching. Applications link students and jobs with a status workflow.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, employer, admin
student_profilesid, user_id (FK), program_id (FK), gpa, summary, cv_url
educationid, student_id (FK), institution, qualification, start_year, end_year
experiencesid, student_id (FK), company, role, description, start_date, end_date
skillsid, name (UQ)
student_skillsstudent_id (FK), skill_id (FK), level
employersid, user_id (FK), company_name, industry, website, is_verified
jobsid, employer_id (FK), title, type, description, location, deadline, statusinternship/full-time
job_skillsjob_id (FK), skill_id (FK), is_required
applicationsid, job_id (FK), student_id (FK), cover_letter, status, applied_atUQ(job_id, student_id)
interviewsid, application_id (FK), scheduled_at, mode, link_or_venue, outcome
placementsid, application_id (FK, UQ), start_date, end_date

Project 17: Peer Tutoring and Study Group Platform

Description

Connects students who need help with students who excel in a subject. Tutors set topics, rates (or volunteer hours), and availability. Students request sessions, join video calls, and rate the experience. Also supports study groups with shared notes and scheduled meetings.

Key Features

  • Tutor profiles with subjects and availability calendar
  • Session booking and reminders
  • Embedded video call link (Jitsi/WebRTC)
  • Study groups with discussion boards and file sharing
  • Ratings, reviews, and tutor leaderboard

Database Design

Tutors teach subjects (many-to-many) and publish availability slots. Bookings reserve slots. Groups have members, posts, and resources.

Tables

TableColumnsNotes
usersid, email, password_hash, role, full_name
subjectsid, name, department
tutor_profilesid, user_id (FK), bio, hourly_rate, rating_avg, is_verified
tutor_subjectstutor_id (FK), subject_id (FK)
availability_slotsid, tutor_id (FK), start_time, end_time, is_booked
tutoring_sessionsid, slot_id (FK), student_id (FK), subject_id (FK), topic, meeting_link, status
session_reviewsid, session_id (FK, UQ), rating, comment
study_groupsid, name, subject_id (FK), owner_id (FK), description, is_private
group_membersgroup_id (FK), user_id (FK), role, joined_at
group_postsid, group_id (FK), author_id (FK), body, created_at
group_resourcesid, group_id (FK), uploaded_by (FK), title, file_url
group_meetingsid, group_id (FK), scheduled_at, location_or_link, agenda

Project 18: Student Complaint and Feedback System

Description

A structured channel for students to submit complaints (missing marks, facilities, harassment, lecturer issues) and suggestions, optionally anonymously. Complaints are routed to the right office, tracked with a ticket number, escalated automatically if unresolved after a set time, and closed with a documented resolution. Management gets trend analytics.

Key Features

  • Anonymous or identified submissions with attachments
  • Automatic routing by category
  • SLA timers and auto-escalation
  • Ticket conversation thread and status tracking
  • Analytics (resolution time, top issues per department)

Database Design

Tickets belong to categories, which map to responsible departments. A comment thread and a status history table provide full traceability.

Tables

TableColumnsNotes
usersid, email, password_hash, role
departmentsid, name, head_id (FK)
complaint_categoriesid, name, department_id (FK), sla_hours
complaintsid, ticket_no (UQ), submitter_id (FK, nullable), is_anonymous, category_id (FK), subject, description, priority, status, assigned_to (FK)
complaint_attachmentsid, complaint_id (FK), file_url
complaint_commentsid, complaint_id (FK), author_id (FK), body, is_internal
status_historyid, complaint_id (FK), old_status, new_status, changed_by (FK), changed_at
escalationsid, complaint_id (FK), escalated_to (FK), reason, escalated_at
resolutionsid, complaint_id (FK, UQ), summary, resolved_by (FK), resolved_at
satisfaction_ratingsid, complaint_id (FK, UQ), rating, comment

Project 19: Campus Canteen Pre-Ordering System

Description

Students and staff order food from campus canteens or kiosks in advance, pay online, and pick up at a scheduled time without queuing. Vendors manage menus, stock, and incoming orders on a kitchen dashboard. Supports loyalty points and daily specials.

Key Features

  • Multi-vendor menus with categories and photos
  • Cart, scheduled pickup, and Mobile Money payment
  • Real-time order status (placed, preparing, ready, collected)
  • Vendor dashboard and sales reports
  • Loyalty points and promotions

Database Design

Vendors own menu items. Orders contain order items, which snapshot the price at the time of ordering to keep history accurate.

Tables

TableColumnsNotes
usersid, email, password_hash, role, phonecustomer, vendor, admin
vendorsid, user_id (FK), name, location, opening_time, closing_time, is_open
menu_categoriesid, vendor_id (FK), name
menu_itemsid, vendor_id (FK), category_id (FK), name, description, price, image_url, stock, is_available
cartsid, user_id (FK), vendor_id (FK)
cart_itemsid, cart_id (FK), menu_item_id (FK), quantity
ordersid, user_id (FK), vendor_id (FK), total, pickup_time, status, placed_at
order_itemsid, order_id (FK), menu_item_id (FK), quantity, unit_pricePrice snapshot
paymentsid, order_id (FK, UQ), method, transaction_ref, status
loyalty_accountsid, user_id (FK, UQ), points
loyalty_transactionsid, account_id (FK), order_id (FK), points, type
promotionsid, vendor_id (FK), code, discount_percent, valid_from, valid_to

Project 20: Research and Thesis Repository

Description

A searchable institutional repository where students submit theses, dissertations, and research papers. Supervisors and librarians review submissions before publication. The system includes full-text search, citation export (BibTeX/APA), download statistics, and a basic similarity check against existing documents to discourage plagiarism.

Key Features

  • Submission workflow with review and approval
  • Full-text search (PostgreSQL full-text search or Elasticsearch)
  • Metadata (keywords, abstract, supervisor, year, department)
  • Similarity scoring against existing repository documents
  • Access control (open, campus-only, embargoed) and download analytics

Database Design

Documents have metadata, authors, keywords, and versions. Access rules and download logs enable analytics. Similarity results are stored per submission.

Tables

TableColumnsNotes
usersid, email, password_hash, rolestudent, supervisor, librarian, admin
departmentsid, name, faculty
documentsid, title, abstract, type, department_id (FK), year, access_level, embargo_until, status, search_vectortype: thesis, paper, dissertation
document_authorsdocument_id (FK), user_id (FK), author_order
document_supervisorsdocument_id (FK), supervisor_id (FK)
keywordsid, term (UQ)
document_keywordsdocument_id (FK), keyword_id (FK)
document_filesid, document_id (FK), file_url, version, file_size, uploaded_at
reviewsid, document_id (FK), reviewer_id (FK), decision, comments, reviewed_at
similarity_reportsid, document_id (FK), compared_with_id (FK), score, generated_at
downloadsid, document_id (FK), user_id (FK, nullable), downloaded_at, ip_address
citations_cachedocument_id (FK), bibtex, apaPre-generated formats

PART 2: Business and Community Projects (21 to 40)

These projects serve real organizations such as pharmacies, clinics, schools, shops, farms, NGOs, and community groups. They are excellent if you want to deploy your system to an actual client after graduation.


Project 21: Pharmacy Management and Inventory System

Description

A complete system for running a retail or hospital pharmacy. It tracks medicine stock by batch and expiry date, handles sales with a point-of-sale screen, manages suppliers and purchase orders, validates prescriptions, and alerts staff about low stock and soon-to-expire drugs. Owners see profit and loss reports, and the pharmacist can record controlled-drug dispensing for compliance.

Key Features

  • Batch and expiry tracking with FEFO (first-expiry, first-out) selling
  • POS with barcode scanning, discounts, and receipts
  • Low-stock and near-expiry alerts (email/SMS)
  • Supplier management and purchase orders
  • Prescription records and controlled-drug register
  • Sales, profit, and stock valuation reports

Database Design

Medicines (products) have many batches. Sales items deduct from specific batches. Purchases add batches. A prescription can be linked to a sale.

Tables

TableColumnsNotes
usersid, email, password_hash, roleowner, pharmacist, cashier
branchesid, name, address, phoneSupports multi-branch
medicine_categoriesid, nameAntibiotics, analgesics...
medicinesid, name, generic_name, category_id (FK), form, strength, barcode (UQ), reorder_level, is_controlled, selling_price
suppliersid, name, phone, email, address
purchase_ordersid, supplier_id (FK), branch_id (FK), order_date, status, total
purchase_order_itemsid, po_id (FK), medicine_id (FK), quantity, unit_cost
stock_batchesid, medicine_id (FK), branch_id (FK), batch_no, expiry_date, quantity_remaining, unit_cost
customersid, name, phone, addressOptional
prescriptionsid, customer_id (FK), doctor_name, issued_date, image_url
salesid, branch_id (FK), cashier_id (FK), customer_id (FK, nullable), prescription_id (FK, nullable), total, payment_method, sold_at
sale_itemsid, sale_id (FK), medicine_id (FK), batch_id (FK), quantity, unit_price
stock_adjustmentsid, batch_id (FK), quantity_change, reason, adjusted_by (FK)Damage, expiry, theft
controlled_drug_registerid, sale_item_id (FK), patient_name, id_number, dispensed_by (FK)

Project 22: Blood Donation Management System

Description

A platform that links blood donors, hospitals, and blood banks. Donors register with blood group and location, get reminders when they are eligible to donate again, and receive emergency alerts when their blood type is urgently needed nearby. Hospitals post requests, and blood banks manage inventory of blood units with expiry dates. Donation drives can be organized and tracked.

Key Features

  • Donor registration with eligibility rules (e.g., 3-4 months between donations)
  • Emergency request broadcast to matching donors by blood group and distance
  • Blood bank inventory by blood group, component, and expiry
  • Donation drive/camp scheduling and attendance
  • SMS/WhatsApp/email notifications
  • Dashboards showing shortages and donation trends

Database Design

Donors have many donations. Each donation produces blood units stored in banks. Requests from hospitals are matched with donors and units.

Tables

TableColumnsNotes
usersid, email, password_hash, roledonor, hospital, bank_staff, admin
blood_groupsid, nameA+, A-, B+, O-, AB+...
donorsid, user_id (FK), blood_group_id (FK), dob, gender, weight, phone, latitude, longitude, last_donation_date, is_available
health_screeningsid, donor_id (FK), screened_at, hemoglobin, blood_pressure, result, screened_by (FK)
hospitalsid, user_id (FK), name, address, latitude, longitude, phone, is_verified
blood_banksid, name, address, phone, manager_id (FK)
donation_drivesid, title, venue, drive_date, organizer_id (FK), target_units
donationsid, donor_id (FK), bank_id (FK), drive_id (FK, nullable), donated_at, volume_ml, status
blood_unitsid, donation_id (FK), blood_group_id (FK), component, collected_at, expiry_date, statuswhole blood, plasma, platelets
blood_requestsid, hospital_id (FK), blood_group_id (FK), units_needed, urgency, patient_ref, status, needed_by
request_responsesid, request_id (FK), donor_id (FK), response, responded_at
unit_issuesid, unit_id (FK), request_id (FK), issued_at, issued_by (FK)
notificationsid, user_id (FK), channel, message, sent_at

Project 23: School Management System (Primary and Secondary)

Description

An all-in-one platform for schools: admissions, student records, class and subject allocation, attendance, exams and report cards, fee collection, parent portal, and announcements. Teachers record marks, the system computes grades and class positions, and parents log in to see results, fees, and attendance for their children.

Key Features

  • Admission and student profile management
  • Class, stream, subject, and teacher allocation
  • Daily attendance with parent SMS alerts for absences
  • Marks entry, grading scales, and automatic report card PDFs
  • Fee structures, payments, and balances
  • Parent portal and school-wide announcements

Database Design

A student belongs to a class in an academic year (enrollment). Marks are tied to student, subject, and exam. Parents link to students via a guardian table.

Tables

TableColumnsNotes
usersid, email, password_hash, roleadmin, teacher, parent, student, bursar
academic_yearsid, name, start_date, end_date, is_current
termsid, academic_year_id (FK), name, start_date, end_date
classesid, name, level, stream
subjectsid, name, code
class_subjectsid, class_id (FK), subject_id (FK), teacher_id (FK)
teachersid, user_id (FK), staff_no, phone, qualification
studentsid, user_id (FK, nullable), admission_no (UQ), full_name, dob, gender, photo_url
guardiansid, user_id (FK), full_name, phone, occupation
student_guardiansstudent_id (FK), guardian_id (FK), relationship
enrollmentsid, student_id (FK), class_id (FK), academic_year_id (FK)UQ(student, year)
attendanceid, enrollment_id (FK), date, status, recorded_by (FK)
examsid, term_id (FK), name, type, weight_percent
marksid, exam_id (FK), enrollment_id (FK), subject_id (FK), scoreUQ triple
grading_scalesid, min_score, max_score, grade, remark
fee_invoicesid, enrollment_id (FK), term_id (FK), total, balance
fee_paymentsid, invoice_id (FK), amount, method, reference, paid_at
announcementsid, title, body, audience, posted_by (FK), posted_at

Project 24: Private Clinic and Hospital Management System

Description

Supports a small to medium hospital or private clinic from reception to billing. Receptionists register patients and issue queue numbers. Nurses capture vitals; doctors record consultations, order lab tests, and prescribe medicine. The lab enters results, the pharmacy dispenses, and the cashier generates a consolidated bill. Management views revenue and disease statistics.

Key Features

  • Patient registration with unique patient numbers
  • Queue and appointment management
  • Consultation notes, lab orders, and results
  • Prescriptions linked to in-house pharmacy
  • Billing with insurance and cash options, receipts, and invoices
  • Admission, ward, and bed management (optional advanced module)

Database Design

A visit (encounter) is the central record. Lab orders, prescriptions, services, and bills all link to the visit.

Tables

TableColumnsNotes
usersid, email, password_hash, rolereceptionist, nurse, doctor, lab_tech, pharmacist, cashier, admin
patientsid, patient_no (UQ), full_name, dob, gender, phone, address, next_of_kin, insurance_id (FK, nullable)
insurersid, name, contact, coverage_percent
visitsid, patient_id (FK), visit_date, type, status, queue_noOPD/IPD
vitalsid, visit_id (FK), temperature, bp, pulse, weight, height, recorded_by (FK)
consultationsid, visit_id (FK), doctor_id (FK), complaints, findings, diagnosis, plan
lab_testsid, name, price, normal_rangeCatalog
lab_ordersid, visit_id (FK), test_id (FK), ordered_by (FK), status
lab_resultsid, order_id (FK, UQ), result_value, remarks, entered_by (FK), entered_at
drugsid, name, price, stock_qty
prescriptionsid, visit_id (FK), drug_id (FK), dosage, duration, quantity, dispensed
servicesid, name, priceConsultation fee, dressing...
billsid, visit_id (FK), total, insurer_amount, patient_amount, status
bill_itemsid, bill_id (FK), item_type, item_id, description, amount
paymentsid, bill_id (FK), amount, method, paid_at, received_by (FK)
wardsid, name, type
bedsid, ward_id (FK), bed_no, status
admissionsid, visit_id (FK), bed_id (FK), admitted_at, discharged_at, discharge_notes

Project 25: Point of Sale (POS) and Inventory System for Retail Shops

Description

A POS and stock management web app for small supermarkets, hardware shops, and boutiques. Cashiers ring up sales using barcode scanners, accept cash or mobile money, and print receipts. Owners track stock levels, suppliers, expenses, employee sales, and profit per product. Works across multiple branches and can sync after brief internet outages.

Key Features

  • Fast POS interface with barcode scanning and keyboard shortcuts
  • Stock-in, stock transfers between branches, and stocktaking
  • Supplier purchases and credit tracking
  • Customer credit (debt) tracking and loyalty
  • Expense recording and profit and loss reports
  • Offline-first mode (PWA with IndexedDB sync)

Database Design

Products have stock per branch. Sales, purchases, and transfers are recorded as documents with line items, and a stock-movements ledger gives a full audit trail.

Tables

TableColumnsNotes
usersid, email, password_hash, role, branch_id (FK)owner, manager, cashier
branchesid, name, address
categoriesid, name
productsid, sku (UQ), barcode (UQ), name, category_id (FK), cost_price, selling_price, reorder_level
branch_stockproduct_id (FK), branch_id (FK), quantityComposite PK
stock_movementsid, product_id (FK), branch_id (FK), type, quantity, reference_id, created_atLedger
suppliersid, name, phone, balance_owed
purchasesid, supplier_id (FK), branch_id (FK), total, paid_amount, purchased_at
purchase_itemsid, purchase_id (FK), product_id (FK), quantity, unit_cost
customersid, name, phone, credit_limit, balance
salesid, branch_id (FK), cashier_id (FK), customer_id (FK, nullable), subtotal, discount, total, payment_method, sold_at
sale_itemsid, sale_id (FK), product_id (FK), quantity, unit_price, unit_costCost snapshot for profit
stock_transfersid, from_branch_id (FK), to_branch_id (FK), status, created_by (FK)
expensesid, branch_id (FK), category, amount, description, spent_at
shiftsid, cashier_id (FK), opened_at, closed_at, opening_cash, closing_cashTill reconciliation

Project 26: Telemedicine and Online Doctor Consultation Platform

Description

Lets patients in remote areas consult doctors by chat or video. Patients describe symptoms, choose a doctor or specialty, book a slot, pay, and join a consultation. Doctors issue e-prescriptions and follow-up notes. Patients can upload photos or lab reports and keep a personal health history.

Key Features

  • Doctor profiles, specialties, and availability calendars
  • Video consultation (WebRTC/Jitsi) and secure chat
  • Appointment booking with online payment
  • E-prescriptions (PDF) and follow-up reminders
  • Patient health records and uploads
  • Ratings and doctor verification by admin

Database Design

Appointments connect patients to doctors via availability slots. Each consultation produces notes, prescriptions, and optional messages.

Tables

TableColumnsNotes
usersid, email, password_hash, rolepatient, doctor, admin
patientsid, user_id (FK), dob, gender, blood_group, allergies, phone
specialtiesid, name
doctorsid, user_id (FK), specialty_id (FK), license_no, bio, fee, is_verified, rating_avg
availability_slotsid, doctor_id (FK), start_time, end_time, is_booked
appointmentsid, patient_id (FK), doctor_id (FK), slot_id (FK, UQ), mode, reason, status, meeting_link
paymentsid, appointment_id (FK, UQ), amount, method, transaction_ref, status
consultationsid, appointment_id (FK, UQ), symptoms, diagnosis, advice, follow_up_date
prescriptionsid, consultation_id (FK), medicine, dosage, duration, instructions
messagesid, appointment_id (FK), sender_id (FK), body, attachment_url, sent_at
medical_documentsid, patient_id (FK), title, file_url, uploaded_at
reviewsid, appointment_id (FK, UQ), rating, comment

Project 27: SACCO and Village Savings Group Management System

Description

Digitizes savings groups, SACCOs, and microfinance associations. Members make savings deposits, buy shares, request loans, and repay with interest. The system calculates interest schedules, tracks guarantors, applies penalties for late payments, produces member statements, and gives treasurers instant balance sheets. Members get SMS confirmations for every transaction.

Key Features

  • Member registration and KYC documents
  • Savings, shares, and withdrawals ledger
  • Loan application, guarantor approval, and committee approval workflow
  • Automatic repayment schedules (flat or reducing balance)
  • Penalties, dividends, and annual interest distribution
  • Financial reports (trial balance, portfolio at risk)

Database Design

Each member has multiple accounts (savings, shares). All money movement is stored in a transactions ledger. Loans have schedules, repayments, and guarantors.

Tables

TableColumnsNotes
usersid, email, password_hash, rolemember, treasurer, chair, admin
membersid, user_id (FK), member_no (UQ), full_name, national_id, phone, address, join_date, status
member_documentsid, member_id (FK), type, file_url
account_typesid, name, min_balance, interest_ratesavings, shares, fixed
accountsid, member_id (FK), account_type_id (FK), balance
transactionsid, account_id (FK), type, amount, balance_after, reference, recorded_by (FK), created_atLedger
loan_productsid, name, interest_rate, interest_method, max_amount, max_term_months, penalty_rate
loansid, member_id (FK), product_id (FK), amount, term_months, status, applied_at, approved_by (FK), disbursed_at
loan_guarantorsid, loan_id (FK), guarantor_id (FK), amount_guaranteed, status
loan_schedulesid, loan_id (FK), due_date, principal_due, interest_due, paid, paid_at
loan_repaymentsid, loan_id (FK), amount, paid_at, method
penaltiesid, loan_id (FK), schedule_id (FK), amount, applied_at
meetingsid, date, agenda, minutes
meeting_attendancemeeting_id (FK), member_id (FK), status
dividendsid, year, member_id (FK), amount, paid_at

Project 28: Church and Community Organization Management System

Description

Helps churches, mosques, clubs, and community-based organizations manage members, families, small groups, attendance, offerings and tithes, pledges, events, and communication. Leaders send bulk SMS or email to groups, and the treasurer produces transparent financial reports for the congregation.

Key Features

  • Member and household registry
  • Small groups, ministries, and leader roles
  • Service attendance (QR or manual)
  • Giving: tithes, offerings, pledges, and receipts
  • Event calendar and volunteer scheduling
  • Bulk SMS/email and birthday/anniversary reminders

Database Design

Members belong to households and many groups. Contributions and pledges link to members and funds. Events have volunteers and attendance.

Tables

TableColumnsNotes
usersid, email, password_hash, role
householdsid, name, address
membersid, user_id (FK, nullable), household_id (FK), full_name, gender, dob, phone, marital_status, join_date, status
groupsid, name, type, leader_id (FK), description
group_membersgroup_id (FK), member_id (FK), role, joined_at
servicesid, name, service_date, type
attendanceid, service_id (FK), member_id (FK)UQ pair
fundsid, name, descriptionTithe, building fund...
contributionsid, member_id (FK, nullable), fund_id (FK), amount, method, given_at, recorded_by (FK)
pledgesid, member_id (FK), fund_id (FK), amount, due_date, fulfilled_amount
eventsid, title, description, start_time, end_time, venue
event_volunteersevent_id (FK), member_id (FK), task
expensesid, fund_id (FK), amount, description, approved_by (FK), spent_at
messages_sentid, group_id (FK), channel, body, sent_by (FK), sent_at

Project 29: Smart Farm Management and Agricultural Marketplace

Description

Helps small-scale farmers record fields, crops, planting dates, inputs, expenses, and harvests. It then connects them to buyers through a marketplace where produce can be listed with quantity, price, and location. The system gives farming calendars and weather alerts, and calculates profit per crop and per season.

Key Features

  • Farm, plot, and crop season records
  • Input, labor, and expense tracking with profit analysis
  • Livestock records (optional: vaccinations, breeding, milk and egg production)
  • Produce marketplace with buyer inquiries and orders
  • Weather API integration and planting reminders
  • SMS/USSD-friendly design for farmers with basic phones

Database Design

A farmer owns farms with plots. Each plot has crop seasons, with activities, costs, and harvests. Harvests can be listed for sale.

Tables

TableColumnsNotes
usersid, email/phone, password_hash, rolefarmer, buyer, extension_officer, admin
farmersid, user_id (FK), full_name, district, village, phone
farmsid, farmer_id (FK), name, size_acres, latitude, longitude
plotsid, farm_id (FK), name, size_acres, soil_type
cropsid, name, variety, growth_daysCatalog
crop_seasonsid, plot_id (FK), crop_id (FK), planting_date, expected_harvest, status
activitiesid, season_id (FK), type, description, activity_datePlanting, weeding, spraying
inputsid, name, type, unitSeeds, fertilizer, pesticide
input_usageid, season_id (FK), input_id (FK), quantity, cost
expensesid, season_id (FK), category, amount, spent_at
harvestsid, season_id (FK), quantity, unit, quality_grade, harvested_at
produce_listingsid, harvest_id (FK), farmer_id (FK), price_per_unit, quantity_available, pickup_location, status
buyer_ordersid, listing_id (FK), buyer_id (FK), quantity, total_price, status
livestockid, farm_id (FK), species, tag_no, dob, statusOptional module
advisory_messagesid, extension_officer_id (FK), crop_id (FK), message, sent_at

Project 30: Rental Property and Real Estate Management System

Description

Helps landlords and property agents manage buildings, units, tenants, leases, rent invoices, payments, and maintenance. Tenants get monthly invoices, pay through mobile money, and submit repair requests. Landlords see occupancy, arrears, and income per property. A public listing section advertises vacant units.

Key Features

  • Property and unit management with photos and amenities
  • Lease agreements with start/end dates and deposits
  • Automated monthly invoicing and arrears reminders
  • Payment tracking and receipts
  • Maintenance request workflow with contractor assignment
  • Public vacancy listings with inquiries

Database Design

Properties contain units. A lease links a tenant to a unit for a period. Invoices generate from leases; payments settle invoices.

Tables

TableColumnsNotes
usersid, email, password_hash, rolelandlord, agent, tenant, admin
propertiesid, owner_id (FK), name, address, latitude, longitude, type
unitsid, property_id (FK), unit_no, bedrooms, bathrooms, rent_amount, status
unit_imagesid, unit_id (FK), image_url
tenantsid, user_id (FK), full_name, national_id, phone, employer
leasesid, unit_id (FK), tenant_id (FK), start_date, end_date, rent_amount, deposit, status
invoicesid, lease_id (FK), period_month, amount, due_date, statusUQ(lease, period)
paymentsid, invoice_id (FK), amount, method, transaction_ref, paid_at
maintenance_requestsid, unit_id (FK), tenant_id (FK), description, priority, status, assigned_to (FK)
contractorsid, name, trade, phone
inquiriesid, unit_id (FK), name, phone, message, created_at
expensesid, property_id (FK), category, amount, description, spent_at
documentsid, lease_id (FK), type, file_urlSigned lease, ID copies

Project 31: Hotel and Guest House Booking System

Description

Online booking and front-desk management for hotels, lodges, and guest houses. Guests search availability by dates and room type, book and pay online. Staff handle check-in/out, housekeeping status, room service charges, and invoices. Includes dynamic pricing for seasons and weekends.

Key Features

  • Availability search and online reservation with payment
  • Room types, rate plans, and seasonal pricing
  • Front desk: check-in, check-out, and folio billing
  • Housekeeping task board
  • Extra services (laundry, restaurant, tours) charged to the room
  • Occupancy and revenue reports

Database Design

Room types have many rooms. Reservations hold room types/dates and are assigned physical rooms at check-in. Folios aggregate charges.

Tables

TableColumnsNotes
usersid, email, password_hash, roleguest, receptionist, housekeeper, manager
guestsid, user_id (FK, nullable), full_name, phone, id_number, nationality
room_typesid, name, description, capacity, base_price
roomsid, room_no (UQ), room_type_id (FK), floor, status, housekeeping_status
room_amenitiesid, room_type_id (FK), amenity
rate_plansid, room_type_id (FK), name, price, start_date, end_date, days_of_week
reservationsid, guest_id (FK), room_type_id (FK), check_in, check_out, adults, children, status, total, source
staysid, reservation_id (FK), room_id (FK), checked_in_at, checked_out_at
folio_chargesid, stay_id (FK), service_id (FK), description, amount, charged_at
servicesid, name, price
paymentsid, reservation_id (FK), amount, method, reference, paid_at
housekeeping_tasksid, room_id (FK), assigned_to (FK), task_type, status, completed_at
reviewsid, reservation_id (FK, UQ), rating, comment

Project 32: Restaurant Management and Table Reservation System

Description

Handles table reservations, in-house ordering through tablets or QR menus, a kitchen display screen, billing, and stock control of ingredients. Waiters take orders on a phone, the kitchen sees them in real time, and the cashier closes bills with split payments. Managers analyze best sellers and ingredient wastage.

Key Features

  • Digital menu with QR code per table
  • Table map and reservations
  • Kitchen display system (real-time via WebSockets)
  • Recipe-based ingredient deduction
  • Split bills, tips, and multiple payment methods
  • Daily sales and waste reports

Database Design

Orders belong to tables and contain items sent to kitchen stations. Menu items link to ingredients through recipes for automatic stock deduction.

Tables

TableColumnsNotes
usersid, email, password_hash, rolewaiter, chef, cashier, manager
tablesid, label, capacity, qr_code, status
reservationsid, table_id (FK), customer_name, phone, party_size, reserved_at, status
menu_categoriesid, name, stationKitchen, bar
menu_itemsid, category_id (FK), name, description, price, is_available
ingredientsid, name, unit, stock_qty, reorder_level
recipesmenu_item_id (FK), ingredient_id (FK), quantity_usedComposite PK
ordersid, table_id (FK), waiter_id (FK), status, opened_at, closed_at
order_itemsid, order_id (FK), menu_item_id (FK), quantity, unit_price, notes, kitchen_status
billsid, order_id (FK, UQ), subtotal, tax, tip, total, status
bill_paymentsid, bill_id (FK), amount, method, paid_atSupports split payment
suppliersid, name, phone
ingredient_purchasesid, supplier_id (FK), ingredient_id (FK), quantity, cost, purchased_at
waste_logsid, ingredient_id (FK), quantity, reason, logged_by (FK), logged_at

Project 33: Employee, HR and Payroll Management System

Description

Helps small and medium companies manage employee records, contracts, attendance, leave, overtime, salary structures, tax and social security deductions (e.g., PAYE and NSSF in Uganda), and monthly payslips. Employees log in to request leave, view payslips, and update personal details. HR approves leave and runs payroll in one click.

Key Features

  • Employee profiles, contracts, and documents
  • Clock-in/clock-out and shift scheduling
  • Leave types, balances, and approval workflow
  • Payroll engine with allowances, deductions, and statutory contributions
  • PDF payslips by email
  • Performance reviews and HR analytics

Database Design

Employees belong to departments and positions. Payroll runs generate one payslip per employee with itemized lines.

Tables

TableColumnsNotes
usersid, email, password_hash, roleemployee, manager, hr, admin
departmentsid, name, head_id (FK)
positionsid, title, department_id (FK), base_salary
employeesid, user_id (FK), employee_no (UQ), full_name, national_id, dob, phone, position_id (FK), hire_date, status, bank_account
contractsid, employee_id (FK), type, start_date, end_date, salary
employee_documentsid, employee_id (FK), type, file_url
attendanceid, employee_id (FK), date, clock_in, clock_out, hours_worked
leave_typesid, name, days_per_year, is_paid
leave_balancesemployee_id (FK), leave_type_id (FK), year, balance
leave_requestsid, employee_id (FK), leave_type_id (FK), start_date, end_date, status, approved_by (FK)
salary_componentsid, name, type, is_taxable, calculation_ruleallowance/deduction
employee_componentsemployee_id (FK), component_id (FK), amount
payroll_runsid, period_month, status, run_by (FK), run_at
payslipsid, run_id (FK), employee_id (FK), gross, deductions, tax, net
payslip_linesid, payslip_id (FK), component_id (FK), amount
performance_reviewsid, employee_id (FK), reviewer_id (FK), period, score, comments

Project 34: Child Immunization and Community Health Tracker

Description

Helps health centers and community health workers (CHWs) track children's vaccinations, pregnancy visits, and growth monitoring. The system schedules each child's vaccines based on the national immunization schedule, sends SMS reminders to caregivers, and flags defaulters. District health officers view coverage dashboards and vaccine stock levels.

Key Features

  • Child registration with vaccination schedule auto-generation
  • SMS reminders to caregivers and defaulter tracing lists
  • Antenatal care and growth (weight/height) monitoring charts
  • Vaccine stock per facility with wastage tracking
  • Offline-capable mobile web app for CHWs in the field
  • Coverage dashboards by district and facility

Database Design

Children have scheduled vaccinations derived from a vaccine schedule template. Administered doses are recorded against facility stock batches.

Tables

TableColumnsNotes
usersid, email, password_hash, rolechw, nurse, district_officer, admin
facilitiesid, name, level, district, latitude, longitude
chwsid, user_id (FK), facility_id (FK), village_assigned, phone
caregiversid, full_name, phone, village, relationship
childrenid, child_no (UQ), full_name, dob, gender, caregiver_id (FK), facility_id (FK), birth_weight
vaccinesid, name, disease_prevented, doses_required
schedule_templatesid, vaccine_id (FK), dose_no, age_in_weeksNational schedule
child_vaccinationsid, child_id (FK), vaccine_id (FK), dose_no, due_date, given_date, status, given_by (FK), batch_id (FK)
vaccine_batchesid, facility_id (FK), vaccine_id (FK), batch_no, expiry_date, quantity
growth_recordsid, child_id (FK), recorded_at, weight_kg, height_cm, muac
anc_visitsid, mother_id (FK), visit_no, visit_date, bp, weight, notesMothers table (optional)
remindersid, child_vaccination_id (FK), channel, send_at, status
defaulter_followupsid, child_id (FK), chw_id (FK), visited_at, outcome, notes

Project 35: Delivery and Boda-Boda Dispatch Platform

Description

A ride and parcel dispatch platform for motorbike (boda-boda) riders, couriers, and small delivery businesses. Customers request a delivery or ride, nearby riders get the request, and the customer follows the rider on a map. Fares are calculated from distance, and riders have wallets with earnings and commission deductions.

Key Features

  • Request creation with pickup/drop-off on a map
  • Nearest-rider matching and real-time tracking
  • Fare estimation by distance and time
  • Rider wallet, commission, and payouts
  • Ratings, trip history, and receipts
  • Admin: rider verification, pricing rules, and analytics

Database Design

A request becomes a trip when a rider accepts. Location pings and payments attach to trips; riders own wallets with ledgers.

Tables

TableColumnsNotes
usersid, phone, password_hash, rolecustomer, rider, admin
ridersid, user_id (FK), license_no, vehicle_plate, status, is_online, rating_avg, is_verified
rider_locationsid, rider_id (FK), latitude, longitude, updated_atIndex on rider_id
delivery_requestsid, customer_id (FK), type, pickup_address, pickup_lat, pickup_lng, drop_address, drop_lat, drop_lng, item_description, estimated_fare, status
tripsid, request_id (FK, UQ), rider_id (FK), accepted_at, picked_at, delivered_at, distance_km, final_fare
trip_trackingid, trip_id (FK), latitude, longitude, recorded_at
pricing_rulesid, base_fare, per_km, per_minute, surge_multiplier, active_from
paymentsid, trip_id (FK), amount, method, reference, status
walletsid, rider_id (FK, UQ), balance
wallet_transactionsid, wallet_id (FK), type, amount, trip_id (FK, nullable), created_at
payout_requestsid, rider_id (FK), amount, status, processed_at
ratingsid, trip_id (FK, UQ), customer_rating, rider_rating, comment

Project 36: Learning Management System (LMS) for Schools and Training Centers

Description

An online learning platform where instructors publish courses made of modules, video lessons, reading materials, assignments, and quizzes. Learners enroll, track progress, submit assignments, and earn verifiable certificates. Useful for secondary schools, vocational institutes, and corporate trainers.

Key Features

  • Course builder with modules, lessons, videos, and files
  • Quizzes and assignments with grading and feedback
  • Progress tracking and completion certificates (QR-verifiable)
  • Discussion forums per course
  • Paid courses with payment integration (optional)
  • Instructor analytics (completion rate, drop-off lessons)

Database Design

Courses have modules, which contain lessons. Enrollments track progress per lesson. Assessments hang off courses and modules.

Tables

TableColumnsNotes
usersid, email, password_hash, role, full_namelearner, instructor, admin
categoriesid, name
coursesid, instructor_id (FK), category_id (FK), title, description, price, level, status
modulesid, course_id (FK), title, position
lessonsid, module_id (FK), title, type, content_url, body, duration_min, positionvideo/text/file
enrollmentsid, course_id (FK), learner_id (FK), enrolled_at, status, completed_atUQ pair
lesson_progressenrollment_id (FK), lesson_id (FK), completed_atComposite PK
quizzesid, module_id (FK), title, pass_mark, time_limit
quiz_questionsid, quiz_id (FK), question_text, type
quiz_optionsid, question_id (FK), option_text, is_correct
quiz_attemptsid, quiz_id (FK), learner_id (FK), score, passed, attempted_at
assignmentsid, module_id (FK), title, instructions, due_date, max_score
assignment_submissionsid, assignment_id (FK), learner_id (FK), file_url, score, feedback, submitted_at
forum_threadsid, course_id (FK), author_id (FK), title, body
forum_repliesid, thread_id (FK), author_id (FK), body
certificatesid, enrollment_id (FK, UQ), certificate_no (UQ), issued_at
paymentsid, enrollment_id (FK), amount, method, reference

Project 37: NGO Project, Donor and Grant Management System

Description

Helps non-profit organizations manage donors, grants, projects, budgets, beneficiaries, and reporting. Program managers plan activities against budgets, field officers register beneficiaries and record services delivered, and finance tracks expenditure per donor. The system auto-generates donor reports with indicators and spending summaries.

Key Features

  • Donor and grant tracking with reporting deadlines
  • Project, activity, and budget-line management
  • Beneficiary registry and service delivery records
  • Expense recording against budget lines with approvals
  • Monitoring and evaluation (M&E) indicators and dashboards
  • Donor-specific report generation (PDF/Excel)

Database Design

Grants fund projects. Projects have budget lines and activities. Expenses draw from budget lines. Indicators measure results from activities.

Tables

TableColumnsNotes
usersid, email, password_hash, roleadmin, program_manager, finance, field_officer, donor_viewer
donorsid, name, type, contact_person, email
grantsid, donor_id (FK), title, amount, currency, start_date, end_date, reporting_frequency
projectsid, grant_id (FK), name, description, manager_id (FK), start_date, end_date, status
budget_linesid, project_id (FK), category, description, allocated_amount
expensesid, budget_line_id (FK), amount, description, receipt_url, spent_at, approved_by (FK), status
activitiesid, project_id (FK), title, planned_date, actual_date, status, location
beneficiariesid, beneficiary_no (UQ), full_name, gender, dob, village, district, phone
services_deliveredid, activity_id (FK), beneficiary_id (FK), service_type, delivered_at, officer_id (FK)
indicatorsid, project_id (FK), name, unit, baseline, target
indicator_valuesid, indicator_id (FK), period, actual_value, recorded_by (FK)
reportsid, grant_id (FK), period, status, generated_at, file_url
staff_timesheetsid, user_id (FK), project_id (FK), date, hours

Project 38: CRM and Invoicing System for SMEs

Description

A lightweight customer relationship management and invoicing tool for small businesses and freelancers. It tracks leads, customers, deals through a sales pipeline, quotes, invoices, and payments, and reminds staff to follow up. Owners see sales forecasts and overdue invoices at a glance.

Key Features

  • Lead capture forms and customer database
  • Kanban sales pipeline (lead, contacted, proposal, won, lost)
  • Quotes converted to invoices in one click
  • Recurring invoices and automatic overdue reminders
  • Payment tracking and PDF invoice emailing
  • Task and follow-up reminders with activity timeline

Database Design

Contacts belong to companies. Deals move through pipeline stages. Quotes and invoices are documents with line items and linked payments.

Tables

TableColumnsNotes
usersid, email, password_hash, roleowner, sales, accountant
companiesid, name, industry, website, address
contactsid, company_id (FK), full_name, email, phone, position, source
pipeline_stagesid, name, position, probability
dealsid, contact_id (FK), owner_id (FK), title, value, stage_id (FK), expected_close, status
activitiesid, deal_id (FK), contact_id (FK), type, note, due_at, done, created_by (FK)Calls, meetings
products_servicesid, name, description, unit_price, tax_rate
quotesid, deal_id (FK), quote_no (UQ), issue_date, valid_until, total, status
quote_itemsid, quote_id (FK), product_id (FK), quantity, unit_price
invoicesid, quote_id (FK, nullable), contact_id (FK), invoice_no (UQ), issue_date, due_date, total, balance, status, is_recurring
invoice_itemsid, invoice_id (FK), product_id (FK), quantity, unit_price
paymentsid, invoice_id (FK), amount, method, reference, paid_at
recurring_schedulesid, invoice_id (FK), frequency, next_run
email_logsid, invoice_id (FK), sent_to, sent_at, type

Project 39: Citizen Issue Reporting System for Local Government

Description

Lets residents report community problems such as potholes, broken water points, garbage, street lights, or insecurity by posting a photo and pin on a map. The report is routed to the right municipal department, which assigns a technician, updates the status publicly, and closes the case with proof of fix. Citizens can upvote existing reports to show priority.

Key Features

  • Report with photo, GPS pin, and category (mobile-friendly web or PWA)
  • Public map of issues with status colors
  • Upvoting and duplicate detection by location
  • Department routing, assignment, and SLA timers
  • Citizen notifications at each status change
  • Transparency dashboard (average fix time, per ward performance)

Database Design

Issues belong to categories and wards. Status history provides transparency, and updates carry photos before and after repair.

Tables

TableColumnsNotes
usersid, email/phone, password_hash, rolecitizen, officer, technician, admin
wardsid, name, district, boundary_geojson
departmentsid, name, head_id (FK)Roads, water, sanitation
issue_categoriesid, name, department_id (FK), sla_days
issuesid, reporter_id (FK), category_id (FK), ward_id (FK), title, description, latitude, longitude, status, priority, created_at
issue_imagesid, issue_id (FK), image_url, stagebefore/after
issue_votesissue_id (FK), user_id (FK)Composite PK
assignmentsid, issue_id (FK), technician_id (FK), assigned_by (FK), assigned_at, due_date
status_historyid, issue_id (FK), old_status, new_status, changed_by (FK), note, changed_at
commentsid, issue_id (FK), author_id (FK), body, is_public
duplicatesissue_id (FK), duplicate_of_id (FK)
notificationsid, user_id (FK), issue_id (FK), message, is_read

Project 40: Garage and Vehicle Fleet Management System

Description

Serves auto repair garages and companies with vehicle fleets. Garages record customer vehicles, job cards, parts used, mechanic time, and invoices; customers receive service reminders. Fleet owners track fuel, trips, drivers, insurance and license expiry, and maintenance costs per vehicle.

Key Features

  • Customer and vehicle records with service history
  • Job cards with labor, parts, and approval of quotes
  • Parts inventory and supplier purchases
  • Service reminders (by date or mileage) via SMS/email
  • Fleet module: drivers, trips, fuel logs, document expiry alerts
  • Cost-per-kilometer and downtime analytics

Database Design

Vehicles belong to customers or fleets. Job cards link a vehicle to tasks and parts used. Fleet trips and fuel logs link vehicles to drivers.

Tables

TableColumnsNotes
usersid, email, password_hash, roleadmin, service_advisor, mechanic, fleet_manager, customer
customersid, user_id (FK, nullable), full_name, phone, email, address, typeindividual/company
vehiclesid, customer_id (FK), plate_no (UQ), make, model, year, vin, color, current_mileage
job_cardsid, vehicle_id (FK), advisor_id (FK), opened_at, closed_at, complaint, status, mileage_in
job_tasksid, job_card_id (FK), description, mechanic_id (FK), labor_hours, labor_rate, status
partsid, part_no (UQ), name, unit_price, stock_qty, reorder_level
job_partsid, job_card_id (FK), part_id (FK), quantity, unit_price
suppliersid, name, phone
part_purchasesid, supplier_id (FK), part_id (FK), quantity, unit_cost, purchased_at
quotesid, job_card_id (FK), total, status, approved_at
invoicesid, job_card_id (FK, UQ), total, balance, status, issued_at
paymentsid, invoice_id (FK), amount, method, paid_at
service_remindersid, vehicle_id (FK), type, due_date, due_mileage, sent
driversid, full_name, license_no, license_expiry, phoneFleet module
fleet_tripsid, vehicle_id (FK), driver_id (FK), start_odometer, end_odometer, started_at, ended_at, purpose
fuel_logsid, vehicle_id (FK), driver_id (FK), litres, cost, odometer, filled_at
vehicle_documentsid, vehicle_id (FK), type, expiry_date, file_urlInsurance, inspection

Bonus: Guidance for Delivering a Strong Final Year Project

1. Suggested Development Timeline

PhaseDurationDeliverables
Requirements and research3-4 weeksProblem statement, interviews, user stories
Design3-4 weeksER diagram, UML (use case, sequence), wireframes
Core development10-14 weeksAuthentication, main modules, API
Advanced features4-6 weeksPayments, notifications, analytics
Testing3-4 weeksUnit, integration, and user acceptance testing
Deployment and documentation2-3 weeksLive system, user manual, final report

2. Database Design Best Practices to Demonstrate

  • Normalize to at least Third Normal Form (3NF) and explain any intentional denormalization.
  • Use foreign keys with sensible ON DELETE rules and indexes on columns used in searches and joins.
  • Add unique constraints to prevent duplicates (e.g., one registration per student per course).
  • Use transactions for multi-step operations such as payments and stock updates.
  • Keep audit tables for sensitive actions (grades, payments, medical records).
  • Use migrations (Prisma, Sequelize, Django, Laravel, Flyway) so the schema is version controlled.
  • Seed realistic test data for demos.

3. Features That Impress Examiners

  1. Role-based access control with a clear permissions matrix
  2. Real-time features (WebSockets or Server-Sent Events)
  3. Payment integration (Mobile Money or card, with webhook handling)
  4. Automated tests and a CI pipeline
  5. Dockerized deployment and a live URL
  6. Clear API documentation (Swagger/OpenAPI)
  7. Analytics dashboards with charts
  8. Security awareness: input validation, rate limiting, hashed passwords, protection against SQL injection, XSS, and CSRF

4. Documents Typically Required in the Final Report

  • Problem statement, objectives, scope, and significance
  • Literature review and review of existing systems
  • Methodology (Agile, Scrum, or Waterfall) and justification
  • System analysis: functional and non-functional requirements
  • System design: architecture diagram, ER diagram, UML diagrams, UI wireframes
  • Implementation details and code samples
  • Testing results (test cases and outcomes)
  • Conclusion, limitations, and recommendations for future work
  • References and appendices (user manual, sample screenshots)

5. Ranking by Difficulty (to Help You Choose)

LevelProjects
Beginner-friendly1 (Course Registration), 4 (Library), 7 (Lost and Found), 13 (Clearance), 18 (Complaints), 28 (Church/Community), 38 (CRM and Invoicing), 39 (Citizen Reports)
Intermediate2, 5, 6, 8, 9, 10, 11, 15, 16, 17, 19, 20, 21 (Pharmacy), 22 (Blood Donation), 23 (School), 25 (POS), 30 (Rental), 31 (Hotel), 32 (Restaurant), 34 (Immunization), 36 (LMS), 37 (NGO), 40 (Garage and Fleet)
Advanced3 (Online Exams with proctoring), 12 (Live Transport Tracking), 14 (Timetable Scheduler), 24 (Hospital Management), 26 (Telemedicine), 27 (SACCO Loans Engine), 29 (Smart Farm and Marketplace), 33 (HR and Payroll), 35 (Dispatch Platform)

6. Choosing a Project That Can Become a Real Business

Projects 21 to 40 are especially good if you want your final year project to continue after graduation. Ask yourself:

  • Is there a paying customer? Pharmacies, clinics, shops, SACCOs, schools, and hotels all pay for software that saves them time or money.
  • Can I run a pilot? Visit a nearby pharmacy, school, or clinic early in your project and agree to test with them. Real feedback and a signed letter from a client strengthen your defense.
  • Is data privacy handled properly? Health and finance systems (21, 22, 24, 26, 27, 34) hold sensitive data. Show encryption, access control, and audit logs.
  • Does it work in low-connectivity environments? For community and rural systems (22, 25, 29, 34), consider offline-first design, SMS/USSD support, and lightweight pages.
  • Can I package it as a subscription (SaaS)? A multi-tenant design (a tenant_id or organization_id on every table) lets one deployment serve many shops, schools, or clinics.

Tip: Multi-Tenancy in Your Database Design

For business projects, add an organizations (or tenants) table and include organization_id as a foreign key in the main tables. This shows examiners you understand SaaS architecture:

ApproachDescriptionBest for
Shared database, shared schemaOne set of tables with organization_id on rowsSimplest; most student projects
Shared database, separate schemasOne schema per customer in PostgreSQLStronger isolation
Separate databasesOne database per customerHighest isolation; more operational work

Final Tip

Pick the project where you can reach real users and real data. A modest system that students or staff actually use is far more impressive than an ambitious system that only exists on your laptop. Whatever you choose, start by drawing the ER diagram, because a good database design makes everything else easier.

Good luck with your final year project!