GithubHelp home page GithubHelp logo

kashyap2108 / codasession Goto Github PK

View Code? Open in Web Editor NEW

This project forked from togiberlin/codasession

0.0 2.0 0.0 5.39 MB

Collaborative, real-time code editor for engineers! Includes video call and chat feature.

JavaScript 85.76% CSS 0.79% HTML 13.45%

codasession's Introduction

CodaSession

Remote work

In simple words, CodaSession is like GoogleDocs for programmers. It allows you to work collaboratively on code with fellow engineers - no matter where you live.

CodaSession is meant to reduce barriers for effective remote work.

This private project is meant to be an exercise on WebSockets and real-time page updates.

Purpose

In the last couple years, open source has become the dominating factor for software innovation. However, this was not always the case. In earlier times, distributed software development couldn't cope with issues like:

  • Slow dialup internet
  • Immature web technologies
  • Missing project management tools

The first two ones aren't issues anymore. The third issue, missing PM tools, is still highly relevant. Many development platforms like GitHub or BitBucket only allow asynchronous collaboration. Engineers usually do Pull-Requests ("PRs") and post comments.

This is however quite slow. Sometimes, replies to comments can take days. For quick experiments, code-fiddling or hypothesis-testing, a PR feels unnatural. Sometimes, you just want a quick pair programming session.

This is where CodaSession comes into play. CodaSession is a web platform, which allows to:

  • Conduct real-time, remote pair programming sessions
  • Conduct real-time, remote tutoring sessions
  • Conduct real-time, remote coding interviews

Communication is kept as natural as possible by a video call feature. A chat window assists for exchanging code snippets, links and so on.

Technology Stack

Prerequisites

  • Install a Node Version Manager (NVM)
  • Download and install Node.js from here
  • Alternatively, you can download and install Node.js via $ nvm install 8.1.3 Note: as of July 2017, 8.1.3 is the latest Node.js version.
  • Install MongoDB via Homebrew $ brew install mongodb
  • Download and install Robo 3T GUI for exploring the database content
  • Open now the Robo 3T application, and create a MongoDB database. Enter your database configuration settings under config.js:11.

Running the App Locally

  • Run $ npm install to install all dependencies
  • Run $ npm start to start the web server
  • Run $ sudo mongod to start the NoSQL database
  • Voilà! Open your web browser and go to localhost:3000.

Deployment

Preparatory Steps

  • If you haven't done so yet, download or fork this repository. Make sure, that this repo is tracked by Git.
  • Make sure to have a Heroku account
  • Install Heroku CLI via Homebrew $ brew install heroku
  • Make sure, that you have a MongoDB database hosting service ready. You can register for a (free) account at e.g. MongoDB Atlas, mLab, A2 Hosting, Vultr, Compose and so on.

Modifying Local Files

  • Configure the GMail mailer service and Facebook-login under config.js
  • Replace the dbConnString inside the config.js:12. It should be similar to e.g. mongodb://<dbuser>:<dbpassword>@abc12345.mlab.com:21336/codasession.
  • The http protocol can't access your webcam, it therefore has to be https instead. Go to views/session.hbs:55. Replace the link with this: https://raw.githubusercontent.com/peers/peerjs/master/lib/peer.js. Alternatively, you can upload the peer.js file to your own, custom https server like e.g. Heroku.
  • In views/session.hbs:64, remove the link so that it appears like this: var socket = io.connect();. Socket.io will now determine automatically the environment.
  • In views/session.hbs:122-128 uncomment all lines. Update the key.

Going Online

  • Type into the command line $ heroku login. Enter your Heroku account data.
  • Type $ heroku create to create an app.
  • Type $ git push heroku master to upload this Git repo to Heroku.
  • Copy/paste the visible Heroku link into your browser. Voilà, the app is now online!

Making the Mailer Form and FB Login Work

  • To make the mailer form work, go to https://accounts.google.com/b/0/DisplayUnlockCaptcha and confirm.
  • On developers.facebook.com, make sure to 1. whitelist the Heroku link and 2. make your FB app public and 3. add the Heroku link as a valid OAuth redirect URI.
  • Replace config.js:18, with your Heroku link, which looks similar to this https://example-12345.herokuapp.com/auth/facebook/callback
  • Redeploy via $ git push heroku master

codasession's People

Contributors

togiberlin avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.