Alfie has one of the weirdest cravings ever; no matter what time it is or where he is, he gets an urge to buy food as soon as possible. For someone who has never money problems like Alfie, this shouldn't be an issue. However, he cannot always remember where the nearest shop is or which are his favorite ones, which makes it hard for him to satisfy his appetite.
Your task is to implement an app that allows people like Alfie to see the list of all the nearby shops, as well as to keep track of their favorite ones.
For the Backend, you can use one the options listed below :
- Java/Spring Boot
- NodeJS (ExpressJS)
- Python/Django
- Ruby on Rails
- Laravel or Symfony
For the Frontend, you can use one of the options listed below :
- Angular
- React
- VueJS
As for the database, you should use MongoDB.
- As a User, I can sign up using my email & password
- As a User, I can sign in using my email & password
- As a User, I can display the list of shops sorted by distance
- As a User, I can like a shop, so it can be added to my preferred shops
- Acceptance criteria: liked shops shouldn’t be displayed on the main page
- [Optional] As a User, I can dislike a shop, so it won’t be displayed within “Nearby Shops” list during the next 2 hours
- [Optional] As a User, I can display the list of preferred shops
- [Optional] As a User, I can remove a shop from my preferred shops list
A MongoDB dump with ~300 shops is provided. To import the data, you need to extract the zip file then execute the command below :
mongorestore --db shops shops/
→→ A shop database will be created with a shops collection.
→ → Dump File : here
- Your code will be evaluated based on: code structure, programming best practices, legibility.
- The git commit history will be also evaluated.
- Do not forget documentation. Or how are we going to evaluate your work if we can't init the project on our machines?
- Put more focus on code quality and less on speed. Don't hack something quickly, take your time and craft something clean.
Asking questions is highly recommended in this exercise. Do not assume anything!
If you have any questions or feedback, don't hesitate to contact us via [email protected]
Put the code of your project on Github and send the URL to [email protected]
- https://try.github.io/levels/1/challenges/1
- https://github.com/noffle/art-of-readme
- https://github.com/kamranahmedse/design-patterns-for-humans
- https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf
- https://github.com/airbnb/javascript
- https://github.com/verekia/js-stack-from-scratch/blob/master/README.md
- https://github.com/bmorelli25/Become-A-Full-Stack-Web-Developer
- https://github.com/i0natan/nodebestpractices
- https://github.com/ryanmcdermott/clean-code-javascript
- https://github.com/gdi2290/awesome-angular
- https://news.thisdot.co/angular-news-angular-4-lazy-loading-best-practices-native-mobile-apps-with-nativescript-c336097ef028
- https://github.com/ziadoz/awesome-php
- https://github.com/sitepoint-editors/awesome-symfony
- https://github.com/TimothyDJones/awesome-laravel
- https://github.com/chiraggude/awesome-laravel
That’s it ! May the force be with you !! 🖖