Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 INNOFORUM

Ignite Innovation • Connect Minds • Shape the Future

Modern Academic Discussion Platform built with Laravel.

Platform Laravel PHP MySQL Vite Composer License Status

Last Commit Repo Size Top Language Languages Stars Forks

A comprehensive academic discussion forum built with Laravel, designed specifically for Indonesian educational institutions to foster community engagement between students and lecturers.

Built with modern tools & technologies:

✨ About INNOFORUM

INNOFORUM is a modern academic discussion platform developed using Laravel, designed to facilitate communication between students, lecturers, and administrators through an interactive and secure discussion environment.

Key Highlights

  • 🎓 Academic Discussion Platform
  • 🔐 Multi-role Authentication
  • 📧 Email OTP Verification
  • 📝 Thread & Comment System
  • ❤️ Like & Notification System
  • 🛡 Admin Dashboard
  • 📱 Responsive UI
  • ⚡ Built with Laravel 12 + Tailwind CSS

📈 Project Overview

Item Value
🚀 Framework Laravel 12
💻 Language PHP 8.2
🎨 Frontend Tailwind CSS + Vite
🗄 Database SQLite / MySQL
📄 License MIT
👨‍💻 Team 2 Developers
⏱ Duration 4 Months

📖 Table of Contents


🔎 Overview

INNOFORUM is a feature-rich discussion platform that facilitates academic discussions and knowledge sharing within campus communities. The system supports role-based access control, real-time notifications, content moderation, and comprehensive user management.


📚 Academic Context

This project was developed as a semester-long assignment for PPW (Perancangan dan Pemrograman Web) course, demonstrating comprehensive web development skills using modern technologies and best practices.

Learning Objectives Achieved

  • Full-Stack Development: Complete Laravel application with frontend integration
  • Database Design: Comprehensive ERD implementation with proper relationships
  • Authentication & Authorization: Role-based access control system
  • Real-time Features: Notifications and dynamic user interactions
  • Code Quality: PSR-12 standards and testing implementation
  • Deployment: Production-ready application structure

Technical Skills Demonstrated

  • Backend: PHP 8.2+, Laravel 12, Eloquent ORM, Middleware
  • Frontend: Tailwind CSS, Alpine.js, Vite, Responsive Design
  • Database: SQLite/MySQL, Migrations, Seeders, Relationships
  • Security: CSRF Protection, Input Validation, OTP Verification
  • Architecture: MVC Pattern, Service Layer, Repository Pattern

📅 Development Timeline

  • Week 1-2: Project planning, requirements analysis, ERD design
  • Week 3-4: Laravel setup, authentication system, database design
  • Week 5-6: Core forum functionality, user management
  • Week 7-8: Admin panel, content moderation, notifications
  • Week 9-10: Frontend enhancement, responsive design
  • Week 11-12: Testing, debugging, documentation
  • Week 13-14: Final optimization, deployment preparation

📋 Course Requirements Fulfilled

✅ Mandatory Requirements

  • MVC Architecture: Proper separation of concerns
  • Database Integration: Complex relational database design
  • User Authentication: Complete auth system with roles
  • CRUD Operations: Full create, read, update, delete functionality
  • Form Validation: Client and server-side validation
  • File Upload: Image handling for profiles and comments
  • Session Management: Secure session handling
  • Responsive Design: Mobile-friendly interface

✅ Additional Features

  • Real-time Notifications: Dynamic user alerts
  • Email Integration: OTP verification system
  • Advanced Search: Filter and search functionality
  • Admin Dashboard: Complete management interface
  • Content Moderation: Report and moderation system
  • API-ready Structure: RESTful design principles
  • Testing Suite: Unit and feature tests
  • Modern Frontend: Vite, Tailwind CSS, Alpine.js

✨ Features

Feature Description Status
🔐 Authentication Login, Register & OTP Verification
👤 Role Management Student, Lecturer & Admin Roles
💬 Discussion Forum Create, Edit & Delete Threads
❤️ Like & Comment Interactive Discussion System
🔔 Notifications Real-time User Notifications
📂 Categories Manage Discussion Categories
🛡️ Admin Dashboard User & Content Management
📱 Responsive UI Desktop & Mobile Friendly

📋 Prerequisites

Before installation, ensure you have:

  • PHP 8.2 or higher
  • Composer - PHP dependency manager
  • Node.js & NPM - For frontend asset compilation
  • SQLite - Default database (configurable to MySQL/PostgreSQL)
  • Web Server - Apache/Nginx or use Laravel's built-in server

🚀 Installation

1. Clone Repository

git clone https://github.com/SmileyTherow/INNOFORUM.git

2. Install Dependencies

# Install PHP dependencies
composer install

# Install Node.js dependencies
npm install

3. Environment Setup

# Copy environment file
cp .env.example .env

# Generate application key
php artisan key:generate

# Create SQLite database file (if using SQLite)
touch database/database.sqlite

4. EnviConfigure Environment

Edit .env file with your settings:

APP_NAME=INNOFORUM
APP_ENV=local
APP_KEY=base64:your-generated-key
APP_DEBUG=true
APP_URL=http://localhost:8000

# Database Configuration (SQLite default)
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database/database.sqlite

# Mail Configuration (required for OTP)
MAIL_MAILER=smtp
MAIL_HOST=your-smtp-host
MAIL_PORT=587
MAIL_USERNAME=your-email
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

5. Database Migration

# Run migrations
php artisan migrate

# (Optional) Seed with sample data
php artisan db:seed

6. Build Assets

# Development build with hot reload
npm run dev

# Production build
npm run build

7. Start Development Server

# Method 1: Using Laravel's built-in server
php artisan serve

# Method 2: Using the dev script (recommended)
composer run dev

Visit http://localhost:8000 to access the application.


🗂️ Project Structure

INNOFORUM/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Admin/                          # Admin-specific controllers
│   │   │   │   ├── AdminAnnouncementController.php
│   │   │   │   ├── AdminCategoryController.php
│   │   │   │   ├── AdminCommentController.php
│   │   │   │   ├── AdminUserController.php
│   │   │   │   ├── AdminThreadController.php
│   │   │   │   ├── AdminStatsController.php
│   │   │   │   └── DashboardController.php
│   │   │   ├── Auth/                           # Authentication controllers
│   │   │   │   ├── AdminLoginController.php
│   │   │   │   ├── AuthenticatedSessionController.php
│   │   │   │   ├── OtpController.php
│   │   │   │   ├── PasswordController.php
│   │   │   │   └── VerifyEmailController.php
│   │   │   ├── AuthController.php              # Main auth & registration logic
│   │   │   ├── QuestionController.php          # Forum questions/threads
│   │   │   ├── CommentController.php           # Comments with image upload
│   │   │   ├── NotificationController.php      # User notifications
│   │   │   ├── UserController.php              # Profile management
│   │   │   ├── ReportController.php            # Content reporting
│   │   │   └── ContactController.php           # Contact form
│   │   ├── Middleware/
│   │   │   ├── AdminMiddleware.php             # Admin access control
│   │   │   ├── RoleMiddleware.php              # Role-based permissions
│   │   │   ├── ForceNimSession.php             # NIM validation session
│   │   │   └── MahasiswaDosenMiddleware.php    # Student/lecturer access
│   │   └── Requests/                           # Form validation
│   │       ├── Auth/LoginRequest.php
│   │       └── ProfileUpdateRequest.php
│   ├── Models/
│   │   ├── User.php                            # User with roles & OTP
│   │   ├── Question.php                        # Forum questions/threads
│   │   ├── Comment.php                         # Comments with images
│   │   ├── Notification.php                    # Real-time notifications
│   │   ├── Category.php                        # Question categories
│   │   ├── Hashtag.php                         # Thread hashtags
│   │   ├── Report.php                          # Content reports
│   │   ├── Announcement.php                    # Admin announcements
│   │   └── UserProfile.php                     # Extended user profiles
│   ├── Mail/                                   # Email classes
│   │   ├── UserOtpMail.php                     # OTP verification emails
│   │   ├── TestEmail.php                       # Email testing
│   │   └── PasswordConfirmationMail.php        # Password confirmations
│   └── Livewire/                               # Dynamic components
│       └── Admin/UserTable.php                 # Admin user management
├── database/
│   ├── migrations/                             # 25+ migration files
│   │   ├── create_users_table.php
│   │   ├── create_questions_table.php
│   │   ├── create_comments_table.php
│   │   ├── create_notifications_table.php
│   │   ├── create_categories_table.php
│   │   ├── create_hashtags_table.php
│   │   └── ...
│   ├── seeders/                                # Database seeding
│   │   ├── UserSeeder.php
│   │   ├── DataNimSeeder.php
│   │   └── DatabaseSeeder.php
│   └── factories/
│       └── UserFactory.php                     # Test data generation
├── resources/
│   ├── views/
│   │   ├── admin/                              # Admin dashboard views
│   │   │   ├── users/                          # User management
│   │   │   ├── categories/                     # Category management
│   │   │   ├── comments/                       # Comment moderation
│   │   │   ├── threads/                        # Thread management
│   │   │   └── dashboard.blade.php
│   │   ├── auth/                               # Authentication forms
│   │   │   ├── login_admin.blade.php
│   │   │   ├── login_register_mahasiswa.blade.php
│   │   │   ├── login_register_dosen.blade.php
│   │   │   ├── nim_or_nigm.blade.php
│   │   │   ├── user_otp.blade.php
│   │   │   └── otp_admin.blade.php
│   │   ├── questions/                          # Forum views
│   │   │   ├── create.blade.php
│   │   │   ├── show.blade.php
│   │   │   └── index.blade.php
│   │   ├── profile/                            # User profiles
│   │   ├── components/                         # Reusable components
│   │   ├── layouts/                            # Base layouts
│   │   └── dashboard.blade.php                 # Main dashboard
│   ├── js/
│   │   ├── app.js                              # Alpine.js initialization
│   │   ├── bootstrap.js                        # Axios configuration
│   │   └── role-handler.js                     # Dynamic form handling
│   └── css/
│       └── app.css                             # Tailwind CSS main file
├── routes/
│   ├── web.php                                 # All web routes
│   ├── auth.php                                # Authentication routes
│   └── console.php                             # Artisan commands
├── public/
│   ├── css/                                    # Compiled stylesheets
│   ├── js/                                     # Compiled JavaScript
│   ├── storage/                                # File uploads (symlinked)
│   └── admin/                                  # Admin template assets
├── storage/
│   ├── app/public/                             # File uploads
│   │   ├── photo/                              # User profile photos
│   │   ├── comment_images/                     # Comment images
│   │   └── question_images/                    # Question attachments
│   └── logs/                                   # Application logs
├── tests/
│   ├── Feature/                                # Feature tests
│   │   └── Auth/                               # Authentication tests
│   └── Unit/                                   # Unit tests
├── composer.json                               # PHP dependencies
├── package.json                                # Node.js dependencies
├── vite.config.js                              # Vite build configuration
└── database.sqlite                             # SQLite database file

📊 System Design

Database Schema (ERD)

The database design follows a comprehensive relational model supporting all forum features:

Database ERD

Key Relationships:

  • UsersQuestions (1:N) - Users can create multiple questions
  • UsersComments (1:N) - Users can post multiple comments
  • QuestionsComments (1:N) - Questions can have multiple comments
  • UsersNotifications (1:N) - Users receive multiple notifications
  • QuestionsHashtags (N:M) - Questions can have multiple hashtags
  • CategoriesQuestions (1:N) - Categories contain multiple questions

Use Case Diagram

System functionality is organized around three main user roles:

Use Case Diagram

Actor Roles:

  • Admin: Complete system management, user moderation, content oversight
  • Mahasiswa (Student): Forum participation, profile management, notifications
  • Dosen (Lecturer): Enhanced forum access, student interaction, content creation

🎮 Usage Guide

For Students & Lecturers

1. Registration Process:

- NIM/NIDM Validation: Enter your student/lecturer ID
- Complete Registration: Fill out the registration form
- Email Verification: Enter the OTP code sent to your email
- Profile Completion: Add additional profile information
- Login: Access the forum with your credentials

2. Using the Forum:

- Browse Discussions: View threads by category or hashtags
- Create Threads: Start new discussions with rich content
- Comment & Interact: Reply to threads, upload images, mention users
- Notifications: Receive alerts for interactions and announcements

For Administrators

1. Access Admin Panel:

- Special Validation: Use admin code (404039582) during NIM validation, otp (2531) and password (admin12345)
- OTP Verification: Enter OTP code from database
- Admin Login: Use admin credentials to access dashboard

2. Admin Features:

- User Management: Create, edit, delete, and manage user accounts
- Content Moderation: Review reports, moderate discussions
- System Administration: Manage categories, send announcements
- Analytics: View platform statistics and user activity

⚙️ Configuration

Mail Configuration (Required for OTP)

Configure SMTP settings in .env:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

Database Options

SQLite (Default):

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database/database.sqlite

MySQL:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=innoforum
DB_USERNAME=root
DB_PASSWORD=your-password

PostgreSQL:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=innoforum
DB_USERNAME=postgres
DB_PASSWORD=your-password

🧪 Development

Code Style This project follows PSR-12 coding standards.

# Check code style
composer check-style

# Fix code style
composer fix-style

Asset Compilation

# Development with hot reload
npm run dev

# Production build
npm run build

# Watch for changes
npm run watch

Testing

# Run all tests
composer test
# or
php artisan test

# Run specific test suite
vendor/bin/phpunit --testsuite=Feature


### Maintenance Mode
When deploying or performing maintenance, use the following commands:

**Activate Maintenance Mode (Display 404 Error):**
```bash
php artisan down

Deactivate Maintenance Mode (Resume Normal Operation):

php artisan up

Maintenance Mode with Custom Message:

php artisan down --message="System Maintenance - Please try again later"

Maintenance Mode with Custom Retry After (in seconds):

php artisan down --retry=60

Note: When the application is in maintenance mode, all users will see a maintenance message and the application will display a 404 error instead of normal responses.


Common Artisan Commands
```bash
# Clear all caches
php artisan optimize:clear

# Create a new model with migration and controller
php artisan make:model ModelName -mc

# Run specific migrations
php artisan migrate --path=/database/migrations/specific_migration.php

# Create new seeder
php artisan make:seeder SeederName

# Create new controller
php artisan make:controller ControllerName

# Create new middleware
php artisan make:middleware MiddlewareName

🔧 Troubleshooting

Common Issues

1. Permission Issues

# Fix storage and cache permissions
chmod -R 775 storage/
chmod -R 775 bootstrap/cache/
chown -R www-data:www-data storage/
chown -R www-data:www-data bootstrap/cache/

2. Database Connection Issues

# For SQLite, ensure file exists and is writable
touch database/database.sqlite
chmod 664 database/database.sqlite

# Clear configuration cache
php artisan config:clear
php artisan cache:clear

3. Asset Compilation Issues

# Clear Node modules and reinstall
rm -rf node_modules/
rm package-lock.json
npm install

# Clear Vite cache
rm -rf node_modules/.vite
npm run build

4. OTP/Email Issues

- Verify SMTP credentials in .env
- Check if emails are going to spam folder
- Test mail configuration: php artisan tinker then
```bash
Mail::raw('Test', function($m) { $m->to('test@example.com')->subject('Test'); });
```

5. Session Issues

# Clear sessions and cache
php artisan session:table
php artisan migrate
php artisan cache:clear
php artisan config:clear

🤝 Contributing

We welcome contributions! Please follow these guidelines:

1. Getting Started

- Fork the repository
- Create a feature branch: git checkout -b feature/amazing-feature
- Make your changes following our coding standards
- Write/update tests for new functionality
- Commit your changes: git commit -m 'Add amazing feature'
- Push to the branch: git push origin feature/amazing-feature
- Open a Pull Request

2. Development Guidelines

- Follow PSR-12 coding standards
- Write meaningful commit messages
- Update documentation for new features
- Ensure all tests pass before submitting PR
- Use descriptive variable and method names
- Comment complex logic appropriately

3. Code Review Process

- All submissions require review
- Maintain backward compatibility when possible
- Follow existing architectural patterns
- Ensure responsive design for frontend changes

👥 Team

Core Contributors

Foto Name Role Responsibilities Contact
Data Thread Ahmad Zidan Tamimy Team Leader & Backend Developer • System architecture
• Backend development
• Database design
• Authentication system
• Role-based access control
ahmadzidantammimy@gmail.com
Data Thread Agni Fatya Kholila Documentation & Frontend Developer • Project documentation
• Frontend implementation
• UI/UX design
• Project reporting
• User interface components
agnifatyakholila@gmail.com

Project Statistics

Metric Value
Lines of Code 15,000+
Development Time 4 months
Technologies Used 8+
Features Implemented 20+

Contribution Guidelines

We welcome contributions from the community! Here's how different types of contributors can help:

Contributor Type How to Help Skills Needed
Developers Code features, fix bugs, improve performance PHP, Laravel, JavaScript, CSS
Designers UI/UX improvements, icons, layouts Design tools, CSS, User experience
Testers Report bugs, test new features Attention to detail, various devices
Documenters Improve docs, write tutorials Technical writing, markdown
Translators Add language support Native language skills

Contact Information

Type Details
Primary Contact ahmadzidantammimy@gmail.com
Secondary Contact agnifatyakholila@gmail.com
GitHub Issues Report bugs here
GitHub Discussions Community discussions
Response Time Usually within 24-48 hours

📄 License

This project is licensed under the MIT License.

MIT License

Copyright (c) 2024 Ahmad Zidan Tamimy & Agni Fatya Kholila

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.

You are free to:

  • ✅ Use the software for any purpose
  • ✅ Modify the source code
  • ✅ Distribute copies
  • ✅ Include in commercial projects

Conditions:

  • 📋 Include the original license and copyright notice
  • 📋 State changes made to the original code

📞 Support

For questions, issues, or support:

Before Asking for Help

  1. Check the Troubleshooting section
  2. Search existing Issues
  3. Provide detailed information about your environment and the issue

🚀 Roadmap

Current Version Features

  • ✅ Role-based authentication system
  • ✅ Discussion threads with categories
  • ✅ Comment system with image uploads
  • ✅ Real-time notifications
  • ✅ Admin dashboard and user management
  • ✅ Email OTP verification
  • ✅ Content moderation tools

Planned Features

  • 🔄 Real-time chat functionality
  • 🔄 Mobile-responsive improvements
  • 🔄 Advanced search with filters
  • 🔄 File attachment support
  • 🔄 Integration with academic systems
  • 🔄 API for third-party integrations
  • 🔄 Enhanced analytics dashboard
  • 🔄 Multi-language support

Future Considerations

  • 📱 Mobile app development
  • 🔗 Single Sign-On (SSO) integration
  • 📊 Advanced reporting features
  • 🎨 Theme customization
  • 🔌 Plugin system

🙏 Acknowledgments

  • Laravel Framework: For providing an excellent foundation for web development
  • Tailwind CSS: For the utility-first CSS framework
  • Alpine.js: For lightweight JavaScript interactions
  • Livewire: For seamless PHP-JavaScript integration
  • Vite: For fast and modern build tooling
  • Open Source Community: For inspiration, tools, and continuous learning

🔒 Security Features

  • CSRF Protection: All forms protected
  • XSS Prevention: Input sanitization
  • SQL Injection: Eloquent ORM protection
  • Authentication: Secure password hashing
  • Email Verification: OTP-based verification
  • Role-based Access: Granular permissions
  • File Upload Security: Type and size validation

📱 Responsive Preview

INNOFORUM is fully responsive and optimized for Desktop, Tablet, and Mobile devices.

🖼 Screenshots

🛡 Admin Dashboard

Dashboard User Management Categories
Thread Management Comment Management Login Admin

👨‍🎓 User Pages

Forum Create Thread Discussion
Contact Student Profile Lecturer Profile
Edit Student Edit Lecturer Complete Profile

🔐 Authentication

Login Register Student Register Lecturer

🔑 Verification

NIM / NIDN Validation OTP User OTP Admin

📽 Demo & Roadmap Visual

Berikut adalah Live Demo, System Workflow, Project Roadmap, and Database Design., roadmap proyek & DataBase INNOFORUM:

🎬 Live Demo

Demo Video: Live demo

🔄 System Flow

System Flow

🗺 Roadmap Proyek

Roadmap INNOFORUM

🗄 DataBase

Roadmap INNOFORUM


📚 Academic Project Details

Course Information:

  • Subject: PPW (Perancangan dan Pemrograman Web) and PPWL (Perancangan dan Pemrograman Web Lanjut)
  • Duration: 1 Semester (15 weeks) PPW and 1 Semester (15 weeks) PPWL
  • Academic Year: 2025
  • Institution: STTI NIIT I TECH
  • Faculty: Teknik Informatika
  • Supervising Lecturer: Anjeng Puspita Ningrum, S.Kom and DESI SIHAMITA, S.KOM

Learning Outcomes Demonstrated:

  • Advanced Laravel framework implementation
  • Database design and relationship management
  • Authentication and authorization systems
  • Modern frontend development practices
  • Project management and documentation skills

Project Scope: This project was developed to fulfill the final assignment requirements for Web Programming course, demonstrating comprehensive full-stack development skills.

Technical Achievement: Successfully implemented a complete forum system using Laravel framework, exceeding course requirements with advanced features including real-time notifications, OTP verification, and comprehensive admin dashboard.


⭐ Support This Project

If this repository helped you, please consider giving it a ⭐ on GitHub.

Made with ❤️ by Ahmad Zidan Tamimy & Agni Fatya Kholila

Built using Laravel 12, PHP 8.2, Tailwind CSS, Vite, and MySQL

© 2025 All Rights Reserved.

About

🎓 INNOFORUM - Open-source academic discussion platform for Indonesian campuses. Built with Laravel 12 & Tailwind CSS. Features: Role-based access, real-time notifications, OTP verification, academic calendar, leaderboard & admin dashboard. Perfect for universities.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages