Getting started with Frappe framework - A beginner's guide


Frappe Framework is a popular open-source framework that is used for developing web applications. It is built on top of the Python programming language & the MariaDB database. Frappe provides developers with a powerful & flexible toolkit that makes it easy to build complex applications quickly & efficiently.

Frappe has become increasingly popular in recent years due to its ease of use, flexibility, & powerful features. It has been used by many companies to build complex applications that are used by millions of users around the world.

In this blog post, we will provide a beginner's guide to getting started with Frappe. We will cover everything from the basics of installing the framework to customizing & deploying your application.

Prerequisites in Framework:

1. Basic understanding of Python:

To get started with the Frappe Framework, it is essential to have a basic understanding of Python. You should be familiar with data types, control structures, functions, & object-oriented programming concepts in Python. Additionally, knowledge of popular Python libraries like Flask & Django can be beneficial.

2. Familiarity with concepts:

Familiarity with web development concepts such as HTTP, RESTful APIs, & web application architecture is important to understand the underlying principles of the Frappe Framework.

3. Understanding of HTML, CSS, & JavaScript:

Frappe Framework uses HTML, CSS, & JavaScript extensively for creating user interfaces. Therefore, it is important to have a good understanding of these technologies.

4. Setting up a development environment:

To get started with Frappe Framework, you need to set up a development environment. This typically involves installing a text editor or integrated development environment (IDE) & setting up a local server like WAMP or XAMPP.

Getting started with Frappe Interface:

1. Installation:

To start using Frappe, you need to install it on your system through codes, and packages.. The recommended way of installing Frappe is by using the Python package manager, pip. You can install Frappe Framework by running the following command in your terminal or command prompt:

pip install frappe,

2. Setting up a virtual environment:

It is always recommended to set up a virtual environment before starting a new project. This allows you to create a self-contained environment with all the necessary packages & dependencies. You can create a virtual environment using the following command:

python -m venv myenv,

3. Installing Frappe Framework:

After setting up a virtual environment, you can install Frappe by running the following command:

pip install frappe,

4. Create a new Frappe application:

Once Frappe is installed, you can create a new Frappe application by running the following command:

bench new-app myapp,

5. Understanding the directory structure:

The directory of a Frappe app is organized in a specific way. It consists of various folders like apps, config, public, & site. These folders contain files that are important for the functioning of the application.

6. Creating a new Frappe Module:

Frappe modules are used to group related DocTypes & several components. You can create a new module by running the following command:

bench new-module mymodule,

7. Creating a new Frappe DocType:

DocTypes are the buildings of Frappe applications. They define the data structure & behavior of different entities in the application. You can create a new DocType by running the following command:

bench new-doctype mydoctype,


1. Building the Desk:

The Desk is the main user interface of a Frappe app. You can custom-create the Desk by adding new fields, changing the layout, & adding new modules & links.

2. Customizing a DocType:

You can custom-create a DocType by adding new fields, changing the behavior of existing fields, & adding new methods & functions.

3. Custom-creating the User Interface:

Frappe provides a number of customization options for the user interface. You can customize the look & feel of the application by changing the theme, adding customized coding options CSS & JavaScript, & modifying the templates.

Understanding Workflow in Frappe:

Frappe is a framework that provides a workflow engine that enables users to automate business processes easily. A workflow defines the series of steps that need to be followed to complete a task. It allows users to design, manage & modify the flow of work in their applications. In Frappe, workflows are defined using YAML files that describe the states, transitions, & actions that are available to a user at each stage of the workflow. Workflows can be created for any DocType in Frappe, & can be accessed from the List View of the DocType.

Creating a Workflow for a DocType:

Creating a workflow for a DocType in Frappe involves the following steps:

1. Define the States: 

States are the different stages that a DocType can go through. Each state represents a particular stage of the workflow. For example, the state for a sales order could be 'Draft', 'Submitted', 'Pending Approval', & 'Completed'. These states are defined in the YAML file.

2. Define the Transitions: 

Transitions define the actions that a user can perform to move a DocType from one state to another. For example, the transition for a sales order from 'Draft' to 'Submitted' could be 'Submit for Approval'. These transitions are defined in the YAML file.

3. Define the Actions: 

Actions are the tasks that are performed when a DocType reaches a particular state or transition. For example, when a sales order is 'Submitted', an email notification can be sent to the approver. These actions are defined in the YAML file.

4. Associate the Workflow with the DocType: 

Once the workflow is defined, it needs to be associated with DocType. This can be done using the Workflow Settings in DocType.

Understanding Frappe's Security Model:

Frappe has a robust security model that provides granular control over access to data & functionality in the application. The security model is role-based & allows users to define roles & permissions for each role. Users can also define custom roles & assign permissions to them. The security model ensures that users can only access the data & functionality that they are authorized to access.

Setting Permissions for Users & Roles:

Setting permissions for users & roles in Frappe involves the following steps:

1. Define the Roles: 

Define the roles that are required in the application. This can be done using the Role Permissions Manager in Frappe.

2. Assign Permissions to Roles:

Assign permissions to each role using the Role Permissions Manager. This allows users with the assigned roles to access the data & functionality that they need to perform their tasks.

3. Assign Roles to Users: 

Assign the appropriate roles to each user. This can be done using the User Permissions Manager in Frappe.

4. Securing the API:

Securing the API is essential to prevent unauthorized access to the data & functionality in the application. Frappe provides several options for securing the API, such as using SSL/TLS encryption, implementing OAuth2 authentication, & setting rate limits to prevent API abuse.

Preparing the application for deployment:

Before deploying a Frappe application, there are a few things you need to consider. First, you need to ensure that your application is fully tested & ready for deployment. This includes checking for bugs, ensuring that all features are working as intended, & optimizing the code for performance. Additionally, you should configure your application for production settings, such as setting the appropriate environment variables, configuring your database connection settings, & setting up your web server.

Another important consideration is security. You should ensure that your application is secure by implementing security measures such as SSL/TLS encryption, strong authentication mechanisms, & protecting sensitive information. Finally, you should consider the scalability of your application & ensure that it can handle increasing traffic & user loads.

1. Deploying a Frappe application on a server:

Once your application is ready for deployment, you can deploy it on a server. Frappe supports deployment on a variety of platforms, including cloud platforms like AWS, Google Cloud, & Digital Ocean. You can also deploy on your own server or a VPS provider like Linode or Vultr.

To deploy your application, you first need to create a server instance & set up the necessary software stack. This includes installing a web server like Nginx or Apache, a database server like MySQL or PostgreSQL, & Python & other dependencies required by Frappe.

Once the software stack is set up, you can proceed to deploy your Frappe application. This involves copying the application files to the server, configuring the database connection settings, & running the necessary installation & configuration scripts. After this, you can start your application & test that it is working correctly.

2. Best practices for deployment:

To ensure a smooth deployment process & minimize the chances of errors or downtime, there are a few best practices you can follow. First, you should automate as much of the deployment process as possible using tools like Ansible or Docker. This can help ensure consistency across deployments & reduce the likelihood of human error.

You should also follow the principle of immutable infrastructure, which involves creating a new server instance each time you deploy your application instead of modifying an existing one. This can help ensure that your deployment is consistent & reproducible.

Finally, you should monitor your application & server closely to ensure that everything is working as intended. This includes monitoring server resources like CPU & memory usage, as well as application-specific metrics like request rates & error rates.


Frappe is a powerful web framework that offers a wide range of features & capabilities. Whether you are building a simple web application or a complex enterprise solution, Frappe can help you get the job done quickly & efficiently. With its modular architecture, robust database support, & built-in support for ERP features, Frappe is a great choice for any web development project.

Deploying a Frappe application requires careful planning & preparation. By following best practices for deployment, you can ensure that your application is deployed correctly & is secure, scalable, & performant. Utilizing services like Hybrowlabs ERPNext Development Services can further support these efforts and help create tailored solutions using the Frappe Framework for a successful deployment.


1. What are the prerequisites for getting started with Frappe Framework?

Before you start working with Frappe Framework, you need to have a basic understanding of Python programming & web development. You should also be familiar with HTML, CSS, & JavaScript. Additionally, you will need to install Frappe Framework & its dependencies, which can be done using pip, the Python package manager.

2. What are the benefits of using the Frappe Framework?

One of the main benefits of using the Frappe Framework is that it allows developers to build complex business applications quickly & easily. This is achieved through the use of pre-built components, such as user authentication, form generation, & data management, which can be easily customized to fit specific business needs. Frappe Framework also includes a powerful ORM (Object-Relational Mapping) system, which makes it easy to work with databases. Additionally, Frappe Framework has a strong community of developers who contribute to its ongoing development & offer support to those who are using it.

3. How do I create a new Frappe application?

To create a new Frappe application, you can use the Frappe CLI (Command Line Interface) tool. This tool allows you to quickly create a new application with all the necessary files & folders already in place. To create a new application, you will need to run the following command in your terminal:

frappe new-app <app-name>

Once the application is created, you can use the Frappe CLI tool to add new features, such as new pages, forms, & reports.

4. How do I deploy a Frappe application?

Frappe applications can be deployed to a variety of hosting providers, including Heroku, DigitalOcean, & AWS. To deploy a Frappe application, you will need to follow the instructions provided by your hosting provider, as well as configure any necessary environment variables & settings within the Frappe application itself. Frappe also provides a built-in deployment tool called a bench, which can be used to deploy your application to a remote server.

5. How do I contribute to the Frappe Framework?

If you are interested in contributing to the ongoing development of the Frappe Framework, there are several ways to get involved. One way is to contribute code to the Frappe Framework itself, either by submitting bug fixes or new features. Another way to contribute is by contributing to the Frappe documentation, which is hosted on GitHub & can be edited by anyone. Additionally, you can join the Frappe community forum, where you can ask questions & share your experiences with other developers using Frappe Framework.

Similar readings




Advanced RAG 04: Contextual Compressors & Filters



We’re a leading global agency, building products to help major brands and startups, scale through the digital age. Clients include startups to Fortune 500 companies worldwide.


Flat no 2B, Fountain Head Apt, opp Karishma Soci. Gate no 2, Above Jayashree Food Mall, Kothrud, Pune, Maharashtra 38