summaryrefslogtreecommitdiff
path: root/README.md
blob: a0faab27b4ed6c681fee7241133a26c2e56bdac8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Yaksh
========

[![Build Status](https://travis-ci.org/FOSSEE/online_test.svg?branch=master)](https://travis-ci.org/FOSSEE/online_test)
[![Documentation Status](https://readthedocs.org/projects/yaksh/badge/?version=latest)](http://yaksh.readthedocs.io/en/latest/?badge=latest)

To get an overview of the Yaksh interface please refer to the user documentation at [Yaksh Docs] (http://yaksh.readthedocs.io)

This is a Quickstart guide to help users setup a trial instance. If you wish to deploy Yaksh in a production environment here is a [Production Deployment Guide] (https://github.com/FOSSEE/online_test/blob/master/README_production.md)


#### Introduction

This project provides an "exam" app that lets users take an online
programming quiz.

#### Features

 * Define fairly complicated programming problems and have users
 solve the problem.
 * Immediate verification of code solution.
 * Supports pretty much arbitrary coding questions in Python, C, C++ and
 simple Bash and uses "test cases" to test the implementations of the students.
 * Supports simple multiple choice questions and File uploads.
 * Since it runs on your Python, you could technically test any Python based library.
 * Scales to over 500+ simultaneous users.
 * Distributed under the BSD license.

Quick Start
===========

#### Pre-Requisites

1. Ensure you have Python available.
1. Ensure [pip](https://pip.pypa.io/en/latest/installing.html) is installed.

#### Installation

1. Install yaksh
    - Clone the repository

            $ git clone https://github.com/FOSSEE/online_test.git

    - Go to the online_test directory

            $ cd ./online_test

    - Install the dependencies

        - For Python 2 use:

            $ pip install -r ./requirements/requirements-py2.txt

        - For Python 3 (recommended) use:

            $ pip install -r ./requirements/requirements-py3.txt

#### Short instructions

1. To run the application do the following:

        $ invoke serve

    - *Note:* The serve command will run the django application server on the 8000 port
    and hence this port will be unavailable to other processes.

1.  On another terminal start up the code server that executes the user code safely:

    - To run the code server in a sandboxed docker environment, run the command:

            $ invoke start

    - Make sure that you have Docker installed on your system beforehand.
    [Docker Installation](https://docs.docker.com/engine/installation/#desktop)


    - To run the code server without docker, locally use:

            $ invoke start --unsafe

    - Note this command will run the yaksh code server locally on your machine
      and is susceptible to malicious code. You will have to install the code 
      server requirements in sudo mode.



1. Open your browser and open the URL ```http://localhost:8000/exam```

1. Login as a teacher to edit the quiz or as a student to take the quiz
    Credentials:
    - Student - Username: student | Password: student
    - Teacher - Username: teacher | Password: teacher

1. User can also login to the Default Django admin using;
    - Admin - Username: admin | Password: admin


History
=======

At FOSSEE, Nishanth had implemented a nice django based app to
test for multiple-choice questions. Prabhu Ramachandran was inspired by a
programming contest that he saw at PyCon APAC 2011.  Chris Boesch, who
administered the contest, used a nice web application
[Singpath](http://singpath.com) that he had built on top of GAE that
basically checked your Python code, live. This made it fun and interesting.

Prabhu wanted an implementation that was not tied to GAE and hence wrote
the initial cut of what is now 'Yaksh'. The idea being that
anyone can use this to test students programming skills and not have to worry
about grading their answers manually and instead do so on their machines.

The application has since been refactored and maintained by FOSSEE Developers.

Contact
=======

For further information and support you can contact

Python Team at FOSSEE: pythonsupport@fossee.in

License
=======

This is distributed under the terms of the BSD license.  Copyright
information is at the bottom of this file.

Authors
=======

 [FOSSEE Developers] (https://github.com/FOSSEE/online_test/graphs/contributors)


Copyright (c) 2011-2017 FOSSEE (fossee.in)