/exams

Exams Wizard Official Open Source

Primary LanguagePHPMIT LicenseMIT

Exams

This platform was developed as an e-assessment platform for Universities or other parties. It provides the ability to organize your users by role and authorize actions to them.

  • Admins manage the Lessons and the users of the platform.
  • Professors subscribe to lessons creating and publishing tests for students.
  • Students subscribe to lessons and participate on the tests.

Tests

Professors can create Tests including their segments.

The tests may have statuses of:

  • DRAFT - Saved from professor but not yet ready (NOT visible to Students)
  • PUBLISHED - Saved from professor with a scheduled date visible to Students
  • STARTED - Started by the professor when students have registered
  • FINISHED - Finished by the professor
  • GRADED - Flagged from professor to enable students to see their grades

The students can have test statuses of:

  • REGISTERED - Students can register to published tests
  • LEFT - Students that don't want to participate in published can Leave the test
  • PARTICIPATED - Students that published their answers at least once on a started test
  • GRADED - Students that have published answers and are graded by a professor

Running the Project

Prerequisites

Global

  • MySQL
  • Firebase Project

Dockerized

  • docker
  • bash

Non-dockerized

  • PHP 5.6
  • Laravel 5.4
  • composer

Setup

After cloning the project create a new .env file cp .env.example .env and update the values mentioned below.

  • Create the database mentioned in .env
       DB_HOST=your_database_pub_host
       DB_DATABASE=your_database_name
       DB_USERNAME=your_database_user
       DB_PASSWORD=your_database_pass
    
  • Setup Firebase
    • Create a firebase project
    • Download the adminsdk auth json and store it in resources/external/ directory. Semantic description of image
    • Define the name of the file in your .env with the key FIREBASE_AUTH_FILE
    • Define the name of your firebase url in the key FIREBASE_DB_URL
    • Set up MIX_* values as well for the frontend's connection to realtime events.
          MIX_FIREBASE_API_KEY=Web API Key from 'Project Settings > General'
          MIX_FIREBASE_AUTH_DOMAIN='your_firebase_identifier.firebaseapp.com'
          MIX_FIREBASE_DATABASE_URL='https://your_firebase_identifier.firebaseio.com'
          MIX_FIREBASE_PROJECT_ID='your_firebase_identifier'
          MIX_FIREBASE_STORAGE_BUCKET='your_firebase_identifier.appspot.com'
      

dockerized

  • Run ./docker.sh dev fresh to create a fresh instance of the project. You can also pass an EXPOSE_PORT parameter to change default expose port.

Non-dockerized

  • Initiallize APP_KEY WITH php artisan key:generate
  • Install project's php dependencies composer install
  • Give permissions chmod -R 777 storage && chmod -R 777 bootstrap/cache

If your database is empty you will need to run the existing migrations to setup db tables

  • dockerized:./docker.sh dev artisan migrate
  • non-dockerized:php artisan migrate

Development

Run npm install to install webpack dependencies and track your changes on resources files with npm run watch-poll.

Architecture & Framework

This project is created in Laravel framework.

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as:

Laravel is accessible, yet powerful, providing tools needed for large, robust applications. A superb combination of simplicity, elegance, and innovation give you tools you need to build any application with which you are tasked.

License

Open-sourced software licensed under the MIT license.