A React Native app for educational purposes https://react-native-courses.clubinfo-clermont.fr/docs/notation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Alexis Drai 1d907e7b48
🩹 💄 🛂 Fix Move Form Screen (#20)
2 years ago
.idea CRUDify Moves (Fix #6) (#11) 2 years ago
assets CRUDify Moves (Fix #6) (#11) 2 years ago
components CRUDify Moves (Fix #6) (#11) 2 years ago
docs 📝 🎨 Update Readme: add sketches and info (Fix #10, Fix #8) (#19) 2 years ago
entities CRUDify Moves (Fix #6) (#11) 2 years ago
navigation CRUDify Moves (Fix #6) (#11) 2 years ago
redux CRUDify Moves (Fix #6) (#11) 2 years ago
screens 🩹 💄 🛂 Fix Move Form Screen (#20) 2 years ago
.gitignore 🏗️ Prepare project structure (#2) 2 years ago
App.tsx CRUDify Moves (Fix #6) (#11) 2 years ago
README.md 📝 🎨 Update Readme: add sketches and info (Fix #10, Fix #8) (#19) 2 years ago
app.json 🏗️ Prepare project structure (#2) 2 years ago
babel.config.js 💄 Create Move screens (#3) 2 years ago
config.ts CRUDify Moves (Fix #6) (#11) 2 years ago
package.json CRUDify Moves (Fix #6) (#11) 2 years ago
tsconfig.json 🏗️ Prepare project structure (#2) 2 years ago
yarn.lock CRUDify Moves (Fix #6) (#11) 2 years ago

README.md

PoKeMoNg

A React Native app for educational purposes. Refer to instructions here.

About

PoKeMoNg is a React Native application developed for educational purposes. The application is designed to showcase a "master/detail" view of Moves, with basic CRUD features. The application is linked to a backend API that provides the data for the Moves.

Notation checklist

  • Documentation (6 pts)
    • Application sketches (4 pts)
    • A Readme describing your project/application. (2 pts)
  • Basics (20 pts)
    • Navigation (3 pts)
      • Tab bottom navigation (2 pts) AND at least one button (1 pts)
    • Redux Store (10 pts)
      • Read data from redux store (2 pts)
      • Update data to redux store with actions and reducers (slice = 0) (4 pts)
      • Update data to redux store using redux-thunk (API AND|OR AsyncStorage) (4 pts)
    • Display list of items (2 pts)
      • FlatList, VirtualizedList or SectionList
    • Display dynamic image (2 pts)
    • Binding child component props (1 pts)
    • Handle a TextInput correctly (2 pts)
      • Beware of keyboard management
  • Application features (14 pts)
    • Retrieve data using the Web API (6 pts)
      • Handle fetch success callback (3 pts)
      • Handle fetch error callback (3 pts)
    • Store favorite data into phone storage (2 pts)
    • Write Tests (6 pts)
      • all actions payload (1 pts)
      • all reducers case (2 pts)
      • one UI Component (3 pts)

Sketches

This app will contain a home page, and a "master/detail" tab for Moves with basic CRUD features.

Home

The home screen provides a logo, and tab navigation options to other parts of the application.

Collection

The collection screen displays a list of Moves fetched from the API.

Detail

The detail screen displays detailed information about a selected Move.

Creating

The creating screen provides a form for creating a new Move.

Updating

The updating screen provides a form for updating an existing Move.

Using the app

Running the backend

In order to use this app, you will need to run the dedicated backend. A README with instructions is provided for that purpose.

Running this app

With the Expo CLI installed, at the root of the project, simply run

npx expo start

or

yarn start

The app should launch successfully, and instructions should be provided in terminal to open it on a number of devices.

Known limitations

Beside whatever items may not have been checked off the notation checklist, there are also a number of known limitations and issues with this app.

Sparse

See #4, #5, #9

Even though the API provides a variety of entities with fun business logic, this app only implemented a "master/detail" and the basic CRUD features on one entity: Move.

In short, for lack of time, this app doesn't quite manage to do anything beyond the basic requirements. It doesn't use the API to its full potential, and the API doesn't really get a legitimate reason to provide even more interesting routes (for instance, aggregation pipelines and filtered searches).

Hardcoded enums

See #12

Enums of values such as TypeName and MoveCategoryName are defined by the API. The API provides an OAS, so we could get those enums dynamically instead of copying and pasting them in this front-end project.

Of course, that may increase complexity beyond the scope of this project, and it may impact performance negatively -- but it seems like something we would take care of before deploying this app to production, in real-world conditions.