An open API service indexing awesome lists of open source software.

https://github.com/jesussantana/tradexc

Global Digital Coin Trade & Exchange
https://github.com/jesussantana/tradexc

cryptocurrency currency development express-js finance fullstack-javascript handlebars mern-stack mongodb nodejs stock-market webapp

Last synced: about 2 months ago
JSON representation

Global Digital Coin Trade & Exchange

Awesome Lists containing this project

README

          

# TradExc App

Ironhack project at end of module 2 of Barcelona Full Stack Web Development Part Time March 2020

# Developers:

- [Chus Santana](https://github.com/jesussantana/)
- [Marc De Mena](https://github.com/mdemena/)

# Link to App:

## Description

An app for improve your money gaming with a Global Digital Coin Exchange.

## Epics / User Stories

- Website

- **homepage** - As a user I want to be able to access the homepage so that I see what the app is about and login and signup
- **about** - As a user I want to be know who are rear this project and know how to contact if I have a problem
- **404** - As a user I want to see a nice 404 page when I go to a page that doesn’t exist so that I know it was my fault
- **500** - As a user I want to see a nice error page when the super team screws it up so that I know that is not my fault

- Authentication

- **signup** - As a user I want to sign up on the application so that I can trade with my money
- **login** - As a user I want to be able to log in on the application so that I can get back to my account
- **logout** - As a user I want to be able to log out from the application so that I can make sure no one will access my account

- Applicaction

- **dashboard** - As a logged user I want to trade whit global exchange markets like NASDAQ, IBEX35 or CryptoMoney
- **trade** - As a user I want trade with investments, buy or selling in the market.
- **wallet** - As a user I want to work and know all the information of my money and my investments.

- Reports

- **markets** - As a user I want to see all information in trade and cryptocurrency markets.
- **transactions** - As a user I want to see all the transaction I made.

- Utilities

- **profile** - As a user I want to see and update all information refered to me.
- **support** - As a user I want te see and crete suppor tickets.
- **log** - As a user I want to see all my activity in application.

## Backlog

List of other features outside of the MVPs scope

REAL Transactions

## ROUTES:

| Method | URL | Description |
| ------ | ----------- | -------------------------------------------------------- |
| GET | / | Renders index |
| GET | /about | Renders about |
| GET | /auth/login | Redirects to /app/ if user logged in. Renders auth/login |
| POST | /auth/login | Redirects to /app/ if user logged in. |

```
body:
- username
- password
```

| Method | URL | Description |
| ------ | ------------ | --------------------------------------------------------- |
| POST | /auth/logout | Reditect to / |
| GET | /auth/signup | Redirects to /app/ if user logged in. Renders auth/signup |
| POST | /auth/signup | Redirects to /app/ if user logged in. Redirect auth/login |

```
body:
- name
- email
- password
```

| Method | URL | Description |
| ------ | ----------- | ------------------------------------------------------------------ |
| GET | /app/ | Redirects to /auth/login/ if user not logged in. Renders dashboard |
| GET | /app/wallet | Redirects to /auth/login/ if user not logged in. Renders wallet |
| GET | /app/wallet | Redirects to /auth/login/ if user not logged in. Renders wallet |

| Method | URL | Description |
| ------ | ---------------------------------- | ------------------------------------------------------------------------- |
| GET | /app/trade | Redirects to /auth/login/ if user not logged in. Renders app/trade/index |
| GET | /app/trade/buy | Redirects to /auth/login/ if user not logged in. Renders app/trade/trade |
| GET | /app/trade/buy/:type/:symbol-:name | Redirects to /auth/login/ if user not logged in. Renders app/trade/trade |
| POST | /app/trade/buy | Redirects to /auth/login/ if user not logged in. Redirect app/trade/index |

```
body:
- symbolCode
- symbolName
- type
- units
- price
```

| Method | URL | Description |
| ------ | ------------------------------------------ | ------------------------------------------------------------------------- |
| GET | /app/trade/sell/:type/:units/:symbol-:name | Redirects to /auth/login/ if user not logged in. Renders app/trade/trade |
| POST | /app/trade/sell | Redirects to /auth/login/ if user not logged in. Redirect app/trade/index |

```
body:
- symbolCode
- symbolName
- type
- units
- price
```

| Method | URL | Description |
| ------ | --------- | ------------------------------------------------------------------------ |
| GET | /app/user | Redirects to /auth/login/ if user not logged in. Renders app/user/index |
| POST | /app/user | Redirects to /auth/login/ if user not logged in. Redirect app/user/index |

```
body:
- name
- email
- password
- imgPath
- imgName
- occupation
- adress
- city
- country
- postalCode
- about
```

| Method | URL | Description |
| ------ | ------------------- | --------------------------------------------------------------------------- |
| GET | /app/transactions | Redirects to /auth/login/ if user not logged in. Renders app/transactions |
| GET | /app/markets | Redirects to /auth/login/ if user not logged in. Renders app/markets |
| GET | /app/support | Redirects to /auth/login/ if user not logged in. Renders app/support/list |
| GET | /app/support/ticket | Redirects to /auth/login/ if user not logged in. Renders app/support/ticket |
| POST | /app/support/ticket | Redirects to /auth/login/ if user not logged in. Redirect app/support |

```
body:
- name
- email
- subject
- message
```

## Models

```
User model
{
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
passwordHash: { type: String, required: true },
imgPath: { type: String },
imgName: { type: String },
occupation: { type: String },
adress: { type: String },
city: { type: String },
country: { type: String },
postalCode: { type: String },
about: { type: String },
}
```

```
Wallet model
{
user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User', required: true },
amount: { type: Number, required: true },
movements: [
{
date: { type: Date, required: true },
type: {
type: String,
enum: ['deposit', 'widthdraw', 'buy', 'sell'],
required: true,
},
amount: { type: Number, required: true },
},
],
}
```

```
Stock model
{
user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User', required: true },
symbol: { type: String, required: true },
name: { type: String, required: true },
type: { type: String, enum: ['stock', 'crypto'], required: true },
units: { type: Number, required: true },
}
```

```
Transaction model
{
date: { type: Date, required: true },
user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User', required: true },
stock: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'Stock',
required: true,
},
type: { type: String, enum: ['buy', 'sell'], required: true },
units: { type: Number, required: true },
price: { type: Number, required: true },
}
```

```
Support model
{
user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User', required: true },
name: { type: String, required: true },
email: { type: String, required: true },
subject: { type: String },
message: { type: String },
status: { type: String, required: true },
}
```

```
Log model
{
date: { type: Date, required: true },
user: { type: mongoose.SchemaTypes.ObjectId, ref: 'User', required: true },
description: { type: String, required: true },
}
```

## Links

### GitHub Reapository

The url to your repository and to your deployed project

- [Repository Link](https://github.com/mdemena/project-tradexc)
- [Deploy Link](https://www.tradexc.net/)

### Wireframe

- [Wireframe Link](https://excalidraw.com/#json=6259784651112448,g2qMNaIjYwxs_xurY2bU1Q)

### Agile Board

- [Trello Link](https://trello.com/b/rCNCcPCD/tradexc)

### Slides

The url to your presentation slides

[Slides Link](https://docs.google.com/presentation/d/121Bs_Kb2vDh4nO5iUrQiOZEq4tYSb8JYKCiKXQcbfJI/edit?usp=sharing)