A Student Collaboration Platform for Sharing Educational Resources
5th Semester Web Programming Project - BS Computer Science
Features • Installation • Usage • Technologies • Screenshots
- About the Project
- Features
- Technologies Used
- System Requirements
- Installation
- Database Setup
- Project Structure
- Usage
- Security Features
- Future Enhancements
- Contributing
- Author
- Acknowledgments
Project Stream is a web-based educational platform developed as a semester project for the 5th semester Web Programming course at the University of Agriculture, PARS Campus, Faisalabad. The platform addresses the challenge of efficient resource sharing among students by providing a centralized system for uploading, viewing, and managing educational materials.
In academic settings, students often struggle with accessing and sharing lecture notes, study materials, and resources efficiently. Traditional methods like email attachments or physical copies are cumbersome and prone to loss. Project Stream solves this by offering a secure, user-friendly web portal where students can:
- Register and manage their profiles
- Upload and share study materials
- Access shared documents from peers
- Manage their personal uploads with full CRUD operations
- Course: Web Programming
- Semester: 5th (Morning Section)
- Session: 2025-2026
- Institution: University of Agriculture, PARS Campus, Faisalabad
- Date: December 24, 2025
- Secure Registration - Create account with username, email, password, bio, and address
- Login System - Session-based authentication with security checks
- Password Management - Reset password through dashboard
- Logout - Secure session termination
- Upload Posts - Share lecture notes with title, description, and file attachments
- Supported File Types:
- Documents: PDF, DOCX, TXT, CPP
- Archives: RAR, ZIP
- Spreadsheets: XLSX
- Images: JPG, PNG, GIF
- View All Documents - Browse all shared resources with visual file type icons
- Personal Management - Edit and delete your own uploads
- File Size Limit - Up to 10MB per file
- Profile Customization
- Upload/change profile picture
- Update email address
- Edit bio and personal information
- Modify contact details and address
- Personal Statistics - View your uploaded files count
- Account Management - Comprehensive profile control panel
- Clean & Intuitive Design - Custom CSS with image-based themes
- Responsive Navigation - Consistent header and footer across pages
- Visual File Icons - Easy identification of file types
- Interactive Forms - Client-side validation with JavaScript/jQuery
- PHP 7.4+ - Server-side scripting and business logic
- MySQL 5.7+ - Relational database management
- phpMyAdmin - Database administration interface
- HTML5 - Semantic page structure
- CSS3 - Custom styling and responsive design
- JavaScript - Client-side interactivity
- jQuery 1.9.1 - DOM manipulation and AJAX
- XAMPP - Local development server (Apache + MySQL + PHP)
- Apache Server - Web server
- VSCode - Code editor (recommended)
- MVC Pattern - Separation of concerns
- Session Management - Secure user state handling
- PDO/MySQLi - Database abstraction layer
- File System - Organized directory structure
- XAMPP (or equivalent LAMP/WAMP stack)
- PHP version 7.4 or higher
- MySQL version 5.7 or higher
- Apache web server
- Minimum 100MB disk space
- Modern Web Browser
- Google Chrome (recommended)
- Mozilla Firefox
- Microsoft Edge
- Safari
- JavaScript enabled
- Cookies enabled
Follow these steps to set up Project Stream on your local machine:
# Clone this repository
git clone https://github.com/YOUR-USERNAME/project-stream.git
# Navigate to the project directory
cd project-stream# Copy the project to xampp/htdocs folder
# Windows:
C:\xampp\htdocs\project-stream
# Linux:
/opt/lampp/htdocs/project-stream
# macOS:
/Applications/XAMPP/htdocs/project-stream- Open XAMPP Control Panel
- Start Apache server
- Start MySQL server
Create these directories if they don't exist:
project-stream/
├── members/ (for user profile pictures)
└── posts/
└── files/ (for uploaded documents)
- Open your browser and navigate to:
http://localhost/phpmyadmin - Click "New" to create a new database
- Name it:
project_stream(or your preferred name) - Set collation to:
utf8mb4_unicode_ci - Click "Import" tab
- Choose the file:
database/database.sqlfrom the project folder - Click "Go" to import
# Login to MySQL
mysql -u root -p
# Create database
CREATE DATABASE project_stream;
# Use the database
USE project_stream;
# Import the SQL file
SOURCE path/to/project-stream/database/database.sql;
# Exit
exit;The database includes three main tables:
-
tblmembers - Stores user account information
- memberid (Primary Key)
- memberfirstname, memberlastname
- memberusername, memberemail
- memberpassword (hashed)
- memberphone, memberaddress
- memberpicture, memberbio
-
tblfiles - Stores uploaded file information
- fileid (Primary Key)
- filename, filepath
- userid (Foreign Key)
- uploaddate
-
tblposts - Stores post/document details
- postid (Primary Key)
- posttitle, postdescription
- userid (Foreign Key)
- created_at
project-stream/
│
├── database/
│ └── database.sql # Database schema and structure
│
├── includes/
│ ├── config.php # Configuration settings (create from config-sample.php)
│ ├── connect.php # Database connection
│ ├── header.php # Common header
│ ├── footer.php # Common footer
│ ├── chk-session.php # Session validation
│ ├── top-member.php # Member navigation
│ └── upload-picture.php # Picture upload handler
│
├── members/
│ └── {username}/ # User-specific folders for profile pictures
│
├── posts/
│ └── files/ # Uploaded documents storage
│
├── images/
│ ├── files-icons/ # File type icons
│ └── Background-Screen1.jpg # UI backgrounds
│
├── index.php # Login page
├── register.php # Registration page
├── front.php # Main dashboard after login
├── dashboard.php # User profile management
├── files.php # View all uploaded files
├── sign-out.php # Logout handler
├── signin.css # Authentication styling
│
├── .gitignore # Git ignore rules
└── README.md # This file
Open your web browser and navigate to:
http://localhost/project-stream
- Click on "Register Free" link
- Fill in the registration form:
- First Name
- Last Name
- Email Address
- Password
- Confirm Password
- Click "Register" button
- You'll be automatically logged in
- Enter your email address
- Enter your password
- Click "Login" button
- After login, navigate to Upload Post section
- Enter post title and description
- Choose a file (PDF, DOCX, TXT, etc.)
- Click "Upload"
- Go to "All Files" section
- Browse all uploaded documents
- Click "Download" to access any file
- View file type through visual icons
- Click on "Dashboard"
- Available options:
- Basic Information - Update name, phone, address, bio
- Update Picture - Upload profile photo
- Reset Password - Change your password
- Change Email - Update email address
- Files Uploaded By You - View your uploads
- Navigate to "My Posts"
- Edit or delete your uploaded documents
- View statistics of your contributions
- ✅ Session Management - Secure user sessions with
chk-session.php - ✅ Password Hashing - Passwords stored securely (Note: Current version needs upgrade to
password_hash()) - ✅ Login Validation - Server-side credential verification
- ✅ SQL Injection Prevention - Using
real_escape_string()and prepared statements - ✅ XSS Protection - HTML special characters sanitization
- ✅ File Upload Validation - MIME type checking and file extension verification
- ✅ Protected Pages - Session checks on all authenticated pages
- ✅ User Isolation - Users can only edit/delete their own content
- ✅ Directory Permissions - Proper folder permissions for uploads
The current version has some security aspects that should be improved before production deployment:
- Upgrade Password Storage - Implement
password_hash()andpassword_verify() - Use Prepared Statements - Replace all direct SQL queries with PDO prepared statements
- Add CSRF Protection - Implement tokens for forms
- Enhance File Validation - Add more robust file type checking
- SSL/HTTPS - Use encrypted connections in production
- Search & Filter - Search documents by title, type, or author
- Categories/Tags - Organize documents by subject/topic
- Notifications - Email alerts for new uploads
- Admin Panel - Moderate content and manage users
- Download Statistics - Track file downloads
- Comments Section - Discussion on shared documents
- Rating System - Rate quality of shared materials
- Cloud Deployment - Deploy on Heroku, AWS, or DigitalOcean
- Mobile Responsiveness - Optimize for mobile devices
- RESTful API - Enable mobile app integration
- Real-time Updates - WebSocket for live notifications
- CDN Integration - Faster file delivery
- Two-Factor Authentication - Enhanced security
- Modern Framework - Migrate to Bootstrap or Tailwind CSS
- Dark Mode - Theme switching option
- Drag & Drop Upload - Improved file upload experience
- Progress Bars - Visual upload progress
- Advanced Dashboard - Analytics and insights
This is an academic project, but contributions and suggestions are welcome!
-
Fork the Repository
git clone https://github.com/YOUR-USERNAME/project-stream.git
-
Create a Feature Branch
git checkout -b feature/AmazingFeature
-
Commit Your Changes
git commit -m 'Add some AmazingFeature' -
Push to the Branch
git push origin feature/AmazingFeature
-
Open a Pull Request
- Follow the existing code style
- Add comments for complex logic
- Test thoroughly before submitting
- Update documentation as needed
Muhammad Zain-ul-Abidin
- Registration Number: 2023-ag-8037
- Program: BS Computer Science (BSCS)
- Semester: 5th Morning Section
- Session: 2025-2026
- Institution: University of Agriculture, PARS Campus, Faisalabad
- GitHub: @YOUR-GITHUB-USERNAME
- LinkedIn: Your LinkedIn Profile
- Email: your.email@example.com
Special thanks to:
- University of Agriculture, Faisalabad - For providing the educational environment
- Department of Computer Science - For guidance and support
- Web Programming Course Instructor - For valuable feedback and mentorship
- Classmates - For testing and suggestions
- Open Source Community - For excellent documentation and resources
- PHP Official Documentation
- MySQL Documentation
- jQuery API Documentation
- XAMPP Installation Guide
- W3Schools Web Tutorials
This project is created for educational purposes as part of the BS Computer Science curriculum at the University of Agriculture, Faisalabad.
MIT License
Copyright (c) 2025 Muhammad Zain-ul-Abidin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
If you encounter any issues or have questions:
- Check Documentation - Review this README thoroughly
- Check Issues - Browse existing GitHub issues
- Create New Issue - Submit a detailed bug report or feature request
- Contact Author - Reach out via email for academic queries
- ✅ Phase 1: Core Features - COMPLETED
- ✅ Phase 2: User Authentication - COMPLETED
- ✅ Phase 3: File Management - COMPLETED
- ✅ Phase 4: Dashboard - COMPLETED
- 🔄 Phase 5: Security Enhancements - IN PROGRESS
- ⏳ Phase 6: Deployment - PLANNED
Made with ❤️ for the Student Community
Project Stream - Connecting Students Through Knowledge Sharing
Last Updated: February 2026
Version: 1.0.0
Status: Active Development