Introduction to Research Engineering
Welcome! This page offers a guide and some helpful tips to begin contributing to our research engineering efforts. We assume some preparation in computer science, in particular web programming, and a desire to learn and work hard. The following milestones outline a path to gaining familiarity with our codebase and will empower you to start making code contributions.
Contents
Documentation and Specifications
Stack | Technology/Platform | Learn here |
---|---|---|
Platform/Host | Heroku | Hosting Django on Heroku |
Continuous Integration | Travis | Official Documentation |
Version Control | Git | Official Documentation |
Frontend | Angular Material (Material Design) | CodeSchool |
Backend | Django REST framework | Django (and integration with AngularJS) |
Database | Postgres | Official Documentation |
Milestone 0: The Basics
Before you begin working on Daemo, we assume the following:
- You have a Github account and understand pulling, pushing, forking, etc.
- You have Postgres installed on your machine.
- You have some familiarity with pip.
Milestone 1: Learning our Stack
Our stack is Postgres/Django/AngularJS and we adhere to the Material Design specification.
If you are interested only in frontend work, you will need to be strong in HTML, CSS, and AngularJS. And most importantly become very familiar with Material Design. We assume you already know pretty much everything you need to know or can figure it out when it comes to HTML and CSS. For those new to AngularJS we recommend this tutorial and reading/playing with some of the templates and js files in our codebase. You will be using Angular Material components so give that page a close read as well as the Material Design spec.
If you are interested in backend work, you will need to be strong in Django and SQL. The best way to improve your skills here is to read the documentation and play around with our codebase and database; trying things out and breaking things to see how they work. There is also a tutorial which you may find helpful.
Milestone 2: Getting Setup Locally
Go to our repo and follow the instructions in the README.
Milestone 3: Playing Around Locally and Tips
If you have successfully completed Milestone 2, a simple python manage.py runserver will get Daemo running on your local server. However, before you jump into creating projects and doing work, there are still some things you need/may want to do.
Creating an account. This may be trickier than it sounds. You will find that when you try to register locally, the site will say that it is closed for registration. There are a few steps you will need to complete in order to successfully make an account locally. Hint: look through csp/settings.py and check out whats going on in your database (if you aren't using an IDE, the psql shell is nice and it might be worth looking through the SQL tutorial for how to UPDATE or INSERT).
Saving the state of your database. Sometimes when you're debugging backend changes, deleting your database may be the best course of action. However, you probably don't want to have to recreate your accounts and projects every time. Tip: look into dumpdata and loaddata.
Try out the Django REST framework. Play around with different endpoints and create your own. Maybe check out http://localhost:8000/api/project/ to get started.
Alternatively, try sending HTTP requests. Use cURL or your favorite REST client.
Make sure your browser isn't caching.
Make sure you compile your scss.
Milestone 4: Issues and Pull Requests
Watch our short screenshare for an approach to solving issues and creating a PR.
Getting Help
This page is your first reference. Read and reread it. Read the documentation. Complete the tutorials. Google. Stack Overflow. Read and post in #research-engineering - someone may well have had the same issue as you. And if all else fails, DM @dmorina, @aginzberg, or @shirishgoyal.