Skip to content

eriknewland/FunctionJunction

Repository files navigation

Function Junction

A collaborative in-browser IDE that pairs users to solve algorithm and data-structure problems built over a 3-day hackathon.

Collaboration gif

Tech Stack

Client
React React Router CodeMirror Bootstrap Judge0 API

Server
Node.js Express Socket.io

Database
Firebase

Environment Variables

To run this project, you will need to add the following environment variables to your .env file

REACT_APP_FIREBASE_API_KEY
REACT_APP_FIREBASE_AUTH_DOMAIN
REACT_APP_FIREBASE_DATABASE_URL
REACT_APP_FIREBASE_PROJECT_ID
REACT_APP_FIREBASE_STORAGE_BUCKET
REACT_APP_FIREBASE_MESSAGING_SENDER_ID
REACT_APP_FIREBASE_APP_ID
REACT_APP_JUDGE0_API_KEY

You will need to setup a Firebase Account for the first 7 keys. You will need to setup a RapidAPI account and subscription to Judge0 API for the final key.

Features

  • Firebase Authorization
  • Cloud Firestore CRUD functionality
  • Private and Public routes
  • Password reset
  • Codemirror in-browser IDE
  • Compile and execute 20+ languages with judge0 API
  • Bootstrap component styling
  • Socket.io implementation to create a collaborative IDE and code compilation/execution

Installation

Fork, clone and navigate into the root directory. Install dependencies:

  npm i

Start the development server on port 3000

  npm run start

In a separate terminal window, navigate into /src/server and run 'nodemon index.js' to start the socket server on port 8000.

  nodemon index.js

Roadmap

  • Tech Debt/Clean up

  • Improve random matching functionality

  • Create database of problems that each paired instance will reference

  • Add payment rails

  • Add different modes (i.e. competitive, CSS/styling challenges)

Demo (Youtube)

Function-Junction-Screenshot