An application where users can simulate trading stocks with a starting balance of fake money.

Overview

Eighth Wonder Finance

Table of Contents

Overview

Description

An application where users can simulate trading stocks with a starting balance of fake money. Users can research companies to find out more information as well as the current share price, review their holdings, and buy/sell shares of stock. Users can change settings, such as dark mode, and reset their hypothetical balance to the starting amount.

App Evaluation

  • Category: Finance / Gaming
  • Mobile: This app will be developed primarily for mobile devices. Future consideration may be given to a desktop version.
  • Story: Stock trading game where users can simulate trading stocks with a starting balance of fake money. Users can research stock prices, see the current balance of their holdings, and view their user profile.
  • Market: Any individual interested in stock trading could download this app and play the game.
  • Habit: The app could be used as often as the user wants depending on their appetite for trading stocks and checking in on their balance (i.e. gains and losses).
  • Scope: Our first objective is to allow users to research stock prices using the ticker symbol for a publicly traded company. This could evolve into a stock trading game with users competing in seasonal tournaments for prizes, similar to fantasy football apps. Large potential for use with brokerage accounts, electronic trading platforms, or social media platforms.

Product Spec

1. User Stories

User Stories

  • User can see current price of stocks as well as a logo of the company
  • User can research stock information by ticker symbol or company name
  • User can purchase shares of stock using a hypothetical balance of cash
  • User can sell shares of stock, and balance will reflect realized gains and losses
  • User can view the current balance of their portfolio

Quality of Life Stories

  • Ability to search for stock information using auto-complete based on ticker symbol or company name
  • User can toggle light and dark mode

2. Screen Archetypes

  • Login Screen
    • User must log in to use the application
    • User can sign up for an account
  • Home Screen
    • User can view the current balance of their portfolio
    • User can select a stock to segue to the trade view
  • Search Screen
    • User can research stock information by ticker symbol or company name
    • User can add an investment to their watchlist
    • User can select a stock to get more information
    • User can click the Trade button to segue to the trade view
  • Explore Screen
    • User can explore a list of companies, either from their watchlist, or from a list based on different metrics
    • User can toggle different metrics such as biggest daily gainers or losers, and see stocks for that metric
    • User can select a company to view more information as well as purchase/sell shares
  • Trade View
    • User can see a logo of the company, the current price of the stock, and the number of shares they own
    • User can buy/sell shares of stock and view their balance
  • User Profile/Settings Screen
    • User can reset the game
    • User can toggle dark mode
    • User can logout

3. Navigation

Tab Navigation (Tab to Screen)

  • Home tab
  • Search tab
  • Explore tab
  • Profile/Settings tab

Flow Navigation (Screen to Screen)

  • Login -> Home
  • Home -> User can see their holdings and current balances
  • Search -> User can search for and segue to the Trade view to buy or sell shares of a stock
  • Explore - > User can view stock information for several companies and select one to segue to the Trade view
  • Profile - > User can log-out, toggle dark mode, or reset the game

Video Walkthrough

Here's a walkthrough of implemented user stories:

8thWonder3

8thWonder4

Eighth Wonder

Eighth Wonder

Wireframes (Figma)

Digital Wireframes & Mockups

Interactive Prototype

ezgif com-gif-maker

Schema

Models

User

Property Type Description
objectId String unique id for the User (default field)
username String username
password String password
balance Number balance of cash in users account
holdings Array of StockSnapshots stocks currently held by user
trades Array of Trades array of trades made by user
profileImage File image that user uploads

StockSnapshot

Property Type Description
objectId String unique id for the StockSnapshot (default field)
user Pointer to User user that holds this stock
symbol String stock symbol
price Number stock price at time of creation
quantity Number stock quantity held by user
createdAt DateTime time StockSnapshot was created (default field)

Trade

Property Type Description
objectId String unique id for the Trade (default field)
user Pointer to User user that made the trade
stock Pointer to StockSnapshot stock snapshot
tradeType String Buy or Sell
quantity Number Number of stocks bought or sold
sellPrice Number Price of the stock when sold
createdAt DateTime time Trade was created (default field)

Networking

  • Home View
    • (Read/GET) Query all StockSnapshots where user is currentUser
      let query = PFQuery(className:"StockSnapshot")
      query.whereKey("user", equalTo: currentUser)
      query.order(byDescending: "symbol")
      query.findObjectsInBackground { (stocks: [PFObject]?, error: Error?) in
         if let error = error { 
            print(error.localizedDescription)
         } else if let stocks = stocks {
            print("Successfully retrieved \(stocks.count) stock snapshots for \(currentUser).")
         // TODO: Calculate each symbols stock quantity and total cost to purchase
         }
      }
    • (Read/GET) Query API for each symbol's current price and calculate users current value held
  • Sell View
    • (Create/POST) Create a trade (or trades) of stock snapshots
    • (Read/GET) Get stock logo from API
    • (Update/PUT) Update StockSnapshot quantities
    • (Update/PUT) Remove from User.holdings is StockSnapshot.quantity is zero
  • Buy View
    • (Create/POST) Create a StockSnapshot
    • (Read/GET) Get stock logo from API
    • (Create/POST) Create a Trade
    • (Update/PUT) Add StockSnapshot and Trade to user
  • Research View
    • (Read/GET) Top stocks from API
    • (Read/GET) Get logos for top stocks in API
    • (Read/GET) Stock searched for in API (to see if it exists)
  • Research Detail View
    • (Read/GET) Stock information from API
  • Profile View
    • (Read/GET) Query user information
      let query = PFQuery(className:"User")
      query.whereKey("objectId", equalTo: currentUser)
      query.includeKeys(["trades", "trades.stock"])
      query.order(byDescending: "createdAt")
      query.findObjectsInBackground { (stocks: [PFObject]?, error: Error?) in
         if let error = error { 
            print(error.localizedDescription)
         } else if let trades = trades {
            print("Successfully retrieved \(trades.count) stock snapshots for \(currentUser).")
         // TODO: Display trades made by user
         }
      }
IEX Cloud API
  • Base URL - https://cloud.iexapis.com/stable

    HTTP Verb Endpoint Description Credits
    GET /stock/{symbol}/quote current price, name and stock info 1
    GET /stock/{symbol}/company company description paragraph and info 10
    GET /stock/market/list/{list-type} list of 10 quotes based on list-type (mostactive, gainers, losers) ~10
    GET /stock/{symbol}/logo logo for symbol 1
You might also like...
MediaType is a library that can be used to create Media Types in a type-safe manner.

This is a general purpose Swift library for a concept of typed treatment for Media Types. We use this library on clients and servers to speak the same dialect and to enjoy all the comfort strong types provide over raw strings.

The simplest way to display the librarie's licences used in your application.
The simplest way to display the librarie's licences used in your application.

Features • Usage • Translation • Customisation • Installation • License Display a screen with all licences used in your application can be painful to

A macOS application displaying the thermal, voltage and current sensor values.
A macOS application displaying the thermal, voltage and current sensor values.

Sensors About A macOS application displaying the thermal, voltage and current sensor values. License Project is released under the terms of the MIT Li

iOS application for CA Tech Challenge ONLINE ACE created by @KS1019 and @techiro

インターン後改善したところ RepositoryのMock化を行って、ViewModelのテストを可能にした RepositoryやViewModelをコンストラクタインジェクションを使ってDI Repository自体のテストを実装できるように、URLSessionのAdapterを定義してスケジ

Ecolande - Application realisé pendant l'Apple foundation Program.

Ecolande Application realisé pendant l'Apple foundation Program. Ecoland est l'application qui a été réalisé pendant l'Apple Foundation Program. Nous

A visual developer tool for inspecting your iOS application data structures.
A visual developer tool for inspecting your iOS application data structures.

Tree Dump Debugger A visual developer tool for inspecting your iOS application data structures. Features Inspect any data structure with only one line

Profiler Application using Sentiment Analysis

Profiler Application using Sentiment Analysis Abstract We send many posts and pictures over the time on our social channels such as Facebook, Instagra

An application focused on managing men's haircuts. It has never been so easy to keep the cut on time
An application focused on managing men's haircuts. It has never been so easy to keep the cut on time

An application focused on managing men's haircuts. It has never been so easy to keep the cut on time

Visualize your dividend growth. DivRise tracks dividend prices of your stocks, gives you in-depth information about dividend paying stocks like the next dividend date and allows you to log your monthly dividend income.
Visualize your dividend growth. DivRise tracks dividend prices of your stocks, gives you in-depth information about dividend paying stocks like the next dividend date and allows you to log your monthly dividend income.

DivRise DivRise is an iOS app written in Pure SwiftUI that tracks dividend prices of your stocks, gives you in-depth information about dividend paying

Stocks-App - App that allows the user to track stocks of their choice
Stocks-App - App that allows the user to track stocks of their choice

Stocks-App App that allows the user to track stocks of their choice (Coming soon

Tip-Calculation- - A program for calculate the tip. You can easily calculate it and you can split money easily
Tip-Calculation- - A program for calculate the tip. You can easily calculate it and you can split money easily

Tip-Calculation- It is a program for calculate the tip. You can easily calculate

This iOS App calculates the weight and balance for a P-3 Orion aircraft.

This iOS App calculates the weight and balance for CBP P-3 Orion aircraft.

iOS client for the TradeOgre.com crypto-to-crypto trading platform

TradeOgre iOS Overview TradeOgre iOS is an iOS client for the TrageOgre.com website and crypto-exchange platform. I was looking for their iOS client,

This is a Swift port of Ruby's Faker library that generates fake data.
This is a Swift port of Ruby's Faker library that generates fake data.

This is a Swift port of Ruby's Faker library that generates fake data. Are you still bothered with meaningless randomly character strings? Just relax

Stub your network requests easily! Test your apps with fake network data and custom response time, response code and headers!
Stub your network requests easily! Test your apps with fake network data and custom response time, response code and headers!

OHHTTPStubs OHHTTPStubs is a library designed to stub your network requests very easily. It can help you: test your apps with fake network data (stubb

Fake iPhone real devices location using this small app

Project Title iPhone IP Spoofer for Real Devices. Description IP, or internet protocol, is a string of numbers that identifies your iPhone, iPad, or w

Smart Wallet - iOS application for managing money
Smart Wallet - iOS application for managing money

This is an iOS application for managing money written in Swift language. Different reports are presented in the application to help the user managing the money and keeping track of it easily.

A framework that provides CurtainController. CurtainController is a container view controller that implements a content-curtain interface. You can find a similar implementation in applications like Apple Maps, Find My, Stocks, etc. Someone calls it A little app which shows different ways to simulate NSPanel using NSWindow
A little app which shows different ways to simulate NSPanel using NSWindow

FunWithPanels A little app which shows different ways to simulate NSPanel using NSWindow, for better or worse. Settings FunWithPanels uses a combinati

Owner
Josh Harris
Josh Harris
Pavel Surový 0 Jan 1, 2022
A utility that reminds your iPhone app's users to review the app written in pure Swift.

SwiftRater SwiftRater is a class that you can drop into any iPhone app that will help remind your users to review your app on the App Store/in your ap

Takeshi Fujiki 289 Dec 12, 2022
Alert popup to notify your users if they use an unsupported iOS version

UnsupportedOSVersionAlert This source code alerts your users if they use your app with an unsupported version of iOS (e.g. iOS 10.0 beta). The alert l

Josef Moser 8 Mar 11, 2019
A framework to provide logic designed to prompt users at the ideal moment for a review of your app/software

ReviewKit ReviewKit is a Swift package/framework that provides logic designed to prompt users at the ideal moment for a review of your app. At a basic

Simon Mitchell 25 Jun 7, 2022
It is a simple maths quiz app that will help users to test their math skills.

MathQuiz It is a simple maths quiz app that will help users to test their math skills. It has the following screens 1.Welcome screen with start button

null 0 Dec 27, 2021
Ethereum Wallet Toolkit for iOS - You can implement an Ethereum wallet without a server and blockchain knowledge.

Introduction EtherWalletKit is an Ethereum Wallet Toolkit for iOS. I hope cryptocurrency and decentralized token economy become more widely adapted. H

Sung Woo Chang 136 Dec 25, 2022
Headline News Widget for Pock.You can display the articles fetched by rss.

Headline News Widget for Pock This is a headline news widget plugin for Pock You can display the articles fetched by rss. Demo In the demo video, the

null 11 Aug 30, 2022
A simple macOS utility that can be used to control the behaviour of Bose QC35 Headphones straight from the menu bar.

bose-macos-utility A simple macOS utility that can be used to control the behaviour of Bose QC35 Headphones straight from the menu bar. Why Have you e

Łukasz Zalewski 11 Aug 26, 2022
Weather and forecasts for humans. Information you can act on.

Tropos Weather and forecasts for humans. Information you can act on. Most weather apps throw a lot of information at you but that doesn't answer the q

thoughtbot, inc. 1.5k Dec 28, 2022
A NEWS app which can be used to read,share and bookmark articles of various categories

Scoop A NEWS App for iOS 14 built using Swift which allow the users to read,bookmark and share news articles. Built using MVC architecture Requirement

Sai Balaji 3 Oct 12, 2022