Inspiration
OpenREPL was created because I was frustrated by the lack of a high-quality extensible open source REPL system.
What it does
OpenREPL allows users to code or learn how to code through use of an online script runner or an interactive shell for any of the 8 programming languages currently supported by OpenREPL. OpenREPL components can be easily embedded into other applications. These could be used as a tool set for computer science education applications.
How I built it
I built REPL by creating docker images for each programming languages. I used the Go programming language in conjunction with shell scripts to create a system to receive user code and securely launch it in sufficiently isolated docker containers. In order to allow users to interact with the running containers, I used a project called gotty to connect them to web terminals. For the front-end webpage, I used Materialize for buttons, colors, and layout. I used the ACE code editor to allow users to write scripts with appropriate syntax highlighting and checking.
Challenges I ran into
The ACE code editor required some extremely specific CSS styling in order to work. Unfortunately, that caused various issues with the placement and sizing of all other content on the page. This required extensive use of JavaScript in order to layout the page.
What's next for OpenREPL
- Scripting the remaining parts of the deploy process - replace hard-coded values with a script to substitute in user-provided values
- HTTPS Support
- Additional language support
- Accounts
- Embedding tools
Log in or sign up for Devpost to join the conversation.