diff --git a/.vscode/settings.json b/.vscode/settings.json index ab6824b..16d1bfb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,4 @@ { "editor.fontFamily": "SFMono Nerd Font, Menlo, Monaco, 'Courier New', monospace", - "python.pythonPath": "/usr/bin/python" + "python.pythonPath": "/Users/chris/miniconda3/bin/python" } \ No newline at end of file diff --git a/client/routes.jsx b/client/routes.jsx index 96bc8f1..5d3b8a8 100644 --- a/client/routes.jsx +++ b/client/routes.jsx @@ -11,6 +11,7 @@ import { Dashboard } from '../imports/ui/Dashboard'; import { Logout } from '../imports/ui/Logout'; import { Error } from '../imports/ui/Error'; import { UEFANavbar } from '../imports/ui/Navbar'; +import { Graph } from '../imports/ui/Graph'; const browserHistory = createBrowserHistory({ forceRefresh: true }); @@ -23,6 +24,8 @@ const UntrackedRoutes = () => ( + + diff --git a/data_service/index.py b/data_service/index.py index 0882563..d9aa931 100644 --- a/data_service/index.py +++ b/data_service/index.py @@ -25,21 +25,18 @@ def request_stock(input): else: return 'error: must provide stock ticker' - # if 'start' in input: - # start = input['start'] - # else: - # start = None + if 'start' in input: + start = input['start'] + else: + start = None - # if 'end' in input: - # end = input['end'] - # else: - # end = None + if 'end' in input: + end = input['end'] + else: + end = None - return quandl.get("EOD/" + stock).to_json() + return quandl.get(["EOD/" + stock, "Close"], start_date="2017-12-26", end_date="2017-12-28").to_json() ''', start_date=start, end_date=end''' -# def parse_date(date): -# return {'year': int(str(date)[:4]), 'month': int(str(date)[5:7]), 'day': int(str(date)[8:10])} - if __name__ == "__main__": app.run(debug=False, port=5000) \ No newline at end of file diff --git a/imports/ui/Course.jsx b/imports/ui/Course.jsx new file mode 100644 index 0000000..9cd43e0 --- /dev/null +++ b/imports/ui/Course.jsx @@ -0,0 +1,7 @@ +import React, { useState } from 'react'; + +export const Course = () => { + return ( +
THIS IS A COOOL COURSE
+ ); +} diff --git a/imports/ui/Graph.jsx b/imports/ui/Graph.jsx new file mode 100644 index 0000000..99043a2 --- /dev/null +++ b/imports/ui/Graph.jsx @@ -0,0 +1,21 @@ +import { Meteor } from 'meteor/meteor'; +import React, { useState } from 'react'; +import { Button } from 'react-bootstrap'; + + +export const Graph = (props) => { + const [tickers, setTickers] = useState([]); + + const addTicker = ticker => { + console.log("Adding " + ticker) + setTickers([...tickers, ticker]) + } + + return ( +
+ +
+ ); +} diff --git a/imports/ui/LoginPage.jsx b/imports/ui/LoginPage.jsx index f0aa44a..ef1e669 100644 --- a/imports/ui/LoginPage.jsx +++ b/imports/ui/LoginPage.jsx @@ -17,7 +17,8 @@ export const LoginPage = (props) => { else props.history.push("/dashboard"); }); } - // if (redirect) return + + if (redirect) return return ( diff --git a/imports/ui/Navbar.jsx b/imports/ui/Navbar.jsx index 140d092..f59a647 100644 --- a/imports/ui/Navbar.jsx +++ b/imports/ui/Navbar.jsx @@ -16,7 +16,10 @@ export const UEFANavbar = () => { ) : ( - + )} diff --git a/imports/ui/WelcomePage.jsx b/imports/ui/WelcomePage.jsx index eab976b..d3a6245 100644 --- a/imports/ui/WelcomePage.jsx +++ b/imports/ui/WelcomePage.jsx @@ -1,13 +1,32 @@ import React, { useState } from 'react'; -import { Container, Jumbotron } from 'react-bootstrap'; +import { Container, Jumbotron, Row, Col } from 'react-bootstrap'; + +const reasons = [ + ["Literacy", "Get an educational foundation in finance, investing, and understanding how to make your money work for you."], + ["Stability", "Create financial stability so in times of economic downturn you have a backup plan."], + ["Retirement", "Ensure you are targeting to retire with enough money to last you for the rest of your life."], + ["Wealth", "Grow your wealth to give you more options to do what you want with your life."] +] export const WelcomePage = () => { return ( - + + + +

Welcome to merx.

+

We make financial education accessible for everyone.

+
+
-

Welcome to merx.

-

We make financial education accessible for everyone.

+ + {reasons.map(([title, desc]) => ( + +

{title}

+

{desc}

+ + ))} +
-
+ ); } diff --git a/package-lock.json b/package-lock.json index 8fd59fe..11b1008 100644 --- a/package-lock.json +++ b/package-lock.json @@ -570,6 +570,84 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concurrently": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", + "requires": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "confusing-browser-globals": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", @@ -634,6 +712,11 @@ "assert-plus": "^1.0.0" } }, + "date-fns": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -1531,8 +1614,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.1", @@ -1811,6 +1893,11 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3513,6 +3600,14 @@ "glob": "^7.1.3" } }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -3633,6 +3728,11 @@ "amdefine": ">=0.0.4" } }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -3922,6 +4022,11 @@ "punycode": "^2.1.1" } }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -3955,6 +4060,11 @@ } } }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", diff --git a/package.json b/package.json index 2447bc6..aca94ec 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "ufea", "private": true, "scripts": { - "start": "meteor run", + "start": "concurrently \"meteor run\" \"source ufea/bin/activate && python data_service/index.py\"", "test": "meteor test --once --driver-package meteortesting:mocha", "test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha", "visualize": "meteor --production --extra-packages bundle-visualizer" @@ -12,6 +12,7 @@ "bcrypt": "^5.0.0", "bootstrap": "^4.5.2", "bulma": "^0.9.0", + "concurrently": "^5.3.0", "history": "^5.0.0", "meteor-node-stubs": "^1.0.1", "node-sass": "^4.14.1",