Joshfischer/refine docs (#3300)

* refactor main page links

* fix broken link

* clean up
diff --git a/website2/docs/community-contact.md b/website2/docs/community-contact.md
deleted file mode 100644
index bed72a8..0000000
--- a/website2/docs/community-contact.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-id: community-contact
-title: Contact
-sidebar_label: Contact
----
-
-## Contact
-
-#### Mailing lists
-
-| Name                                                                      | Scope                           |                                                                |                                                                    |                                                                           |
-|:--------------------------------------------------------------------------|:--------------------------------|:---------------------------------------------------------------|:-------------------------------------------------------------------|:--------------------------------------------------------------------------|
-| [user@heron.incubator.apache.org](mailto:user@heron.incubator.apache.org) | User-related discussions        | [Subscribe](mailto:user-subscribe@heron.incubator.apache.org)  | [Unsubscribe](mailto:user-unsubscribe@heron.incubator.apache.org)  | [Archives](http://mail-archives.apache.org/mod_mbox/incubator-heron-user/)|
-| [dev@heron.incubator.apache.org](mailto:dev@heron.incubator.apache.org)   | Development-related discussions | [Subscribe](mailto:dev-subscribe@heron.incubator.apache.org)   | [Unsubscribe](mailto:dev-unsubscribe@heron.incubator.apache.org)   | [Archives](http://mail-archives.apache.org/mod_mbox/incubator-heron-dev/) |
-
-#### Slack
-
-[Self-Register](http://heronstreaming.herokuapp.com/) to our [Heron Slack Workspace](https://heronstreaming.slack.com/)
\ No newline at end of file
diff --git a/website2/docs/community-events.md b/website2/docs/community-events.md
deleted file mode 100644
index d7014a3..0000000
--- a/website2/docs/community-events.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-id: community-events
-title: Community Events
-sidebar_label: Community Events
----
-
-Groups
-
-[Apache Heron Bay Area Meetup](https://www.meetup.com/Apache-Heron-Bay-Area)
\ No newline at end of file
diff --git a/website2/website/data/resources.js b/website2/website/data/resources.js
new file mode 100644
index 0000000..742ecef
--- /dev/null
+++ b/website2/website/data/resources.js
@@ -0,0 +1,207 @@
+module.exports = {
+    publications: [
+      {
+        forum: 'O’Reilly',
+        forum_link: 'http://shop.oreilly.com/product/0636920203131.do',
+        title: 'Stream Processing with Heron',
+        link: 'http://shop.oreilly.com/product/0636920203131.do'
+      },
+      {
+        forum: '',
+        forum_link: '',
+        presenter: '',
+        date: 'July 2016',
+        title: 'Streaming@Twitter - Bulletin of the IEEE Computer Society Technical Committee on Data Engineering',
+        link: 'http://sites.computer.org/debull/A15dec/p15.pdf'
+      },
+      {
+        forum: '',
+        forum_link: '',
+        presenter: '',
+        date: 'May 2015',
+        title: 'Twitter Heron: Stream Processing at Scale - SIGMOD’15',
+        link: 'http://dl.acm.org/citation.cfm?id=2595641'
+      },
+      {
+        forum: '',
+        forum_link: '',
+        presenter: '',
+        date: 'June 2013',
+        title: 'Storm@Twitter - SIGMOD\'14',
+        link: 'http://dl.acm.org/citation.cfm?id=2595641'
+      },
+     
+    ],
+    presentations: [
+      {
+        forum: 'Twitter',
+        forum_link: '',
+        presenter: 'Maosong Fu',
+        date: 'April 2016',
+        title: 'Twitter Heron on Apache Aurora - #compute event @Twitter',
+        link: 'https://m.youtube.com/watch?v=ua0ufmr9sQI&feature=youtu.be'
+      },
+      {
+        forum: 'Twitter',
+        forum_link: '',
+        presenter: '',
+        date: 'May 2015',
+        title: 'Twitter Heron: Stream Processing at Scale - SIGMOD’15',
+        link: 'http://dl.acm.org/citation.cfm?id=2595641'
+      },
+      {
+        forum: 'QCon',
+        forum_link: 'https://qconferences.com/',
+        presenter: 'Karthik Ramasamy',
+        date: 'April 2016',
+        title: 'Flying Faster with Heron - InfoQ',
+        link: 'http://www.infoq.com/presentations/twitter-heron'
+      },
+      {
+        forum: 'Data @ Scale',
+        forum_link: 'https://www.youtube.com/channel/UCd9I8ZkgoR1d7GeSj_wi_LQ',
+        presenter: 'Karthik Ramasamy',
+        date: 'September 2015',
+        title: 'Twitter Heron: Stream Processing at Scale - @Scale',
+        link: 'https://www.youtube.com/watch?v=pUaFOuGgmco'
+      },
+      {
+        forum: 'Data @ Scale',
+        forum_link: 'https://www.youtube.com/channel/UCd9I8ZkgoR1d7GeSj_wi_LQ',
+        presenter: 'Karthik Ramasamy',
+        date: 'June 2015',
+        title: 'Stream Processing and Anomaly Detection - Velocity O’Reilly - Note: requires O’Reilly login',
+        link: 'https://player.oreilly.com/videos/9781491927977?login=true'
+      },
+      {
+        forum: 'Google',
+        forum_link: 'hhttps://www.youtube.com/channel/UC7BjFZywGHiqWdEF7SnQ7hQ',
+        presenter: 'Josh Fischer',
+        date: 'October 2018',
+        title: 'Building Apache Heron - BazelCon 2018',
+        link: 'https://www.youtube.com/watch?v=yBTSfA4YDtY&t'
+      },
+    ],
+    blogs: [
+        {
+            forum: 'Twitter Engineering blog',
+            forum_link: 'https://blog.twitter.com/engineering/',
+            presenter: 'Maosong Fu',
+            date: 'Feb 2018',
+            title: 'Leaving the Nest: Heron donated to Apache Software Foundation',
+            link: 'https://blog.twitter.com/engineering/en_us/topics/open-source/2018/heron-donated-to-apache-software-foundation.html'
+          },
+          {
+            forum: 'Twitter Engineering blog',
+            forum_link: 'https://blog.twitter.com/engineering/',
+            presenter: 'Karthik Ramasamy',
+            date: 'May 2016',
+            title: 'Leaving the Nest: Heron donated to Apache Software Foundation',
+            link: 'https://blog.twitter.com/2016/open-sourcing-twitter-heron'
+          },
+          {
+            forum: 'Twitter Engineering blog',
+            forum_link: 'https://blog.twitter.com/engineering/',
+            presenter: 'Karthik Ramasamy',
+            date: 'June 2015',
+            title: 'Flying Faster with Twitter Heron',
+            link: 'https://blog.twitter.com/2016/open-sourcing-twitter-heron'
+          },
+          {
+            forum: 'Streamanalytics',
+            forum_link: 'http://streamanalytics.blogspot.com/',
+            presenter: 'Supun Kamburugamuve',
+            date: 'June 2016',
+            title: 'Deploying Heron on a Cluster of Machines with Apache Aurora',
+            link: 'http://streamanalytics.blogspot.com/2016/06/deploying-heron-on-cluster-of-machines.html'
+          },
+          {
+            forum: '',
+            forum_link: 'http://pulasthisupun.blogspot.com/',
+            presenter: 'Pulasthi Supun',
+            date: 'June 2016',
+            title: 'Setting up Heron Locally with Apache Aurora',
+            link: 'http://pulasthisupun.blogspot.com/2016/06/setting-up-heron-cluster-with-apache.html'
+          },
+          {
+            forum: '1904Labs',
+            forum_link: 'https://1904labs.com/',
+            presenter: 'Josh Fischer',
+            date: 'Feb 2018',
+            title: 'Introducing Heron’s ECO; A Flexible Way To Manage Topologies',
+            link: 'https://1904labs.com/2018/02/14/introducing-herons-eco-flexible-way-manage-topologies/'
+          },
+          {
+            forum: 'Twitter University',
+            forum_link: 'https://www.twitter.com/',
+            presenter: 'Arun Kejariwal',
+            date: 'May 2016',
+            title: 'Real-Time Analytics: Algorithms and Systems - Twitter University',
+            link: 'http://www.slideshare.net/arunkejariwal/real-time-analytics-algorithms-and-systems'
+          },
+          {
+            forum: 'O’Reilly',
+            forum_link: 'https://www.oreilly.com/',
+            presenter: 'Arun Kejariwal',
+            date: 'June 2015',
+            title: 'Stream Processing and Anomaly Detection - Velocity O’Reilly',
+            link: 'http://www.slideshare.net/arunkejariwal/velocity-2015final'
+          },
+    ],
+    press: [
+        {
+            forum: '',
+            forum_link: '',
+            presenter: 'BenZinga ',
+            date: 'June 2016',
+            title: 'Heron, Twitter\'s Data Streaming Platform, Has Been Open Sourced',
+            link: 'http://www.benzinga.com/tech/16/06/8119962/heron-twitters-data-streaming-platform-has-been-open-sourced'
+          },
+          {
+            forum: '',
+            forum_link: '',
+            presenter: 'Forbes',
+            date: 'June 2016',
+            title: 'Twitter Open Sources Heron -- Data Streaming For Dummies',
+            link: 'http://www.forbes.com/sites/adrianbridgwater/2016/06/16/twitter-open-sources-heron-data-streaming-for-dummies/#6f8984319b50'
+          },
+          {
+            forum: '',
+            forum_link: '',
+            presenter: 'All Things Hadoop',
+            date: 'May 2016',
+            title: 'Getting Started with Heron on Apache Mesos and Apache Kafka',
+            link: 'https://allthingshadoop.com/2016/05/30/getting-started-with-heron-on-apache-mesos-and-apache-kafka/'
+          },
+          {
+            forum: '',
+            forum_link: '',
+            presenter: 'VentureBeat',
+            date: 'May 2016',
+            title: 'Twitter open-sources Heron, its real-time stream-processing engine',
+            link: 'http://venturebeat.com/2016/05/25/twitter-open-sources-heron-its-real-time-stream-processing-engine/'
+          },
+          {
+            forum: '',
+            forum_link: '',
+            presenter: 'Forbes',
+            date: 'June 2015',
+            title: 'Twitter\'s Heron Will Start a New Chapter in Real-Time Streaming',
+            link: 'http://www.forbes.com/sites/janakirammsv/2015/06/08/twitters-heron-will-start-a-new-chapter-in-real-time-streaming/#62c8645b2306'
+          },
+          {
+            forum: '',
+            forum_link: '',
+            presenter: 'InfoQ',
+            date: 'June 2015',
+            title: 'Twitter Has Replaced Storm with Heron',
+            link: 'https://www.infoq.com/news/2015/06/twitter-storm-heron'
+          },
+    ]
+  }
+
+
+
+
+
+
diff --git a/website2/website/pages/en/contact.js b/website2/website/pages/en/contact.js
new file mode 100644
index 0000000..5d25b83
--- /dev/null
+++ b/website2/website/pages/en/contact.js
@@ -0,0 +1,98 @@
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
+const GridBlock = CompLibrary.GridBlock;
+const translate = require('../../server/translate.js').translate;
+
+const CWD = process.cwd();
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+
+class Contact extends React.Component {
+  render() {
+    let language = this.props.language || '';
+    const mailingLists = [
+      {
+        email: 'users@heron.incubator.apache.org',
+        desc: 'User-related discussions',
+        subscribe: 'mailto:user-subscribe@heron.incubator.apache.org',
+        unsubscribe: 'mailto:users-unsubscribe@heron.incubator.apache.org',
+        archives: 'http://mail-archives.apache.org/mod_mbox/heron-user/'
+      },
+      {
+        email: 'dev@heron.incubator.apache.org',
+        desc: 'Development-related discussions',
+        subscribe: 'mailto:dev-subscribe@heron.incubator.apache.org',
+        unsubscribe: 'mailto:dev-unsubscribe@heron.incubator.apache.org',
+        archives: 'http://mail-archives.apache.org/mod_mbox/heron-dev/'
+      },
+      {
+        email: 'commits@heron.incubator.apache.org',
+        desc: 'All commits to the Heron repository',
+        subscribe: 'mailto:commits-subscribe@heron.incubator.apache.org',
+        unsubscribe: 'mailto:commits-unsubscribe@heron.incubator.apache.org',
+        archives: 'http://mail-archives.apache.org/mod_mbox/heron-commits/'
+      }
+    ]
+
+    return (
+      <div className="docMainWrapper wrapper">
+        <Container className="mainContainer documentContainer postContainer">
+          <div className="post">
+            <header className="postHeader">
+              <h1><translate>Contact</translate></h1>
+              <hr />
+            </header>
+            <p><translate>
+            There are many ways to get help from the Apache Heron community.
+            The mailing lists are the primary place where all Heron committers are present.
+            Bugs and feature requests can either be discussed on the dev mailing list or
+            by opening an issue on
+            <a href="https://github.com/apache/incubator-heron/" target="_blank">GitHub</a>.
+            </translate></p>
+
+            <h2><translate>Mailing Lists</translate></h2>
+            <table className="versions">
+              <thead>
+                <tr>
+                  <th><translate>Name</translate></th>
+                  <th><translate>Scope</translate></th>
+                  <th></th>
+                  <th></th>
+                  <th></th>
+                </tr>
+              </thead>
+              <tbody>
+                {mailingLists.map(
+                  list => (
+                      <tr key={list.email}>
+                        <td>{list.email}</td>
+                        <td>{list.desc}</td>
+                        <td><a href={list.subscribe}><translate>Subscribe</translate></a></td>
+                        <td><a href={list.unsubscribe}><translate>Unsubscribe</translate></a></td>
+                        <td><a href={list.archives}><translate>Archives</translate></a></td>
+                      </tr>
+                    )
+                )}
+              </tbody>
+            </table>
+
+            <h2><translate>Slack</translate></h2>
+            <p><translate>There is a Heron slack channel that is used for informal discussions for devs and users.</translate></p>
+
+            <p><translate>The Slack instance is at </translate> <a href="https://heronstreaming.slack.com/" target="_blank">
+                    https://heronstreaming.slack.com/</a></p>
+
+            <p><translate>You can self-register at </translate> <a href="http://heronstreaming.herokuapp.com/" target="_blank">
+                    http://heronstreaming.herokuapp.com/</a></p>
+          </div>
+        </Container>
+      </div>
+    );
+  }
+}
+
+module.exports = Contact;
\ No newline at end of file
diff --git a/website2/website/pages/en/events.js b/website2/website/pages/en/events.js
new file mode 100644
index 0000000..4197f36
--- /dev/null
+++ b/website2/website/pages/en/events.js
@@ -0,0 +1,38 @@
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
+const GridBlock = CompLibrary.GridBlock;
+
+const CWD = process.cwd();
+
+const translate = require('../../server/translate.js').translate;
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+
+class Events extends React.Component {
+  render() {
+
+    return (
+      <div className="docMainWrapper wrapper">
+        <Container className="mainContainer documentContainer postContainer">
+          <div className="post">
+            <header className="postHeader">
+              <h1><translate>Events</translate></h1>
+              <hr />
+            </header>
+            
+            <h2><translate>Groups</translate></h2>
+            <MarkdownBlock>
+              - [Apache Heron Bay Area Meetup Group](https://www.meetup.com/Apache-Heron-Bay-Area/events/249414421/)
+            </MarkdownBlock>
+          </div>
+        </Container>
+      </div>
+    );
+  }
+}
+
+module.exports = Events;
\ No newline at end of file
diff --git a/website2/website/pages/en/resources.js b/website2/website/pages/en/resources.js
new file mode 100644
index 0000000..88344f0
--- /dev/null
+++ b/website2/website/pages/en/resources.js
@@ -0,0 +1,122 @@
+
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+
+const CWD = process.cwd();
+
+const translate = require('../../server/translate.js').translate;
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+const resources = require(`${CWD}/data/resources.js`)
+
+class Resources extends React.Component {
+  render() {
+    let language = this.props.language || '';
+    
+
+    return (
+      <div className="docMainWrapper wrapper">
+        <Container className="mainContainer documentContainer postContainer">
+          <div className="post">
+            <header className="postHeader">
+              <h1><translate>Resources</translate></h1>
+              <hr />
+            </header>
+            
+            <h2><translate>Articles</translate></h2>
+            <table className="versions">
+              <thead>
+                <tr>
+                  <th><translate>Link</translate></th>
+                </tr>
+              </thead>
+              <tbody>
+                {resources.publications.map(
+                  (a, i) => (
+                    <tr key={i}>
+                      <td><a href={a.link}>{a.title}</a></td>
+                    </tr>
+                  )
+                )}
+              </tbody>
+            </table>
+
+            <h2><translate>Presentations</translate></h2>
+            <table className="versions">
+              <thead>
+                <tr>
+                  <th><translate>Forum</translate></th>
+                  <th><translate>Data</translate></th>
+                  <th><translate>Presenter</translate></th>
+                  <th><translate>Link</translate></th>
+                </tr>
+              </thead>
+              <tbody>
+                {resources.presentations.map(
+                  (p, i) => (
+                    <tr key={i}>
+                      <td><a href={p.forum_link}>{p.forum}</a></td>
+                      <td>{p.date}</td>
+                      <td>{p.presenter}</td>
+                      <td><a href={p.link}>{p.title}</a></td>
+                    </tr>
+                  )
+                )}
+              </tbody>
+            </table>
+            <h2><translate>Blogs</translate></h2>
+            <table className="versions">
+              <thead>
+                <tr>
+                  <th><translate>Forum</translate></th>
+                  <th><translate>Data</translate></th>
+                  <th><translate>Presenter</translate></th>
+                  <th><translate>Link</translate></th>
+                </tr>
+              </thead>
+              <tbody>
+                {resources.blogs.map(
+                  (p, i) => (
+                    <tr key={i}>
+                      <td><a href={p.forum_link}>{p.forum}</a></td>
+                      <td>{p.date}</td>
+                      <td>{p.presenter}</td>
+                      <td><a href={p.link}>{p.title}</a></td>
+                    </tr>
+                  )
+                )}
+              </tbody>
+            </table>
+            <h2><translate>Press</translate></h2>
+            <table className="versions">
+              <thead>
+                <tr>
+                  <th><translate>Data</translate></th>
+                  <th><translate>Presenter</translate></th>
+                  <th><translate>Link</translate></th>
+                </tr>
+              </thead>
+              <tbody>
+                {resources.press.map(
+                  (p, i) => (
+                    <tr key={i}>
+                      <td>{p.date}</td>
+                      <td>{p.presenter}</td>
+                      <td><a href={p.link}>{p.title}</a></td>
+                    </tr>
+                  )
+                )}
+              </tbody>
+            </table>
+
+          </div>
+        </Container>
+      </div>
+    );
+  }
+}
+
+module.exports = Resources;
\ No newline at end of file
diff --git a/website2/website/static/js/custom.js b/website2/website/static/js/custom.js
index cd61b65..a89d27f 100644
--- a/website2/website/static/js/custom.js
+++ b/website2/website/static/js/custom.js
@@ -7,10 +7,10 @@
     '<a id="community-menu" href="#">Community<span style="font-size: 0.75em">&nbsp;▼</span></a>' +
     '<div id="community-dropdown" class="hide" >' +
       '<ul id="community-dropdown-items">' +
-        '<li><a href="community-contact" style="color:#1d3f5f">Contact</a></li>' +
-        '<li><a href="community-events" style="color:#1d3f5f">Events</a></li>' +
+        '<li><a href="/contact" style="color:#1d3f5f">Contact</a></li>' +
+        '<li><a href="/events" style="color:#1d3f5f">Events</a></li>' +
         '<li><a href="https://github.com/apache/incubator-heron/issues" style="color:#1d3f5f">Issue tracking</a></li>' +
-        '<li><a href="heron-resources-resources" style="color:#1d3f5f">Resources</a></li>' +
+        '<li><a href="/resources" style="color:#1d3f5f">Resources</a></li>' +
         '<li><a href="/team" style="color:#1d3f5f">Team</a></li>' +
       '</ul>' +
     '</div>' +