# Before You Start

<p class="lead">A list of resources to help you get started with building apps using Frappe</p>

---

#### 1. Python

Frappe uses Python (v2.7) for server-side programming. It is highly recommended to learn Python before you start building apps with Frappe. 

To write quality server-side code, you must also include automated tests.

Resources:
 1. [Codecademy Tutorial for Python](https://www.codecademy.com/learn/python)
 1. [Official Python Tutorial](https://docs.python.org/2.7/tutorial/index.html)
 1. [Basics of Test-driven development](http://code.tutsplus.com/tutorials/beginning-test-driven-development-in-python--net-30137)

---

#### 2. MariaDB / MySQL

To create database-driven apps with Frappe, you must understand the basics of database management, like how to install, login, create new databases, and basic SQL queries. 

Resources:
 1. [Codecademy Tutorial for SQL](https://www.codecademy.com/learn/learn-sql)
 1. [A basic MySQL tutorial by DigitalOcean](https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial) 
 1. [Getting started with MariaDB](https://mariadb.com/kb/en/mariadb/documentation/getting-started/)

---

#### 3. HTML / CSS

If you want to build user interfaces using Frappe, you will need to learn basic HTML / CSS and the Boostrap CSS Framework.

Resources:
 1. [Codecademy Tutorial for HTML/CSS](https://www.codecademy.com/learn/learn-html-css)
 1. [Getting started with Bootstrap](https://getbootstrap.com/getting-started/)

---

#### 4. JavaScript and jQuery

To customize forms and create rich user interfaces, you should learn JavaScript and the popular library jQuery.


Resources:
 1. [Codecademy Tutorial for JavaScript](https://www.codecademy.com/learn/learn-javascript)
 1. [Codecademy Tutorial for jQuery](https://www.codecademy.com/learn/jquery)
---

#### 5. Jinja Templating

If you are customizing Print templates or Web pages, you need to learn the Jinja Templating language. It is an easy way to create dynamic web pages (HTML).

Resources:
 1. [Primer on Jinja Templating](https://realpython.com/blog/python/primer-on-jinja-templating/)
 1. [Official Documentation](http://jinja.pocoo.org/)

---

#### 6. Git and GitHub

Learn how to contribute back to an open source project using Git and GitHub, two great tools to help you manage your code and share it with others.

Resources:
 1. [Basic Git Tutorial](https://try.github.io)
 2. [How to contribute to Open Source](https://opensource.guide/how-to-contribute/)

---

When you are ready, you can try [building a sample application]({{ docs_base_url }}/user/en/tutorial/app) using Frappe.

