├── .DS_Store ├── README.md ├── android └── README.md ├── back_end └── README.md ├── front_end ├── README.md ├── designs │ ├── desktop │ │ ├── Desktop Pokedex Detail.png │ │ └── Desktop Pokedex.png │ └── mobile │ │ ├── Mobile pokedex menu.png │ │ └── Mobile pokedex.png └── sketch │ └── Pokedex.sketch └── ios └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Interview 2 | 3 | Interested in joining the Yellowme team? We believe that a great way for you to show us who you are is with your code. Completing a project has many benefits: 4 | 5 | * **You have code to share.** Maybe your current employer doesn't allow you to show us what you've been working on, or maybe you just finished school or a developer bootcamp and haven't established a portfolio. Now you have code to show us. 6 | 7 | * **Express yourself.** Interviews can be stressful and people get nervous. Working on a project without the watchful eye of an interviewer gives you the chance to show us your best work. 8 | 9 | * **Everyone works on the same project.** All job candidates work on the same set of projects. This allows us to look at everyone objectively based on their work. 10 | 11 | ## Getting Started 12 | ### 1. Pick a Project 13 | 14 | Each type of technology that we use at Yellowme has a representative folder within 15 | this repository. The folder contains a `README.md` with a description of the 16 | project we would like you to build. 17 | 18 | We currently offer the following projects: 19 | 20 | - [Front-end](front_end) 21 | - [iOS](ios) 22 | - [Android](android) 23 | - [Back-end](back_end) 24 | 25 | ### 2. Create a New Repository 26 | 27 | Since we don't offer a starting point for any of the projects, create a new 28 | repository on your GitHub account. It can be public or private. 29 | 30 | ### 3. Commit Often 31 | 32 | At Yellowme, we like to commit often. This helps document your thought process and 33 | makes it much easier to revert a change that causes a bug. 34 | 35 | ### 4. Have Fun 36 | 37 | This is your chance to express yourself. If you have knowledge of technologies 38 | that you think will help with completing the project, use them. We love learning 39 | just as much as you! 40 | 41 | ## Need Help? 42 | 43 | If you are having difficulties getting started, confused about the project, or 44 | stuck trying to solve a problem, you can either [open an issue](https://github.com/yellowme/interview/issues/new) or 45 | reach out to us on [hola@yellowme.mx](mailto:hola@yellowme.mx) 46 | 47 | ## About Yellowme 48 | 49 | Yellowme is a digital agency & nearshore IT outsourcing company of over 40 talented software developers & UI/UX designers located in Mérida, México. 50 | -------------------------------------------------------------------------------- /android/README.md: -------------------------------------------------------------------------------- 1 | # Android Project 2 | 3 | A common feature for most of the mobile applications is a Login. This feature not only requires work with a form but also the logic to decide whether the application sends the user to the main view or the login form when launching the app. 4 | 5 | We are Pokemon fans! So the main view must be a list of pokemons taken from the [Pokeapi](https://pokeapi.co/). 6 | 7 | Your goal is to create an application that handles the logic to allow the user login and see the main view any time they launch the app. 8 | 9 | If any special requirements have been conveyed to you from your interview team, they supercede the following: 10 | 11 | ## Requirements 12 | 13 | - [ ] The application should be built with Java or Kotlin. Please use the Android Studio as IDE. 14 | - [ ] The application should be able to run on a Simulator of your choosing. 15 | - [ ] The deliverable should contain complete steps for setting up an environment to run the application. Assume that we have never developed anything on Android. 16 | 17 | ## User Stories 18 | 19 | - [ ] The user should authenticate with email and password (you could use static data and a fake endpoint to validate what the user types on the form.) 20 | - [ ] The user should be able to log out. 21 | - [ ] The user should be able to view a list of pokemons (this is the main view). 22 | - [ ] The user session should be stored locally. 23 | - [ ] The user should be able to see the main view if they had already logged in. 24 | - [ ] The list of pokemons should be stored locally (you don't need to store all of the pokemons returned by the API, just some of them). 25 | 26 | ## Bonus points 27 | 28 | - [ ] Use an architecure to divide and encapsulate components of a feature (e.g. MVC, MVP, MVVM). 29 | - [ ] Create a set of Unit Tests for the project. 30 | - [ ] Create a set of UI Tests for the project. 31 | 32 | ## Hint 33 | 34 | - [Pokemon API Docs](https://pokeapi.co/docsv2/#). 35 | - The Pokeapi has a limit usage per hour. Consider mocking the requests. 36 | - Review the `offset` and `limit` parameters for the GET request. 37 | -------------------------------------------------------------------------------- /back_end/README.md: -------------------------------------------------------------------------------- 1 | # Backend Project 2 | 3 | The following project is to build a simple service that leverages some of the technologies that we use as part of our reference architecture. 4 | 5 | If any special requirements have been conveyed to you from your interview team, they supercede the following: 6 | 7 | ## Requirements 8 | 9 | - [ ] Create a webservice using Java, Ruby, or Node.js that has a single endpoint. 10 | - [ ] The endpoint should receive a URL as a parameter and return a shortened URL. For example, if the endpoint is given the following URL: "https://facebook.com", it should return "https://hostname/Ux26Yp". 11 | - [ ] When someone accesses the shortened URL ("https://hostname/Ux26Yp"), the server should redirect to the real URL ("https://facebook.com"). 12 | - [ ] Add another endpoint to your service that allows for the bulk (hundreds) submission of URLs. 13 | - [ ] Your submission should contain a README file that spells out the exact steps necessary to build and run the project. It should also provide instructions for how to query the webservice. 14 | 15 | Design of the API endpoint including paths, structure, and format is up to you. Decisions on how to structure the code and what frameworks to use are up to you as well. 16 | 17 | ## Bonus 18 | 19 | - [ ] Build a frontend for the service in any frontend framework that allows users to submit a URL to shorten it in a form, and see the result. 20 | - [ ] Extend your frontend to allow a text file full of URLs to be submitted to the bulk API. Results can be rendered directly on the page or downloaded as a text file. 21 | - [ ] Add a view to list all the URLs and their short versions. 22 | -------------------------------------------------------------------------------- /front_end/README.md: -------------------------------------------------------------------------------- 1 | # Front-end Project 2 | 3 | Most web applications show a list of items on their main view. Usually you can click these items to see more details. Maybe you've heard of this pattern, it's called Master-Detail. Building a Master-Detail application requires handling UI events and loading the necessary data to show it on the details panel. 4 | 5 | We are Pokemon fans! So the master view must show a list of pokemons taken from the [Pokeapi](https://pokeapi.co/) 👾 6 | 7 | Your goal is to create a web application that lists the first 150 pokemons and show you some details about a pokemon when you click on its name. 8 | 9 | If any special requirements have been conveyed to you from your interview team, they supercede the following. 10 | 11 | ## Requirements 12 | 13 | - [ ] The application should be built with JavaScript. You may use frameworks or pre-compile your code if you want. 14 | - [ ] The application should work properly on a desktop computer running Google Chrome. 15 | - [ ] The application should be identical to the design described in the "design/desktop" folder. 16 | - [ ] The application code should be optimized for production. 17 | - [ ] The site should be a [SPA](https://en.wikipedia.org/wiki/Single-page_application). The site should not reload to show a pokemon's details. 18 | - [ ] The project must have a README listing the supported browsers and the technologies and patterns used in development. 19 | 20 | ## User Stories 21 | 22 | - [ ] The user should be able to see and click all first 150 pokemons in the left sidebar. 23 | - [ ] The user should be able to see the pokemon's details when clicking its name. 24 | 25 | ## Bonus points 26 | 27 | - [ ] This is your Pokedex. Add more details to the white spaces in the detail view. 28 | - [ ] Use an architecure to divide and encapsulate components of a feature. 29 | - [ ] Make the site responive 🙌 (You can take some ideas form the "design/mobile" folder). 30 | - [ ] Support other major browsers 🦄 (Firefox, Safari, Opera, Edge). 31 | - [ ] Add a router to your application. Update the site's URL when a pokemon detail panel is shown (without reloading the site). Users should be able to enter this URL and see the pokemon's details without having to click its name. 32 | - [ ] Create a set of Unit Tests for the project. 33 | - [ ] Create a set of E2E (UI) Tests for the project. 34 | 35 | ## Hints 36 | 37 | - [Pokemon API Docs](https://pokeapi.co/docsv2/#). 38 | - The Pokeapi has a limit usage per hour. Consider mocking the requests. 39 | - Review the `offset` and `limit` parameters for the GET request. 40 | 41 | -------------------------------------------------------------------------------- /front_end/designs/desktop/Desktop Pokedex Detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/front_end/designs/desktop/Desktop Pokedex Detail.png -------------------------------------------------------------------------------- /front_end/designs/desktop/Desktop Pokedex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/front_end/designs/desktop/Desktop Pokedex.png -------------------------------------------------------------------------------- /front_end/designs/mobile/Mobile pokedex menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/front_end/designs/mobile/Mobile pokedex menu.png -------------------------------------------------------------------------------- /front_end/designs/mobile/Mobile pokedex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/front_end/designs/mobile/Mobile pokedex.png -------------------------------------------------------------------------------- /front_end/sketch/Pokedex.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yellowme/interview/d302ca8f588a70d5f11b723c25cd211ccd134fa4/front_end/sketch/Pokedex.sketch -------------------------------------------------------------------------------- /ios/README.md: -------------------------------------------------------------------------------- 1 | # iOS Project 2 | 3 | A common feature for most of the mobile applications is a Login. This feature not only requires work with a form but also the logic to decide whether the application sends the user to the main view or the login form when launching the app. 4 | 5 | We are Pokemon fans! So the main view must be a list of pokemons taken from the [Pokeapi](https://pokeapi.co/). 6 | 7 | Your goal is to create an application that handles the logic to allow the user login and see the main view any time they launch the app. 8 | 9 | If any special requirements have been conveyed to you from your interview team, they supercede the following: 10 | 11 | ## Requirements 12 | 13 | - [ ] The application should be built with Swift. 14 | - [ ] The application should be able to run on the iPhone simulator. 15 | - [ ] The application should contain at least two view controllers. 16 | 17 | ## User Stories 18 | 19 | - [ ] The user should authenticate with email and password (you could use static data and a fake endpoint to validate what the user types on the form). 20 | - [ ] The user should be able to log out. 21 | - [ ] The user should be able to view a list of pokemons (this is the main view). 22 | - [ ] The user session should be stored locally. 23 | - [ ] The user should be able to see the main view if they had already logged in. 24 | - [ ] The list of pokemons should be stored locally (you don't need to store all of the pokemons returned by the API, just some of them). 25 | 26 | ## Bonus points 27 | 28 | - [ ] Use an architecure to divide and encapsulate components of a feature (e.g. MVC, MVP, MVVM). 29 | - [ ] Create a set of Unit Tests for the project. 30 | - [ ] Create a set of UI Tests for the project. 31 | 32 | ## Hint 33 | 34 | - [Pokemon API Docs](https://pokeapi.co/docsv2/#). 35 | - The Pokeapi has a limit usage per hour. Consider mocking the requests. 36 | - Review the `offset` and `limit` parameters for the GET request. 37 | --------------------------------------------------------------------------------