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 (
+
+ addTicker("AAPL")}>
+ Add ticker
+
+
+ );
+}
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 = () => {
) : (
Log In
- Get Started
+ Get Started
)}
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",