Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/wzalazar/reddit

Demo Reddit
https://github.com/wzalazar/reddit

reddit reddit-client

Last synced: 11 days ago
JSON representation

Demo Reddit

Awesome Lists containing this project

README

        



Reddit Demo


Github Actions CI
Codecov Status

semantic-release

## Guide

- [Bootstrapping](#bootstrapping)
- [Requirements](#requirements)
- [How to Run](#how-to-run)
- [Scripts](#scripts)
- [Tacking Tasks](#tracking-tasks)
- [Decision Making](#decision-making)
- [Demo](https://demo-reddit.netlify.app/)

#### Bootstrapping

This project was bootstrapped with [Create React App, Custom Template](https://github.com/wzalazar/cra-template-super-redux-typescript), using the [Redux](https://redux.js.org/) and [Redux Toolkit](https://redux-toolkit.js.org/) template.

#### Requirements

This project is using [nvm](https://github.com/nvm-sh/nvm). If you use nvm just to execute `nvm use` for installing the rights NodeJS and NPM version.
If you are not a user of nvm, you will be able to check the file [.nvmrc](https://github.com/wzalazar/demo-reddit/blob/master/.nvmrc)

#### How to run

```bash
$ git clone [email protected]:wzalazar/demo-reddit.git
$ cd ./demo-reddit
$ yarn
$ yarn start
```

### Scripts

| script | description |
|-------------------|---------------------------------------------------------|
| start | Runs the app in the development mode. |
| build | Builds the app for production. |
| test | Launches the test runner in the interactive watch mode. |
| lint | Lint the project. |
| semantic-release | Generate semantic release, only for CI |
| codecov | Push de coverage to codecov, only for CI |

### Tracking Tasks

I created a Project board for tracking my tasks.

https://github.com/wzalazar/demo-reddit/projects/1

## Decision Making

- **Typescript:**
I choose typescript due that is a better way to create javascript applications. Is javascript with steroids.

- **Redux:**
I choose redux due to is the "king" of the state management. Single path of truth.

- **Styled Components:**
I choose styles-components because I think is the better way for creating isolated components.

- **React Testing Library:**
I choose testing-library because this brings an effective way of creating an integration test, and resilient tests.

- **Semantic Release:**
I choose semantic-release for adding versioning in the project.

- **Github actions:**
I choose Github Actions for adding Quality assurance in the project.

- **Github Project board:**
I choose the Github Project board due is a great tool for tracking the tasks and have historical progress.

- **Renovate:**
I choose to use the tool renovate for updating my dependencies, this update will have to pass all tests before the merge.

- **Testing:**
I choose to create more integration tests over unit tests for covering my project. With the integration test, I'm ensuring the scenarios are working fine with all components.