/PosiTest

A code testing suite app with account auth and live chat functionality

Primary LanguageJavaScript

Project: PosiTest MIT License

App Screenshot

Overview

  • PosiTest is a code assessment administration tool designed to test Galvanize's prospective students.
  • Built on PERN - Postgres, Express, React, Node

Link to App: https://positest-e418ed52897e.herokuapp.com/

Sample Logins for live environments

//Instructors
1) user: Bossman pw: abc123

//Students
1) user: tim pw: abc123

Features

  • Full testing suite with live chat, shared code editor, and timer
  • Shared code editor that compiles and executes in real time
  • Instructor-specific controls
  • Waiting lobby with routes to testing rooms and live chat
  • Secure login and user registration

Libraries & Tech:

Services

  • Heroku: Deployment
  • AWS S3 bucket: Image Hosting
  • Supabase: PostgresDB

Local Test

Running Locally
  • Clone repo
  • App is split into client and server side.
  • Plug in .env variables
    • See .env.template for variables
    • Create supabase database
    • Seed & migrate into supabase database
  • Create AWS S3
  • CD into Client, run 'npm install', 'npm run dev'
  • On a separate terminal, 'npm install', 'npm run dev-server'

Server Side

  • npm install
  • npm run dev-server

Client Side

  • cd client
  • npm install
  • npm run dev

App States Screenshots

Welcome Page

App Screenshot

Student/Instructor Lobby + Global Chat

App Screenshot

Testing Suite

App Screenshot

More Screenshots

More Screenshots

Login

App Screenshot

Testing Suite + Side Chat

App Screenshot

Misc Mini Pages - Edit Profile Pic modal, Error Pages, Submit Code

App Screenshot App Screenshot App Screenshot App Screenshot

Technical Challenges and research

Code Editor

The main feature of our project is the code editor. One of the things that we initially did not anticipate was the possible effect of running live JavaScript code directly inside the website. Therefore, to prevent code leakage and the possibility of the code testers breaking the website, we had to embed the code editor inside of an iframe with its context. This fixed the problem.

live coding, chat, authentication/authorization

  • Why, What was the plan to overcome those challenges?
    • The solution we found to implementing individual assessment rooms and chat feature was websockets. The websockets allowed us to create fast and responsive communication between the client and the server instead of fetch response cycles.

    • For the live coding, we used monaco code editor with iframe for a clean, responsive code editor connected with websockets

    • Authentication and authorization was implemented with bcrypt and json web tokens (jwt) which provided high-levels of security and safe login.

    • Lesson Learned:

      • Implementation of these technologies and libraries in tandem created more logistical challenges requiring more research and deeper understanding of the technologies involved. For example, websockets, implemented with react can cause issues if implemented at the component level - it's more efficient to implement websockets connections and event listeners at the highest level of the react dom as possible.

Stretch Features

  • Instructor grading dashboard
  • Ai test grading - with ChatGPT functions

Development Notes

Instructor Page Wireframe

Entity Relationship Diagram (ERD) & Style Guide

Introduction

  • This project was a 3 week sprint where our team completed a MVP product for an external client David Garcia from Galvanize inc an online coding bootcamp platform. Client requested our team to build a integrated live coding testing suite for entrance into their coding immersive program.

Authors