-
Notifications
You must be signed in to change notification settings - Fork 75
Guide for Beginners
It is absolutely essential (not only in this project) that you be familiar with some version control, such as Git or Mercurial. For all projects, we will be using Git, so it is recommended that you start with Git if you don't already know it. This is a good guide to start. Also, do understand that Git and GitHub are not the same!. This might help if you are a complete beginner to Git.
You should at least have a general idea of how to clone, commit, push, pull and manage branches. How to rebase, reword, cherry pick and solving merge conflicts can be learned as you work, which you will probably need at some time.
Before starting on anything, you need to understand REST i.e. Representational State Transfer really properly. The following resources have good information in relation
- What exactly is RESTful programming?
- REST API Tutorial
- Fielding's Dissertation, which introduced the concept (this is provided just for reference, and is not a necessary read)
Notes:
- InstiApp uses a nearly-RESTful API, in the sense that it doesn't use the final level, i.e. hypermedia links a.k.a. HATEOAS. In this sense, the API is not strictly RESTful, but is close enough.
- The API is based on JSON, so some basic understanding of JSON is necessary. Some good resources are this article and RFC 7159.
Since python is a very popular language, it is highly recommended that everyone should know some python. Irrespective of whether you are working on the Django API, the Android App or the Angular PWA, it is expected that you should at least be familiar with basic python syntax and semantics.
If you are just starting with python, you may want to check out the tutorials in the documentation or this set of tutorials.
Some other useful resources
- Ten Things Python Programmers Should Know
- What is the difference between statically and dynamically typed languages?
- How does an interpreter/compiler work or any other similar discussion
- What should I know before learning Python as my first programming language?
For this particular project, it is necessary that everyone knows at least some basics of Django, since even frontend developers may often need to look into the source of the API when documentation is sparse or for fixing bugs. You may also often need to create a local server to test niche cases. The documentation tutorial and the Django REST Framework tutorial should be good enough to get you started. Your next step is to understand how testing is done. For this, you may refer to the repo itself, or see DRF's documentation.
If you have an Android phone and Android Studio set up, Google's developer guide and StackOverflow will take you a long way :). Since all development is Java, any Java tutorials will help you as well.
First, read What are PWAs. Angular is somewhat reputed to have some learning curve, and can even be slightly complex for some to set up. For setting up angular, visit the quickstart guide, then you may proceed to the tutorial. Since Angular is written in TypeScript (which is a strict superset of JavaScript), HTML and CSS, any tutorials/resources related to these will be useful.
Besides the above, it is very important that everyone follows certain guidelines
- Always use proper naming conventions. If unsure, you may use improper names, but such code should not be committed
- Write descriptive commit messages. Good commit messages are absolutely essential for developing a large project. Try to follow the Gnome Commit Message Guidelines. Another note - commit messages should always be in present imperative tense
- If there are repository specific guidelines, be sure to follow them strictly. Make sure you read the contributing section here
- Never push to master, unless possibly you are the sole developer of a project. Always create branches for individual features and merge with master only after testing.
- Follow coding style guidelines. For all languages, Google provides good style guides. Once you get used to writing clean code, it will become your second nature :)
- If linting is feasible, do it! This is necessary if you are working on the Angular app.
- Commit only the changes that are necessary. DO NOT USE
git add -A
!. Your commit diff should be as minimalistic as possible. Do not commit files that are machine specific. If in doubt, first check if a certain file is to be committed. Change.gitignore
only if this file is never to be committed and is generated on all development machines. - Do not rebase, except on your branch before a merge. Never rewrite history on master.
- If you're working on a non-trivial issue, ask to be assigned to it first, so that multiple people don't end up fixing the same issue.
- Communicate, read documentation and make ample use of StackOverflow :)
InstiApp is not endorsed or supported, in any way, by the Indian Institute of Technology, Bombay.