- TypeScript
- NodeJS
- React for web apps
- React Native for mobile apps
- Apollo GraphQL
- PostgreSQL
- Jest
You are writing an app and accompanying API where the end user can enter into a dialogue with the app in the style of a chatbot. The dialogue questions or steps are predefined. Your app should allow the user to enter into the chat dialogue and complete the steps as many times as they choose.
You will need GraphQL operations for, at least, storing the dialogue step answers from users. No user authentication is needed.
🔎 Things we're looking for:
It should be production quality as you understand it, i.e. tests, Docker, README, documentation, etc.
- TypeScript
- Project Structure
- Unit or Integration Tests
- API Design
- Error Handling
- Use of Knex query builder or a simple wrapper is preferred over something like Sequelize, which is unnecessary for this task
App should be able to allow the user to enter, complete and exit a chat dialogue, completing the predefined steps. An example dialogue tree is available here.
🔎 Things we're looking for:
- TypeScript
- Project Structure
- Components Structure
- State Management
- Separation of concerns
- Data Handling
🏆 Bonus Possible Tasks:
- Accepting different types of user input (e.g. text, numbers, dates, etc.) instead of just text
- Handling the possibility of exiting a dialogue early and/or resuming a dialogue where the user left off
- How to set up a chat dialogue which can branch into different paths based on user input
Follow the frontend instructions, using React Native to build the app. Focus only on the mobile app development. You can use httpbin or any other service you choose to simulate the API calls. No backend development is required.
-
Submitting Code
Create a new repository on your GitHub account and push your code to it. Make sure to include a README file with instructions on how to run your code. If the repository is private, please ensure that you have invited us to view it. Alternatively, you can zip your project and send it to us via email.
-
Deadline:
You have 1 week to complete as much tasks as you can from the challenge below. Countdown starts from the date you were invited to complete this challenge via email.
-
Implementation:
There is no correct way to do the challenge, you are free to add whatever libraries you like besides the ones mentioned above. We want to see what you come up with on your own.