- TLDR: Build a chat app with real APIs
- Time: 3hr - 6hrs
- Allowed tools & frameworks: anything
- Show us what you got!
This is the frontend interview project for DoorDash! We're going to ask you to build something with whatever tools you want, whatever language you want, or whatever.
If you want to keep it vanilla, that's fine—this should take you 2/3 hours with jQuery, plain ol' HTML and CSS. If you want to use other tools, (like Angular, React, Vue, Ember) that's fine too—just make sure you have enough documentation for us to be able to build and run the app. We just want you to build something that's maintainable, testable, and that you're proud of.
The goal here is not to demonstrate your pure coding ability—we're here to give you a problem that's not totally spec'd out for you, and we want to see far you can go. How good can you make it without much guidance? What are the sort of improvements and choices you'll make as you build this thing, and where do your priorities lie?
Remember, building stuff is supposed to be fun, so be creative! Happy coding!
There's a few things you need to get started on to get this to work.
Make sure you have node
installed, with a version greater than 7.0.0
. I highly recommend nvm
, or just installing the latest version of node
with brew install node
on macOS.
Once you have a good node
installed, run npm install
in this repo to get your dependencies.
By default, you can run npm start
to run your app, serving the files from /public
. You can, however, change this to whatever you want! Just make sure you document the changes somewhere so we can run this.
We have provided a simple api server for you. You can run npm run api-server
to start it. Read the spec for more details on the api.
There's a pretty fleshed out spec in the ./spec
directory. Checkout the design specs here to understand what you're building!
You can use literally anything that can be served on the web. You should use what you're most comfortable with, no matter what (even if you heard that we use React). We want you to use the tools you know, and we want to see you at your best and most productive.
Secondly, don't worry much about setting up build tools—use something simple and fast to spin up:
- If you're using Ember, it's fast to spin up something with
ember-cli
- If you're using Angular 1.x, you can use this yeoman generator to spin up a scaffold
- If you're using React, it's easy to use
create-react-app
to start the project - If you're using Vue,
vue-cli
will be a fast way to get started. - For anything else, use your favorite generators or templates!
We're going to review your code to see how you work and how you make tradeoffs—no automated tests for this one. We'll schedule a call with you after you submit this to walk through the code to understand your thought process. If you come on-site, we'll take your code here, and we'll build on it to tests other things—how you write tests, how you build out new features and refactor old code, etc.
- maintainability
- testability
- readability
- solid UX without strict guidance
- Write up instructions on how to run your project and ensure there's ample documentation on your intent
- Upload your repo as a private repository to GitHub or GitLab
- Ensure that we're added as collaborators to the repo, and have access to read/download your project:
ryngonzalez
(GitHub/GitLab)badsauce
(GitHub/Gitlab)marknach
(GitHub/GitLab)dpenny
(GitHub),dpenny1
(Gitlab)ifsred
(GitHub/GitLab)
- Send an email back to recruiting to ensure that we have a link/access to the repo.
- We'll review and get back to you soon!
A couple of things to say:
-
Feel free to change the language you're writing this in. We want to see what good code looks like for you - feel free to add a
gulpfile
, setupwebpack
, or just use the plain JS, CSS, and HTML you're given. It's all up to you! -
Feel free to use any libraries or frameworks you want, with the idea that they're increasing your productivity, not writing the app for you.
-
Please don't modify the server.js file. We're looking to see your front-end skills!