What it does
devJS provides a
- internet-free code editor and interpreter to developers
- complete file system
- offline code completion
- full NodeJS binary AND runtime on Android and iOS
- many bundled libraries, such as
expressso you can run whatever you want in NodeJS
How we built it
In the back end, devJS runs a compiled version of NodeJS ChakraCore on iOS and uses Termux on Android. We used React Native to build the "front-end" of our application, which includes defining transitions between screens using the
One of our team members, Samyok, recently encountered a Hacker News post of a Nepalese student who could not afford a laptop and practiced programming on their mobile phone. As a Nepalese himself and as a team with so many resources within arm's reach, we could not fathom how difficult it must be for this student to create apps and programs (let alone functional ones).
After hearing about this one Nepalese student, we were curious to know how big the issue really was. How many people experience something similar? As bizarre as it may seem, it turns out that approximately 28% of adults age 18-29 rely on mobile devices only for online access (Pew Research). GSMA Intelligence predicts that in 2025, this figure will be 45% for all populations.
When investigating the current IDEs available in Google Play and App stores, we discovered that the current offerings compiled code through servers online. If students could not afford a laptop or PC, it's quite possible they may not have access to reliable internet service either, which makes it rather difficult for them to use such mobiles IDEs.
Hence, we decided to create a comparable IDE experience, without reliance on internet access, to provide wannabe-developers worldwide the resources to achieve their dreams.
Challenges we ran into
Getting the compiled nodejs binaries to effectively talk to our app was tricky, and we had to install several older versions of the Android NDK and SDK for the app to even function.
There was a lot of waiting and praying :)
In the end, this is what our app architecture looked like. We had to implement and/or debug each of the arrows (especially the red ones!), caused by the coupling of the NodeJS binary with the app itself.
Our commit history also shows exactly how many bugs we ran into:
Accomplishments that we're proud of
Among the many cryptic bugs we've experienced, we were able to deliver a functional app - and with little to no prior experience in mobile app development!
Although devJS may not be able to provide users the same experience they'd receive on a PC, we are proud to provide users without such luxuries as laptops and stable internet access the support and ability to become developers like us!
What we learned
Our team learned the React Native library along with packages like
react-navigation to create our mobile app! We learned how to use Figma and Sketch for designing our screens, and implemented these designs in React Native.
What's next for devJS
There are a lot of small nuisances that we need to fix. Other than those, some large features we are planning includes:
- Expanding multi-language support
- Offline git support/version control
- Access to debugger