Skip to content

TestHub Project, written with the technologies Angular, Django REST, PostgreSQL, HTML&CSS.

License

Notifications You must be signed in to change notification settings

PowerCell46/Test-Hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TestHub Documentation

Introduction:

Welcome to TestHub, an innovative online platform tailored to streamline the process of test creation, management, and engagement within educational settings. Designed with educators in mind, TestHub empowers teachers to craft two distinct types of assessments: Multiple-choice tests and Python tests. Dive into our system structured around courses, each housing a diverse array of topics. Delve deeper into specific subjects where various tests await assignment. Students can seamlessly tackle these assessments and promptly receive feedback on their performance. Join us on TestHub and revolutionize the way you approach testing in education!

Features:

  • Test Creation: Teachers can create multiple-choice tests and Python tests.
  • Course Management: Courses are organized into topics, allowing for structured learning.
  • Instant Results: Students receive immediate feedback on their test attempts.
  • User Profiles: Each user has a personalized profile page displaying personal information and statistics related to their account.

Technologies Used:

  • Backend: Django Rest Framework
  • Frontend: Angular
  • Database: PostgreSQL
  • Frontend Styling: Custom HTML and CSS

Setup Instructions:

  • Make sure that you have Node.js, Python installed and configured.
  • Clone the repository.
  1. Setting Up The Frontend:

    • Use cd client to navigate to the Frontend Part of the application. Run npm install to download all the needed dependencies.
    • When the process is done Run ng serve to start the Frontend
  2. Setting up the Backend:

    • Use cd server to navigate to the Backend Part of the application. Run pip install -r requirements.txt to download all the needed dependencies.
    • Choose whether to use Postgre SQL or SQL Lite. If you choose Postgre SQL make sure that you have created the database before that.
    • Run python manage.py migrate to create all of the tables in the Database.
    • Run python manage.py createsuperuser and setup an account for managing the system.
    • Run python manage.py runserver to start the Backend.
    • Using the navigation go to Django Admin and Authenticate with the created user. After that go to Authentication and Authorization section and click on Groups. On the right side click on add group, name it Teachers and select the permissions that you want to give to every Teacher. After that is finished click on Save. Again in the Authentication and Authorization section choose users, (select your user for example) and in the groups section give the Teachers role to the user. Don't forget to save.
  3. Starting the Application:

    • In the console where you started the Frontend/Client, click on the given link to access the Web Application or go to: http://localhost:4200/
    • To access the Backend either click the link in the console where you've started the Django REST, or go to: http://localhost:8000/

Directory Structure:

  • Client: Contains Angular frontend files.
  • Server: Contains Django backend files.
  • Project-images: Screenshots from the Web Application.

Database ER diagram:


ERD.jpg

Django REST API endpoints structure:

TestHub starting url: http://localhost:8000/

   1. admin/ - Django Admin Site
   2. / - Django Server Home Page
   3. auth/ - Authentication Part of the REST API
      - register/ - Register Endpoint
      - login/ - Login Endpoint
      - logout/ - Logout Endpoint
      - myProfile/ - My Profile Endpoint
      - editProfile/ - Edit Profile Endpoint
      - deleteProfile/ - Delete Profile Endpoint 
   4. testHub/ - Main part of the TestHub REST API
      - coursesTopicsTests/ - Endpoint for all of the TestHub Exam data
      - createMultipleChoiceTest/ - Create MCQ Endpoint
      - createPythonTest/ - Create Python Test Endpoint
      - multipleChoiceTest/{examName}/ - Submit MCQ Test 
      - pythonTest/{testName}/ - Submit Python Test
      - submissions/ - TestHub Submissions
         * multipleChoiceTest/{submissionId}/ - Get MCQ Test submission
         * multipleChoiceTest/{submissionId}/{questionId}/ - Get MCQ single question
         * python/ - Get Python Tests submissions
         * multipleChoice/ - Get MCQ submissions

Usage:

  1. Course&Topic Creation:

    • The Administrator can create courses and topics through the Django Admin Site.
  2. Test Creation:

    • Teachers can log in and create new Python and MultipleChoice Tests under the desired course and topic.
  3. Test Participation:

    • Students can log in and attempt tests available under their enrolled courses and topics.
  4. Profile Page:

    • Users can view their personal information and statistics, including total stats and stats for each course participated in.

TestHub Showcase

Home View

homePage.jpg

Home Page with closed topics and tasks. Accessible by authenticated and unauthenticated users. If the user is authenticated, there's a greeting message in the right container.


homePage.jpg

Home Page with opened topics and tasks. Clicking on a specific course a dropdown menu opens with the available topics, the same happens with the topics - clicking on a topic displays all of the available tasks. Unauthenticated users cannot access the tests, they can only see the structure.
Project Integration

Scrolling down the home page we get to the possible integration of the TestHub Project.

homePage.jpg

Project Integration - FMI (Faculty of Mathematics and Informatics)


homePage.jpg

Project Integration - SPGE John Atanasov


homePage.jpg

Project Integration - GGF (Faculty of Geology and Geography)

Register View

registerPage.jpg

Register View acessible only by unauthenticated users.

Login View

loginView.jpg

Login View accessible only by unauthenticated users.

Logout View

logoutView.jpg

Logout View accessible only by authenticated users.

Create Python Test

createPythonTest.jpg

If the logged account is a Teacher, clicking on the Project Logo there's a dropdown menu with available creating options - create Python Test and create MCQ Test. After the Teacher successfully fills in the form a new Python Test is created.

Create MultipleChoice Test

createMCQTest.jpg

If the logged account is a Teacher, clicking on the Project Logo there's a dropdown menu with available creating options - create Python Test and create MCQ Test. After the Teacher successfully fills in the form a new MultipleChoice Test is created.

Submit Python Test

submitPythonTest.jpg

Every authenticated user can select a specific Python Task, read the description file and submit his/hers solution to the problem. After a few seconds the pages refreshes and scrolling down you can see how many points you've got.


submit-python-test.jpg

Below the Python Test Submission is a list with the last 5 submissions for this task from the current logged in user.

Submit MultipleChoice Test

submitMCQ.jpg

Every authenticated user can select a specific MCQ Test, answer the questions and submit his/hers answers.

MultipleChoice Test Results

resultMCQTest.jpg

After the user has submitted the Test, he/she is redirected to the Result MCQ Test view, where you can see how many points you've got.


resultMCQTest.jpg

Scrolling down you can see which of the submitted answers are correct and which ones are wrong.

Single MultipleChoice Question Result

resultSingleMCQ.jpg

Clicking on a specific question you can see exactly what is the correct answer and which one you have selected, so you can learn from your mistakes.

Python Submissions

pythonSubmissions.jpg

In the header, clicking on the Submissions, a dropdown menu appears where you can choose from Python and MCQ Submissions. Here can see the last 10 Python submissions in the platform.

MultipleChoice Submissions

mcqSubmissions.jpg

In the header, clicking on the Submissions, a dropdown menu appears where you can choose from Python and MCQ Submissions. Here can see the last 10 MCQ submissions in the platform.

My Profile

myProfile.jpg

My Profile view, accessible only by authenticated users, where people can see their Personal Data, Total Account Statistics, and Statistics for every course that they have participated in.

Edit Profile

editProfile.jpg

Edit Profile view, accessible through My Profile page. The logged in user can change it's personal data or go back to the previous page.

Delete Profile

deleteProfile.jpg

Delete Profile view, accessible through My Profile page, not a standalone page, but a popup container, asking the user is he/she's sure he/she wants to delete the profile.

Server Home Page

myProfile.jpg

Starting the server this Home view shows, greeting the Teacher/Administrator, and giving them possible options where to head.

About

TestHub Project, written with the technologies Angular, Django REST, PostgreSQL, HTML&CSS.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published