Mini Seedrs is now easy to use !

🐝 if you still prefer the hard way read our API docs at mini-seedrs
flying saucer

Introduction

Overview

You no longer need to be a techy in order to invest in the businesses you believe in.

React Mini Seedrs provides a user friendly interface to conveniently interact with our APIs from your laptop, smartphone or tablet. Browse through all our investment opportunities, pick your favorite and invest. It's that easy!

Make sure to read the installation guide below to get started, and keep reading if you want to learn more about what's under the hood.

Thank you for being awesome.

Contents


Get started

Prerequisites

Before you start, open your terminal and make sure you have nodeJS installed on your machine:

$ node -v
v14.15.4

We will also be using Jest as our test runner so check you have it:

$ jest -v
26.6.3

The Mini Seedrs user interface is built to communicate with our APIs, which for now are only available if you install our back-end app locally. So make sure you have either docker-mini-seedrs or plain mini-seedrs repository cloned and their prerequisites installed.

Install and Run

First cd to your cloned Mini Seedrs back-end app and launch the server.

Then open another terminal window to clone this repo and cd into the directory:

git clone https://github.com/filippomassarelli/react-mini-seedrs.git
cd react-mini-seedrs

You should see the following folder structure:

react-mini-seedrs
β”œβ”€β”€ README.md
β”œβ”€β”€ package.json
β”œβ”€β”€ .gitignore
β”œβ”€β”€ public
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ index.html
β”‚   └── MiniSeedrs-Homepage.png
└── src
    β”œβ”€β”€ index.js
    β”œβ”€β”€ App.jsx
    β”œβ”€β”€ App.test.js
    β”œβ”€β”€ axios.js
    β”œβ”€β”€ requests.js
    β”œβ”€β”€ tabsText.js.jsx
    β”œβ”€β”€ setupTests.js
    β”œβ”€β”€ components
    β”‚   β”œβ”€β”€ banner
    β”‚   β”‚   β”œβ”€β”€ Banner.test.js
    β”‚   β”‚   └── Banner.jsx
    β”‚   β”œβ”€β”€ card
    β”‚   β”‚   β”œβ”€β”€ Card.test.js
    β”‚   β”‚   └── Card.jsx
    β”‚   β”œβ”€β”€ currency
    β”‚   β”‚   β”œβ”€β”€ CurrencySelector.test.js
    β”‚   β”‚   └── CurrencySelector.jsx
    β”‚   β”œβ”€β”€ form
    β”‚   β”‚   β”œβ”€β”€ form.test.js
    β”‚   β”‚   └── form.jsx
    β”‚   β”œβ”€β”€ header
    β”‚   β”‚   β”œβ”€β”€ header.test.js
    β”‚   β”‚   └── header.jsx
    β”‚   β”œβ”€β”€ progress
    β”‚   β”‚   β”œβ”€β”€ CircularProgress.test.js
    β”‚   β”‚   β”œβ”€β”€ CircularProgress.jsx
    β”‚   β”‚   β”œβ”€β”€ LinearProgress.test.js
    β”‚   β”‚   └── LinearProgress.jsx
    β”‚   β”œβ”€β”€ row
    β”‚   β”‚   β”œβ”€β”€ row.test.js
    β”‚   β”‚   └── row.jsx
    β”‚   β”œβ”€β”€ search
    β”‚   β”‚   β”œβ”€β”€ search.test.js
    β”‚   β”‚   └── search.jsx
    β”‚   β”œβ”€β”€ socials
    β”‚   β”‚   β”œβ”€β”€ Socials.test.js
    β”‚   β”‚   └── Socials.jsx
    β”‚   └── tab
    β”‚       β”œβ”€β”€ Tab.test.js
    β”‚       └── Tab.jsx
    └── poages
        β”œβ”€β”€ CampaignsPage.jsx
        β”œβ”€β”€ InvestPage.jsx
        └── Tab.jsxNotFoundPage.jsx

Now install the project dependencies using node package manager:

npm install

Check that the package-lock.json file and the node_modules folder has been added to the projects's root directory.

Finally, run the start script with:

npm run start

If it doesn't do so automatically, open a browser tab and navigate to http://localhost:3001 to view the app.

And that's it, you are running Mini Seedrs in development mode πŸš€

Test

All our React Components have an accompanying suite of basic tests to minimise regression.

Run the test script in the terminal:

npm test

You should expect 12 test suites comprising of a total of 36 tests to pass:

Test Suites: 12 passed, 12 total
Tests:       36 passed, 36 total
Snapshots:   0 total
Time:        22.84 s
Ran all test suites.

Jest will keep on running in the interactive watch mode, type q if you want to quit.

Testing is awesome, however this project only scratches the surface of react component testing, especially for our stateful components.

If you are a test wizard and feel like contributing you are very welcome Sir πŸ§™


Built with

Tools and libraries

The Mini Seedrs user interface has been bootstrapped with the help of the Create React App toolchain and the Material-UI library.

Technologies

The major technologies are:

  • React JS
  • React Router
  • React Hooks
  • Advanced Material-UI Hook APIs

Features

Features of this UI include:

  • Darkmode
  • Responsive design
  • Search functionality in the navbar
  • Random campaign recommendation in the banner
  • Filtered rows navigation inspired by NetflixΒ©
  • User friendly dialog box with investment functionality
  • Informative snackbar alerts for invalid investments or searches
  • Successful investment confirmation with social sharing

Project planning

From Product

With the Product Manager's hat on, we've started with some high-level user stories to help guide our development.

Here are the major ones, from broad to specific:

πŸ“‡

As an investor on Seedrs I want to be able to view all currently live campaigns in a single view so that i can find the ones I want to invest in.

πŸ“‡

As an investor on seedrs I want to be able to sort and filter all the currently live campaigns so that I can find the ones most relevant to my investment criteria.

πŸ“‡

As a returning investor on seedrs I want to be able to search for a specific campaign so I can find a deal I know already.

πŸ“‡

As an investor on seedrs I want to be able to share my investments on social media so that I can let my network know I am an active investor.

πŸ“‡

As an investor on seedrs I want to be able to be able to see more campaigns after a successful investment so that I can continue investing.

From Design

Switching to our Designer's hat, we've complemented the user stories with accompanying wireframes to further enlighten our path:


wireframe: Campaigns Page


wireframe: Investment Page


wireframe: Investment Form


wireframe: Investment Success


Future work

Future work may include:

  • converting our components to Typescript
  • moving our styles from material UI styles to Styled components
  • refactoring the folder structure with the atomic design approach
  • centralizing state management with Redux
  • writing more robust tests for our stateful components
  • reducing API calls with caching
  • implementing OAuth protocol for user authentication
  • exploring server side rendering with Next.js

Contributing

Want to contribute? Great!

Just follow these steps:

  • Fork the repo
  • Create a new branch (git checkout -b improve-feature)
  • Make your changes
  • Commit with a descriptive message (git commit -m 'description')
  • Push to the branch (git push origin improve-feature)
  • Create a Pull Request

πŸ‘† Back to the top

License MIT Β© Filippo Massarelli