Codecademy (along with many other platforms) offer effective tutorials, but are very high-level and only teach a small set of languages/frameworks. By creating an open-source user-contributed platform, new tutorials can be created and shared very quickly.

What it does

Marina is a platform for users to create, share, and request tutorials for languages and frameworks. Users can create their own tutorials by creating a GitHub repository with branches for numbered exercises and their solutions. Each exercise contains at least one file in the language of the tutorial, along with a Markdown description for users to read and a unit testing script to check exercise solutions. By simply inputting the link to their repository, users can easily publish their created tutorials.

Users can access tutorials through a Discover page or by searching. Once a tutorial is selected, Marina sets up a development environment based on the tutorial's Dockerfile and tracks and saves the user's progress through the tutorial, opening each exercise in the online IDE GitPod.

Using the Stellar SDK, users can request a tutorial to be made by depositing an arbitrary amount of Lumen, Stellar's native token, in escrow. Any user can sign up to make a requested tutorial by depositing a small amount of Lumen. Once the tutorial is completed, its creator is awarded all Lumen deposited by users that requested the tutorial. If that user fails to make the tutorial by a set date, or their work is deemed unsatisfactory, the Lumen will be redistributed to those who requested it, along with a bonus provided by the initial deposit the creator placed.

How I built it

Marina's frontend was created in React.js, with the backend in Node and Express. Bash commands were run with Node in order to automate the creation of GitPod environments from tutorial Dockerfiles. MongoDB was used to store user, tutorial, and all other persistent data. Finally, the JavaScript Stellar SDK was used to automate transactions between the users and an escrow account.

Challenges I ran into

  • Converting/managing the tutorial setup a user creates (Dockerfile) to what GitPod uses (.gitpod.yml) was difficult and required bash editing of files and cloned repositories.
  • Allowing multiple people to pool together money in escrow so that developers are more incentivized to write specific tutorials

Accomplishments that I'm proud of

  • Implementing Stellar transaction functionality
  • Automating the creation of fully set-up GitPod environments from GitHub repositories
  • A completed MongoDB Atlas backend with several REST endpoints

What I learned

  • How to automate tasks with Node
  • Managing several schemas and models with MongoDB Atlas
  • How the Stellar JavaScript SDK works, and how to automate transactions

What's next for Marina

  • Following users
  • More complex recommendation system
  • Improved UI

Built With

Share this project: