Skip to content

vanthonglee/weather-app

Repository files navigation

Weather Dashboard

Github Action Pipeline Status

ts react redux redux-saga mui storybook jest cypress license


Table of Content

About

nab-weather

Features

  1. React.js Using Create-React-App
  2. Typescript for type safety
  3. Core libraries
  4. Test libraries
  5. Other tools/libraries
  6. Opinionated folder structure
  7. Internationalization for react app using React-i18next
  8. Material UI Dark Mode support

Project Structure

./src
├── App.tsx # Application entrypoint
├── assets # assets folder contains all the static files (images, fonts, etc).
├── components # shared components
├── config # global configuration, env variables etc.
│   ├── Env.ts
│   └── i18n
├── features
│   ├── feature # 'feature'
│   │   ├── api # API folder contains http service calls
│   │   ├── assets # 'feature' assets folder
│   │   ├── components # 'feature' components
│   │   ├── hooks # 'feature' hooks
│   │   ├── index.ts # entry point for 'feature' public API
│   │   ├── store # 'feature' state stores contains slices, sagas, etc.
│   │   └── types # 'feature' typescript types
│   └── another_feature # 'another_feature'
├── hooks # shared hooks
├── libs # libraries imported or exported that can be used in different projects
│   ├── core
│   └── ui
├── pages  # contains all application pages
├── routes # routes configuration
├── store # root store and store settings
└── test/ # contains test utilities and Mock Service Worker setup
    └── msw

How To Run This Project

  1. Fork/clone this repo to your local machine

  2. Use yarn to install dependencies

    yarn install

  3. Start the development server

    yarn start

Design Patterns

My project try to follow these design patterns:

  1. Flux

  2. Container-View Pattern

  3. Atomic design

  4. Normalizing Data Structure for handling large amounts of data

Todos In Future

  • Improve Test Coverage > 80%
  • Apply Security Best Practices
  • Benchmark Web Performance and Improve Performance
  • Improve CI/CD pipelines