Difference between revisions of "Team:Waterloo/Software"

(Prototype team page)
 
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Waterloo}}
 
 
<html>
 
<html>
 +
<!-- ####################################################### -->
 +
<!-- #  This html was produced by the igemwiki generator  # -->
 +
<!-- #  https://github.com/igemuoftATG/generator-igemwiki  # -->
 +
<!-- ####################################################### -->
  
 +
<!-- repo for this wiki: https://github.com/igem-waterloo/wiki2017 -->
  
<div class="column full_size judges-will-not-evaluate">
+
</html>
<h3>★  ALERT! </h3>
+
{{Waterloo/head}}
<p>This page is used by the judges to evaluate your team for the <a href="https://2017.igem.org/Judging/Medals">medal criterion</a> or <a href="https://2017.igem.org/Judging/Awards"> award listed above</a>. </p>
+
<html>
<p> Delete this box in order to be evaluated for this medal criterion and/or award. See more information at <a href="https://2017.igem.org/Judging/Pages_for_Awards"> Instructions for Pages for awards</a>.</p>
+
</div>
+
<div class="clear"></div>
+
  
 +
<nav class="navbar navbar-toggleable-md navbar-inverse bg-primary fixed-top"><a class="navbar-brand" href="https://2017.igem.org/Team:Waterloo">Waterloo</a><button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
 +
<span class="navbar-toggler-icon"></span>
 +
</button><div class="collapse navbar-collapse" id="navbarCollapse"><ul class="navbar-nav mr-auto">
 +
<li class="nav-item"><a class="nav-link" href="https://2017.igem.org/Team:Waterloo"><span>Home</span></a></li>
 +
</li>
 +
<li class="dropdown nav-item"><a href="#" class="nav-link dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Team<span class="caret"></span></a>
 +
<ul class="dropdown-menu">
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Team"><span>Team</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Collaborations"><span>Collaborations</span></a></li>
 +
</li>
 +
</ul>
 +
<li class="dropdown nav-item"><a href="#" class="nav-link dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Project<span class="caret"></span></a>
 +
<ul class="dropdown-menu">
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Contribution"><span>Contribution</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Description"><span>Description</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Design"><span>Design</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Experiments"><span>Experiments</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Proof"><span>Proof</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Demonstrate"><span>Demonstrate</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Results"><span>Results</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Notebook"><span>Notebook</span></a></li>
 +
</li>
 +
</ul>
 +
<li class="nav-item"><a class="nav-link" href="https://2017.igem.org/Team:Waterloo/Parts"><span>Parts</span></a></li>
 +
</li>
 +
<li class="nav-item"><a class="nav-link" href="https://2017.igem.org/Team:Waterloo/Safety"><span>Safety</span></a></li>
 +
</li>
 +
<li class="nav-item"><a class="nav-link" href="https://2017.igem.org/Team:Waterloo/Attributions"><span>Attributions</span></a></li>
 +
</li>
 +
<li class="dropdown nav-item"><a href="#" class="nav-link dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Human Practices<span class="caret"></span></a>
 +
<ul class="dropdown-menu">
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Human_Practices"><span>Human Practices</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/HP/Silver"><span>Silver</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/HP/Gold_Integrated"><span>Gold</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Integrated_Practices"><span>Integrated Practices</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Engagement"><span>Engagement</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Snake35"><span>Snake35</span></a></li>
 +
</li>
 +
</ul>
 +
<li class="active dropdown nav-item"><a href="#" class="nav-link dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Awards<span class="caret"></span></a>
 +
<ul class="dropdown-menu">
 +
<li class="active"><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Software"><span>Software</span></a></li>
 +
</li>
 +
<li class=""><a class="dropdown-item" href="https://2017.igem.org/Team:Waterloo/Model"><span>Model</span></a></li>
 +
</li>
 +
</ul>
 +
</ul>
 +
</div></nav>
 +
<div class="content">
  
<div class="column half_size">
+
  <div class="titleBox row" style="background: url(undefined)">
<h1>Software</h1>
+
    <div class="layer shade">
<h3>Best Software Tool Special Prize</h3>
+
      <div class="squiggle squiggleForward col-xs-4"></div>
<p>Regardless of the topic, iGEM projects often create or adapt computational tools to move the project forward. Because they are born out of a direct practical need, these software tools (or new computational methods) can be surprisingly useful for other teams. Without necessarily being big or complex, they can make the crucial difference to a project's success. This award tries to find and honor such "nuggets" of computational work.
+
      <div class="titleCaption col-xs-4">
 
+
        <h1>
 
+
Software
<br><br>
+
        </h1>
To compete for the <a href="https://2017.igem.org/Judging/Awards">Best Software Tool prize</a>, please describe your work on this page and also fill out the description on the <a href="https://2017.igem.org/Judging/Judging_Form">judging form</a>.
+
      </div>
<br><br>
+
      <div class="squiggle squiggleBackward col-xs-4"></div>
You must also delete the message box on the top of this page to be eligible for this prize.
+
    </div>
</p>
+
  </div>
 
+
  
 +
<div class="row"><div class="col"><div class="content-main"><h1 id="cigem">CiGEM</h1>
 +
<p>This year, we worked with U of T to adapt their <a href="https://www.npmjs.com/package/igemwiki-api">igemwiki-api</a> into a continuous integration server. This server allows teams to edit their wikis locally and on GitHub and automatically upload them to igem.org servers when changes are made. This allows iGEM teams to write cleaner code and saves them time uploading that code manually.</p>
 +
<h2 id="continuous-integration">Continuous Integration</h2>
 +
<p>Continuous integration (CI) refers to a continuous process of integrating code after it is written. It is a very common practice in software development because it removes the unnecessary hassle of uploading by hand. It also ensures that the main repository which stores the code represents exactly what is seen on the website. This prevents confusion as to who changed what and ensures that those changes will never be lost.</p>
 +
<h2 id="nodejs">NodeJS</h2>
 +
<p>NodeJS is a platform for building Javascript programs that can be run on any machine. It is a very popular tool for building web servers and was what U of T iGEM made their igemwiki-api with. We decided to build the CI server with it because it is very fast, familiar for many web developers and natively supported the igemwiki-api.</p>
 +
<h2 id="implementation">Implementation</h2>
 +
<p>CiGEM is hosted on Google App Engine and supports two endpoints. The endpoint &quot;/payload/setup&quot; accepts a team name and GitHub repository URL and &quot;clones&quot; the code as well as adds the team to a registry. The endpoint &quot;/payload&quot; checks for a GitHub push header. If it finds one, it pulls the code from GitHub and pushes it live to iGEM&#39;s servers. The setup for the server is as easy as making a request to the setup handler and adding a WebHook on GitHub. The code for the server can be found on <a href="https://github.com/igem-waterloo/cigem">our GitHub repository</a></p>
 +
</div></div></div>
 
</div>
 
</div>
 
<div class="column half_size">
 
<h5> Inspiration </h5>
 
<p>
 
Here are a few examples from previous teams:
 
</p>
 
<ul>
 
<li><a href="https://2016.igem.org/Team:BostonU_HW">2016 BostonU HW</a></li>
 
<li><a href="https://2016.igem.org/Team:Valencia_UPV">2016 Valencia UPV</a></li>
 
<li><a href="https://2014.igem.org/Team:Heidelberg/Software">2014 Heidelberg</a></li>
 
<li><a href="https://2014.igem.org/Team:Aachen/Project/Measurement_Device#Software">2014 Aachen</a></li>
 
</ul>
 
 
</div>
 
 
 
</html>
 
</html>
 +
{{Waterloo/footer}}

Latest revision as of 01:10, 2 November 2017

Software

CiGEM

This year, we worked with U of T to adapt their igemwiki-api into a continuous integration server. This server allows teams to edit their wikis locally and on GitHub and automatically upload them to igem.org servers when changes are made. This allows iGEM teams to write cleaner code and saves them time uploading that code manually.

Continuous Integration

Continuous integration (CI) refers to a continuous process of integrating code after it is written. It is a very common practice in software development because it removes the unnecessary hassle of uploading by hand. It also ensures that the main repository which stores the code represents exactly what is seen on the website. This prevents confusion as to who changed what and ensures that those changes will never be lost.

NodeJS

NodeJS is a platform for building Javascript programs that can be run on any machine. It is a very popular tool for building web servers and was what U of T iGEM made their igemwiki-api with. We decided to build the CI server with it because it is very fast, familiar for many web developers and natively supported the igemwiki-api.

Implementation

CiGEM is hosted on Google App Engine and supports two endpoints. The endpoint "/payload/setup" accepts a team name and GitHub repository URL and "clones" the code as well as adds the team to a registry. The endpoint "/payload" checks for a GitHub push header. If it finds one, it pulls the code from GitHub and pushes it live to iGEM's servers. The setup for the server is as easy as making a request to the setup handler and adding a WebHook on GitHub. The code for the server can be found on our GitHub repository