version 1.0
challenge status: open
Welcome! We've been expecting you. If you're someone who bleeds code and aches to make a difference in the world, then you are at the right place. You will be part of a world-class team working on the latest and greatest technology in an inspiring and collaborative environment.
This is our developer challenge. The rules of the challenge are very simple and are as follows
- You are required to use the Django framework (you might need to use Tornado, but you should have a concrete reason if you do)
- You should take no longer than a week. If you think you won't be able to finish, implement lesser features but do not compromise on code quality or design decisions.
- Your code should be neatly commented and organised
- Please host your submission on github and use version control. When you are done, send in a pull request.
- Please note that you will be judged on API design, elegance of your code, level of abstraction and technical skills presented in the implementation.
- All communication muse be done by way of issues or pull requests. If you have a question/concern, create an issue.
- You will need to build a clone of Firebase
As you will probably notice, you won't be able to implement all of it's features. So, you have to choose. What would the MVP of Firebase look like?
- A readme file listing ALL the steps (if any) to setup your submission. The readme file should also include a brief summary of software design decisions made and other trade offs. This will be the first file that we'd read ;)
- If you can't finish any feature, please do provide directions on how future developers might be able to carry your unfinished work forward.
- Unit tests (especially for backend)
- JavaScript frontend framework like AngularJS or React (you are free to use vanilla JavaScript if you are game)
- Redis
- Django Channels (you might need WebSockets ;))
- GitHub/Bitbucket
- Other open source projects to take inspiration from (please see this Quora answer - https://www.quora.com/Whats-the-closest-open-source-alternative-to-Firebase)
We are not looking for a full-fledged solution. We are trying to test your speed and how well you handle complexity. Choosing the most important features from a complex product and implementing those really well under the pressure of time is something you will have to do time and again. So, make the right choices and then don't take shortcuts.