├── 2015 ├── 208f2460eed49cb4545fe508acbde588.eot ├── 2980083682e94d33a66eef2e7d612519.svg ├── 2a70ad2c9432554ff6265c7222b80f84.svg ├── 33c44da872eb18f70cb6d821cd08e8f6.ttf ├── 45c73723862c6fc5eb3d6961db2d71fb.eot ├── 4b5a84aaf1c9485e060c503a0ff8cadb.woff2 ├── 693654ac27ff0d90368b27037410b6f1.woff ├── 706450d7bba6374ca02fe167d86685cb.ttf ├── 76a4f23c6be74fd309e0d0fd2c27a5de.svg ├── 7c87870ab40d63cfb8870c1f183f9939.ttf ├── 97493d3f11c0a3bd5cbd959f5d19b699.woff2 ├── api │ ├── schedule │ ├── speakers │ └── sponsors ├── app │ ├── App.js │ ├── components │ │ ├── ButtonLink.js │ │ ├── Divider.js │ │ ├── MenuItem.js │ │ └── Navigation.js │ ├── helpers │ │ ├── borderRadius.js │ │ ├── browser.js │ │ ├── constants.js │ │ ├── cssPrefix.js │ │ ├── googleAnalytics.js │ │ └── morph.js │ └── screens │ │ ├── About │ │ └── index.js │ │ ├── Conduct │ │ └── index.js │ │ ├── Home │ │ ├── components │ │ │ └── Icon.js │ │ └── index.js │ │ ├── Organizers │ │ ├── components │ │ │ └── Avatar.js │ │ └── index.js │ │ ├── Schedule │ │ ├── components │ │ │ └── Session.js │ │ └── index.js │ │ ├── Speakers │ │ ├── components │ │ │ └── Avatar.js │ │ └── index.js │ │ ├── Sponsors │ │ ├── components │ │ │ └── Sponsor.js │ │ └── index.js │ │ ├── Tickets │ │ ├── components │ │ │ └── Quantity.js │ │ └── index.js │ │ └── Venue │ │ └── index.js ├── assets │ ├── css │ │ └── styles.css │ ├── dist │ │ └── img │ │ │ ├── SLCBackground.png │ │ │ ├── SLCcity.png │ │ │ ├── avatarBackground.png │ │ │ ├── cropCircle.png │ │ │ ├── moon.png │ │ │ ├── organizers │ │ │ ├── aimee.jpeg │ │ │ ├── jamison.jpeg │ │ │ ├── joe.jpeg │ │ │ ├── matt.jpeg │ │ │ └── sunny.jpeg │ │ │ ├── reactVenue.png │ │ │ ├── robot.png │ │ │ ├── robot_withLaser.png │ │ │ ├── speakers │ │ │ ├── abhinavrastogi.jpeg │ │ │ ├── ccheever.jpeg │ │ │ ├── djsmith42.jpg │ │ │ ├── glenmaddern.jpg │ │ │ ├── holtbt.jpg │ │ │ ├── iPancreas.png │ │ │ ├── immediatedelay.jpeg │ │ │ ├── jakobdamjensen.png │ │ │ ├── jamischarles.jpeg │ │ │ ├── jemyoung.png │ │ │ ├── jessitron.jpg │ │ │ ├── johnkpaul.jpg │ │ │ ├── lbljeffmo.jpeg │ │ │ ├── leeb.jpg │ │ │ ├── linclark.jpg │ │ │ ├── peterpme.jpeg │ │ │ ├── rickyvetter.jpeg │ │ │ ├── ryoia.jpeg │ │ │ ├── schrockn.jpg │ │ │ └── vjeux.jpg │ │ │ ├── speakersBackground.png │ │ │ ├── sponsors │ │ │ ├── MX-Square-Black.png │ │ │ ├── canopy.jpg │ │ │ ├── codeschool.jpg │ │ │ ├── facebook.png │ │ │ ├── hirevue.png │ │ │ ├── instructure.png │ │ │ ├── kualico.png │ │ │ ├── kualicologo-small.png │ │ │ ├── kualicologo.png │ │ │ ├── mx.png │ │ │ ├── pluralsight.jpg │ │ │ ├── pluralsight.png │ │ │ ├── rangle.jpg │ │ │ ├── rangle.png │ │ │ ├── raygun.jpg │ │ │ └── redsky.png │ │ │ ├── tentacle.png │ │ │ ├── tweet-icon.png │ │ │ ├── ufoDark.png │ │ │ ├── ufoMain.png │ │ │ ├── venue.jpg │ │ │ └── weatheredBackground.png │ ├── fonts │ │ ├── true-crimes-webfont.eot │ │ ├── true-crimes-webfont.svg │ │ ├── true-crimes-webfont.ttf │ │ └── true-crimes-webfont.woff │ └── img │ │ ├── SLCBackground.png │ │ ├── SLCcity.png │ │ ├── avatarBackground.png │ │ ├── cropCircle.png │ │ ├── moon.png │ │ ├── organizers │ │ ├── aimee.jpeg │ │ ├── jamison.jpeg │ │ ├── joe.jpeg │ │ ├── matt.jpeg │ │ └── sunny.jpeg │ │ ├── reactVenue.png │ │ ├── robot.png │ │ ├── robot_withLaser.png │ │ ├── speakers │ │ ├── abhinavrastogi.jpeg │ │ ├── ccheever.jpeg │ │ ├── djsmith42.jpg │ │ ├── glenmaddern.jpg │ │ ├── holtbt.jpg │ │ ├── iPancreas.png │ │ ├── immediatedelay.jpeg │ │ ├── jakobdamjensen.png │ │ ├── jamischarles.jpeg │ │ ├── jemyoung.png │ │ ├── jessitron.jpg │ │ ├── johnkpaul.jpg │ │ ├── lbljeffmo.jpeg │ │ ├── leeb.jpg │ │ ├── linclark.jpg │ │ ├── peterpme.jpeg │ │ ├── rickyvetter.jpeg │ │ ├── ryoia.jpeg │ │ ├── schrockn.jpg │ │ └── vjeux.jpg │ │ ├── speakersBackground.png │ │ ├── sponsors │ │ ├── MX-Square-Black.png │ │ ├── canopy.jpg │ │ ├── codeschool.jpg │ │ ├── facebook.png │ │ ├── hirevue.png │ │ ├── instructure.png │ │ ├── kualico.png │ │ ├── kualicologo-small.png │ │ ├── kualicologo.png │ │ ├── mx.png │ │ ├── pluralsight.jpg │ │ ├── pluralsight.png │ │ ├── rangle.jpg │ │ ├── rangle.png │ │ ├── raygun.jpg │ │ └── redsky.png │ │ ├── tentacle.png │ │ ├── tweet-icon.png │ │ ├── ufoDark.png │ │ ├── ufoMain.png │ │ ├── venue.jpg │ │ └── weatheredBackground.png ├── bundle.js ├── d9ee23d59d0e0e727b51368b458a0bff.woff ├── dfb02f8f6d0cedc009ee5887cc68f1f3.woff ├── docs │ └── sponsor.pdf ├── f7c2b4b747b1a225eb8dee034134a1b0.eot ├── imagemin.js ├── index.html ├── index.js ├── package.json ├── scripts │ └── deploy └── webpack.config.js ├── 2016 ├── 404.html ├── api │ ├── schedule │ ├── speakers │ └── sponsors ├── app │ ├── App.js │ ├── components │ │ ├── About.js │ │ ├── Avatar.js │ │ ├── Button.js │ │ ├── Footer.js │ │ ├── Header.js │ │ ├── Icon.js │ │ ├── Legend.js │ │ ├── Newsletter.js │ │ ├── Person.js │ │ └── Tickets.js │ ├── helpers │ │ ├── DateUtils.js │ │ ├── constants.js │ │ ├── googleAnalytics.js │ │ └── livestream.js │ └── screens │ │ ├── About │ │ └── index.js │ │ ├── Conduct │ │ └── index.js │ │ ├── Home │ │ └── index.js │ │ ├── Proposals │ │ └── index.js │ │ ├── Schedule │ │ └── index.js │ │ ├── Speakers │ │ └── index.js │ │ ├── Sponsors │ │ └── index.js │ │ ├── Stream │ │ └── index.js │ │ └── Venue │ │ └── index.js ├── assets │ ├── css │ │ ├── responsive-500.scss │ │ ├── responsive-800.scss │ │ └── styles.scss │ ├── dist │ │ └── img │ │ │ ├── ReactLogo.png │ │ │ ├── ReactLogo.svg │ │ │ ├── ReactLogoGreen.svg │ │ │ ├── RoseWagnerDetail.png │ │ │ ├── RoseWagnerMap.png │ │ │ ├── SaltLakeCity.png │ │ │ └── sponsors │ │ │ ├── deque.png │ │ │ ├── egghead.png │ │ │ ├── egghead.svg │ │ │ ├── facebook.png │ │ │ ├── frontside.png │ │ │ ├── instructure.png │ │ │ ├── jane.png │ │ │ ├── kuali.png │ │ │ ├── mozilla.png │ │ │ ├── netflix.png │ │ │ ├── progress.png │ │ │ ├── rangle.png │ │ │ ├── react-training.png │ │ │ ├── salesforce.png │ │ │ └── walmart.png │ └── img │ │ ├── ReactLogo.png │ │ ├── ReactLogo.svg │ │ ├── ReactLogoGreen.svg │ │ ├── RoseWagnerDetail.png │ │ ├── RoseWagnerMap.png │ │ ├── SaltLakeCity.png │ │ └── sponsors │ │ ├── deque.png │ │ ├── egghead.png │ │ ├── egghead.svg │ │ ├── facebook.png │ │ ├── frontside.png │ │ ├── instructure.png │ │ ├── jane.png │ │ ├── kuali.png │ │ ├── mozilla.png │ │ ├── netflix.png │ │ ├── progress.png │ │ ├── rangle.png │ │ ├── react-training.png │ │ ├── salesforce.png │ │ └── walmart.png ├── bundle.js ├── c9d00197123bb4610f5d43cb5e8f8b9a.png ├── docs │ └── sponsor.pdf ├── fa71b257f4d3dbb315092fb69f18e0b4.png ├── index.html ├── index.js ├── package.json ├── scripts │ ├── deploy │ └── imagemin └── webpack.config.js ├── 2017 ├── .nvmrc ├── 404.html ├── api │ ├── schedule │ ├── speakers │ └── sponsors ├── app │ ├── App.js │ ├── components │ │ ├── About.js │ │ ├── Avatar.js │ │ ├── Button.js │ │ ├── Card.js │ │ ├── Footer.js │ │ ├── Header.js │ │ ├── Icon.js │ │ ├── Legend.js │ │ ├── Newsletter.js │ │ ├── Person.js │ │ └── Tickets.js │ ├── helpers │ │ ├── DateUtils.js │ │ ├── constants.js │ │ ├── googleAnalytics.js │ │ ├── livestream.js │ │ └── shuffle.js │ └── screens │ │ ├── About │ │ └── index.js │ │ ├── Conduct │ │ └── index.js │ │ ├── Home │ │ └── index.js │ │ ├── Proposals │ │ └── index.js │ │ ├── Schedule │ │ └── index.js │ │ ├── Speakers │ │ └── index.js │ │ ├── Sponsors │ │ └── index.js │ │ ├── Stream │ │ └── index.js │ │ └── Venue │ │ └── index.js ├── assets │ ├── css │ │ ├── responsive-500.scss │ │ ├── responsive-800.scss │ │ └── styles.scss │ └── img │ │ ├── ReactLogo.png │ │ ├── ReactLogo.svg │ │ ├── ReactLogoGreen.svg │ │ ├── RoseWagnerDetail.png │ │ ├── RoseWagnerMap.png │ │ ├── SaltLakeCity.png │ │ ├── SaltLakeCitySkyline.png │ │ ├── SheratonMap.png │ │ ├── speakers │ │ ├── BonnieMilianB.jpg │ │ ├── TheLarkInn.jpg │ │ ├── benmvp.jpg │ │ ├── carakuei.jpg │ │ ├── chantastic.jpg │ │ ├── cmatheson.jpg │ │ ├── czaplic.jpg │ │ ├── daajust.jpg │ │ ├── davidkpiano.jpg │ │ ├── devonbl.jpg │ │ ├── iPancreas.jpg │ │ ├── iam_preethi.jpg │ │ ├── left_pad.jpg │ │ ├── linclark.jpg │ │ ├── mjackson.jpg │ │ ├── mxstbr.jpg │ │ ├── necolas.jpg │ │ ├── sugargreenbean.jpg │ │ ├── sxywu.jpg │ │ └── zackargyle.jpg │ │ └── sponsors │ │ ├── bugsnag.png │ │ ├── egghead.svg │ │ ├── facebook.png │ │ ├── instructure.png │ │ ├── jane.png │ │ ├── netlify.png │ │ ├── webflow.png │ │ └── wordpress.png ├── c9d00197123bb4610f5d43cb5e8f8b9a.png ├── docs │ └── sponsor.pdf ├── fa71b257f4d3dbb315092fb69f18e0b4.png ├── index.html ├── index.js ├── package.json ├── scripts │ ├── deploy │ └── imagemin ├── table-flip.sh └── webpack.config.js ├── 2018 ├── .nvmrc ├── 404.html ├── aedf3af8eab0485c6ee8abd7513bba95.png ├── api │ ├── schedule │ ├── speakers │ ├── sponsors │ └── tickets ├── app │ ├── App.js │ ├── components │ │ ├── About.js │ │ ├── Avatar.js │ │ ├── Button.js │ │ ├── Card.js │ │ ├── Countdown.js │ │ ├── Footer.js │ │ ├── Header.js │ │ ├── Icon.js │ │ ├── Legend.js │ │ ├── Newsletter.js │ │ ├── Person.js │ │ └── Tickets.js │ ├── helpers │ │ ├── DateUtils.js │ │ ├── constants.js │ │ ├── googleAnalytics.js │ │ ├── livestream.js │ │ └── shuffle.js │ └── screens │ │ ├── About │ │ └── index.js │ │ ├── Conduct │ │ └── index.js │ │ ├── Home │ │ └── index.js │ │ ├── Proposals │ │ └── index.js │ │ ├── Schedule │ │ └── index.js │ │ ├── Speakers │ │ └── index.js │ │ ├── Sponsors │ │ └── index.js │ │ ├── Stream │ │ └── index.js │ │ └── Venue │ │ └── index.js ├── assets │ ├── css │ │ ├── responsive-500.scss │ │ ├── responsive-800.scss │ │ └── styles.scss │ ├── dist │ │ └── img │ │ │ ├── ReactLogo.png │ │ │ ├── ReactLogo.svg │ │ │ ├── ReactLogoGreen.svg │ │ │ ├── RoseWagnerDetail.png │ │ │ ├── RoseWagnerMap.png │ │ │ ├── SaltLakeCity.png │ │ │ ├── SaltLakeCitySkyline.png │ │ │ ├── SheratonMap.png │ │ │ ├── speakers │ │ │ ├── _jayphelps.jpg │ │ │ ├── apvarun.jpg │ │ │ ├── aweary.jpg │ │ │ ├── carofine247.jpg │ │ │ ├── chantastic.jpg │ │ │ ├── eveporcello.jpg │ │ │ ├── featherart.jpg │ │ │ ├── holtbt.jpg │ │ │ ├── jayphelps.jpg │ │ │ ├── joshwcomeau.jpg │ │ │ ├── ken_wheeler.jpg │ │ │ ├── kentcdodds.png │ │ │ ├── left_pad.jpg │ │ │ ├── modernserf.jpg │ │ │ ├── mybluewristband.jpg │ │ │ ├── panicwhenever.jpg │ │ │ ├── ryanflorence.jpg │ │ │ ├── sugarpirate_.jpg │ │ │ ├── swyx.jpg │ │ │ ├── sxywu.jpg │ │ │ ├── threepointone.jpg │ │ │ └── wisecobbler.jpg │ │ │ └── sponsors │ │ │ ├── amex.png │ │ │ ├── bugsnag.png │ │ │ ├── echobind.svg │ │ │ ├── egghead.png │ │ │ ├── formidable.png │ │ │ ├── hpe.svg │ │ │ ├── instructure.png │ │ │ ├── microsoft.png │ │ │ ├── progress.png │ │ │ ├── underbelly.svg │ │ │ ├── usds.png │ │ │ ├── webflow.png │ │ │ └── workfront.png │ └── img │ │ ├── ReactLogo.png │ │ ├── ReactLogo.svg │ │ ├── ReactLogoGreen.svg │ │ ├── RoseWagnerDetail.png │ │ ├── RoseWagnerMap.png │ │ ├── SaltLakeCity.png │ │ ├── SaltLakeCitySkyline.png │ │ ├── SheratonMap.png │ │ ├── speakers │ │ ├── apvarun.jpg │ │ ├── aweary.jpg │ │ ├── carofine247.jpg │ │ ├── chantastic.jpg │ │ ├── eveporcello.jpg │ │ ├── featherart.jpg │ │ ├── holtbt.jpg │ │ ├── jayphelps.jpg │ │ ├── joshwcomeau.jpg │ │ ├── ken_wheeler.jpg │ │ ├── kentcdodds.png │ │ ├── left_pad.jpg │ │ ├── modernserf.jpg │ │ ├── mybluewristband.jpg │ │ ├── panicwhenever.jpg │ │ ├── ryanflorence.jpg │ │ ├── sugarpirate_.jpg │ │ ├── swyx.jpg │ │ ├── sxywu.jpg │ │ ├── threepointone.jpg │ │ └── wisecobbler.jpg │ │ └── sponsors │ │ ├── amex.png │ │ ├── bugsnag.png │ │ ├── echobind.svg │ │ ├── egghead.png │ │ ├── formidable.png │ │ ├── instructure.png │ │ ├── microsoft.png │ │ ├── progress.png │ │ ├── underbelly.svg │ │ ├── usds.png │ │ ├── webflow.png │ │ └── workfront.png ├── bundle.js ├── c9d00197123bb4610f5d43cb5e8f8b9a.png ├── docs │ └── sponsor.pdf ├── e418e67b17ceb3fdd7de46debfdd37d8.png ├── fa71b257f4d3dbb315092fb69f18e0b4.png ├── index.html ├── index.js ├── package.json ├── scripts │ ├── deploy │ └── imagemin ├── table-flip.sh ├── webpack.config.js └── yarn.lock ├── 2019 ├── 404.html ├── api │ ├── organizers │ ├── schedule │ ├── speakers │ ├── sponsors │ └── tickets ├── app │ ├── App.js │ ├── components │ │ ├── About.js │ │ ├── Avatar.js │ │ ├── Button.js │ │ ├── Card.js │ │ ├── Countdown.js │ │ ├── Footer.js │ │ ├── Header.js │ │ ├── Icon.js │ │ ├── Legend.js │ │ ├── Newsletter.js │ │ ├── Person.js │ │ └── Tickets.js │ ├── helpers │ │ ├── DateUtils.js │ │ ├── constants.js │ │ ├── googleAnalytics.js │ │ ├── livestream.js │ │ └── shuffle.js │ └── screens │ │ ├── About │ │ └── index.js │ │ ├── Conduct │ │ └── index.js │ │ ├── Home │ │ └── index.js │ │ ├── Proposals │ │ └── index.js │ │ ├── Schedule │ │ └── index.js │ │ ├── Speakers │ │ └── index.js │ │ ├── Sponsors │ │ └── index.js │ │ ├── Stream │ │ └── index.js │ │ └── Venue │ │ └── index.js ├── assets │ ├── css │ │ ├── responsive-500.scss │ │ ├── responsive-800.scss │ │ └── styles.scss │ ├── dist │ │ └── img │ │ │ ├── ReactLogo.png │ │ │ ├── ReactLogo.svg │ │ │ ├── ReactLogoGreen.svg │ │ │ ├── RoseWagnerDetail.png │ │ │ ├── RoseWagnerMap.png │ │ │ ├── SaltLakeCity.png │ │ │ ├── SaltLakeCitySkyline.png │ │ │ ├── SheratonMap.png │ │ │ └── speakers │ │ │ ├── alex.jpg │ │ │ ├── anjana.jpg │ │ │ ├── anjana.png │ │ │ ├── anthony.jpg │ │ │ ├── brian.jpg │ │ │ ├── danielle.jpg │ │ │ ├── david.jpg │ │ │ ├── emily.jpg │ │ │ ├── feather.jpg │ │ │ ├── glen.jpg │ │ │ ├── jen.jpg │ │ │ ├── joel.jpg │ │ │ ├── johnny.jpg │ │ │ ├── josh.jpg │ │ │ ├── justin.jpg │ │ │ ├── kent.jpg │ │ │ ├── mihai.jpg │ │ │ ├── nat.jpg │ │ │ ├── nicole.jpg │ │ │ ├── princiya.jpeg │ │ │ ├── princiya.jpg │ │ │ ├── revel.jpg │ │ │ └── will.jpg │ └── img │ │ ├── ReactLogo.png │ │ ├── ReactLogo.svg │ │ ├── ReactLogoGreen.svg │ │ ├── RoseWagnerDetail.png │ │ ├── RoseWagnerMap.png │ │ ├── SaltLakeCity.png │ │ ├── SaltLakeCitySkyline.png │ │ ├── SheratonMap.png │ │ └── speakers │ │ ├── alex.jpg │ │ ├── anjana.jpg │ │ ├── anthony.jpg │ │ ├── brian.jpg │ │ ├── danielle.jpg │ │ ├── david.jpg │ │ ├── emily.jpg │ │ ├── feather.jpg │ │ ├── glen.jpg │ │ ├── jen.jpg │ │ ├── joel.jpg │ │ ├── johnny.jpg │ │ ├── josh.jpg │ │ ├── justin.jpg │ │ ├── kent.jpg │ │ ├── mihai.jpg │ │ ├── nat.jpg │ │ ├── nicole.jpg │ │ ├── princiya.jpg │ │ ├── revel.jpg │ │ └── will.jpg ├── docs │ └── sponsor.pdf ├── index.html ├── index.js ├── package-lock.json ├── package.json ├── scripts │ ├── deploy │ └── imagemin ├── table-flip.sh ├── webpack.config.js └── yarn.lock ├── .gitignore ├── CNAME ├── README.md ├── favicon.ico ├── teaser ├── assets │ ├── css │ │ └── styles.css │ ├── fonts │ │ ├── true-crimes-webfont.eot │ │ ├── true-crimes-webfont.svg │ │ ├── true-crimes-webfont.ttf │ │ └── true-crimes-webfont.woff │ ├── img │ │ ├── background.png │ │ ├── city.png │ │ ├── github.png │ │ ├── mushroomCloud.png │ │ ├── robotLasers.png │ │ ├── slc-background.png │ │ ├── tentacle_left.png │ │ ├── tentacle_right.png │ │ └── twitter.png │ └── js │ │ └── scripts.js └── index.html └── twitter.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.log 3 | node_modules/ 4 | -------------------------------------------------------------------------------- /2015/208f2460eed49cb4545fe508acbde588.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/208f2460eed49cb4545fe508acbde588.eot -------------------------------------------------------------------------------- /2015/33c44da872eb18f70cb6d821cd08e8f6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/33c44da872eb18f70cb6d821cd08e8f6.ttf -------------------------------------------------------------------------------- /2015/45c73723862c6fc5eb3d6961db2d71fb.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/45c73723862c6fc5eb3d6961db2d71fb.eot -------------------------------------------------------------------------------- /2015/4b5a84aaf1c9485e060c503a0ff8cadb.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/4b5a84aaf1c9485e060c503a0ff8cadb.woff2 -------------------------------------------------------------------------------- /2015/693654ac27ff0d90368b27037410b6f1.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/693654ac27ff0d90368b27037410b6f1.woff -------------------------------------------------------------------------------- /2015/706450d7bba6374ca02fe167d86685cb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/706450d7bba6374ca02fe167d86685cb.ttf -------------------------------------------------------------------------------- /2015/7c87870ab40d63cfb8870c1f183f9939.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/7c87870ab40d63cfb8870c1f183f9939.ttf -------------------------------------------------------------------------------- /2015/97493d3f11c0a3bd5cbd959f5d19b699.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/97493d3f11c0a3bd5cbd959f5d19b699.woff2 -------------------------------------------------------------------------------- /2015/app/components/ButtonLink.js: -------------------------------------------------------------------------------- 1 | import React, { Component, PropTypes } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | import Radium from 'radium' 4 | 5 | const STYLES = StyleSheet.create({ 6 | a: { 7 | backgroundColor: 'transparent', 8 | borderWidth: 1, 9 | borderStyle: 'solid', 10 | borderColor: '#fff', 11 | borderRadius: 5, 12 | color: '#fff', 13 | display: 'inline-block', 14 | fontSize: 20, 15 | padding: '10px 35px', 16 | margin: 25, 17 | whiteSpace: 'nowrap', 18 | textDecoration: 'none', 19 | ':hover': { 20 | backgroundColor: '#fff', 21 | color: '#000' 22 | } 23 | } 24 | }); 25 | 26 | class ButtonLink extends Component { 27 | render() { 28 | return ( 29 | 30 | {this.props.children} 31 | 32 | ); 33 | } 34 | } 35 | 36 | ButtonLink.propTypes = { 37 | href: PropTypes.string.isRequired, 38 | style: PropTypes.object 39 | }; 40 | 41 | ButtonLink = Radium.Enhancer(ButtonLink); 42 | export default ButtonLink; 43 | 44 | -------------------------------------------------------------------------------- /2015/app/components/Divider.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | import { Styles } from 'helpers/constants'; 4 | 5 | const STYLES = StyleSheet.create({ 6 | divider: { 7 | background: Styles.BG_COLOR_DIVIDER, 8 | height: 50, 9 | position: 'relative' 10 | } 11 | }); 12 | 13 | export default class Divider extends Component { 14 | render() { 15 | return ( 16 |
17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2015/app/components/MenuItem.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | 4 | const STYLES = StyleSheet.create({ 5 | menuitem: { 6 | display: 'inline', 7 | listStyle: 'none', 8 | margin: '3.5%' 9 | }, 10 | a: { 11 | color: '#FFF', 12 | fontSize: 20, 13 | textDecoration: 'none', 14 | lineHeight: '23px' 15 | }, 16 | aHover: { 17 | textShadow: '0 0 25px rgba(255, 255, 255, 1)' 18 | } 19 | }); 20 | 21 | export default class MenuItem extends Component { 22 | constructor(props) { 23 | super(props); 24 | 25 | this.state = { 26 | hasHover: false 27 | }; 28 | } 29 | 30 | handleMouseOver() { 31 | this.setState({ hasHover: true }); 32 | } 33 | 34 | handleMouseOut() { 35 | this.setState({ hasHover: false }); 36 | } 37 | 38 | render() { 39 | var linkStyles = null; 40 | if (this.state.hasHover) { 41 | linkStyles = STYLES.aHover; 42 | } 43 | 44 | return ( 45 |
  • 46 | 53 | {this.props.label} 54 | 55 |
  • 56 | ); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /2015/app/helpers/borderRadius.js: -------------------------------------------------------------------------------- 1 | export default function borderRadius(styleObj, topLeft, topRight, bottomRight, bottomLeft) { 2 | if (arguments.length === 2) { 3 | styleObj.borderRadius = topLeft; 4 | } else { 5 | styleObj.borderTopLeftRadius = topLeft; 6 | styleObj.borderTopRightRadius = topRight; 7 | styleObj.borderBottomRightRadius = bottomRight; 8 | styleObj.borderBottomLeftRadius = bottomLeft; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /2015/app/helpers/browser.js: -------------------------------------------------------------------------------- 1 | var PATTERNS = { 2 | firefox: /firefox/i, 3 | chrome: /chrome\/(.*) safari\//i, 4 | safari: /version\/(.*) safari\//i, 5 | opera: /opera/i, 6 | ie: /(msie|trident)/i 7 | }; 8 | 9 | var browser = {}; 10 | 11 | Object.keys(PATTERNS).forEach((agent) => { 12 | browser[agent] = PATTERNS[agent].test(navigator.userAgent); 13 | }); 14 | 15 | export default browser; 16 | -------------------------------------------------------------------------------- /2015/app/helpers/constants.js: -------------------------------------------------------------------------------- 1 | export default { 2 | Links: { 3 | CODE_OF_CONDUCT: 'http://confcodeofconduct.com/', 4 | TICKET_SALES: 'https://ti.to/trace-events/react-rally-2015', 5 | PROPOSAL_FORM: 'https://docs.google.com/forms/d/1NglNZ8H294KFILhOozIpFrt5XCtZV9QzuKFmwn8Xw28/viewform', 6 | HOTEL_RESERVATION: 'https://gc.synxis.com/rez.aspx?Hotel=26759&Chain=10179&arrive=8/21/2015&depart=8/28/2015&adult=1&child=0&group=12360603209', 7 | SPONSOR_PROSPECTUS: 'docs/sponsor.pdf' 8 | }, 9 | Styles: { 10 | BG_COLOR_NAVBAR: 'rgba(77, 92, 94, .75)', 11 | BG_COLOR_ABOUT: '#CFCFCF', 12 | BG_COLOR_SPEAKERS: '#000', 13 | BG_COLOR_DIVIDER: '#C36087', 14 | BG_COLOR_SCHEDULE: '#FFF', 15 | BG_COLOR_VENUE: '#6C8988', 16 | BG_COLOR_SPONSORS: '#CFCFCF', 17 | BG_COLOR_CONDUCT: '#825D92', 18 | FONT_COLOR_ABOUT: 'rgb(130, 93, 146)', 19 | FONT_COLOR_SPEAKERS: 'rgb(255, 241, 2)', 20 | FONT_COLOR_SPEAKERS__NAME: 'rgb(255, 241, 2)', 21 | FONT_COLOR_SPEAKERS__INTRO: 'rgb(244, 244, 244)', 22 | FONT_COLOR_SCHEDULE: 'rgb(122, 122, 122)', 23 | FONT_COLOR_SCHEDULE__TITLE: 'rgb(70, 211, 188)', 24 | FONT_COLOR_SCHEDULE__DESCRIPTION: 'rgb(247, 247, 247)', 25 | FONT_COLOR_TICKETS: 'rgb(255, 241, 2)', 26 | FONT_COLOR_VENUE: 'rgb(230, 230, 230)', 27 | FONT_COLOR_SPONSORS: 'rgb(35, 75, 97)', 28 | FONT_COLOR_CONDUCT: '#FFF', 29 | FONT_COLOR_ORGANIZERS: 'rgb(55, 124, 155)' 30 | }, 31 | Sizes: { 32 | HOME_HEIGHT: 802, 33 | NAV_HEIGHT: 75, 34 | ROBOT_WIDTH: 1614 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /2015/app/helpers/cssPrefix.js: -------------------------------------------------------------------------------- 1 | import browser from './browser'; 2 | 3 | var PREFIX = ''; 4 | if (browser.chrome || browser.safari) { 5 | PREFIX = '-webkit-'; 6 | } 7 | if (browser.firefox) { 8 | PREFIX = '-moz-'; 9 | } 10 | if (browser.opera) { 11 | PREFIX = '-o-'; 12 | } 13 | if (browser.ie) { 14 | PREFIX = '-ms-'; 15 | } 16 | 17 | function reactSafe(property) { 18 | var arr = property.split(''); 19 | var str = ''; 20 | 21 | var needsUC = false; 22 | for (var i=0, l=arr.length; i 35 | {content} 36 | 37 | ); 38 | } 39 | 40 | render() { 41 | return ( 42 |
    43 | {this.renderLink()} 44 |

    45 | {this.renderLink(this.props.name)} 46 |

    47 | ({this.props.role}) 48 |
    49 | ); 50 | } 51 | } 52 | 53 | Avatar.propTypes = { 54 | url: PropTypes.string, 55 | name: PropTypes.string, 56 | role: PropTypes.string, 57 | twitter: PropTypes.string 58 | }; 59 | -------------------------------------------------------------------------------- /2015/app/screens/Speakers/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | import { Styles, Links } from 'helpers/constants'; 4 | import SpeakerData from '../../../api/speakers'; 5 | import Avatar from './components/Avatar'; 6 | 7 | const STYLES = StyleSheet.create({ 8 | section: { 9 | background: `url(assets/dist/img/speakersBackground.png) ${Styles.BG_COLOR_SPEAKERS}`, 10 | paddingTop: 100 11 | }, 12 | h2: { 13 | color: Styles.FONT_COLOR_SPEAKERS 14 | }, 15 | content: { 16 | overflow: 'auto', 17 | textAlign: 'center' 18 | }, 19 | a: { 20 | color: '#FFF' 21 | } 22 | }); 23 | 24 | export default class Speakers extends Component { 25 | renderSpeakers() { 26 | return Object.keys(SpeakerData).map((key, i) => { 27 | var speaker = SpeakerData[key]; 28 | return 32 | }); 33 | } 34 | 35 | render() { 36 | return ( 37 |
    38 |

    Speakers

    39 |
    40 | {this.renderSpeakers()} 41 |
    42 |
    43 | ); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /2015/app/screens/Sponsors/components/Sponsor.js: -------------------------------------------------------------------------------- 1 | import React, { Component, PropTypes } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | 4 | const STYLES = StyleSheet.create({ 5 | img: { 6 | display: 'inline-block', 7 | margin: 25, 8 | verticalAlign: 'middle' 9 | } 10 | }); 11 | 12 | 13 | export default class Sponsor extends Component { 14 | render() { 15 | return ( 16 |
    17 | 18 | {this.props.name} 19 | 20 |
    21 | ) 22 | } 23 | } 24 | 25 | Sponsor.propTypes = { 26 | url: PropTypes.string.isRequired, 27 | image: PropTypes.string.isRequired, 28 | name: PropTypes.string.isRequired, 29 | style: PropTypes.object 30 | }; 31 | -------------------------------------------------------------------------------- /2015/app/screens/Tickets/components/Quantity.js: -------------------------------------------------------------------------------- 1 | import React, { Component, PropTypes } from 'react'; 2 | 3 | export default class Quantity extends Component { 4 | constructor(props) { 5 | super(props); 6 | this.state = { 7 | value: parseInt(props.val || props.min, 10) || 0 8 | }; 9 | } 10 | 11 | handleValueChange() { 12 | var value = parseInt(this.refs.value.getDOMNode().value, 10) || 0; 13 | value = Math.max(value, this.props.min); 14 | value = Math.min(value, this.props.max); 15 | this.setState({ value }); 16 | } 17 | 18 | handleMinusClick() { 19 | this.setState({ value: Math.max(this.state.value - 1, this.props.min) }); 20 | } 21 | 22 | handlePlusClick() { 23 | this.setState({ value: Math.min(this.state.value + 1, this.props.max) }); 24 | } 25 | 26 | render() { 27 | return ( 28 |
    29 | 30 | 31 | 32 |
    33 | ); 34 | } 35 | } 36 | 37 | Quantity.propTypes = { 38 | max: PropTypes.number, 39 | min: PropTypes.number, 40 | val: PropTypes.number 41 | }; 42 | 43 | Quantity.defaultProps = { 44 | max: 10, 45 | min: 0, 46 | val: 0 47 | }; 48 | -------------------------------------------------------------------------------- /2015/app/screens/Tickets/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import StyleSheet from 'react-style'; 3 | import Radium from 'radium' 4 | import { Styles, Sizes, Links } from 'helpers/constants'; 5 | import ButtonLink from 'components/ButtonLink'; 6 | 7 | const STYLES = StyleSheet.create({ 8 | section: { 9 | background: 'url(assets/dist/img/SLCBackground.png)', 10 | minHeight: 390, 11 | color: '#fff' 12 | }, 13 | container: { 14 | position: 'relative' 15 | }, 16 | h2: { 17 | color: Styles.FONT_COLOR_TICKETS 18 | }, 19 | p: { 20 | marginRight: 500 21 | }, 22 | a: { 23 | margin: '25px 0 0 33%' 24 | }, 25 | img: { 26 | position: 'absolute', 27 | top: -150, 28 | right: 50 29 | } 30 | }); 31 | 32 | class TicketsComponent extends Component { 33 | render() { 34 | return ( 35 |
    36 | 37 |
    38 |

    Tickets

    39 |

    40 | The Golden Ticket. Super Bowl tickets. Backstage passes to T Swizzle. React Rally tickets. High demand, limited supply. 41 |

    42 |

    43 | Tickets are now on sale. There are limited tickets available, so don't procrastinate, and miss out! 44 |

    45 |

    46 | Buy Tickets 47 |

    48 |
    49 |
    50 | ); 51 | } 52 | } 53 | 54 | var Tickets = Radium.Enhancer(TicketsComponent) 55 | export default Tickets 56 | -------------------------------------------------------------------------------- /2015/assets/dist/img/SLCBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/SLCBackground.png -------------------------------------------------------------------------------- /2015/assets/dist/img/SLCcity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/SLCcity.png -------------------------------------------------------------------------------- /2015/assets/dist/img/avatarBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/avatarBackground.png -------------------------------------------------------------------------------- /2015/assets/dist/img/cropCircle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/cropCircle.png -------------------------------------------------------------------------------- /2015/assets/dist/img/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/moon.png -------------------------------------------------------------------------------- /2015/assets/dist/img/organizers/aimee.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/organizers/aimee.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/organizers/jamison.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/organizers/jamison.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/organizers/joe.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/organizers/joe.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/organizers/matt.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/organizers/matt.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/organizers/sunny.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/organizers/sunny.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/reactVenue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/reactVenue.png -------------------------------------------------------------------------------- /2015/assets/dist/img/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/robot.png -------------------------------------------------------------------------------- /2015/assets/dist/img/robot_withLaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/robot_withLaser.png -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/abhinavrastogi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/abhinavrastogi.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/ccheever.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/ccheever.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/djsmith42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/djsmith42.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/glenmaddern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/glenmaddern.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/holtbt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/holtbt.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/iPancreas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/iPancreas.png -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/immediatedelay.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/immediatedelay.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/jakobdamjensen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/jakobdamjensen.png -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/jamischarles.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/jamischarles.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/jemyoung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/jemyoung.png -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/jessitron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/jessitron.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/johnkpaul.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/johnkpaul.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/lbljeffmo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/lbljeffmo.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/leeb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/leeb.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/linclark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/linclark.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/peterpme.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/peterpme.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/rickyvetter.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/rickyvetter.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/ryoia.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/ryoia.jpeg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/schrockn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/schrockn.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakers/vjeux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakers/vjeux.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/speakersBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/speakersBackground.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/MX-Square-Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/MX-Square-Black.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/canopy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/canopy.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/codeschool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/codeschool.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/facebook.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/hirevue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/hirevue.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/kualico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/kualico.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/kualicologo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/kualicologo-small.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/kualicologo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/kualicologo.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/mx.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/pluralsight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/pluralsight.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/pluralsight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/pluralsight.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/rangle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/rangle.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/rangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/rangle.png -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/raygun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/raygun.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/sponsors/redsky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/sponsors/redsky.png -------------------------------------------------------------------------------- /2015/assets/dist/img/tentacle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/tentacle.png -------------------------------------------------------------------------------- /2015/assets/dist/img/tweet-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/tweet-icon.png -------------------------------------------------------------------------------- /2015/assets/dist/img/ufoDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/ufoDark.png -------------------------------------------------------------------------------- /2015/assets/dist/img/ufoMain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/ufoMain.png -------------------------------------------------------------------------------- /2015/assets/dist/img/venue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/venue.jpg -------------------------------------------------------------------------------- /2015/assets/dist/img/weatheredBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/dist/img/weatheredBackground.png -------------------------------------------------------------------------------- /2015/assets/fonts/true-crimes-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/fonts/true-crimes-webfont.eot -------------------------------------------------------------------------------- /2015/assets/fonts/true-crimes-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/fonts/true-crimes-webfont.ttf -------------------------------------------------------------------------------- /2015/assets/fonts/true-crimes-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/fonts/true-crimes-webfont.woff -------------------------------------------------------------------------------- /2015/assets/img/SLCBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/SLCBackground.png -------------------------------------------------------------------------------- /2015/assets/img/SLCcity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/SLCcity.png -------------------------------------------------------------------------------- /2015/assets/img/avatarBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/avatarBackground.png -------------------------------------------------------------------------------- /2015/assets/img/cropCircle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/cropCircle.png -------------------------------------------------------------------------------- /2015/assets/img/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/moon.png -------------------------------------------------------------------------------- /2015/assets/img/organizers/aimee.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/organizers/aimee.jpeg -------------------------------------------------------------------------------- /2015/assets/img/organizers/jamison.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/organizers/jamison.jpeg -------------------------------------------------------------------------------- /2015/assets/img/organizers/joe.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/organizers/joe.jpeg -------------------------------------------------------------------------------- /2015/assets/img/organizers/matt.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/organizers/matt.jpeg -------------------------------------------------------------------------------- /2015/assets/img/organizers/sunny.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/organizers/sunny.jpeg -------------------------------------------------------------------------------- /2015/assets/img/reactVenue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/reactVenue.png -------------------------------------------------------------------------------- /2015/assets/img/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/robot.png -------------------------------------------------------------------------------- /2015/assets/img/robot_withLaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/robot_withLaser.png -------------------------------------------------------------------------------- /2015/assets/img/speakers/abhinavrastogi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/abhinavrastogi.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/ccheever.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/ccheever.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/djsmith42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/djsmith42.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/glenmaddern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/glenmaddern.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/holtbt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/holtbt.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/iPancreas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/iPancreas.png -------------------------------------------------------------------------------- /2015/assets/img/speakers/immediatedelay.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/immediatedelay.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/jakobdamjensen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/jakobdamjensen.png -------------------------------------------------------------------------------- /2015/assets/img/speakers/jamischarles.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/jamischarles.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/jemyoung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/jemyoung.png -------------------------------------------------------------------------------- /2015/assets/img/speakers/jessitron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/jessitron.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/johnkpaul.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/johnkpaul.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/lbljeffmo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/lbljeffmo.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/leeb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/leeb.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/linclark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/linclark.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/peterpme.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/peterpme.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/rickyvetter.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/rickyvetter.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/ryoia.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/ryoia.jpeg -------------------------------------------------------------------------------- /2015/assets/img/speakers/schrockn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/schrockn.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakers/vjeux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakers/vjeux.jpg -------------------------------------------------------------------------------- /2015/assets/img/speakersBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/speakersBackground.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/MX-Square-Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/MX-Square-Black.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/canopy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/canopy.jpg -------------------------------------------------------------------------------- /2015/assets/img/sponsors/codeschool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/codeschool.jpg -------------------------------------------------------------------------------- /2015/assets/img/sponsors/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/facebook.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/hirevue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/hirevue.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/kualico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/kualico.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/kualicologo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/kualicologo-small.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/kualicologo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/kualicologo.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/mx.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/pluralsight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/pluralsight.jpg -------------------------------------------------------------------------------- /2015/assets/img/sponsors/pluralsight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/pluralsight.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/rangle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/rangle.jpg -------------------------------------------------------------------------------- /2015/assets/img/sponsors/rangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/rangle.png -------------------------------------------------------------------------------- /2015/assets/img/sponsors/raygun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/raygun.jpg -------------------------------------------------------------------------------- /2015/assets/img/sponsors/redsky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/sponsors/redsky.png -------------------------------------------------------------------------------- /2015/assets/img/tentacle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/tentacle.png -------------------------------------------------------------------------------- /2015/assets/img/tweet-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/tweet-icon.png -------------------------------------------------------------------------------- /2015/assets/img/ufoDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/ufoDark.png -------------------------------------------------------------------------------- /2015/assets/img/ufoMain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/ufoMain.png -------------------------------------------------------------------------------- /2015/assets/img/venue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/venue.jpg -------------------------------------------------------------------------------- /2015/assets/img/weatheredBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/assets/img/weatheredBackground.png -------------------------------------------------------------------------------- /2015/d9ee23d59d0e0e727b51368b458a0bff.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/d9ee23d59d0e0e727b51368b458a0bff.woff -------------------------------------------------------------------------------- /2015/dfb02f8f6d0cedc009ee5887cc68f1f3.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/dfb02f8f6d0cedc009ee5887cc68f1f3.woff -------------------------------------------------------------------------------- /2015/docs/sponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/docs/sponsor.pdf -------------------------------------------------------------------------------- /2015/f7c2b4b747b1a225eb8dee034134a1b0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2015/f7c2b4b747b1a225eb8dee034134a1b0.eot -------------------------------------------------------------------------------- /2015/imagemin.js: -------------------------------------------------------------------------------- 1 | var Imagemin = require('imagemin'); 2 | var pngquant = require('imagemin-pngquant'); 3 | 4 | new Imagemin() 5 | .src('assets/img/**/*.{gif,jpg,jpeg,png,svg}') 6 | .dest('assets/dist/img') 7 | .use(Imagemin.jpegtran({progressive: true})) 8 | .use(pngquant({quality: '65-80', speed: 4})) 9 | .run(function (err, files) { 10 | console.log(err, files); 11 | }); 12 | -------------------------------------------------------------------------------- /2015/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /2015/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import App from './app/App'; 3 | import fa from 'font-awesome/css/font-awesome.css'; 4 | import styles from './assets/css/styles.css'; 5 | 6 | React.render(, document.getElementById('container')); 7 | -------------------------------------------------------------------------------- /2015/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-rally", 3 | "version": "2.0.0", 4 | "description": "React Rally website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "./node_modules/.bin/webpack-dev-server --inline --content-base ./", 9 | "imagemin": "node imagemin.js", 10 | "build": "npm run imagemin && NODE_ENV=production ./node_modules/.bin/webpack", 11 | "deploy": "./scripts/deploy" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git@github.com:react-rally/www" 16 | }, 17 | "author": "", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/react-rally/www/issues" 21 | }, 22 | "homepage": "https://github.com/react-rally/www", 23 | "dependencies": { 24 | "classnames": "^2.1.3", 25 | "evtmgr": "^0.1.0", 26 | "font-awesome": "^4.3.0", 27 | "radium": "0.12.2", 28 | "react": "^0.13.3", 29 | "react-modal": "^0.3.0", 30 | "react-style": "^0.5.5" 31 | }, 32 | "devDependencies": { 33 | "babel-core": "5.8.12", 34 | "babel-loader": "5.3.2", 35 | "css-loader": "0.15.6", 36 | "file-loader": "0.8.4", 37 | "imagemin": "3.2.0", 38 | "imagemin-pngquant": "4.1.2", 39 | "json-loader": "^0.5.2", 40 | "style-loader": "0.12.3", 41 | "webpack": "1.10.5", 42 | "webpack-dev-server": "1.10.1" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /2015/scripts/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | npm run build 4 | git add . 5 | git commit -m"Updating site" 6 | git push 7 | -------------------------------------------------------------------------------- /2015/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var plugins = []; 3 | 4 | if (process.env.NODE_ENV === 'production') { 5 | plugins.push( 6 | new webpack.optimize.UglifyJsPlugin() 7 | ); 8 | } 9 | 10 | module.exports = { 11 | entry: './index.js', 12 | output: { 13 | filename: 'bundle.js' 14 | }, 15 | module: { 16 | loaders: [ 17 | { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }, 18 | { test: /\.css$/, loader: 'style-loader!css-loader' }, 19 | { test: /\/api\//, loader: 'json-loader' }, 20 | { test: /(\.eot|\.woff|\.ttf|\.svg)/, loader: 'file-loader' } 21 | ] 22 | }, 23 | resolve: { 24 | modulesDirectories: [ 'app', 'node_modules' ] 25 | }, 26 | plugins: plugins 27 | }; 28 | -------------------------------------------------------------------------------- /2016/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /2016/app/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Footer from 'components/Footer' 3 | import Header from 'components/Header' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 |
    9 |
    10 | {props.children} 11 |
    12 |
    13 |
    14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /2016/app/components/About.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function About() { 4 | return ( 5 |

    6 | React Rally is a two day single track conference for developers of all backgrounds using Facebook's React.js, React Native, and related tools. 7 | Speakers will cover topics such as React Native, Flux, ES6, isomorphic universal JavaScript, and so much more. 8 | Whether you're a seasoned developer who has been using React since before it was cool, or a newcomer to the scene, React Rally has something for everyone! 9 |

    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2016/app/components/Avatar.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | let size = props.size || 200 5 | return ( 6 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /2016/app/components/Button.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 6 | {props.children} 7 | 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /2016/app/components/Icon.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 6 | 7 | 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /2016/app/components/Legend.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    6 |
    7 |
    {props.children}
    8 |
    9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /2016/app/components/Newsletter.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default () => { 4 | return ( 5 |
    6 | 7 |    8 | 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2016/app/components/Person.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Avatar from 'components/Avatar' 3 | import Icon from 'components/Icon' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 | 9 | {props.name}
    10 | {props.title} 11 |
    12 | {props.twitter && ( 13 | 14 | )} 15 | {props.github && ( 16 | 17 | )} 18 |
    19 |
    20 | ) 21 | } 22 | 23 | -------------------------------------------------------------------------------- /2016/app/components/Tickets.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import constants from 'helpers/constants' 3 | import DateUtils, { MountainTime } from 'helpers/DateUtils' 4 | import Button from 'components/Button' 5 | 6 | const TICKET_RELEASE_TIME = Date.parse(constants.Dates.TICKET_RELEASE) 7 | 8 | export default class Tickets extends Component { 9 | render() { 10 | let ticketsAvailable = MountainTime.isNowAfterTime(TICKET_RELEASE_TIME) 11 | let diff 12 | 13 | if (!ticketsAvailable) { 14 | diff = TICKET_RELEASE_TIME - MountainTime.getTime() 15 | setTimeout(this.forceUpdate.bind(this), 1000) 16 | } 17 | 18 | return ( 19 |
    20 | {ticketsAvailable ? ( 21 | 22 | ) : ( 23 |
    24 | Tickets on sale soon 25 |

    {DateUtils.duration(diff)}

    26 |
    27 | )} 28 |
    29 | ) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /2016/app/helpers/constants.js: -------------------------------------------------------------------------------- 1 | const constants = {} 2 | export default constants 3 | 4 | constants.Links = { 5 | CODE_OF_CONDUCT: 'http://confcodeofconduct.com/', 6 | TICKET_SALES: 'https://ti.to/trace-events/react-rally-2016', 7 | PROPOSAL_FORM: 'http://speak.reactrally.com/events/react-rally-2016', 8 | VENUE_DIRECTIONS: 'https://www.google.com/maps/dir//138+West+300+South,+Salt+Lake+City,+UT+84101/@40.7631303,-111.8964432,18.29z/data=!4m8!4m7!1m0!1m5!1m1!1s0x8752f5052002298f:0xf13b0bec7c31c1ab!2m2!1d-111.8955862!2d40.7631063', 9 | HOTEL_RESERVATION: 'http://bookings.ihotelier.com/bookings.jsp?groupID=1629467&hotelID=4650', 10 | HOTEL_DIRECTIONS: 'https://www.google.com/maps/dir//500+South+Main+Street,+Salt+Lake+City,+UT+84101/@40.7573935,-111.8947835,17z/data=!3m1!4b1!4m8!4m7!1m0!1m5!1m1!1s0x8752f510c9a96fd3:0xa6803ff714f0482d!2m2!1d-111.8925948!2d40.7573935', 11 | PARTY_DIRECTIONS: 'https://www.google.com/maps/place/239+Main+St,+Salt+Lake+City,+UT+84111/@40.7644077,-111.890665,18z/data=!4m5!3m4!1s0x8752f50fb887bf49:0x2a34ca1a9e86b09f!8m2!3d40.7644448!4d-111.8895774', 12 | LIVE_STREAM_PLACEHOLDER: 'https://youtu.be/5NNOrp_83RU', 13 | LIVE_STREAM_DAY_ONE: 'https://youtu.be/Fk--XUEorvc', 14 | LIVE_STREAM_DAY_TWO: 'https://youtu.be/nI0cQ-2YR1I', 15 | LIVE_STREAM_OVER: 'https://youtu.be/T1XgFsitnQw', 16 | YOUTUBE_CHANNEL: 'https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ', 17 | SPONSOR_PROSPECTUS: 'docs/sponsor.pdf' 18 | } 19 | 20 | constants.Dates = { 21 | CFP_OPEN: '2016-03-28T00:00:00-06:00', 22 | CFP_CLOSE: '2016-04-28T00:00:00-06:00', 23 | TICKET_RELEASE: '2016-04-15T12:00:00-06:00', 24 | CONF_DAY_ONE: '2016-08-25T00:00:00-06:00', 25 | CONF_DAY_TWO: '2016-08-26T00:00:00-06:00' 26 | } 27 | -------------------------------------------------------------------------------- /2016/app/helpers/googleAnalytics.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 3 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 4 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 5 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 6 | 7 | ga('create', 'UA-60963027-1', 'auto'); 8 | ga('send', 'pageview'); 9 | })(); 10 | -------------------------------------------------------------------------------- /2016/app/helpers/livestream.js: -------------------------------------------------------------------------------- 1 | import constants from 'helpers/constants' 2 | import DateUtils, { MountainTime } from 'helpers/DateUtils' 3 | 4 | function getLiveStreamURL() { 5 | let url 6 | 7 | if (MountainTime.isNowBeforeTime(Date.parse(constants.Dates.CONF_DAY_ONE))) { 8 | url = constants.Links.LIVE_STREAM_PLACEHOLDER 9 | } else if (MountainTime.isNowBetweenTime( 10 | Date.parse(constants.Dates.CONF_DAY_ONE), 11 | Date.parse(constants.Dates.CONF_DAY_TWO))) { 12 | url = constants.Links.LIVE_STREAM_DAY_ONE 13 | } else if (MountainTime.isNowBetweenTime( 14 | Date.parse(constants.Dates.CONF_DAY_TWO), 15 | Date.parse(constants.Dates.CONF_DAY_TWO) + (DateUtils.DAYS * 1))) { 16 | url = constants.Links.LIVE_STREAM_DAY_TWO 17 | } else { 18 | url = constants.Links.LIVE_STREAM_OVER 19 | } 20 | 21 | return url 22 | } 23 | 24 | function getLiveStreamEmbedURL() { 25 | let url = getLiveStreamURL() 26 | 27 | if (url) { 28 | url = url.replace('youtu.be', 'youtube.com/embed') 29 | } 30 | 31 | return url 32 | } 33 | 34 | export { getLiveStreamURL, getLiveStreamEmbedURL } 35 | -------------------------------------------------------------------------------- /2016/app/screens/About/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import About from 'components/About' 3 | import Legend from 'components/Legend' 4 | import Person from 'components/Person' 5 | 6 | export default () => { 7 | return ( 8 |
    9 |

    About React Rally

    10 | 11 |
    12 | Organizers 13 | 20 | 27 | 33 |
    34 |
    35 | ) 36 | } 37 | -------------------------------------------------------------------------------- /2016/app/screens/Home/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Link } from 'react-router' 3 | import About from 'components/About' 4 | import Button from 'components/Button' 5 | import Legend from 'components/Legend' 6 | import Person from 'components/Person' 7 | import SpeakerData from '../../../api/speakers' 8 | 9 | export default () => { 10 | return ( 11 |
    12 |
    13 |

    What is React Rally?

    14 | 15 | More about React Rally » 16 |
    17 |
    18 | Keynote Speakers 19 | {Object.keys(SpeakerData).map(key => { 20 | return SpeakerData[key].keynote ? : null 21 | })} 22 |
    23 |
    24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /2016/app/screens/Speakers/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Legend from 'components/Legend' 3 | import Person from 'components/Person' 4 | import SpeakerData from '../../../api/speakers' 5 | 6 | export default () => { 7 | return ( 8 |
    9 |

    Speakers

    10 |
    11 | {Object.keys(SpeakerData).length > 0 ? ( 12 | Object.keys(SpeakerData).map(key => ) 13 | ) : ( 14 |

    We haven't selected any speakers yet. Why not check out this cat video while you wait?

    15 | )} 16 |
    17 |
    18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /2016/app/screens/Sponsors/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import Button from 'components/Button' 4 | import Legend from 'components/Legend' 5 | import SponsorData from '../../../api/sponsors' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Thank you to our fine sponsors. Want to help support React Rally? We'd love to talk with you.

    11 | 12 | {Object.keys(SponsorData).filter(level => SponsorData[level].length > 0).map(level => { 13 | return ( 14 |
    15 | {level} 16 | {SponsorData[level].map((sponsor, i) => { 17 | return sponsor.image ? ( 18 | 19 | {sponsor.name}/ 20 | 21 | ) : ( 22 | {sponsor.name} 23 | ) 24 | })} 25 |
    26 | ) 27 | })} 28 |
    29 | ) 30 | } 31 | -------------------------------------------------------------------------------- /2016/app/screens/Stream/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import { getLiveStreamEmbedURL } from 'helpers/livestream' 4 | 5 | export default () => { 6 | let url = getLiveStreamEmbedURL() 7 | 8 | return ( 9 |
    10 |

    Live Stream

    11 | 19 |
    20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /2016/assets/css/responsive-500.scss: -------------------------------------------------------------------------------- 1 | /* Responsive styles for max-width 500px */ 2 | .Person { 3 | margin: 25px 0; 4 | } 5 | 6 | .Sponsors img { 7 | max-width: 200px !important; 8 | } 9 | .Sponsors img { 10 | margin: 25px 15px; 11 | } 12 | 13 | .Stream__Embedded { 14 | width: 254px; 15 | height: 143px; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /2016/assets/dist/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/ReactLogo.png -------------------------------------------------------------------------------- /2016/assets/dist/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2016/assets/dist/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2016/assets/dist/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/deque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/deque.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/egghead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/egghead.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/facebook.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/frontside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/frontside.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/jane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/jane.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/kuali.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/kuali.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/mozilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/mozilla.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/netflix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/netflix.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/progress.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/rangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/rangle.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/react-training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/react-training.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/salesforce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/salesforce.png -------------------------------------------------------------------------------- /2016/assets/dist/img/sponsors/walmart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/dist/img/sponsors/walmart.png -------------------------------------------------------------------------------- /2016/assets/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/ReactLogo.png -------------------------------------------------------------------------------- /2016/assets/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2016/assets/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2016/assets/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/deque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/deque.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/egghead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/egghead.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/facebook.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/frontside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/frontside.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/jane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/jane.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/kuali.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/kuali.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/mozilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/mozilla.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/netflix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/netflix.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/progress.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/rangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/rangle.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/react-training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/react-training.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/salesforce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/salesforce.png -------------------------------------------------------------------------------- /2016/assets/img/sponsors/walmart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/assets/img/sponsors/walmart.png -------------------------------------------------------------------------------- /2016/c9d00197123bb4610f5d43cb5e8f8b9a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/c9d00197123bb4610f5d43cb5e8f8b9a.png -------------------------------------------------------------------------------- /2016/docs/sponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/docs/sponsor.pdf -------------------------------------------------------------------------------- /2016/fa71b257f4d3dbb315092fb69f18e0b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2016/fa71b257f4d3dbb315092fb69f18e0b4.png -------------------------------------------------------------------------------- /2016/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /2016/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-rally", 3 | "version": "2.0.0", 4 | "description": "React Rally 2016 Conference Website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "karma start --single-run", 8 | "start": "webpack-dev-server --inline --content-base ./", 9 | "build": "npm run imagemin && NODE_ENV=production webpack", 10 | "imagemin": "./scripts/imagemin", 11 | "deploy": "./scripts/deploy" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "github.com/react-rally/www" 16 | }, 17 | "author": "Matt Zabriskie", 18 | "license": "MIT", 19 | "dependencies": { 20 | "classnames": "^2.2.5", 21 | "moment": "^2.14.1", 22 | "react": "^0.14.7", 23 | "react-dom": "^0.14.7", 24 | "react-router": "^2.0.1" 25 | }, 26 | "devDependencies": { 27 | "babel-core": "^6.7.2", 28 | "babel-loader": "^6.2.4", 29 | "babel-preset-es2015": "^6.6.0", 30 | "babel-preset-react": "^6.5.0", 31 | "css-loader": "^0.23.1", 32 | "file-loader": "^0.8.5", 33 | "imagemin": "^4.0.0", 34 | "imagemin-pngquant": "^4.2.2", 35 | "json-loader": "^0.5.4", 36 | "karma": "^0.13.22", 37 | "mocha": "^2.4.5", 38 | "node-sass": "^3.4.2", 39 | "sass-loader": "^3.2.0", 40 | "style-loader": "^0.13.0", 41 | "webpack": "^1.12.14", 42 | "webpack-dev-server": "^1.14.1" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /2016/scripts/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # delete old bundle images 4 | IMGRX="/[a-z0-9]{32}.png" 5 | find ../ -type f -maxdepth 2 | egrep $IMGRX | xargs rm 6 | 7 | # generate bundle 8 | npm run build 9 | 10 | # copy new bundle images 11 | find . -type f -maxdepth 1 | egrep $IMGRX | xargs -I{} cp {} ../ 12 | 13 | # copy files 14 | cp bundle.js ../ 15 | cp index.html ../ 16 | cp 404.html ../ 17 | 18 | # copy assets 19 | rm -rf ../assets 20 | mkdir ../assets 21 | cp -rf assets/dist ../assets 22 | 23 | # update github 24 | git add ../ 25 | git commit -m "Updating site" 26 | git push 27 | -------------------------------------------------------------------------------- /2016/scripts/imagemin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var Imagemin = require('imagemin'); 4 | var pngquant = require('imagemin-pngquant'); 5 | 6 | new Imagemin() 7 | .src('assets/img/**/*.{gif,jpg,jpeg,png,svg}') 8 | .dest('assets/dist/img') 9 | .use(Imagemin.jpegtran({progressive: true})) 10 | .use(pngquant({quality: '65-80', speed: 4})) 11 | .run(function (err, files) { 12 | console.log(err, files); 13 | }); 14 | -------------------------------------------------------------------------------- /2016/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var plugins = []; 3 | 4 | if (process.env.NODE_ENV === 'production') { 5 | plugins.push( 6 | new webpack.optimize.UglifyJsPlugin() 7 | ); 8 | } 9 | 10 | module.exports = { 11 | entry: './index.js', 12 | output: { 13 | filename: 'bundle.js' 14 | }, 15 | module: { 16 | loaders: [ 17 | { 18 | test: /\.js$/, 19 | exclude: /node_modules/, 20 | loader: 'babel', 21 | query: { 22 | presets: ['es2015', 'react'] 23 | } 24 | }, 25 | { 26 | test: /\.png$/, 27 | loader: 'file' 28 | }, 29 | { 30 | test: /\.scss$/, 31 | loaders: ['style', 'css', 'sass'] 32 | }, 33 | { 34 | test: /\/api\//, 35 | loader: 'json-loader' 36 | } 37 | ] 38 | }, 39 | resolve: { 40 | modulesDirectories: [ 'app', 'node_modules' ] 41 | }, 42 | devServer: { 43 | historyApiFallback: true 44 | }, 45 | plugins: plugins 46 | }; 47 | -------------------------------------------------------------------------------- /2017/.nvmrc: -------------------------------------------------------------------------------- 1 | 7.7.2 2 | -------------------------------------------------------------------------------- /2017/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /2017/api/sponsors: -------------------------------------------------------------------------------- 1 | { 2 | "Premier": [ 3 | { 4 | "name": "Egghead.io", 5 | "url": "https://egghead.io/browse/frameworks/react", 6 | "image": "assets/dist/img/sponsors/egghead.svg", 7 | "style": { 8 | "width": "500px" 9 | } 10 | } 11 | ], 12 | "Platinum": [ 13 | { 14 | "name": "Facebook", 15 | "url": "https://www.facebook.com/careers", 16 | "image": "assets/dist/img/sponsors/facebook.png" 17 | }, 18 | { 19 | "name": "WordPress.com", 20 | "url": "https://wordpress.com", 21 | "image": "assets/dist/img/sponsors/wordpress.png" 22 | }, 23 | { 24 | "name": "Webflow", 25 | "url": "https://webflow.com/", 26 | "image": "assets/dist/img/sponsors/webflow.png" 27 | } 28 | ], 29 | "Gold": [ 30 | { 31 | "name": "Netlify", 32 | "url": "https://www.netlify.com/", 33 | "image": "assets/dist/img/sponsors/netlify.png" 34 | }, 35 | { 36 | "name": "Instructure", 37 | "url": "https://www.instructure.com/careers/", 38 | "image": "assets/dist/img/sponsors/instructure.png" 39 | }, 40 | { 41 | "name": "BugSnag", 42 | "url": "https://www.bugsnag.com/platforms/react-error-reporting/?utm_source=&utm_medium=conference&utm_content=logo&utm_campaign=reactrally-17&utm_term=", 43 | "image": "assets/dist/img/sponsors/bugsnag.png" 44 | }, 45 | { 46 | "name": "Jane", 47 | "url": "http://www.jane.com/careers", 48 | "image": "assets/dist/img/sponsors/jane.png" 49 | } 50 | ], 51 | "Silver": [ 52 | ], 53 | "Supporters": [ 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /2017/app/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Footer from 'components/Footer' 3 | import Header from 'components/Header' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 |
    9 |
    10 | {props.children} 11 |
    12 |
    13 |
    14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /2017/app/components/About.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function About() { 4 | return ( 5 |

    6 | React Rally is a two day single track conference for developers of all backgrounds using Facebook's React.js, React Native, and related tools. 7 | Speakers will cover topics such as React Native, Flux, ES6, isomorphic universal JavaScript, and so much more. 8 | Whether you're a seasoned developer who has been using React since before it was cool, or a newcomer to the scene, React Rally has something for everyone! 9 |

    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2017/app/components/Avatar.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | let size = props.size || 200 5 | return ( 6 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /2017/app/components/Button.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 11 | {props.children} 12 | 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /2017/app/components/Card.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    8 | {props.children} 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2017/app/components/Icon.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 6 | 7 | 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /2017/app/components/Legend.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    6 |
    7 |
    {props.children}
    8 |
    9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /2017/app/components/Newsletter.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default () => { 4 | return ( 5 |
    6 | 7 |    8 | 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2017/app/components/Person.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Avatar from 'components/Avatar' 3 | import Icon from 'components/Icon' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 | 9 | {props.name}
    10 | {props.title} 11 |
    12 | {props.twitter && ( 13 | 14 | )} 15 | {props.github && ( 16 | 17 | )} 18 |
    19 |
    20 | ) 21 | } 22 | 23 | -------------------------------------------------------------------------------- /2017/app/components/Tickets.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import constants from 'helpers/constants' 3 | import DateUtils from 'helpers/DateUtils' 4 | import Button from 'components/Button' 5 | import moment from 'moment' 6 | 7 | const TICKET_RELEASE_TIME = moment.utc(constants.Dates.TICKET_RELEASE) 8 | 9 | export default class Tickets extends Component { 10 | render() { 11 | let ticketsAvailable = moment.utc().isSameOrAfter(TICKET_RELEASE_TIME) 12 | let diff 13 | 14 | if (!ticketsAvailable) { 15 | diff = TICKET_RELEASE_TIME.diff(moment.utc()) 16 | setTimeout(this.forceUpdate.bind(this), 1000) 17 | } 18 | 19 | return ( 20 |
    21 | {ticketsAvailable ? ( 22 | 23 | ) : ( 24 |
    25 | Tickets on sale soon 26 |

    {DateUtils.duration(diff)}

    27 |
    28 | )} 29 |
    30 | ) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /2017/app/helpers/DateUtils.js: -------------------------------------------------------------------------------- 1 | const DateUtils = {} 2 | 3 | DateUtils.SECONDS = 1000 4 | DateUtils.MINUTES = DateUtils.SECONDS * 60 5 | DateUtils.HOURS = DateUtils.MINUTES * 60 6 | DateUtils.DAYS = DateUtils.HOURS * 24 7 | 8 | DateUtils.duration = (timeInMillis) => { 9 | let intervals = { 10 | 'd': DateUtils.DAYS, 11 | 'h': DateUtils.HOURS, 12 | 'm': DateUtils.MINUTES, 13 | 's': DateUtils.SECONDS, 14 | } 15 | let sb = '' 16 | 17 | Object.keys(intervals).forEach((k) => { 18 | let v = intervals[k] 19 | let unit = Math.floor(timeInMillis / v) 20 | timeInMillis %= v 21 | 22 | if (sb.length === 0 && unit === 0) return 23 | if (sb.length > 0) sb += ':' 24 | if (String(unit).length === 1) unit = '0' + unit 25 | sb += unit + k 26 | }) 27 | return sb 28 | } 29 | 30 | export default DateUtils 31 | -------------------------------------------------------------------------------- /2017/app/helpers/constants.js: -------------------------------------------------------------------------------- 1 | const constants = {} 2 | export default constants 3 | 4 | constants.Links = { 5 | CODE_OF_CONDUCT: 'http://confcodeofconduct.com/', 6 | TICKET_SALES: 'https://ti.to/trace-events/react-rally-2017', 7 | PROPOSAL_FORM: 'http://speak.reactrally.com/events/react-rally-2017', 8 | VENUE_DIRECTIONS: 'https://www.google.com/maps/place/150+W+500+S,+Salt+Lake+City,+UT+84101/@40.7593099,-111.8967117,18z/data=!4m5!3m4!1s0x8752f51b0003c00d:0x3848c38225710a1!8m2!3d40.7593059!4d-111.8956174', 9 | HOTEL_RESERVATION: 'https://www.starwoodmeeting.com/Book/reactrally', 10 | PARTY_DIRECTIONS: 'https://www.google.com/maps/place/239+Main+St,+Salt+Lake+City,+UT+84111/@40.7644077,-111.890665,18z/data=!4m5!3m4!1s0x8752f50fb887bf49:0x2a34ca1a9e86b09f!8m2!3d40.7644448!4d-111.8895774', 11 | LIVE_STREAM_PLACEHOLDER: 'https://youtu.be/5NNOrp_83RU', 12 | LIVE_STREAM_DAY_ONE: 'https://www.youtube.com/embed/GverPLbSqEE', 13 | LIVE_STREAM_DAY_TWO: 'https://www.youtube.com/embed/HRJ_VjkmyiE', 14 | LIVE_STREAM_OVER: 'https://youtu.be/T1XgFsitnQw', 15 | YOUTUBE_CHANNEL: 'https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ', 16 | SPONSOR_PROSPECTUS: 'docs/sponsor.pdf' 17 | } 18 | 19 | constants.Dates = { 20 | CFP_OPEN: '2017-03-17T06:00:00-00:00', 21 | CFP_CLOSE: '2017-04-16T06:00:00-00:00', 22 | TICKET_RELEASE: '2017-04-14T18:00:00-00:00', 23 | CONF_DAY_ONE: '2017-08-24T06:00:00-00:00', 24 | CONF_DAY_TWO: '2017-08-25T06:00:00-00:00' 25 | } 26 | -------------------------------------------------------------------------------- /2017/app/helpers/googleAnalytics.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 3 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 4 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 5 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 6 | 7 | ga('create', 'UA-60963027-1', 'auto'); 8 | ga('send', 'pageview'); 9 | })(); 10 | -------------------------------------------------------------------------------- /2017/app/helpers/livestream.js: -------------------------------------------------------------------------------- 1 | import constants from 'helpers/constants' 2 | import moment from 'moment'; 3 | 4 | const isNowBetween = (one, two) => moment.utc().isBetween(moment.utc(one), moment.utc(two)); 5 | 6 | function getLiveStreamURL() { 7 | let url 8 | 9 | if (moment.utc().isBefore(moment.utc(constants.Dates.CONF_DAY_ONE))) { 10 | url = constants.Links.LIVE_STREAM_PLACEHOLDER 11 | } else if (isNowBetween(constants.Dates.CONF_DAY_ONE, constants.Dates.CONF_DAY_TWO)) { 12 | url = constants.Links.LIVE_STREAM_DAY_ONE 13 | } else if (isNowBetween(constants.Dates.CONF_DAY_TWO, moment.utc(constants.Dates.CONF_DAY_TWO).add(1, 'd'))) { 14 | url = constants.Links.LIVE_STREAM_DAY_TWO 15 | } else { 16 | url = constants.Links.LIVE_STREAM_OVER 17 | } 18 | 19 | return url 20 | } 21 | 22 | function getLiveStreamEmbedURL() { 23 | let url = getLiveStreamURL() 24 | 25 | if (url) { 26 | url = url.replace('youtu.be', 'youtube.com/embed') 27 | } 28 | 29 | return url 30 | } 31 | 32 | export { getLiveStreamURL, getLiveStreamEmbedURL } 33 | -------------------------------------------------------------------------------- /2017/app/helpers/shuffle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Suffle an array immutably using Fisher-Yates shuffle 3 | * 4 | * @param {array} list The array to shuffle 5 | * @return {array} A new array containing shuffled values from list 6 | */ 7 | export default function shuffle (list) { 8 | const result = [].concat(list) 9 | 10 | for (let i = list.length - 1; i > 0; i--) { 11 | const j = Math.floor(Math.random() * (i + 1)) 12 | const temp = result[i] 13 | 14 | result[i] = result[j] 15 | result[j] = temp 16 | } 17 | 18 | return result 19 | } 20 | -------------------------------------------------------------------------------- /2017/app/screens/About/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import About from 'components/About' 3 | import Legend from 'components/Legend' 4 | import Person from 'components/Person' 5 | 6 | export default () => { 7 | return ( 8 |
    9 |

    About React Rally

    10 | 11 |
    12 | Organizers 13 | 20 | 27 | 33 |
    34 |
    35 | ) 36 | } 37 | -------------------------------------------------------------------------------- /2017/app/screens/Speakers/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Legend from 'components/Legend' 3 | import Person from 'components/Person' 4 | import shuffle from 'helpers/shuffle' 5 | import SpeakerData from '../../../api/speakers' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Speakers

    11 |
    12 | {Object.keys(SpeakerData).length > 0 ? ( 13 | shuffle(Object.keys(SpeakerData)).map(key => ) 14 | ) : ( 15 |

    We haven't selected any speakers yet. Why not check out this adorable cat video while you wait?

    16 | )} 17 |
    18 |
    19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /2017/app/screens/Sponsors/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import Button from 'components/Button' 4 | import Legend from 'components/Legend' 5 | import SponsorData from '../../../api/sponsors' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Thank you to our fine sponsors. Want to help support React Rally? We'd love to talk with you.

    11 | 12 | {Object.keys(SponsorData).filter(level => SponsorData[level].length > 0).map(level => { 13 | return ( 14 |
    15 | {level} 16 | {SponsorData[level].map((sponsor, i) => { 17 | return sponsor.image ? ( 18 | 19 | {sponsor.name}/ 20 | 21 | ) : ( 22 | {sponsor.name} 23 | ) 24 | })} 25 |
    26 | ) 27 | })} 28 |
    29 | ) 30 | } 31 | -------------------------------------------------------------------------------- /2017/app/screens/Stream/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import { getLiveStreamEmbedURL } from 'helpers/livestream' 4 | 5 | export default () => { 6 | let url = getLiveStreamEmbedURL() 7 | 8 | return ( 9 |
    10 |

    Live Stream

    11 | 19 |
    20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /2017/assets/css/responsive-500.scss: -------------------------------------------------------------------------------- 1 | /* Responsive styles for max-width 500px */ 2 | .Person { 3 | margin: 25px 0; 4 | } 5 | 6 | .Sponsors img { 7 | max-width: 200px !important; 8 | } 9 | .Sponsors img { 10 | margin: 25px 15px; 11 | } 12 | 13 | .Stream__Embedded { 14 | width: 254px; 15 | height: 143px; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /2017/assets/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/ReactLogo.png -------------------------------------------------------------------------------- /2017/assets/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2017/assets/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2017/assets/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2017/assets/img/SaltLakeCitySkyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/SaltLakeCitySkyline.png -------------------------------------------------------------------------------- /2017/assets/img/SheratonMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/SheratonMap.png -------------------------------------------------------------------------------- /2017/assets/img/speakers/BonnieMilianB.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/BonnieMilianB.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/TheLarkInn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/TheLarkInn.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/benmvp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/benmvp.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/carakuei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/carakuei.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/chantastic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/chantastic.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/cmatheson.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/cmatheson.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/czaplic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/czaplic.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/daajust.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/daajust.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/davidkpiano.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/davidkpiano.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/devonbl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/devonbl.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/iPancreas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/iPancreas.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/iam_preethi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/iam_preethi.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/left_pad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/left_pad.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/linclark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/linclark.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/mjackson.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/mjackson.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/mxstbr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/mxstbr.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/necolas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/necolas.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/sugargreenbean.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/sugargreenbean.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/sxywu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/sxywu.jpg -------------------------------------------------------------------------------- /2017/assets/img/speakers/zackargyle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/speakers/zackargyle.jpg -------------------------------------------------------------------------------- /2017/assets/img/sponsors/bugsnag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/bugsnag.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/facebook.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/jane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/jane.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/netlify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/netlify.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/webflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/webflow.png -------------------------------------------------------------------------------- /2017/assets/img/sponsors/wordpress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/assets/img/sponsors/wordpress.png -------------------------------------------------------------------------------- /2017/c9d00197123bb4610f5d43cb5e8f8b9a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/c9d00197123bb4610f5d43cb5e8f8b9a.png -------------------------------------------------------------------------------- /2017/docs/sponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/docs/sponsor.pdf -------------------------------------------------------------------------------- /2017/fa71b257f4d3dbb315092fb69f18e0b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2017/fa71b257f4d3dbb315092fb69f18e0b4.png -------------------------------------------------------------------------------- /2017/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /2017/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-rally", 3 | "version": "2.0.0", 4 | "description": "React Rally 2016 Conference Website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "karma start --single-run", 8 | "start": "webpack-dev-server --inline --content-base ./", 9 | "build": "npm run imagemin && NODE_ENV=production webpack", 10 | "imagemin": "./scripts/imagemin", 11 | "deploy": "./scripts/deploy" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "github.com/react-rally/www" 16 | }, 17 | "author": "Matt Zabriskie", 18 | "license": "MIT", 19 | "dependencies": { 20 | "classnames": "^2.2.5", 21 | "moment": "^2.14.1", 22 | "react": "^0.14.7", 23 | "react-dom": "^0.14.7", 24 | "react-router": "^2.0.1" 25 | }, 26 | "devDependencies": { 27 | "babel-core": "^6.7.2", 28 | "babel-loader": "^6.2.4", 29 | "babel-preset-es2015": "^6.6.0", 30 | "babel-preset-react": "^6.5.0", 31 | "css-loader": "^0.23.1", 32 | "file-loader": "^0.8.5", 33 | "imagemin": "^4.0.0", 34 | "imagemin-pngquant": "^4.2.2", 35 | "json-loader": "^0.5.4", 36 | "karma": "^0.13.22", 37 | "mocha": "^2.4.5", 38 | "node-sass": "^3.4.2", 39 | "sass-loader": "^3.2.0", 40 | "style-loader": "^0.13.0", 41 | "webpack": "^1.12.14", 42 | "webpack-dev-server": "^1.14.1" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /2017/scripts/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # delete old bundle images 4 | IMGRX="/[a-z0-9]{32}.png" 5 | find ../ -type f -maxdepth 2 | egrep $IMGRX | xargs rm 6 | 7 | # generate bundle 8 | npm run build 9 | 10 | # copy new bundle images 11 | find . -type f -maxdepth 1 | egrep $IMGRX | xargs -I{} cp {} ../ 12 | 13 | # copy files 14 | cp bundle.js ../ 15 | cp index.html ../ 16 | cp 404.html ../ 17 | 18 | # copy assets 19 | rm -rf ../assets 20 | mkdir ../assets 21 | cp -rf assets/dist ../assets 22 | 23 | # copy docs 24 | rm -rf ../docs 25 | cp -rf docs ../ 26 | 27 | # update github 28 | git add ../ 29 | git commit -m "Updating site" 30 | git push 31 | -------------------------------------------------------------------------------- /2017/scripts/imagemin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var Imagemin = require('imagemin'); 4 | var pngquant = require('imagemin-pngquant'); 5 | 6 | new Imagemin() 7 | .src('assets/img/**/*.{gif,jpg,jpeg,png,svg}') 8 | .dest('assets/dist/img') 9 | .use(Imagemin.jpegtran({progressive: true})) 10 | .use(pngquant({quality: '65-80', speed: 4})) 11 | .run(function (err, files) { 12 | console.log(err, files); 13 | }); 14 | -------------------------------------------------------------------------------- /2017/table-flip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | echo '(╯°□°)╯︵ ┻━┻' 4 | 5 | echo "-- install node" 6 | export NVM_DIR="$HOME/.nvm" 7 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 8 | 9 | nvm install && nvm use 10 | 11 | echo "-- installing dependencies" 12 | rm -rf node_modules 13 | npm cache clean 14 | npm install 15 | -------------------------------------------------------------------------------- /2017/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var plugins = []; 3 | 4 | if (process.env.NODE_ENV === 'production') { 5 | plugins.push( 6 | new webpack.DefinePlugin({ 7 | 'process.env': { 8 | NODE_ENV: JSON.stringify('production') 9 | } 10 | }) 11 | ); 12 | plugins.push( 13 | new webpack.optimize.UglifyJsPlugin() 14 | ); 15 | } 16 | 17 | module.exports = { 18 | entry: './index.js', 19 | output: { 20 | filename: 'bundle.js' 21 | }, 22 | module: { 23 | loaders: [ 24 | { 25 | test: /\.js$/, 26 | exclude: /node_modules/, 27 | loader: 'babel', 28 | query: { 29 | presets: ['es2015', 'react'] 30 | } 31 | }, 32 | { 33 | test: /\.png$/, 34 | loader: 'file' 35 | }, 36 | { 37 | test: /\.scss$/, 38 | loaders: ['style', 'css', 'sass'] 39 | }, 40 | { 41 | test: /\/api\//, 42 | loader: 'json-loader' 43 | } 44 | ] 45 | }, 46 | resolve: { 47 | modulesDirectories: [ 'app', 'node_modules' ] 48 | }, 49 | devServer: { 50 | historyApiFallback: true 51 | }, 52 | plugins: plugins 53 | }; 54 | -------------------------------------------------------------------------------- /2018/.nvmrc: -------------------------------------------------------------------------------- 1 | 7.7.2 2 | -------------------------------------------------------------------------------- /2018/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /2018/aedf3af8eab0485c6ee8abd7513bba95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/aedf3af8eab0485c6ee8abd7513bba95.png -------------------------------------------------------------------------------- /2018/api/tickets: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Early Bird - Round One", 4 | "price": 400, 5 | "description": "Early bird tickets for React Rally! 20% off because we love early bird ticket buyers.", 6 | "soldOut": true 7 | }, 8 | { 9 | "name": "Early Bird - Round Two", 10 | "price": 450, 11 | "description": "One last chance to grab a React Rally ticket at a discounted price.", 12 | "soldOut": true 13 | }, 14 | { 15 | "name": "Standard", 16 | "price": 500, 17 | "description": "The real deal. One ticket to React Rally.", 18 | "soldOut": true 19 | }, 20 | { 21 | "name": "Significant Other Activity Ticket", 22 | "price": 20, 23 | "description": "Activities will be held both August 16 and August 17 in the evening after the conference. Purchase this ticket and bring your significant other along for the fun." 24 | }, 25 | { 26 | "name": "Charitable Donation", 27 | "price": "-", 28 | "description": "All proceeds from this ticket will be donated to Black Girls Code. This won't grant you entrance to the conference, but it will help you feel good." 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /2018/app/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Footer from 'components/Footer' 3 | import Header from 'components/Header' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 |
    9 |
    10 | {props.children} 11 |
    12 |
    13 |
    14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /2018/app/components/About.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function About() { 4 | return ( 5 |

    6 | React Rally is a two day single track conference for developers of all backgrounds using Facebook's React.js, React Native, and related tools. 7 | Speakers will cover topics such as React Native, Flux, ES6, isomorphic universal JavaScript, and so much more. 8 | Whether you're a seasoned developer who has been using React since before it was cool, or a newcomer to the scene, React Rally has something for everyone! 9 |

    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2018/app/components/Avatar.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | let size = props.size || 200 5 | return ( 6 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /2018/app/components/Button.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 11 | {props.children} 12 | 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /2018/app/components/Card.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    8 | {props.children} 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2018/app/components/Countdown.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import moment from 'moment' 3 | 4 | import DateUtils from 'helpers/DateUtils' 5 | 6 | export default class Tickets extends Component { 7 | componentDidMount () { 8 | this.timer = setInterval(this.forceUpdate.bind(this), 1000) 9 | } 10 | 11 | componentWillUnmount () { 12 | clearInterval(this.timer) 13 | } 14 | 15 | render() { 16 | const diff = moment.utc(this.props.date).diff(moment.utc()) 17 | 18 | return ( 19 |
    20 | {this.props.label} 21 |

    {DateUtils.duration(diff)}

    22 |
    23 | ) 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /2018/app/components/Icon.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 6 | 7 | 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /2018/app/components/Legend.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    6 |
    7 |
    {props.children}
    8 |
    9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /2018/app/components/Newsletter.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default () => { 4 | return ( 5 |
    6 | 7 |    8 | 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2018/app/components/Person.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Avatar from 'components/Avatar' 3 | import Icon from 'components/Icon' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 | 9 | {props.name}
    10 | {props.title} 11 |
    12 | {props.twitter && ( 13 | 14 | )} 15 | {props.github && ( 16 | 17 | )} 18 |
    19 |
    20 | ) 21 | } 22 | 23 | -------------------------------------------------------------------------------- /2018/app/components/Tickets.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import moment from 'moment' 3 | 4 | import constants from 'helpers/constants' 5 | import Button from 'components/Button' 6 | import Countdown from 'components/Countdown' 7 | 8 | const TICKET_RELEASE_TIME = moment.utc(constants.Dates.TICKET_RELEASE) 9 | 10 | export default class Tickets extends Component { 11 | render() { 12 | const ticketsAvailable = moment.utc().isSameOrAfter(TICKET_RELEASE_TIME) 13 | 14 | if (!ticketsAvailable) { 15 | setTimeout(this.forceUpdate.bind(this), 1000) 16 | } 17 | 18 | return ( 19 |
    20 | {ticketsAvailable ? ( 21 | 22 | ) : ( 23 | 24 | )} 25 |
    26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /2018/app/helpers/DateUtils.js: -------------------------------------------------------------------------------- 1 | const DateUtils = {} 2 | 3 | DateUtils.SECONDS = 1000 4 | DateUtils.MINUTES = DateUtils.SECONDS * 60 5 | DateUtils.HOURS = DateUtils.MINUTES * 60 6 | DateUtils.DAYS = DateUtils.HOURS * 24 7 | 8 | DateUtils.duration = (timeInMillis) => { 9 | let intervals = { 10 | 'd': DateUtils.DAYS, 11 | 'h': DateUtils.HOURS, 12 | 'm': DateUtils.MINUTES, 13 | 's': DateUtils.SECONDS, 14 | } 15 | let sb = '' 16 | 17 | Object.keys(intervals).forEach((k) => { 18 | let v = intervals[k] 19 | let unit = Math.floor(timeInMillis / v) 20 | timeInMillis %= v 21 | 22 | if (sb.length === 0 && unit === 0) return 23 | if (sb.length > 0) sb += ':' 24 | if (String(unit).length === 1) unit = '0' + unit 25 | sb += unit + k 26 | }) 27 | return sb 28 | } 29 | 30 | export default DateUtils 31 | -------------------------------------------------------------------------------- /2018/app/helpers/constants.js: -------------------------------------------------------------------------------- 1 | const constants = {} 2 | export default constants 3 | 4 | constants.Links = { 5 | CODE_OF_CONDUCT: 'http://confcodeofconduct.com/', 6 | TICKET_SALES: 'https://ti.to/trace-events/react-rally-2018', 7 | PROPOSAL_FORM: 'http://speak.reactrally.com/events/react-rally-2018', 8 | HOTEL_RESERVATION: 'https://www.starwoodmeeting.com/Book/reactrally2018', 9 | VENUE_DIRECTIONS: 'https://goo.gl/maps/V1kpixDA8DF2', 10 | PARTY_DIRECTIONS: 'https://goo.gl/maps/AeYKJrkAFZG2', 11 | LIVE_STREAM_PLACEHOLDER: 'https://www.youtube.com/embed/5NNOrp_83RU', 12 | LIVE_STREAM_DAY_ONE: 'https://www.youtube.com/embed/nUhN03Uo6go', 13 | LIVE_STREAM_DAY_TWO: 'https://www.youtube.com/embed/ii-T6HrkZFM', 14 | LIVE_STREAM_OVER: 'https://www.youtube.com/embed/T1XgFsitnQw', 15 | YOUTUBE_CHANNEL: 'https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ', 16 | SPONSOR_PROSPECTUS: 'docs/sponsor.pdf' 17 | } 18 | 19 | constants.Prices = { 20 | HOTEL_RATE: 165 21 | } 22 | 23 | constants.Dates = { 24 | CFP_OPEN: '2018-02-11T06:00:00-00:00', 25 | CFP_CLOSE: '2018-03-31T06:00:00-00:00', 26 | TICKET_RELEASE: '2018-04-11T18:00:00-00:00', 27 | CONF_DAY_ONE: '2018-08-16T06:00:00-00:00', 28 | CONF_DAY_TWO: '2018-08-17T06:00:00-00:00', 29 | HOTEL_DISCOUNT: '2018-07-16T06:00:00-00:00' 30 | } 31 | -------------------------------------------------------------------------------- /2018/app/helpers/googleAnalytics.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 3 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 4 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 5 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 6 | 7 | ga('create', 'UA-60963027-1', 'auto'); 8 | ga('send', 'pageview'); 9 | })(); 10 | -------------------------------------------------------------------------------- /2018/app/helpers/livestream.js: -------------------------------------------------------------------------------- 1 | import constants from 'helpers/constants' 2 | import moment from 'moment'; 3 | 4 | const isNowBetween = (one, two) => moment.utc().isBetween(moment.utc(one), moment.utc(two)); 5 | 6 | function getLiveStreamURL() { 7 | let url 8 | 9 | if (moment.utc().isBefore(moment.utc(constants.Dates.CONF_DAY_ONE))) { 10 | url = constants.Links.LIVE_STREAM_PLACEHOLDER 11 | } else if (isNowBetween(constants.Dates.CONF_DAY_ONE, constants.Dates.CONF_DAY_TWO)) { 12 | url = constants.Links.LIVE_STREAM_DAY_ONE 13 | } else if (isNowBetween(constants.Dates.CONF_DAY_TWO, moment.utc(constants.Dates.CONF_DAY_TWO).add(1, 'd'))) { 14 | url = constants.Links.LIVE_STREAM_DAY_TWO 15 | } else { 16 | url = constants.Links.LIVE_STREAM_OVER 17 | } 18 | 19 | return url 20 | } 21 | 22 | function getLiveStreamEmbedURL() { 23 | let url = getLiveStreamURL() 24 | 25 | if (url) { 26 | url = url.replace('youtu.be', 'youtube.com/embed') 27 | } 28 | 29 | return url 30 | } 31 | 32 | export { getLiveStreamURL, getLiveStreamEmbedURL } 33 | -------------------------------------------------------------------------------- /2018/app/helpers/shuffle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Suffle an array immutably using Fisher-Yates shuffle 3 | * 4 | * @param {array} list The array to shuffle 5 | * @return {array} A new array containing shuffled values from list 6 | */ 7 | export default function shuffle (list) { 8 | const result = [].concat(list) 9 | 10 | for (let i = list.length - 1; i > 0; i--) { 11 | const j = Math.floor(Math.random() * (i + 1)) 12 | const temp = result[i] 13 | 14 | result[i] = result[j] 15 | result[j] = temp 16 | } 17 | 18 | return result 19 | } 20 | -------------------------------------------------------------------------------- /2018/app/screens/Speakers/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Legend from 'components/Legend' 3 | import Person from 'components/Person' 4 | import shuffle from 'helpers/shuffle' 5 | import SpeakerData from '../../../api/speakers' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Speakers

    11 |
    12 | {Object.keys(SpeakerData).length > 0 ? ( 13 | shuffle(Object.keys(SpeakerData)).map(key => ) 14 | ) : ( 15 |

    We haven't selected any speakers yet. Why not check out this adorable cat video while you wait?

    16 | )} 17 |
    18 |
    19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /2018/app/screens/Sponsors/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import Button from 'components/Button' 4 | import Legend from 'components/Legend' 5 | import SponsorData from '../../../api/sponsors' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Thank you to our fine sponsors. Want to help support React Rally? We'd love to talk with you.

    11 | 12 | {Object.keys(SponsorData).filter(level => SponsorData[level].length > 0).map(level => { 13 | return ( 14 |
    15 | {level} 16 | {SponsorData[level].map((sponsor, i) => { 17 | return sponsor.image ? ( 18 | 19 | {sponsor.name}/ 20 | 21 | ) : ( 22 | {sponsor.name} 23 | ) 24 | })} 25 |
    26 | ) 27 | })} 28 |
    29 | ) 30 | } 31 | -------------------------------------------------------------------------------- /2018/app/screens/Stream/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import { getLiveStreamEmbedURL } from 'helpers/livestream' 4 | 5 | export default () => { 6 | let url = getLiveStreamEmbedURL() 7 | 8 | return ( 9 |
    10 |

    Live Stream

    11 | 20 |
    21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /2018/assets/css/responsive-500.scss: -------------------------------------------------------------------------------- 1 | /* Responsive styles for max-width 500px */ 2 | .Person { 3 | margin: 25px 0; 4 | } 5 | 6 | .Sponsors img { 7 | max-width: 200px !important; 8 | } 9 | .Sponsors img { 10 | margin: 25px 15px; 11 | } 12 | 13 | .Stream__Embedded { 14 | width: 254px; 15 | height: 143px; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /2018/assets/dist/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/ReactLogo.png -------------------------------------------------------------------------------- /2018/assets/dist/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2018/assets/dist/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2018/assets/dist/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2018/assets/dist/img/SaltLakeCitySkyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/SaltLakeCitySkyline.png -------------------------------------------------------------------------------- /2018/assets/dist/img/SheratonMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/SheratonMap.png -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/_jayphelps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/_jayphelps.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/apvarun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/apvarun.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/aweary.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/aweary.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/carofine247.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/carofine247.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/chantastic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/chantastic.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/eveporcello.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/eveporcello.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/featherart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/featherart.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/holtbt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/holtbt.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/jayphelps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/jayphelps.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/joshwcomeau.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/joshwcomeau.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/ken_wheeler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/ken_wheeler.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/kentcdodds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/kentcdodds.png -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/left_pad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/left_pad.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/modernserf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/modernserf.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/mybluewristband.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/mybluewristband.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/panicwhenever.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/panicwhenever.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/ryanflorence.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/ryanflorence.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/sugarpirate_.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/sugarpirate_.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/swyx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/swyx.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/sxywu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/sxywu.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/threepointone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/threepointone.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/speakers/wisecobbler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/speakers/wisecobbler.jpg -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/amex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/amex.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/bugsnag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/bugsnag.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/egghead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/egghead.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/formidable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/formidable.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/microsoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/microsoft.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/progress.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/usds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/usds.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/webflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/webflow.png -------------------------------------------------------------------------------- /2018/assets/dist/img/sponsors/workfront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/dist/img/sponsors/workfront.png -------------------------------------------------------------------------------- /2018/assets/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/ReactLogo.png -------------------------------------------------------------------------------- /2018/assets/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2018/assets/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2018/assets/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2018/assets/img/SaltLakeCitySkyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/SaltLakeCitySkyline.png -------------------------------------------------------------------------------- /2018/assets/img/SheratonMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/SheratonMap.png -------------------------------------------------------------------------------- /2018/assets/img/speakers/apvarun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/apvarun.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/aweary.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/aweary.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/carofine247.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/carofine247.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/chantastic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/chantastic.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/eveporcello.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/eveporcello.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/featherart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/featherart.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/holtbt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/holtbt.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/jayphelps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/jayphelps.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/joshwcomeau.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/joshwcomeau.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/ken_wheeler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/ken_wheeler.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/kentcdodds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/kentcdodds.png -------------------------------------------------------------------------------- /2018/assets/img/speakers/left_pad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/left_pad.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/modernserf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/modernserf.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/mybluewristband.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/mybluewristband.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/panicwhenever.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/panicwhenever.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/ryanflorence.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/ryanflorence.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/sugarpirate_.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/sugarpirate_.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/swyx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/swyx.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/sxywu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/sxywu.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/threepointone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/threepointone.jpg -------------------------------------------------------------------------------- /2018/assets/img/speakers/wisecobbler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/speakers/wisecobbler.jpg -------------------------------------------------------------------------------- /2018/assets/img/sponsors/amex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/amex.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/bugsnag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/bugsnag.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/egghead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/egghead.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/formidable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/formidable.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/instructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/instructure.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/microsoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/microsoft.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/progress.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/usds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/usds.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/webflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/webflow.png -------------------------------------------------------------------------------- /2018/assets/img/sponsors/workfront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/assets/img/sponsors/workfront.png -------------------------------------------------------------------------------- /2018/c9d00197123bb4610f5d43cb5e8f8b9a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/c9d00197123bb4610f5d43cb5e8f8b9a.png -------------------------------------------------------------------------------- /2018/docs/sponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/docs/sponsor.pdf -------------------------------------------------------------------------------- /2018/e418e67b17ceb3fdd7de46debfdd37d8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/e418e67b17ceb3fdd7de46debfdd37d8.png -------------------------------------------------------------------------------- /2018/fa71b257f4d3dbb315092fb69f18e0b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2018/fa71b257f4d3dbb315092fb69f18e0b4.png -------------------------------------------------------------------------------- /2018/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
    14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /2018/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-rally", 3 | "version": "2.0.0", 4 | "description": "React Rally 2018 Conference Website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "karma start --single-run", 8 | "start": "webpack-dev-server --inline --content-base ./", 9 | "build": "npm run imagemin && NODE_ENV=production webpack", 10 | "imagemin": "./scripts/imagemin", 11 | "deploy": "./scripts/deploy" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "github.com/react-rally/www" 16 | }, 17 | "author": "Matt Zabriskie", 18 | "license": "MIT", 19 | "dependencies": { 20 | "classnames": "^2.2.5", 21 | "moment": "^2.14.1", 22 | "prop-types": "15.6.1", 23 | "react": "^16.4.2", 24 | "react-dom": "^16.4.2", 25 | "react-router": "^3.2.0" 26 | }, 27 | "devDependencies": { 28 | "babel-core": "^6.7.2", 29 | "babel-loader": "^6.2.4", 30 | "babel-preset-es2015": "^6.6.0", 31 | "babel-preset-react": "^6.5.0", 32 | "css-loader": "^0.23.1", 33 | "file-loader": "^0.8.5", 34 | "imagemin": "^4.0.0", 35 | "imagemin-pngquant": "^4.2.2", 36 | "json-loader": "^0.5.4", 37 | "karma": "^0.13.22", 38 | "mocha": "^2.4.5", 39 | "node-sass": "^3.4.2", 40 | "sass-loader": "^3.2.0", 41 | "style-loader": "^0.13.0", 42 | "webpack": "^1.12.14", 43 | "webpack-dev-server": "^1.14.1" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /2018/scripts/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # delete old bundle images 4 | IMGRX="/[a-z0-9]{32}.png" 5 | find ../ -type f -maxdepth 2 | egrep $IMGRX | xargs rm 6 | 7 | # generate bundle 8 | npm run build 9 | 10 | # copy new bundle images 11 | find . -type f -maxdepth 1 | egrep $IMGRX | xargs -I{} cp {} ../ 12 | 13 | # copy files 14 | cp bundle.js ../ 15 | cp index.html ../ 16 | cp 404.html ../ 17 | 18 | # copy assets 19 | rm -rf ../assets 20 | mkdir ../assets 21 | cp -rf assets/dist ../assets 22 | 23 | # copy docs 24 | rm -rf ../docs 25 | cp -rf docs ../ 26 | 27 | # update github 28 | git add ../ 29 | git commit -m "Updating site" 30 | git push 31 | -------------------------------------------------------------------------------- /2018/scripts/imagemin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var Imagemin = require('imagemin'); 4 | var pngquant = require('imagemin-pngquant'); 5 | 6 | new Imagemin() 7 | .src('assets/img/**/*.{gif,jpg,jpeg,png,svg}') 8 | .dest('assets/dist/img') 9 | .use(Imagemin.jpegtran({progressive: true})) 10 | .use(pngquant({quality: '65-80', speed: 4})) 11 | .run(function (err, files) { 12 | console.log(err, files); 13 | }); 14 | -------------------------------------------------------------------------------- /2018/table-flip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | echo '(╯°□°)╯︵ ┻━┻' 4 | 5 | echo "-- install node" 6 | export NVM_DIR="$HOME/.nvm" 7 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 8 | 9 | nvm install && nvm use 10 | 11 | echo "-- installing dependencies" 12 | rm -rf node_modules 13 | npm cache clean 14 | npm install 15 | -------------------------------------------------------------------------------- /2018/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var plugins = []; 3 | 4 | if (process.env.NODE_ENV === 'production') { 5 | plugins.push( 6 | new webpack.DefinePlugin({ 7 | 'process.env': { 8 | NODE_ENV: JSON.stringify('production') 9 | } 10 | }) 11 | ); 12 | plugins.push( 13 | new webpack.optimize.UglifyJsPlugin() 14 | ); 15 | } 16 | 17 | module.exports = { 18 | entry: './index.js', 19 | output: { 20 | filename: 'bundle.js' 21 | }, 22 | module: { 23 | loaders: [ 24 | { 25 | test: /\.js$/, 26 | exclude: /node_modules/, 27 | loader: 'babel', 28 | query: { 29 | presets: ['es2015', 'react'] 30 | } 31 | }, 32 | { 33 | test: /\.png$/, 34 | loader: 'file' 35 | }, 36 | { 37 | test: /\.scss$/, 38 | loaders: ['style', 'css', 'sass'] 39 | }, 40 | { 41 | test: /\/api\//, 42 | loader: 'json-loader' 43 | } 44 | ] 45 | }, 46 | resolve: { 47 | modulesDirectories: [ 'app', 'node_modules' ] 48 | }, 49 | devServer: { 50 | historyApiFallback: true 51 | }, 52 | plugins: plugins 53 | }; 54 | -------------------------------------------------------------------------------- /2019/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /2019/api/organizers: -------------------------------------------------------------------------------- 1 | { 2 | "mzabriskie": { 3 | "name": "Matt Zabriskie", 4 | "title": "Co-organizer", 5 | "avatar": "https://avatars2.githubusercontent.com/u/199035", 6 | "twitter": "mzabriskie", 7 | "github": "mzabriskie" 8 | }, 9 | "jergason": { 10 | "name": "Jamison Dance", 11 | "title": "Co-organizer", 12 | "avatar": "https://avatars0.githubusercontent.com/u/72027", 13 | "twitter": "jergason", 14 | "github": "jergason" 15 | }, 16 | "sunny4days": { 17 | "name": "Sunny Legget", 18 | "title": "Event manager", 19 | "avatar": "https://pbs.twimg.com/profile_images/648946319013212160/z1_mkLp4_400x400.jpg", 20 | "twitter": "sunny4days" 21 | }, 22 | "": { 23 | "name": "Shyloh Belnap", 24 | "title": "Event manager", 25 | "avatar": "https://pbs.twimg.com/profile_images/859536726292922368/HTVnE9tc_400x400.jpg", 26 | "twitter": "shylohb" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /2019/api/schedule: -------------------------------------------------------------------------------- 1 | { 2 | "dayOne": [ 3 | ], 4 | "dayTwo": [ 5 | ] 6 | } 7 | 8 | 9 | -------------------------------------------------------------------------------- /2019/api/sponsors: -------------------------------------------------------------------------------- 1 | { 2 | "Premier": [ 3 | ], 4 | "Platinum": [ 5 | ], 6 | "Gold": [ 7 | ], 8 | "Silver": [ 9 | ], 10 | "Supporters": [ 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /2019/api/tickets: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Early Bird - Round One", 4 | "price": 400, 5 | "description": "Early bird tickets for React Rally! 20% off because we love early bird ticket buyers.", 6 | "soldOut": false 7 | }, 8 | { 9 | "name": "Early Bird - Round Two", 10 | "price": 450, 11 | "description": "One last chance to grab a React Rally ticket at a discounted price.", 12 | "soldOut": false 13 | }, 14 | { 15 | "name": "Standard", 16 | "price": 500, 17 | "description": "The real deal. One ticket to React Rally.", 18 | "soldOut": false 19 | }, 20 | { 21 | "name": "Significant Other Activity Ticket", 22 | "price": 20, 23 | "description": "Activities will be held both August 16 and August 17 in the evening after the conference. Purchase this ticket and bring your significant other along for the fun." 24 | }, 25 | { 26 | "name": "Charitable Donation", 27 | "price": "-", 28 | "description": "All proceeds from this ticket will be donated to Black Girls Code. This won't grant you entrance to the conference, but it will help you feel good." 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /2019/app/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Footer from 'components/Footer' 3 | import Header from 'components/Header' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 |
    9 |
    10 | {props.children} 11 |
    12 |
    13 |
    14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /2019/app/components/About.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function About() { 4 | return ( 5 |

    6 | React Rally is a two day single track conference for developers of all backgrounds using Facebook's React.js, React Native, and related tools. 7 | Speakers will cover topics such as React Native, Flux, ES6, isomorphic universal JavaScript, and so much more. 8 | Whether you're a seasoned developer who has been using React since before it was cool, or a newcomer to the scene, React Rally has something for everyone! 9 |

    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2019/app/components/Avatar.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | let size = props.size || 200 5 | return ( 6 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /2019/app/components/Button.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 11 | {props.children} 12 | 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /2019/app/components/Card.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    8 | {props.children} 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2019/app/components/Countdown.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import moment from 'moment' 3 | 4 | import DateUtils from 'helpers/DateUtils' 5 | 6 | export default class Tickets extends Component { 7 | componentDidMount () { 8 | this.timer = setInterval(this.forceUpdate.bind(this), 1000) 9 | } 10 | 11 | componentWillUnmount () { 12 | clearInterval(this.timer) 13 | } 14 | 15 | render() { 16 | const diff = moment.utc(this.props.date).diff(moment.utc()) 17 | 18 | return ( 19 |
    20 | {this.props.label} 21 |

    {DateUtils.duration(diff)}

    22 |
    23 | ) 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /2019/app/components/Icon.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 | 6 | 7 | 8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /2019/app/components/Legend.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default (props) => { 4 | return ( 5 |
    6 |
    7 |
    {props.children}
    8 |
    9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /2019/app/components/Newsletter.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default () => { 4 | return ( 5 |
    6 | 7 |    8 | 9 |
    10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /2019/app/components/Person.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Avatar from 'components/Avatar' 3 | import Icon from 'components/Icon' 4 | 5 | export default (props) => { 6 | return ( 7 |
    8 | 9 | {props.name}
    10 | {props.title} 11 |
    12 | {props.twitter && ( 13 | 14 | )} 15 | {props.github && ( 16 | 17 | )} 18 |
    19 |
    20 | ) 21 | } 22 | 23 | -------------------------------------------------------------------------------- /2019/app/components/Tickets.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import moment from 'moment' 3 | 4 | import constants from 'helpers/constants' 5 | import Button from 'components/Button' 6 | import Countdown from 'components/Countdown' 7 | 8 | const TICKET_RELEASE_TIME = moment.utc(constants.Dates.TICKET_RELEASE) 9 | 10 | export default class Tickets extends Component { 11 | render() { 12 | const ticketsAvailable = moment.utc().isSameOrAfter(TICKET_RELEASE_TIME) 13 | 14 | if (!ticketsAvailable) { 15 | setTimeout(this.forceUpdate.bind(this), 1000) 16 | } 17 | 18 | return ( 19 |
    20 | {ticketsAvailable ? ( 21 | 22 | ) : ( 23 | 24 | )} 25 |
    26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /2019/app/helpers/DateUtils.js: -------------------------------------------------------------------------------- 1 | const DateUtils = {} 2 | 3 | DateUtils.SECONDS = 1000 4 | DateUtils.MINUTES = DateUtils.SECONDS * 60 5 | DateUtils.HOURS = DateUtils.MINUTES * 60 6 | DateUtils.DAYS = DateUtils.HOURS * 24 7 | 8 | DateUtils.duration = (timeInMillis) => { 9 | let intervals = { 10 | 'd': DateUtils.DAYS, 11 | 'h': DateUtils.HOURS, 12 | 'm': DateUtils.MINUTES, 13 | 's': DateUtils.SECONDS, 14 | } 15 | let sb = '' 16 | 17 | Object.keys(intervals).forEach((k) => { 18 | let v = intervals[k] 19 | let unit = Math.floor(timeInMillis / v) 20 | timeInMillis %= v 21 | 22 | if (sb.length === 0 && unit === 0) return 23 | if (sb.length > 0) sb += ':' 24 | if (String(unit).length === 1) unit = '0' + unit 25 | sb += unit + k 26 | }) 27 | return sb 28 | } 29 | 30 | export default DateUtils 31 | -------------------------------------------------------------------------------- /2019/app/helpers/constants.js: -------------------------------------------------------------------------------- 1 | const constants = {} 2 | export default constants 3 | 4 | constants.Links = { 5 | CODE_OF_CONDUCT: 'http://confcodeofconduct.com/', 6 | TICKET_SALES: 'https://ti.to/trace-events/react-rally-2019', 7 | PROPOSAL_FORM: 'http://speak.reactrally.com/events/react-rally-2019', 8 | HOTEL_RESERVATION: 'https://www.starwoodmeeting.com/Book/reactrally2019', 9 | VENUE_DIRECTIONS: 'https://goo.gl/maps/V1kpixDA8DF2', 10 | PARTY_DIRECTIONS: 'https://goo.gl/maps/AeYKJrkAFZG2', 11 | LIVE_STREAM_PLACEHOLDER: 'https://www.youtube.com/embed/5NNOrp_83RU', 12 | LIVE_STREAM_DAY_ONE: 'https://www.youtube.com/embed/nUhN03Uo6go', 13 | LIVE_STREAM_DAY_TWO: 'https://www.youtube.com/embed/ii-T6HrkZFM', 14 | LIVE_STREAM_OVER: 'https://www.youtube.com/embed/T1XgFsitnQw', 15 | YOUTUBE_CHANNEL: 'https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ', 16 | SPONSOR_PROSPECTUS: 'docs/sponsor.pdf' 17 | } 18 | 19 | constants.Prices = { 20 | HOTEL_RATE: 165 21 | } 22 | 23 | constants.Dates = { 24 | CFP_OPEN: '2019-03-01T06:00:00-00:00', 25 | CFP_CLOSE: '2019-03-31T06:00:00-00:00', 26 | TICKET_RELEASE: '2019-04-10T18:00:00-00:00', 27 | CONF_DAY_ONE: '2019-08-22T06:00:00-00:00', 28 | CONF_DAY_TWO: '2019-08-23T06:00:00-00:00', 29 | HOTEL_DISCOUNT: '2019-07-16T06:00:00-00:00' 30 | } 31 | -------------------------------------------------------------------------------- /2019/app/helpers/googleAnalytics.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 3 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 4 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 5 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 6 | 7 | ga('create', 'UA-60963027-1', 'auto'); 8 | ga('send', 'pageview'); 9 | })(); 10 | -------------------------------------------------------------------------------- /2019/app/helpers/livestream.js: -------------------------------------------------------------------------------- 1 | import constants from 'helpers/constants' 2 | import moment from 'moment'; 3 | 4 | const isNowBetween = (one, two) => moment.utc().isBetween(moment.utc(one), moment.utc(two)); 5 | 6 | function getLiveStreamURL() { 7 | let url 8 | 9 | if (moment.utc().isBefore(moment.utc(constants.Dates.CONF_DAY_ONE))) { 10 | url = constants.Links.LIVE_STREAM_PLACEHOLDER 11 | } else if (isNowBetween(constants.Dates.CONF_DAY_ONE, constants.Dates.CONF_DAY_TWO)) { 12 | url = constants.Links.LIVE_STREAM_DAY_ONE 13 | } else if (isNowBetween(constants.Dates.CONF_DAY_TWO, moment.utc(constants.Dates.CONF_DAY_TWO).add(1, 'd'))) { 14 | url = constants.Links.LIVE_STREAM_DAY_TWO 15 | } else { 16 | url = constants.Links.LIVE_STREAM_OVER 17 | } 18 | 19 | return url 20 | } 21 | 22 | function getLiveStreamEmbedURL() { 23 | let url = getLiveStreamURL() 24 | 25 | if (url) { 26 | url = url.replace('youtu.be', 'youtube.com/embed') 27 | } 28 | 29 | return url 30 | } 31 | 32 | export { getLiveStreamURL, getLiveStreamEmbedURL } 33 | -------------------------------------------------------------------------------- /2019/app/helpers/shuffle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Suffle an array immutably using Fisher-Yates shuffle 3 | * 4 | * @param {array} list The array to shuffle 5 | * @return {array} A new array containing shuffled values from list 6 | */ 7 | export default function shuffle (list) { 8 | const result = [].concat(list) 9 | 10 | for (let i = list.length - 1; i > 0; i--) { 11 | const j = Math.floor(Math.random() * (i + 1)) 12 | const temp = result[i] 13 | 14 | result[i] = result[j] 15 | result[j] = temp 16 | } 17 | 18 | return result 19 | } 20 | -------------------------------------------------------------------------------- /2019/app/screens/About/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import About from 'components/About' 3 | import Legend from 'components/Legend' 4 | import Person from 'components/Person' 5 | import shuffle from 'helpers/shuffle' 6 | 7 | import OrganizerData from '../../../api/organizers' 8 | 9 | export default () => { 10 | return ( 11 |
    12 |

    About React Rally

    13 | 14 |
    15 |

    Attendee Experience

    16 |

    17 | As an attendee of React Rally you will enjoy two full days of talks where you will learn and keep your React knowledge current. You will also have built-in downtime throughout the day so you can discuss what you're learning with other developers, spend time catching up with old friends, or find opportunities to meet new friends. You will be provided with catered breakfast, and you will receive a gift card for lunch so that you can go out and explore Salt Lake City and enjoy some of the local fare. At the end of the day you can unwind and enjoy karaoke, dessert, board games, live music, or lawn games at the conference after parties held each evening. 18 |

    19 |
    20 | Organizers 21 | {shuffle(Object.keys(OrganizerData)).map(key => { 22 | return 23 | })} 24 |
    25 |
    26 | ) 27 | } 28 | -------------------------------------------------------------------------------- /2019/app/screens/Speakers/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Legend from 'components/Legend' 3 | import Person from 'components/Person' 4 | import shuffle from 'helpers/shuffle' 5 | import SpeakerData from '../../../api/speakers' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Speakers

    11 |
    12 | {Object.keys(SpeakerData).length > 0 ? ( 13 | shuffle(Object.keys(SpeakerData)).map(key => ) 14 | ) : ( 15 |

    We haven't selected any speakers yet. Why not check out this adorable cat video while you wait?

    16 | )} 17 |
    18 |
    19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /2019/app/screens/Sponsors/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import Button from 'components/Button' 4 | import Legend from 'components/Legend' 5 | import SponsorData from '../../../api/sponsors' 6 | 7 | export default () => { 8 | return ( 9 |
    10 |

    Thank you to our fine sponsors. Want to help support React Rally? We'd love to talk with you.

    11 | 12 | {Object.keys(SponsorData).filter(level => SponsorData[level].length > 0).map(level => { 13 | return ( 14 |
    15 | {level} 16 | {SponsorData[level].map((sponsor, i) => { 17 | return sponsor.image ? ( 18 | 19 | {sponsor.name}/ 20 | 21 | ) : ( 22 | {sponsor.name} 23 | ) 24 | })} 25 |
    26 | ) 27 | })} 28 |
    29 | ) 30 | } 31 | -------------------------------------------------------------------------------- /2019/app/screens/Stream/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import constants from 'helpers/constants' 3 | import { getLiveStreamEmbedURL } from 'helpers/livestream' 4 | 5 | export default () => { 6 | let url = getLiveStreamEmbedURL() 7 | 8 | return ( 9 |
    10 |

    Live Stream

    11 | 20 |
    21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /2019/assets/css/responsive-500.scss: -------------------------------------------------------------------------------- 1 | /* Responsive styles for max-width 500px */ 2 | .Person { 3 | margin: 25px 0; 4 | } 5 | 6 | .Sponsors img { 7 | max-width: 200px !important; 8 | } 9 | .Sponsors img { 10 | margin: 25px 15px; 11 | } 12 | 13 | .Stream__Embedded { 14 | width: 254px; 15 | height: 143px; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /2019/assets/dist/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/ReactLogo.png -------------------------------------------------------------------------------- /2019/assets/dist/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2019/assets/dist/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2019/assets/dist/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2019/assets/dist/img/SaltLakeCitySkyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/SaltLakeCitySkyline.png -------------------------------------------------------------------------------- /2019/assets/dist/img/SheratonMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/SheratonMap.png -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/alex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/alex.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/anjana.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/anjana.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/anjana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/anjana.png -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/anthony.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/anthony.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/brian.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/brian.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/danielle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/danielle.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/david.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/david.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/emily.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/emily.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/feather.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/feather.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/glen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/glen.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/jen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/jen.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/joel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/joel.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/johnny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/johnny.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/josh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/josh.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/justin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/justin.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/kent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/kent.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/mihai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/mihai.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/nat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/nat.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/nicole.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/nicole.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/princiya.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/princiya.jpeg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/princiya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/princiya.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/revel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/revel.jpg -------------------------------------------------------------------------------- /2019/assets/dist/img/speakers/will.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/dist/img/speakers/will.jpg -------------------------------------------------------------------------------- /2019/assets/img/ReactLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/ReactLogo.png -------------------------------------------------------------------------------- /2019/assets/img/RoseWagnerDetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/RoseWagnerDetail.png -------------------------------------------------------------------------------- /2019/assets/img/RoseWagnerMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/RoseWagnerMap.png -------------------------------------------------------------------------------- /2019/assets/img/SaltLakeCity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/SaltLakeCity.png -------------------------------------------------------------------------------- /2019/assets/img/SaltLakeCitySkyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/SaltLakeCitySkyline.png -------------------------------------------------------------------------------- /2019/assets/img/SheratonMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/SheratonMap.png -------------------------------------------------------------------------------- /2019/assets/img/speakers/alex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/alex.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/anjana.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/anjana.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/anthony.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/anthony.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/brian.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/brian.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/danielle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/danielle.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/david.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/david.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/emily.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/emily.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/feather.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/feather.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/glen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/glen.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/jen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/jen.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/joel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/joel.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/johnny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/johnny.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/josh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/josh.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/justin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/justin.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/kent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/kent.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/mihai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/mihai.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/nat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/nat.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/nicole.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/nicole.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/princiya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/princiya.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/revel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/revel.jpg -------------------------------------------------------------------------------- /2019/assets/img/speakers/will.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/assets/img/speakers/will.jpg -------------------------------------------------------------------------------- /2019/docs/sponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/2019/docs/sponsor.pdf -------------------------------------------------------------------------------- /2019/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React Rally 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
    14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /2019/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-rally", 3 | "version": "2.0.0", 4 | "description": "React Rally 2019 Conference Website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "karma start --single-run", 8 | "start": "webpack-dev-server --inline --content-base ./", 9 | "build": "npm run imagemin && NODE_ENV=production webpack", 10 | "imagemin": "./scripts/imagemin", 11 | "deploy": "./scripts/deploy" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "github.com/react-rally/www" 16 | }, 17 | "author": "Matt Zabriskie", 18 | "license": "MIT", 19 | "dependencies": { 20 | "classnames": "^2.2.5", 21 | "moment": "^2.14.1", 22 | "prop-types": "15.6.1", 23 | "react": "^16.4.2", 24 | "react-dom": "^16.4.2", 25 | "react-router": "^3.2.0" 26 | }, 27 | "devDependencies": { 28 | "babel-core": "^6.7.2", 29 | "babel-loader": "^6.2.4", 30 | "babel-preset-es2015": "^6.6.0", 31 | "babel-preset-react": "^6.5.0", 32 | "css-loader": "^0.23.1", 33 | "file-loader": "^0.8.5", 34 | "imagemin": "^4.0.0", 35 | "imagemin-pngquant": "^4.2.2", 36 | "json-loader": "^0.5.4", 37 | "karma": "^0.13.22", 38 | "mocha": "^2.4.5", 39 | "node-sass": "^3.4.2", 40 | "sass-loader": "^3.2.0", 41 | "style-loader": "^0.13.0", 42 | "webpack": "^1.12.14", 43 | "webpack-dev-server": "^1.14.1" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /2019/scripts/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # delete old bundle images 4 | IMGRX="/[a-z0-9]{32}.png" 5 | find ../ -type f -maxdepth 2 | egrep $IMGRX | xargs rm 6 | 7 | # generate bundle 8 | npm run build 9 | 10 | # copy new bundle images 11 | find . -type f -maxdepth 1 | egrep $IMGRX | xargs -I{} cp {} ../ 12 | 13 | # copy files 14 | cp bundle.js ../ 15 | cp index.html ../ 16 | cp 404.html ../ 17 | 18 | # copy assets 19 | rm -rf ../assets 20 | mkdir ../assets 21 | cp -rf assets/dist ../assets 22 | 23 | # copy docs 24 | rm -rf ../docs 25 | cp -rf docs ../ 26 | 27 | # update github 28 | git add ../ 29 | git commit -m "Updating site" 30 | git push 31 | -------------------------------------------------------------------------------- /2019/scripts/imagemin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var Imagemin = require('imagemin'); 4 | var pngquant = require('imagemin-pngquant'); 5 | 6 | new Imagemin() 7 | .src('assets/img/**/*.{gif,jpg,jpeg,png,svg}') 8 | .dest('assets/dist/img') 9 | .use(Imagemin.jpegtran({progressive: true})) 10 | .use(pngquant({quality: '65-80', speed: 4})) 11 | .run(function (err, files) { 12 | console.log(err, files); 13 | }); 14 | -------------------------------------------------------------------------------- /2019/table-flip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | echo '(╯°□°)╯︵ ┻━┻' 4 | 5 | echo "-- install node" 6 | export NVM_DIR="$HOME/.nvm" 7 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 8 | 9 | nvm install && nvm use 10 | 11 | echo "-- installing dependencies" 12 | rm -rf node_modules 13 | npm cache clean 14 | npm install 15 | -------------------------------------------------------------------------------- /2019/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var plugins = []; 3 | 4 | if (process.env.NODE_ENV === 'production') { 5 | plugins.push( 6 | new webpack.DefinePlugin({ 7 | 'process.env': { 8 | NODE_ENV: JSON.stringify('production') 9 | } 10 | }) 11 | ); 12 | plugins.push( 13 | new webpack.optimize.UglifyJsPlugin() 14 | ); 15 | } 16 | 17 | module.exports = { 18 | entry: './index.js', 19 | output: { 20 | filename: 'bundle.js' 21 | }, 22 | module: { 23 | loaders: [ 24 | { 25 | test: /\.js$/, 26 | exclude: /node_modules/, 27 | loader: 'babel', 28 | query: { 29 | presets: ['es2015', 'react'] 30 | } 31 | }, 32 | { 33 | test: /\.png$/, 34 | loader: 'file' 35 | }, 36 | { 37 | test: /\.scss$/, 38 | loaders: ['style', 'css', 'sass'] 39 | }, 40 | { 41 | test: /\/api\//, 42 | loader: 'json-loader' 43 | } 44 | ] 45 | }, 46 | resolve: { 47 | modulesDirectories: [ 'app', 'node_modules' ] 48 | }, 49 | devServer: { 50 | historyApiFallback: true 51 | }, 52 | plugins: plugins 53 | }; 54 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | www.reactrally.com 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Developing 2 | 3 | ```bash 4 | git clone git@github.com:react-rally/www.git react-rally 5 | cd react-rally 6 | cd [YEAR] 7 | npm install 8 | npm start 9 | open http://127.0.0.1:8080 10 | ``` 11 | 12 | ## Deploying 13 | 14 | ```bash 15 | # Make your changes on master 16 | git add . 17 | git commit -m"[DESCRIPTION]" 18 | git push 19 | 20 | # Merge changes into gh-pages branch 21 | git checkout gh-pages 22 | git merge master 23 | 24 | # Once your changes have been merged 25 | cd [YEAR] 26 | npm run deploy 27 | 28 | # Move back to master 29 | git checkout master 30 | ``` 31 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/favicon.ico -------------------------------------------------------------------------------- /teaser/assets/fonts/true-crimes-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/fonts/true-crimes-webfont.eot -------------------------------------------------------------------------------- /teaser/assets/fonts/true-crimes-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/fonts/true-crimes-webfont.ttf -------------------------------------------------------------------------------- /teaser/assets/fonts/true-crimes-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/fonts/true-crimes-webfont.woff -------------------------------------------------------------------------------- /teaser/assets/img/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/background.png -------------------------------------------------------------------------------- /teaser/assets/img/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/city.png -------------------------------------------------------------------------------- /teaser/assets/img/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/github.png -------------------------------------------------------------------------------- /teaser/assets/img/mushroomCloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/mushroomCloud.png -------------------------------------------------------------------------------- /teaser/assets/img/robotLasers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/robotLasers.png -------------------------------------------------------------------------------- /teaser/assets/img/slc-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/slc-background.png -------------------------------------------------------------------------------- /teaser/assets/img/tentacle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/tentacle_left.png -------------------------------------------------------------------------------- /teaser/assets/img/tentacle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/tentacle_right.png -------------------------------------------------------------------------------- /teaser/assets/img/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-rally/www/37ecf434ae3d631bb5d1ecd8a83c8e7d3501e15a/teaser/assets/img/twitter.png -------------------------------------------------------------------------------- /teaser/assets/js/scripts.js: -------------------------------------------------------------------------------- 1 | // Analytics 2 | (function () { 3 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 4 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 5 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 6 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 7 | 8 | ga('create', 'UA-60963027-1', 'auto'); 9 | ga('send', 'pageview'); 10 | })(); 11 | 12 | // User Agent 13 | (function () { 14 | var className = document.body.className; 15 | var PATTERNS = { 16 | firefox: /firefox/i, 17 | chrome: /chrome\/(.*) safari\//i, 18 | safari: /version\/(.*) safari\//i, 19 | ie: /(msie|trident)/i 20 | }; 21 | 22 | for (var agent in PATTERNS) { 23 | if (PATTERNS.hasOwnProperty(agent) && 24 | PATTERNS[agent].test(navigator.userAgent)) { 25 | className += ' ' + agent; 26 | break; 27 | } 28 | } 29 | 30 | document.body.className = className.replace(/(^ | $)/, ''); 31 | })(); 32 | --------------------------------------------------------------------------------