Skip to content

BloomTech-Labs/coder-heroes-fe

Repository files navigation

Basic SPA

For the steps on how to work with this repository please see here

CoderHeroes

You can find the deployed project at CoderHeroes.

Contributors

Chelsea Ceballos Jie Zhang Willis Li Bradly Lewis
Fernando Martinez Muhannad Bani Almarje Alejandro Vasquez Michael Guerrero
Kyle Andrews Rodgers Otieno Christine Nguyen Andrew Cummings
Joseph Brown
Nathan Cheney Modupe D Jonathan LeVitre Cheyenne Bowman
Therman Mcmillan Mark Escosura Priscila Monteiro Rose Gabriely
Waylon Turbes Kristian Fulkerson Sean Mahan Colya Foxworth
---------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------
Peter Conley Hannah Brog Uros Ivanovic Sharon Sanchez


Tech stack

MIT React react-router-dom code style: prettier Less antd redux redux-thunk Axios Okta Stripe

  • Clone the repo to install it as your own remote.
  • run: npm install to download all dependencies.
  • run: npm start to start your local development server.

When using Okta for authentication, the app will need to run locally on port 3000.

Key Features

  • Antdesign for component base
  • File scaffolding to organize pages and components
  • File scaffolding to organize styles
  • React router to handle project routing
  • Okta to handle user authentication
  • Less for global and component base styles
  • Redux for global state management

Front end deployed to heroku at coderheroes.

Back end built using:

  • Docker
  • Node.js
  • Express
  • Okta interaction

APIs

Authentication API here

For authentication we're using Okta. The Okta flow can be found here: OktaFlow.

Payment API here

We are currently working on implementing Stripe for payment processing. The documentation for Stripe can be found here: Stripe.

Misc API here

No misc API's currently being used.

Installation Instructions

  • git clone
  • npm install
  • npm start

Other Scripts

* start - starts the production server after a build is created
* test - runs tests in **tests** directory \* eject - copy the configuration files and dependencies into the project so you have full control over them

Contributing

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.

Please note we have a code of conduct. Please follow it in all your interactions with the project.

Issue/Bug Request

If you are having an issue with the existing project code, please submit a bug report under the following guidelines:

  • Check first to see if your issue has already been reported.
  • Check to see if the issue has recently been fixed by attempting to reproduce the issue using the latest master branch in the repository.
  • Create a live example of the problem.
  • Submit a detailed bug report including your environment & browser, steps to reproduce the issue, actual and expected outcomes, where you believe the issue is originating from, and any potential solutions you have considered.

Feature Requests

We would love to hear from you about new features which would improve this app and further the aims of our project. Please provide as much detail and information as possible to show us why you think your new feature should be implemented.

Pull Requests

If you have developed a patch, bug fix, or new feature that would improve this app, please submit a pull request. It is best to communicate your ideas with the developers first before investing a great deal of time into a pull request to ensure that it will mesh smoothly with the project.

Remember that this project is licensed under the MIT license, and by submitting a pull request, you agree that your work will be, too.

Pull Request Guidelines

  • Update the README.md with details of changes to the interface, including new plist variables, exposed ports, useful file locations and container parameters.
  • Ensure that your code conforms to our existing code conventions and test coverage.
  • Include the relevant issue number, if applicable.
  • You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you.

Documentation

See Backend Documentation for details on the backend of our project.

Testing your Components

  • You will be using jest along side with React Testing Library to test your application.
  • Please put all of your tests for your code in __tests__ folder.
  • You should get into the habit of ensuring that you have coverage for your code before submitting a pull-request.

Running your tests

  • When writing tests run the command:
    • cd into the root of this directory
    • npm test to run your test suite
      • if you're prompted select a to run tests in watch mode. This will re-run your test suite when you save any file in your application.
    • In your terminal you will see a test runner that looks something like this: Test screenshot
    • When you're not actively writing tests its best to close that terminal window so that you don't keep running tests when your files are saved.

Coverage

💡 Code coverage should be a good goal to have and a good starting place. But every application will be different.

  • Kent Dodds put it nicely. Strive for solid coverage as we strive to hand you over well-tested code in which we have extreme confidence.

  • To run a coverage report for your application simply run npm run coverage.

  • You should see a print out in your console that looks like this: code coverage

Login and Authentication w/ Okta.

  • The LoginContainer.js file in src/pages/Login includes a widget that is provided to us by Okta.
  • This widget is the key to user authentication and management within your application.
  • You don't have to manage ANY users because we're letting Okta do this for us :)
  • This component is heavily documented with comments but it'd be REALLY good to read through the docs here to get a good understanding of the configuration we're doing with the widget itself.
  • You'll also want to learn a bit about how to style this widget to meet your app's concerns.

Utils

  • Utils directory is for any of the business logic that your application may need to use.
  • Simple one-off helper functions that you may need can be defined in this directory.
  • Any reusable logic or handlers or config files can also be used here.
  • REMINDER do not check any sensitive information into git.