React Native application for adding and checking into achievements
- React Native for native iOS/Android application development
- Redux for state management
- Redux Saga for side effect management
- Reselect for memoized state selection
- Redux Watch for subscribing to and monitoring state changes
- React Navigation for routing
- Typescript for a high level of structure and strong typing
- NativeBase UI toolkit
- Formik and Yup for easy form construction and validation
- react-community/react-native-image-picker
- FidMe/react-native-photo-gallery
- maxs15/react-native-modalbox
- skv-headless/react-native-scrollable-tab-view
- thegamenicorus/react-native-timeline-listview
- Install dependencies
npm install
- Clean Android project
cd android
./gradlew clean
- Link react-native libraries
cd ..
react-native link
Note: This may walk you through linking your project with Sentry
-
Boot up emulator (I use Genymotion)
-
Set environment file (for powershell)
$env:ENVFILE=".env"
- Run React Native project
react-native run-android
- Points for uploading photos
- Ability to "do battle" with other participants. eg. Do these achievements in this amount of time and before your opponent, and you get 500pts
- Easter eggs or random events. Everytime a checkin is selected to see the details, there is a chance you can augment this checkin for automatic points.
- Ability to delete achievements from feed
- Lock down "delete from feed" feature by currentUser.isAdmin (will still be rejected because of API permissions)
- Achievement to CSV exporter and ability to compare CSVs to see what achievements have been changed
- Make achievement rows smaller (remove photos)
- Wizard for bulk checking in achievments (give these 3 people, this achievements, this many times)
- Ability to see an individual users achievements, and allow for admin to delete achievments
- Restrict some checkins to only allow one checkin per user
- Acheievement modifier (are you doing this achievement while on the lake, are you doing this achievement at a certain time of day)
- Combo creator (ability to combine achievements and check them all in at once, possibly "save" the combo for future use)
- Access loaded user checkins if checkins had already been loaded
- Add refresh button to modal to manually load checkins
- Backup data and archive checkins
- Return search results as you type
- User profile page with personal feed, photo upload capabilities, and leaderboard avatars
- Implement back button with React Navigation code
- Why does upload endpoint return empty object when no uploads are present
- If user is booted back to login screen, return them to previous screen once they log back in
- Flow to approve users instead of automatically granting access
- Manage Categories
- Manage Achievements
- Approve all functionality
- Checkin details and photo upload
- Favorite achievements and see them in profile page
- Look at todos
- React Navigation transitions
- Metrics/graphs for checkins
- Delete your own checkin
- Checkin multiplier?
- Push notifications (checkin approved, this user took the lead, etc.)
- Limited time checkins (do this achievement in this time frame)
- since all reducers are called for every action, we can consolidate all the success/failure actions into a single Result/Response reducer instead of having a Success/Failure action for every domain action. This would make isProcessing much more simple
- Integrate Redux Persist
- Submit HTTP call with MessagePack
- Use immutable.js utilities (like fromJS) inside the reducers
- use action creators
- avoid using componentWillUpdate
- be more vigilant with using stateless/pure components