Skip to content

Classroom management system for accessing students performance in particular subjects

Notifications You must be signed in to change notification settings

Aliemeka/classdodo

Repository files navigation

CLASS DODO

ClassDodo is an open source class management system that helps teachers monitor their student performance The application provides students with test questions for each subject. It is ideal for lesson teachers and form teachers. It is developed to illustrate how to create an app using microservice architecture that scales. Visit live site

Architecture

Features

screenshot

  • Classroom dashbord displaying different subjects with test
  • Teachers can sign up and, create new subjects and create multiple test for each project they've created
  • Students can login and attempt tests in which they are graded and recorded
  • The records of each students can be viewd to know their performance in certain subjects
  • The main administrator can view all the records and add or remove users

Requirements

To get started you need the following installed on your local machine
Python v>=3.5
npm v>=6.4.1
npm v>=6.4.1
Python v>=3.6

Class Dodo Backend

Backend developed using Django and django-rest-framework. The backend is hosted on the Backend service on a Docker containers in Kubernetes clusters.

Dependencies

Main dependencies

In development

  • In development mode, ensure to set DEGUB=True in settings.py

Installation

on local machine

  • Fork this project here
  • Clone this repository
  • Navigate into the root folder
  • Open a terminal (bash preferably) from the folder
  • Run virtualenv env to ensure that depencies are up to date
  • Run source env/Scripts/activate for windows users or source env/bin/activate on Mac or Linux
  • Run pip install -r requirements.txt Ensure you set the environment on your IDE to use the virtual enviroment
  • Run python3 manage.py runserver

Class Dodo Frontend

The client side for this application was

Enter these command on the command line

  • cd client
  • yarn build or npm run build

Builds the app for production to the build folder. It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes. The client is ready to be deployed!

Deployment on Google Kubernetes Engine

The app using consist of two services; a backend service will contain the django app and serve as the api provider for the application

FRONTEND DEPLOYMENT

Setting up the docker image for the React App

  • Make your image DP=[YOUR_DOCKER_ID]/[NAME_YOUR_IMAGE:1.0]
  • docker run build
  • Run the command docker run -d -p 80:80 $DP run the docker image
  • Login your docker account docker login --username=[YOUR_DOCKER_ID]
  • Push to a remote container repo docker push $DP

Connecting to Google Cloud Platform

  • Initialize the folder to be a gcloud repo
    You will need to have the Google Cloud SDK installed on your system
  • Run gcloud init
  • Login using gcloud login Or gcloud config auth login
  • Choose a project gcloud config set project [PROJECT_ID]
  • Pick a region
    gcloud config set compute/region [COMPUTE_REGION]

Deploying on Kubernetes Engine

  • Create a container cluster gcloud container clusters create [CLUSTER_NAME]
  • Create a Kubernetes deployment image kubectl create deployment [DEPLOYMENT_NAME e.g test] --image $DP
  • Expose your deployment kubectl expose deployment [DEPLOYMENT_IMAGE_NAME] --type LoadBalancer --port 80 --target-port 80 To find the external IP address of your app kubectl get services Your Application should great :thumbs-up:

Contribution

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.

Please note we have a code of conduct, please follow it in all your interactions with the project.

Welcome Additions

  1. Enabling teachers to create assignments
  2. Linking it up with Firestore
  3. Adding enrollments
  4. Feel free to sniff out bugs too

Pull Request Process

  1. Ensure any install or build dependencies are removed before the end of the layer when doing a build.
  2. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters.
  3. Make all pull requests of new features to the develop branch so it can be project

Licensing

This project uses MIT License

About

Classroom management system for accessing students performance in particular subjects

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published