Stock and cryptocurrency trading simulator
NOTE: To be used on mobile and tablet only, we have not yet added support for desktop
TraderU is a progressive web app (PWA) made to simulate stock and cryptocurrency trading. It utilizes several publicly available APIs to do so, most notably AlphaVantage. It's a full stack application designed using a mobile-first approach, deployed with an AWS Pipeline (no longer in service unfortunately)
- Usage
- Getting started
- Built with
- Contributing
- Meta
- Known issues / bugs
- Feature roadmap
- Acknowledgements
The above gif demonstrates our basic app flow. For more screenshots and other documentation, navigate to the /docs directory from the root of this repo.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
If you don't have Nodejs and npm installed, install them from here.. You'll also want the Vue CLI tool, which you can install after you install Node like this:
npm i -g @vue/cli
Clone this repository to your local machine and then create a .env following the .env.example file
In the root directory:
npm i
npm run lerna-install
npm run build
npm run start
npm run dev
npm run test
npm run jsdoc
NOTE: Our client side JSDoc comments are almost not existent, but our server should generate semi-decent ones. Browse to /docs/jsdoc/server/ and open up index.html in your browser to see the outputted documentation
There are more commands than is necessary to list here, refer to package.json files to view them.
- Vue - Front-end framework, used the full suite (Vuex, Vue-Router, Vuetify etc.)
- D3.js - JS Data Visualization framework - our graphs and charts and gauges are built with this
- Lerna - How we're able to run many subdirectory commands with a single root command
- TypeScript - Javascript superset to add type checking (Strict mode only used in server)
- axios - Promise-based HTTP client
- Sass - CSS pre-compiler to make styling way easier
- JSON Web Tokens - For industry standard authentication
- Nodejs - Javascript runtime
- Express - Framework used for API in Node
- PostgreSQL - Open source object-relational database
- Postman Team - For testing and debugging out routes
- Jest - Testing library we used for unit and integration tests
- Cypress - End-to-end testing framework we had time to add a few E2E tests with
- AWS - Used to deploy our app. The flow works like this: Reach a milestone stable version of development -> merge to master -> Github Hook triggers AWS CodeBuild -> CodeBuild runs install, build, and test stages (see buildspec.yml - Lerna made this very easy) -> If successful, CodeDeploy sends zipped output files to an AWS S3 bucket -> Contents is served with an AWS EC2 instance via AWS Elastic Beanstalk
- Fork it (https://github.com/bryce-mcmath/traderu/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) or issue branch (git checkout -b issue/brokenThing
) - Commit your changes (
git commit -m 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new PR
NOTE: We have a preferred commit message template in docs/NOTES.md if you'd like to use that as well. For tiny changes, don't worry about it
Jon Langlois - jlangy - [email protected]
Wilson Wong – wilwong89 – [email protected]
Bryce McMath – bryce-mcmath – [email protected]
- Bugs? What bugs?
To add an issue, start a new one here.
- After demo day we'll get back to work on it. Well after the day after demo day. We need to catch up on sleep the day after.
- General robustness, more consistent patterns and clean up
- Use GZip with requests that recieve text-based JSON payload
- Market close and open
- Order duration algorithm, enable option
- Limit orders, and associated algorithm, enable option
- Portfolio settings toggles are permanently changed on save
- Limit on number of accounts per user
- Push notifications
- An simple algorithm to generate trade suggestions, so we have something to notify users of
- Desktop design
- Set E2E tests to run and exit without developer input
- More data, more and better data visualizations
In no particular order other than the first one is first
If you'd like to add a feature yourself, please see the Contributing guidelines.
For making powerful services inexpensive for students:
- AlphaVantage
- ElephantSQL
- AWS
For being Vue gurus:
- Gary Jipp
- LinusBorg on the Vue forums