diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..96172bd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+# Folders
+site-media/
+static-files/
+node_modules/
+build/
+jest/
+.idea/
+
+# Files
+*.DS_Store
+*.pyc
+*.css.map
+*.js.map
+*.log
+*.pyc
diff --git a/448c34a56d699c29117adc64c43affeb.woff2 b/448c34a56d699c29117adc64c43affeb.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/448c34a56d699c29117adc64c43affeb.woff2 differ
diff --git a/89889688147bd7575d6327160d64e760.svg b/89889688147bd7575d6327160d64e760.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/89889688147bd7575d6327160d64e760.svg
@@ -0,0 +1,288 @@
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f88c2bb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# OpenEats Project
+
+API Status:
+[](https://travis-ci.org/open-eats/openeats-api)
+[](https://coveralls.io/github/open-eats/openeats-api)
+
+Web Status:
+[](https://travis-ci.org/open-eats/openeats-web)
+[](https://coveralls.io/github/open-eats/openeats-web)
+
+OpenEats is a recipe management site that allows users to create, share, and store their personal collection of recipes. This fork uses Django Rest Framework as a backend and React (with flux) as a front end.
+
+The usage for the app is intended for a single user or a small group. For my personal use, I would be an admin user and a few (about 5-6) friends and family would be normal users. Admin users can add other users to the project (no open sign-ups), make changes to the available Cuisines and Courses, and add to the homepage banner. Normal users just have the ability to add recipes. Below are a few of the core features the app provides.
+
+- Creating, viewing, sharing, and editing recipes.
+- Update Serving information on the fly.
+- Browsing and searching for recipes.
+- Creating grocery lists.
+- Automatically add recipes to your grocery lists.
+- Quickly print recipe.
+- Linking recipes and ingredient grouping.
+
+### [Read the docs on getting started here!](https://github.com/open-eats/OpenEats/blob/master/docs/Running_the_App.md)
+
+# Contributing
+Please read the [contribution guidelines](https://github.com/open-eats/OpenEats/blob/master/CONTRIBUTING.md) in order to make the contribution process easy and effective for everyone involved.
+
+ For a guide on how to setup an environment for development see [this guide](https://github.com/open-eats/OpenEats/blob/master/docs/Running_the_App_in_dev.md).
\ No newline at end of file
diff --git a/bundle.js b/bundle.js
new file mode 100644
index 0000000..d118d4a
--- /dev/null
+++ b/bundle.js
@@ -0,0 +1,14 @@
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=201)}([function(e,t,n){"use strict";e.exports=n(202)},function(e,t,n){e.exports=n(213)()},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(95),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,o.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(340),a=r(o),i=n(344),l=r(i),s=n(95),c=r(s);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,c.default)(t)));e.prototype=(0,l.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(a.default?(0,a.default)(e,t):e.__proto__=t)}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(143),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";function r(e){return function(){for(var t=arguments.length,n=Array(t),r=0;r1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:[];(Array.isArray(e)?e:[e]).forEach(function(e){e&&e.locale&&(j.a.__addLocaleData(e),M.a.__addLocaleData(e))})}function o(e){for(var t=(e||"").split("-");t.length>0;){if(a(t.join("-")))return!0;t.pop()}return!1}function a(e){var t=e&&e.toLowerCase();return!(!j.a.__localeData__[t]||!M.a.__localeData__[t])}function i(e){return(""+e).replace(xe,function(e){return ye[e]})}function l(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.reduce(function(t,r){return e.hasOwnProperty(r)?t[r]=e[r]:n.hasOwnProperty(r)&&(t[r]=n[r]),t},{})}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.intl;U()(t,"[React Intl] Could not find required `intl` object. needs to exist in the component ancestry.")}function c(e,t){if(e===t)return!0;if("object"!==(void 0===e?"undefined":z(e))||null===e||"object"!==(void 0===t?"undefined":z(t))||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),a=0;a3&&void 0!==arguments[3]?arguments[3]:{},u=i.intl,p=void 0===u?{}:u,d=s.intl,f=void 0===d?{}:d;return!c(t,r)||!c(n,o)||!(f===p||c(l(f,ve),l(p,ve)))}function p(e){return e.displayName||e.name||"Component"}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.intlPropName,r=void 0===n?"intl":n,o=t.withRef,a=void 0!==o&&o,i=function(t){function n(e,t){W(this,n);var r=X(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return s(t),r}return Y(n,t),K(n,[{key:"getWrappedInstance",value:function(){return U()(a,"[React Intl] To access the wrapped instance, the `{withRef: true}` option must be set when calling: `injectIntl()`"),this.refs.wrappedInstance}},{key:"render",value:function(){return D.a.createElement(e,V({},this.props,G({},r,this.context.intl),{ref:a?"wrappedInstance":null}))}}]),n}(A.Component);return i.displayName="InjectIntl("+p(e)+")",i.contextTypes={intl:fe},i.WrappedComponent=e,i}function f(e){return e}function h(e){return j.a.prototype._resolveLocale(e)}function m(e){return j.a.prototype._findPluralRuleFunction(e)}function b(e){var t=M.a.thresholds;t.second=e.second,t.minute=e.minute,t.hour=e.hour,t.day=e.day,t.month=e.month}function g(e,t,n){var r=e&&e[t]&&e[t][n];if(r)return r}function v(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,s=new Date(n),c=i&&g(a,"date",i),u=l(r,we,c);try{return t.getDateTimeFormat(o,u).format(s)}catch(e){}return String(s)}function y(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,s=new Date(n),c=i&&g(a,"time",i),u=l(r,we,c);u.hour||u.minute||u.second||(u=V({},u,{hour:"numeric",minute:"numeric"}));try{return t.getDateTimeFormat(o,u).format(s)}catch(e){}return String(s)}function x(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,s=new Date(n),c=new Date(r.now),u=i&&g(a,"relative",i),p=l(r,ke,u),d=V({},M.a.thresholds);b(Ce);try{return t.getRelativeFormat(o,p).format(s,{now:isFinite(c)?c:t.now()})}catch(e){}finally{b(d)}return String(s)}function E(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,s=i&&g(a,"number",i),c=l(r,_e,s);try{return t.getNumberFormat(o,c).format(n)}catch(e){}return String(n)}function w(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=l(r,Oe);try{return t.getPluralFormat(o,a).format(n)}catch(e){}return"other"}function _(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=e.messages,l=e.defaultLocale,s=e.defaultFormats,c=n.id,u=n.defaultMessage;U()(c,"[React Intl] An `id` must be provided to format a message.");var p=i&&i[c];if(!(Object.keys(r).length>0))return p||u||c;var d=void 0;if(p)try{d=t.getMessageFormat(p,o,a).format(r)}catch(e){}if(!d&&u)try{d=t.getMessageFormat(u,l,s).format(r)}catch(e){}return d||p||u||c}function k(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return _(e,t,n,Object.keys(r).reduce(function(e,t){var n=r[t];return e[t]="string"==typeof n?i(n):n,e},{}))}function O(e){var t=Math.abs(e);return t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},X=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},Q=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t":">","<":"<",'"':""","'":"'"},xe=/[&><"']/g,Ee=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};W(this,e);var r="ordinal"===n.style,o=m(h(t));this.format=function(e){return o(e,r)}},we=Object.keys(he),_e=Object.keys(me),ke=Object.keys(be),Oe=Object.keys(ge),Ce={second:60,minute:60,hour:24,day:30,month:12},Te=Object.freeze({formatDate:v,formatTime:y,formatRelative:x,formatNumber:E,formatPlural:w,formatMessage:_,formatHTMLMessage:k}),Pe=Object.keys(pe),Ne=Object.keys(de),Se={formats:{},messages:{},textComponent:"span",defaultLocale:"en",defaultFormats:{}},je=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};W(this,t);var r=X(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));U()("undefined"!=typeof Intl,"[React Intl] The `Intl` APIs must be available in the runtime, and do not appear to be built-in. An `Intl` polyfill should be loaded.\nSee: http://formatjs.io/guides/runtime-environments/");var o=n.intl,a=void 0;a=isFinite(e.initialNow)?Number(e.initialNow):o?o.now():Date.now();var i=o||{},l=i.formatters,s=void 0===l?{getDateTimeFormat:q()(Intl.DateTimeFormat),getNumberFormat:q()(Intl.NumberFormat),getMessageFormat:q()(j.a),getRelativeFormat:q()(M.a),getPluralFormat:q()(Ee)}:l;return r.state=V({},s,{now:function(){return r._didDisplay?Date.now():a}}),r}return Y(t,e),K(t,[{key:"getConfig",value:function(){var e=this.context.intl,t=l(this.props,Pe,e);for(var n in Se)void 0===t[n]&&(t[n]=Se[n]);if(!o(t.locale)){var r=t,a=(r.locale,r.defaultLocale),i=r.defaultFormats;t=V({},t,{locale:a,formats:i,messages:Se.messages})}return t}},{key:"getBoundFormatFns",value:function(e,t){return Ne.reduce(function(n,r){return n[r]=Te[r].bind(null,e,t),n},{})}},{key:"getChildContext",value:function(){var e=this.getConfig(),t=this.getBoundFormatFns(e,this.state),n=this.state,r=n.now,o=$(n,["now"]);return{intl:V({},e,t,{formatters:o,now:r})}}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n1?r-1:0),a=1;a0){var h=Math.floor(1099511627776*Math.random()).toString(16),m=function(){var e=0;return function(){return"ELEMENT-"+h+"-"+(e+=1)}}();p="@__"+h+"__@",d={},f={},Object.keys(l).forEach(function(e){var t=l[e];if(Object(A.isValidElement)(t)){var n=m();d[e]=p+n+p,f[n]=t}else d[e]=t})}var b={id:o,description:a,defaultMessage:i},g=t(b,d||l),v=void 0;return v=f&&Object.keys(f).length>0?g.split(p).filter(function(e){return!!e}).map(function(e){return f[e]||e}):[g],"function"==typeof u?u.apply(void 0,Q(v)):A.createElement.apply(void 0,[c,null].concat(Q(v)))}}]),t}(A.Component);Be.displayName="FormattedMessage",Be.contextTypes={intl:fe},Be.defaultProps={values:{}};var ze=function(e){function t(e,n){W(this,t);var r=X(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return s(n),r}return Y(t,e),K(t,[{key:"shouldComponentUpdate",value:function(e){var t=this.props.values;if(!c(e.values,t))return!0;for(var n=V({},e,{values:t}),r=arguments.length,o=Array(r>1?r-1:0),a=1;a=0&&y.splice(t,1)}function l(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),a(e,t),t}function s(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),a(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,o,a;if(t.transform&&e.css){if(!(a=t.transform(e.css)))return function(){};e.css=a}if(t.singleton){var c=v++;n=g||(g=l(t)),r=p.bind(null,n,c,!1),o=p.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=s(t),r=f.bind(null,n,t),o=function(){i(n),n.href&&URL.revokeObjectURL(n.href)}):(n=l(t),r=d.bind(null,n),o=function(){i(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}function p(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=E(t,o);else{var a=document.createTextNode(o),i=e.childNodes;i[t]&&e.removeChild(i[t]),i.length?e.insertBefore(a,i[t]):e.appendChild(a)}}function d(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function f(e,t,n){var r=n.css,o=n.sourceMap,a=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||a)&&(r=x(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var i=new Blob([r],{type:"text/css"}),l=e.href;e.href=URL.createObjectURL(i),l&&URL.revokeObjectURL(l)}var h={},m=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),b=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),g=null,v=0,y=[],x=n(466);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=m()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=o(e,t);return r(n,t),function(e){for(var a=[],i=0;i>",s=i||r;if(null==n[r])return t?new Error("Required "+a+" `"+s+"` was not specified in `"+l+"`."):null;for(var c=arguments.length,u=Array(c>6?c-6:0),p=6;p>",l=a||n;if(null==t[n])return new Error("The "+o+" `"+l+"` is required to make `"+i+"` accessible for users of assistive technologies such as screen readers.");for(var s=arguments.length,c=Array(s>5?s-5:0),u=5;u may have only one child element"),this.unlisten=r.listen(function(){e.setState({match:e.computeMatch(r.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){l()(this.props.history===e.history,"You cannot change ")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?p.a.Children.only(e):null},t}(p.a.Component);m.propTypes={history:f.a.object.isRequired,children:f.a.node},m.contextTypes={router:f.a.object},m.childContextTypes={router:f.a.object.isRequired},t.a=m},function(e,t,n){"use strict";var r=n(271),o=n.n(r),a={},i=0,l=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=a[n]||(a[n]={});if(r[e])return r[e];var l=[],s=o()(e,l,t),c={re:s,keys:l};return i<1e4&&(r[e]=c,i++),c},s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"==typeof t&&(t={path:t});var n=t,r=n.path,o=void 0===r?"/":r,a=n.exact,i=void 0!==a&&a,s=n.strict,c=void 0!==s&&s,u=n.sensitive,p=void 0!==u&&u,d=l(o,{end:i,strict:c,sensitive:p}),f=d.re,h=d.keys,m=f.exec(e);if(!m)return null;var b=m[0],g=m.slice(1),v=e===b;return i&&!v?null:{path:o,url:"/"===o&&""===b?"/":b,isExact:v,params:h.reduce(function(e,t,n){return e[t.name]=g[n],e},{})}};t.a=s},function(e,t,n){"use strict";var r=n(10),o=n.n(r),a=function(){var e=null,t=function(t){return o()(null==e,"A history supports only one prompt at a time"),e=t,function(){e===t&&(e=null)}},n=function(t,n,r,a){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,a):(o()(!1,"A history needs a getUserConfirmation function in order to use a prompt message"),a(!0)):a(!1!==i)}else a(!0)},r=[];return{setPrompt:t,confirmTransitionTo:n,appendListener:function(e){var t=!0,n=function(){t&&e.apply(void 0,arguments)};return r.push(n),function(){t=!1,r=r.filter(function(e){return e!==n})}},notifyListeners:function(){for(var e=arguments.length,t=Array(e),n=0;n0?r:n)(e)}},function(e,t,n){var r=n(91)("keys"),o=n(62);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(31),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(88);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(319),a=r(o),i=n(330),l=r(i),s="function"==typeof l.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default&&e!==l.default.prototype?"symbol":typeof e};t.default="function"==typeof l.default&&"symbol"===s(a.default)?function(e){return void 0===e?"undefined":s(e)}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default&&e!==l.default.prototype?"symbol":void 0===e?"undefined":s(e)}},function(e,t){e.exports=!0},function(e,t,n){var r=n(39),o=n(323),a=n(92),i=n(90)("IE_PROTO"),l=function(){},s=function(){var e,t=n(145)("iframe"),r=a.length;for(t.style.display="none",n(324).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("
+