https://github.com/eriknewland/functionjunction
browser based collaborative IDE
https://github.com/eriknewland/functionjunction
codemirror collaboration compiler ide judge0 learning leetcode nodejs pyodide python react socketio websocket
Last synced: 2 months ago
JSON representation
browser based collaborative IDE
- Host: GitHub
- URL: https://github.com/eriknewland/functionjunction
- Owner: eriknewland
- Created: 2023-03-02T14:58:08.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-04-05T14:18:24.000Z (over 2 years ago)
- Last Synced: 2025-06-10T10:14:05.308Z (4 months ago)
- Topics: codemirror, collaboration, compiler, ide, judge0, learning, leetcode, nodejs, pyodide, python, react, socketio, websocket
- Language: JavaScript
- Homepage:
- Size: 42.5 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Function Junction
A collaborative in-browser IDE that pairs users to solve algorithm and data-structure problems built over a 3-day hackathon.
![]()
## Tech Stack
Client
![]()
![]()
![]()
![]()
![]()
Server
![]()
![]()
![]()
Database
![]()
## 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:
```bash
npm i
```
Start the development server on port 3000```bash
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.```bash
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)
[](https://youtu.be/BIyzn8brDMw)