by Terry Sahaidak ([email protected])
- Expo.io is used.
- Configured eslint.
- React Navigation is used for navigation.
- No ui-toolkits and libs are used. Only your styles and components.
- You're familiar with recompose.
- You won't live without redux.
- You're in love with reselect.
- Ramda and functional approach is your life.
- Mobx and GraphQL aren't empty sounds for you.
You should build a chat application with the following screens:
- Chats list
- Сhat
- User
- It should be list of chats.
- Each chat item should have participant's avatar and name, the last message time and text, also, read/unread status.
- After taping to chat item apps navigate us to chat screen.
- After long tap it shows pop-up with delete action.
- We should be able to filter all chats by texting user name. (*)
* is note required, but would be a big bonus for you.
- Each message should displays inside the bubble (iMessage-like gray-blue clouds).
- Participant messages should be displayed in the left side inside gray bubble.
- Our messages should be displayed in the right side inside blue bubble.
- Messages can have state field (read, don't send, sending, delivered etc).
- Messages should be grouped by interval of time (group it if the interval between messages is bigger that 10m).
- Each group should be separated by sticky section header.
- Message input component should contain message input itselft, send button, camera and galary icon-buttons.
- Message input should send messages and displays it as a new message.
- We should be abble to navigate to user screen.
- Custom header with user avatar, name, online status. (*)
- Edit/delete message actions. (*)
- Send and displays photos from galery and camera. (*)
- Typing status. (*)
- Message input expand/collapse animation (**)
* is note required, but each of this tasks would be a big bonus for you.
** SUPER BONUS!!!
- Display some user's info such as avatar, name, online status.
- There should be some action buttons like block user, delete chat.
- Display user avatar in modal.
- Implement block user action with some ux/ui. (*)
- Implement delete chat action with some ux for it. (*)
* is note required, but each of this tasks would be a big bonus for you.
- Use redux/mobx for state managment.
- Implement and deploy to some cloud back-end for chat application.
- Use socket.io or faye for realtime chat updates.
- Use some oauth authorization (Google, Facebook, Twitter etc).