Inspiration

I had been fed up installing compilers for each and every new language my University demanded. So came up with this solution: Online Compiler. I can now run almost all of my codes here because of it's vast support for over 60 Languages.

What it does

"compilor" is an Online Compiler webapp which can compile over 60 languages also supporting Inputs. The UI is simple and mobile friendly too.

How it is built

The app uses HTML CSS and VanillaJS along with CodeMirror editor support for writing your Code.The client side is hosted on a AWS EC2 instance.The HTTPS connection is provided by CloudFlare DNS. The server is deployed on a Heroku NodeJS server which uses the JDoodle API to satisfy user requests. The app is built on Duplex Client-Server Architecture.

Challenges I ran into

Initially I thought of building the app on simple Client-Server architecture. But the problem was JDoodle API recomends not to publish your API Credentials. So, if it was built using VanillaJS only my credentials would've been exposed. Then changed my track towards PHP. But, again PHP is not Programmer friendly it's like working in some age old language. So then finally came up with the idea of a nodejs server, which would be secure as well as easier to interact with JSON data.

Accomplishments that I'm proud of

Learnt and used the fetch API for first time in my applications. This is my first successful nodejs project. And last but not least my first solo project to be completed in a hackathon.

What I learned

  • fetch API
  • JDoodle API
  • Heroku Deployments
  • nodejs ## What's next for Online Compiler Currently the app supports only 200 requests per day overall because, it is using single API token only. I've the plan of extending its functionality with support for Intractive Inputs and integrating the app with firebase for user account creation and generating JDoodle API credentials dynamically for each user so that it supports 200 requests pre user per day and supporting dynamic requests from different users.
Share this project:

Updates