- Install Instructions
- File Structure
- Code Philosophy
- Import Pattern
- Demo
- Future Improvements
- Struggles and Mentions
npm i
- For iOS:
cd ios && pod install && cd ..
npm run ios
- For Android:
npm run android
- Less code is more readable and less opportunitiy for errors.
- Provide names for any code that isn't easy to understand at a glance.
- Balance co-location with code size:
- Too much code is harder to read, but toggling between files is also a bad developer experience.
- Optimally: have less and more dense code.
- Keep imports clean by using index files.
- Optimize for developer experience so:
- Bugs are easier to track down.
- Features are easier to write and integrate.
- Code is easy to reason about and is easier to onboard.
- Use consistent style so the code is easier to parse.
- React imports
- Navigation imports
- Redux imports
- Local imports
iOSDemo.mov
androidDemo.mov
-
Currently there are no tests, but a few tests to make sure that:
- components mount
- login endpoint works
- navigation works on every screen
would help ensure the core functionality is there after a code change.
-
As the app grows, I would separate the navigation index file into individual navigator files, they would then be exported as a single navigator in the index file.
-
Currently the app has only been tested on two device, an iPhone14 and an Android Pixel 3, ideally more testing would be done to check if the layout holds its shape well, and if the packages used work as expected on those devices.
-
The React Navigation documentation for type checking left me with type errors, I eventually followed this video to assign compatible types.
-
I had an issue where the marked Ruby version required doesn't exist for an M1 Apple chip, so I installed one semantic version higher. I get a warning.