Table of Contents
SphereEngine is a web application built with Sphere Engine Problems API to create programming questions, add test cases and compile and run them to check our solutions. Its a great place to hone programming skills like any CP site and easy to use for problem setters and programmers.
Deployed using Heroku
-
Node- Go to official Node.js website and download the installer.
-
Sphere API key- Go to Sphere Engine Platform to get your free API key.
-
MongoDB url- Visit MongoDB
-
Browser Version-Latest
-
npm
npm install npm@latest -g
$ git clone https://github.com/hotaanubhab/Sphere-Engine-App.git
$ cd Sphere-Engine-App
$ npm install
nodemon
//or
node app.js
After getting the API Keys and endpoints please specify the following in a .env file in the root directory.
MONGO_URI = "" // Mongo cluster URI
PROBLEMS_API = "" // Endpoint from Sphere Engine Dashboard
ACCESS_TOKEN = "" // Acess token from Sphere Engine Dashboard
SECRET = "" // A string used to sign the JWT for verification , it can be any string but shouldn't be shared outside organization to prevent unauthorized access.
The landing page consists of 4 main parts- 'Solve' , 'Admin' , 'Add' and 'Login': On the solve page participants cant select the problem they want to solve.
On the submit page of every question there is supprt for all the compilers by Sphere Engine API and the participant can submit his solution in prgramming language of choice.
Admin login is for protected routes like Add or Admin Panel for editing and deleting problems.This is done using JWT. For testing on Heroku server one can use Username : admin , Password : admin as a credential.
Admin Panel
Edit Page of a Problem. After edit press update or use this page to go to add test case of that problem , or delete problem.
Page used to add input output test cases for the problem.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
Distributed under the MIT License. See LICENSE
for more information.