<footer class="bf-footer" role="contentinfo">
    <div class="container">
        <div class="row">
            <div class="col-md-2">
                <ul class="nav nav-list">
                    <li class="nav-header"><a href="/">Home</a></li>
                    <li class="nav-header"><a href="/community/">Community</a></li>
                        <li><a href="/community/#events">Events</a></li>
                        <li><a href="/community/#mailing-lists">Mailing Lists</a></li>
                        <li><a href="/community/#deployments">Deployments</a></li>
                        <li><a href="/community/#committers">Commiters</a></li>
                </ul>
            </div>
            <div class="col-md-2">
                <ul class="nav nav-list">
                    <li class="nav-header"><a href="https://github.com/apache/usergrid/" target="_blank">Code</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/stack" target="_blank">Server Stack</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/portal" target="_blank">Admin Portal</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/ugc" target="_blank">ugc command line</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/ios" target="_blank">iOS SDK</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/android" target="_blank">Android SDK</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/html5-javascript" target="_blank">HTML5/JS SDK</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/nodejs" target="_blank">node.js module</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/ruby-on-rails" target="_blank">Ruby on Rails gem</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/ruby" target="_blank">Ruby gem</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/php" target="_blank">PHP SDK</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/java" target="_blank">Java SDK</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/sdks/dotnet" target="_blank">.NET / Windows SDK</a></li>
                </ul>
            </div>
            <div class="col-md-2">
                <ul class="nav nav-list">
                    <li class="nav-header">Resources</li>
                    <li><a href="http://github.com/apache/usergrid" target="_blank">GitHub Code</a></li>
                    <li><a href="docs" target="_blank">Docs</a></li>
                    <li><a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=23&view=planning&selectedIssue=USERGRID-362&epics=visible" target="_blank">JIRA Bug Tracker</a></li>
                    <li><a href="http://stackoverflow.com/search?q=usergrid" target="_blank">StackOverflow</a></li>
                    <li><a href="/community/#live">Live Chat</a></li>
                    <li><a href="https://twitter.com/usergrid" target="_blank">Twitter</a></li>
                    <li><a href="https://github.com/apache/usergrid/blob/master/stack#requirements" target="_blank">Getting Started</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/usergrid/GitHub+Based+Contribution+Workflow" target="_blank">Contribution Guidelines</a></li>
                </ul>
            </div>
            <div class="col-md-2">
                <ul class="nav nav-list">
                    <li class="nav-header">Apache</li>
                    <li><a href="http://www.apache.org/licenses/" target="_blank">License</a></li>
                    <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
                    <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
                    <li><a href="http://www.apache.org/security/">Security</a></li>
                    <li><a href="http://www.apache.org/" target="_blank">Apache Foundation</a></li>
                </ul>
            </div>
            <div class="col-md-4">
                <a class="twitter-timeline" href="https://twitter.com/search?q=%23usergrid" data-widget-id="401499136807038976"  data-related="usergrid" height="400px" style="overflow:hidden">Tweets about "usergrid"</a>
                <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
            </div> 
        <!--
            <div class="col-md-4">
                <div class="input-group form-search">
                    <input type="text" class="form-control search-query">
                    <span class="input-group-btn">
                        <button type="submit" class="btn btn-primary" data-type="last">Search</button>
                    </span>
                </div>
            </div> -->
        </div> 
        <div class="row">
            <div id="copyright">
                <img src="/img/egg-logo.png" /><br/><br/>
                <p>Copyright © 2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br>
                Apache and the Apache feather logos are trademarks of The Apache Software Foundation.</p>
                <p class="credits">Site designed & assembled with love by <a href="https://github.com/ryuneeee">@ryuneeee</a> + <a href="https://github.com/realbeast">@realbeast</a> + <a href="https://twitter.com/timanglade">@timanglade</a> + <a href="https://twitter.com/snoopdave">@snoopdave</a> .</p>
            </div>
        </div>
    </div>
</footer>

<script type="text/javascript" src="/js/head.js"></script>
<script type="text/javascript">
    head.js("/js/jquery-1.10.1.min.js", "/js/bootstrap.min.js", "/js/usergrid-site.js");
</script>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-45815079-1', 'apache.org');
  ga('send', 'pageview');

</script>
