GithubHelp home page GithubHelp logo

ekv-project / ekv Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 3.0 2.61 MB

Sistem Pengurusan Maklumat Pelajar Kolej Vokasional

Home Page: https://ekv.readthedocs.io

License: GNU General Public License v3.0

PHP 47.15% Blade 38.99% HTML 13.75% Shell 0.12%
student management-system malaysia vocational laravel college-management college

ekv's Introduction


All Contributors

THIS PROJECT IS STILL UNDER DEVELOPMENT


eKV

Student Information Management System for Malaysian Vocational Colleges.

Requirements

  1. Access to terminal / SSH
  2. Web server (Apache2, NGINX)
  3. MySQL / MongoDB
  4. Composer
  5. NodeJS (for NPM)
  6. PHP Extensions (enabled in php.ini)
    1. ext-dom
    2. ext-zip
    3. ext-gd
    4. ext-mysql
    5. etc
  7. Appropriate access to web folder.

Installation

  1. Download the source code of this system.
  2. Setup your web server (Apache/Nginx) to suit Laravel app.
  3. Copy .env.example file and rename to .env. Configure the .env file for database connection.
  4. Run composer update, npm update, composer install, npm install to update/upgrade and install necessary dependencies.
  5. Run npm run prod to and compile the assests.
  6. Generate the application key with php artisan key:generate command. This key will be stored in .env file and be used for encryption.
  7. (Optional) For production environment, set the APP_DEBUG value to false to prevent sensitive config to be exposed to the user.
  8. Upload the files to your web server.
  9. Go to your /install to proceed the installation. The script will add a new admin user, migrate the database and generate the application key.
  10. System installation is completed!

License

This system/project is licensed under GNU GPLv3. Each contributions to this system will be licensed under the same terms.

Contributors โœจ

Thanks goes to these wonderful people (emoji key):

Muhammad Hanis Irfan Mohd Zaid
Muhammad Hanis Irfan Mohd Zaid

๐Ÿšง ๐Ÿ’ป ๐Ÿค” ๐ŸŽจ ๐Ÿ“–
amihadi
amihadi

๐Ÿšง
GenericNominalUser
GenericNominalUser

๐Ÿ’ป
Farhan Helmy
Farhan Helmy

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!

ekv's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

ekv's Issues

Dashboard UI

Follow the UI concept for navigation etc from /dashboard/classroom pages.

Admin Page Improvement

  1. Classroom
  • View with filter and sort by.
  • Add
    Classroom with have a unique ID that's not an auto incremented number. Random string with the length of 10. Case-sensitive.
  • Update with classroom coordinator.
    A lecturer could be added as a coordinator in multiple classrooms at a time.
    A classroom could only have ONE lecturer as the coordinator.
  • Remove.
  1. Course
  • View with filter and sort by.
  • Add.
  • Update.
  • Remove.
  1. Program
  • View with filter and sort by.
  • Add.
  • Update.
  • Remove.
  1. Study Level
  • View with filter and sort by.
  • Add.
  • Update.
  • Remove.
  1. Institute
  • Institute logo update.
  • Favicon based on institute logo.
  • Institute logo on transcript and profile PDF.

Problem with images

Maybe caused by storage link.
Public folder: public
Storage folder: app/public

Improve Live Search Function

Make it able to search multiple to retrieve multiple types of data.

To authorize the API request, use API Token store in the meta tag (must include $apiToken from constructor using the with() method) then make sure the token is already exist in the user's table.

Refer: c167fbc

Active status of a classroom

This is for blocking a student that's in a classroom that have been deactivated from accessing certain pages.
Add active_status field with the default value of 0 to classrooms table.

Active Status

  • 0 = Deactivated (Nyahaktif)
  • 1 = Active (Aktif)

Bulk Transcript Add

  • Add a feature to allow admin and coordinator to add student's transcript using Excel spreadsheet.
  • One file could be used to insert multiple student's transcript with separate worksheet.

Laravel API

Use for

  • System statistic.
  • Live search.
  • MPP Election.

Bootstrap Icons

Use Bootstrap Icons to give a better look to the UI.

Somehow the icon doesn't want to load..bruhhhhh

[Authorization] User, Roles and Gates

Roles in this system.

This issue will always be open.

SuperAdmin

Given to a username named admin.
Technically this user will be able to do everything that an admin couldn't do like adding or deleting another admin.

Admin

The default user with the username admin will be created automatically and cannot be changed or deleted by another admin. This user have supremacy above all other user.

Permissions:

  • Have access to all of the system.
  • Administration page.
  • Change, delete or disable a user.
  • View and download users profile.
  • Add/Remove a classroom. Assign a lecturer as coordinator. Add users (student) into the classroom.
  • Approve a request of a warning letter / Issue a warning letter to students.
  • More to add.

Student

Permissions:

  • View their own profile.
  • View and download semester transcript.
  • More to add.

Lecturer

Permissions:

  • If a lecturer is coordinator of a classroom:
    • They can view and download users (student) profile under that classroom.
    • Add/Update student semester transcript.
    • Add/Remove a student from a classroom.
  • Request for a warning letter to be issued to students (if they commit an offense such as: insulting the lecturer).
  • More to add.

Gates

  • authUser - Check whether current authenticated user allowed to access the page. Ex: User Profile.
  • authLecturer - Check if lecturer could access anything allowed for them.
  • authCoordinator - Check if lecturer is a classroom coordinator of a student.
  • authAdmin - Check whether current authenticated user is admin.
  • authSuperAdmin - Check whether current authenticated user is super admin.
  • authClassroomActive - Check whether current authenticated student's classroom is active.

Middleware

  • auth - Default Laravel auth middleware. Check if user is authenticated. If not redirect to / aka login page.
  • userIsAdmin - Check if current authenticated user is an Admin. If not, abort with 403.
  • userIsSuperAdmin - Check if current authenticated user is an SuperAdmin. If not, abort with 403.

Add Gates for Authorization

Gates

  • authUser - Check whether current authenticated user allowed to access the page. Ex: User Profile.
  • authLecturer - Check if lecturer could access anything allowed for them.
  • authCoordinator - Check if lecturer is a classroom coordinator of a student.
  • authAdmin - Check whether current authenticated user is admin.
  • authSuperAdmin - Check whether current authenticated user is super admin.

Middleware

  • auth - Default Laravel auth middleware. Check if user is authenticated. If not redirect to / aka login page.
  • userIsAdmin - Check if current authenticated user is an Admin. If not, abort with 403.
  • userIsSuperAdmin - Check if current authenticated user is an SuperAdmin. If not, abort with 403.

Default Route Structure

This issue will always be open.

/ (Home page/Login page)
/dashboard (Redirect after login)
--/profile/{user} (User profile page)
--/classroom/{classroom} (Classroom page)(Students and one coordinator will be assigned here)
/admin (Administration page)
--/user

This is the main structure for this system.

Add jantina field for user profile

Make a migration to add jantina field for user_profiles table. Update the profile update form to include this form.

While you are at it, update created_at and updated_at field for table course_grades to be placed after grade_pointer field. It hurts my eyes.

Regex for Fields

Add regex check for fields such as student identification number, phone number etc

UI Changes

  • Background image
  • Count on the left of the list

Text Capitalization

For title, only the first letter is capitalize. For form and display, all letters is capitalize.

Student Active Status

Same as #46
But add the column to ClassroomStudent model. Coordinator and admin can update a user active status from the classroom section on main dashboard.

Announcement section on main dashboard

Add a blog styled announcement section under the navigation section on the main dashboard. Admin can add new updates for example, semester transcript for DVM is added.

Classroom route for each role

  • Student: Redirect to their classroom.
  • Lecturer: List all the classrooms they are associated with as coordinators.
  • Admin: Redirect to admin classroom list.

Student Classroom Page

Admin could assign one coordinator to each classroom.

Admins and the classroom Coordinators itself could update the classroom info.
This includes:

  • Admission year
  • Program
  • etc

They could also add new student to the classroom. Each student could only be associated with one classroom. Make sure to check for that.

With the Classroom Model it could be used to determine whether a lecturer is a coordinator of a student. Refer to #4

User System Development Tracker

All development progress of the user system is listed here.

  • Basic user login and logout
  • Basic user registration
  • Add validation when registering user
  • Improve login page UI //Maybe the design will be changed soon.
  • Improve user registration page (this is related to admin page as a whole)
  • User profile
  • User profile picture

Feature List

Features available on this system. (Just a reminder if I forget lel)

  • User System with Roles and Authorization for Certain Pages
  • Student Profile (Student Details)
    Student will be put into classrooms that will determine their admission year and program.
    A lecturer will be assigned to the classroom as their coordinator.
  • Student Semester Transcript
  • Student Semester Registration
  • Student Course Attendance
  • Digital Certificate

A lecturer or admin could issue certificate for certain events/competition for a student/set of student.

On the certificate, there will be the details of the student and details on the event/competition.

The certificate issuer can select the visibility of the certs either public (visitor outside the site can view), private (only users that logged in, or only the student idk yet) and None. If the option is set to either public or private, a QR code will be place on the cert that contains the link to view the cert. If it's set to one, no QR code will be added on the cert.

  • Student Hostel Application and Registration
  • Majlis Perwakilan Pelajar Election
  • System Statistic (with graphs and charts lol)
    • Total User Logins

The system could be installed with php artisan install command.
Usage: php artisan install <password> [<fullname> [<email>]]
This command will migrate the databases and create a new user with the userame: admin and role: superadmin if it doesn't exist yet.

To be change.

Improve authCoordinator Gate

This is to avoid repeating the same code in every controllers that use and need it.

First, it will check if a user is associated with a classroom. isset()
If not, abort(404). I think.

Then, it check whether the coordinator user's classroom is equal to the current student profile classroom they trying to access. After that, return true. Else, abort(403)

Or, it check whether the coordinator user's classroom is equal to the current classroom they trying to access. After that, return true. Else, abort(403).

Please refer to the current ClassroomController to achieve this. I hope.

Change PDF Library

Remove mPDF as the PDF library and use TCPDF instead since mPDF currently using GPLv2 only instead of GPLv2 or later which could make this project unable to be licensed under GPLv3 or later. See mpdf/mpdf#832

TCPDF is the best candidate for this change since it is licensed under LGPLv3 which compatible with our needs.

Error Codes

Here listed all error codes that contains for this project.

Spreadsheet Import

  • EKV-SS-1
    Column is empty.
  • EKV-SS-2
    Row is not imported.

Improve Dashboard UI

Improve the current dashboard UI to have a standardized look.

Start with:

  • Classroom
  • Exam / Transcript

Add New User Page

This page will only be allowed to be added by admin (more on that when making authotization).

User Profile Picture

  • Save user image as JPEG using imagejpeg() function.
    Try to tweak the image to have lowest quality but still looks nice (less image size).
  • Store the image in the /storage/app/public directory or something like that. (Refer here: Docs)

Improvement for User Profiles, Classrooms and Coordinators Tables

A student user can only be assigned to one classroom.
A coordinator(lecturer) user can be assigned to multiple classrooms.

When a student is assigned to a classroom, their record will be stored inside classroom_students table.
Structure:
- id
- users_username (unique, so a student couldn't be assigned to multiple classrooms)
- classroom_id

When a coordinator is assigned to a classroom, their record will be stored inside classroom_coordinators table.
Structure:
- id
- users_username
- classroom_id
The user name is not unique so lecturers could be assigned to be coordinators for multiple classes.

To Do:

  • Add student_classroom table
  • Add coordinator_classroom table
  • Remove classroom_id in user_profiles table
  • Make relationships and foreign keys
  • Make ERD after all of these

Laravel Validation

When approaching the finished version of this project, change current validation method to Laravel Validation feature when possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.