API Org App is YOYO’s technical test. This is a standard web application that provides a simple organizer for the user to store notes and TODOs.
- Fork this repository on your own personal GitHub account.
- Download your fork, build this app, and begin making changes.
- When finished, create a Pull Request to merge into YOYO’s version, then send an email to @zakame to let him know you’re ready for review.
- We will close the pull request.
You may also submit your commits using git format-patch
, should you
prefer it over GitHub PRs.
- The app consists of two major activities:
- a note-taking activity that accepts a
title
andtext
for one or more notes - a TODO tracking activity that accepts an
entry
, with acheckbox
to show whether this entry has been done or not done
- a note-taking activity that accepts a
- The app primarily exports a RESTful Web API that can be a backend for one or more SPAs corresponding to the activities above.
- The app should have a user interface that allows for easy access between the note-taking and TODO tracking activities as well as to see their details at a glance.
- The note-taking activity should provide a view for its notes in a reverse-chronological order, with options for updating and deleting old notes.
- The TODO-tracking activity should provide a view for its entries with options for updating and deleting old TODOs.
- The app should make it easy to switch between the note-taking and TODO-tracking activities.
- The app should make it easy to switch a note to a TODO entry, and vice versa.
- The web app’s UI should be accessible at http://localhost:3000, while its API should be at http://localhost:3000/api.
In your PR/patch email, please also answer these following questions:
- What design patterns did you use inside the application?
- What libraries did you use?
- Why did you use this library?
- Are there other libraries available?
- If yes, what made you choose this library over the others?
- What major challenges did you encounter when making the app?
- If you had more time, what additional features would you like to add?
In addition, you may provide more information in your PR/patch email that you would like us to know.
- While our preference is Perl and JavaScript, you may use any scripting language you are comfortable with in completing this test, provided you supply appropriate documentation; the level of verbosity is at your discretion.
- You may use any open source libraries that you think would be useful for completing the test and improving this app.
- You may implement the user interface in any way that you feel may improve the user experience.
- You may use any development tools you have at your disposal to
complete this test, so long as the resulting app is a standard web
application that can be deployed using the standard tooling:
# assuming Perl on Mojolicious app in myapp.pl ./myapp.pl daemon # assuming NodeJS npm start # assuming Ruby on Rails rails server