Forest Admin: Django Admin Alternative
Tags: django, python, adminpanel, startup
Published: 2021-10-18 14:07:14

Internal tools are the gateway between products and users despite remaining hidden to the latter. Admin panels, dashboards, and other tools allow administrators to solve customer problems, perform various operations, edit and publish content, ensure data security, and much more.

As they are so important, it shouldn’t come as a surprise that on average, developers spend more than 30% of their time building internal tools, assuming they code everything from scratch. Is it the most efficient way? At Forest Admin we don’t think so as we have witnessed multiple times that an off-the-shelf solution proves to be much more effective. And it’s safe to say that the creators of Django Admin would agree with us, as, quoting the philosophy behind this automatically generated internal tool solution for Django applications:

Generating admin sites for your staff or clients to add, change, and delete content is tedious work that doesn’t require much creativity. For that reason, Django entirely automates creation of admin interfaces for models.


##About Django Admin

Django was created in a newsroom environment at the Lawrence Journal-World newspaper, and giving site managers the ability to add, edit, and manage content in a way that is easy and as much automated as possible was the priority of its creators. That’s why, they equip the high-level Python web framework with a built-in admin interface that allows for basic CRUD operations, authenticating users, handling forms, managing content, and performing other tasks that are typical for admin panels. Once set up, Django Admin can be widely customized but Django doesn’t recommend using it above the basic organization’s internal management system. 


##Forest Admin: An alternative to Django Admin

Django Admin is not the only internal tool solution for applications developed in Django. At Forest Admin, we have recently released a [Django agent](https://www.forestadmin.com/integrations/django?utm_source=referral&utm_medium=devto&utm_campaign=django-admin-alternative&utm_content=django-lp) that joins the growing list of data sources that are compatible with Forest Admin, including Ruby on Rails, Node.js, Stripe, PostgreSQL, MySQL, MongoDB, and Microsoft SQL Server.

As a quick reminder, Forest Admin’s architecture is based on API. It consists of four components: the database, the admin backend, the Forest Admin API server, and the Forest Admin UI server. Users’ data is only hosted on their end and the user browser, it never transits through Forest Admin servers. That way, you don’t have to choose between the security and convenience of a SaaS tool - you have both.

To start, you can either generate a Node.js application on your local machine that includes a RESTful API that connects to your database or install Forest Admin using data sources mentioned above, including Django. 

[Check our new open-source Django Agent repository on GitHub](https://github.com/ForestAdmin/django-forestadmin) and give it a star ⭐ if you like this new Forest Admin project.


#Django Admin vs. Forest Admin

Both Django Admin and Forest Admin can be used as ready-to-use internal tool solutions. Django Admin is automatically generated, and Forest Admin can be easily connected to any application. However, both solutions differ in terms of functionalities, UI, security, and other aspects. Let us have a closer look at them.  


##Technical Aspects

###Architecture

* Forest Admin: API-based. The UI fetches the data from an API connected to the data source.
* Django Admin: Server-side rendering application.

###SaaS/On-premises

* Forest Admin: SaaS UI
* Django Admin: On-premises

###Open Source

* Forest Admin: Yes
* Django Admin: Yes

##Setup

###Requirements

* Forest Admin: A Django backend application if you want to use the Django agent. For other tech stacks, you either need a database (PostgreSQL, MySQL, MicrosoftSQL, MongoDB) or another natively supported backend technology: Ruby on Rails, Node.js Express/Sequelize and Node.js Express/Mongoose.
* Django Admin: A Django backend application.

###Onboarding

* Forest Admin: Easy in-app onboarding.
* Django Admin: [Watch the installation video.](https://www.youtube.com/watch?v=W34Xf5P7BAo)

##Layout:

###Visual Builder:
* Forest Admin: Yes, with a robust Layout Editor, a no-code visual builder.

![Forest Admin UI.](https://s3-eu-west-1.amazonaws.com/blog.forestadmin.com/2021/10/forest-admin-dashboard-editor-mode-1-.png)
Forest Admin UI. [Source: Forest Admin Live Demo.](https://app.forestadmin.com/livedemo)

* Django Admin: No, you need to code the UI customization.


![Django Admin UI.](https://s3-eu-west-1.amazonaws.com/blog.forestadmin.com/2021/10/django-admin-users-list.png)
The default Django Admin UI. Source: Django Admin documentation.

###CRUD + Pagination

* Forest Admin: Out of the box.
![Forest Admin UI.](https://s3-eu-west-1.amazonaws.com/blog.forestadmin.com/2021/10/forest-admin-crud-1-.png)
Forest Admin UI. [Source: Forest Admin Live Demo.](https://app.forestadmin.com/livedemo)

###Search and Filtering
* Forest Admin: Out of the box.
![Forest Admin UI.](https://s3-eu-west-1.amazonaws.com/blog.forestadmin.com/2021/10/Forest-Admin-Search-1-.png)
Forest Admin UI. [Source: Forest Admin Live Demo.](https://app.forestadmin.com/livedemo)
* Django Admin: Requires UI definition in your Django application.

​​###Segments

* Forest Admin: Out of the box.
* Django Admin: Requires a detailed definition in your Django application using the filters.

###Themes

* Forest Admin: Dark and light themes available.
![Forest Admin UI.](https://s3-eu-west-1.amazonaws.com/blog.forestadmin.com/2021/10/forest-admin-dark-mode-1-.png)
The dark mode of the Forest Admin UI. [Source: Forest Admin Live Demo.](https://app.forestadmin.com/livedemo)
* Django Admin: Dark and light themes available, style fully customizable with CSS.

##Data connectivity

###ORMs

* Forest Admin: Django ORM
* Django Admin: Django ORM

###SaaS API

* Forest Admin: Forest Admin provides native integrations to and it's simple to add more through the Smart Features.
* Django Admin: Requires implementing a "facade" to retrieve and edit the 3rd party data.

##Security

###Permissions

* Forest Admin: Real RBAC system with Roles and Teams, provided out of the box, configurable in the UI. The API is automatically protected according to the configured permissions. These permissions can then be fully delegated to the Operations Manager or Product Manager. SSO available.
* Django Admin: Django comes with a built-in permissions system. It provides a way to assign permissions to specific users and groups of users. More info available here in the  [Django Admin documentation](https://docs.djangoproject.com/en/3.2/topics/auth/default/#permissions-and-authorization).

###Authentication

* Forest Admin: User/Password, Google Login, SAML-based SSO for Organisations.
![Forest Admin login page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3mleyexrcfutshjkone.png)
[Forest Admin login page](https://app.forestadmin.com/login?utm_source=referral&utm_medium=devto&utm_campaign=django-admin-alternative&utm_content=blog-explorer)
* Django Admin: User/Password.

###Two-factor authentication

* Forest Admin: Enforced 2FA out of the box.
* Django Admin: Not out of the box, probably possible via custom implementation.

###Auto Logout

* Forest Admin: Out of the box.
* Django Admin: Not out of the box, probably possible via custom implementation.


##Resources

* Forest Admin: [Documentation](https://docs.forestadmin.com/documentation/?utm_source=referral&utm_medium=devto&utm_campaign=django-admin-alternative&utm_content=documentation), [Live Demo](https://app.forestadmin.com/livedemo), [GitHub](https://github.com/ForestAdmin/django-forestadmin).
* Django Admin: [Documentation](https://docs.djangoproject.com/en/3.2/).

##When Django Admin may be a better fit for your project

* You have a simple service managed by a small team, and basic CRUD functionalities are all you need. In such a case, Django Admin doesn’t have advantages over Forest Admin but this free open-source solution may just fit your needs. 
* You don’t need dashboards or modern and frequently updated UI with WYSIWYG layout editor for non-technical team members. 


##When you should choose Forest Admin

* You need a robust internal tool that goes beyond basic CRUD operations and offers advanced functionalities such as an invitation system with transactional emails, multiple layouts for different teams, permissions per custom actions, dynamic forms per custom actions, actions approvals, notes and annotations on records, scoped data based on the user, and more.
* You need a highly secure solution that helps you ensure compliance with regulations like GDPR. You want both user-friendliness of a SaaS product but you can’t compromise security. Forest Admin offers enforced 2FA and the enterprise-grade SSO. Thanks to its unique architecture, users’ data is only hosted on their end and the user browser, it never transits through Forest Admin servers.
* You need a flexible tool that grows with your company and that can be used and managed by thousands of users, also from non-technical teams like sales or customer support that need a user-friendly WYSIWYG editor. 

##Django Admin vs. Forest Admin: Conclusion 

Now, you should have learned enough about both solutions in order to make an informed decision. If you feel like you need more time, answering these questions should steer you to the right direction.

❓ What is the size of my project, and how many people from my team are going to use internal tools?

❓ Do my team members need a WYSIWYG editor or do all of them have tech skills and time to work on internal tools?

❓ Do I need basic CRUD operations or more advanced features?

❓ Will the internal tool scale together with my product and users?

❓ Can I easily find support and documentation if any issues arise?

If you decide to give Forest Admin a try, [sign up for free](https://app.forestadmin.com/signup?utm_source=referral&utm_medium=devto&utm_campaign=django-admin-alternative&utm_content=blog-explorer).  🌲🌲🌲 Please keep in mind that our Django agent is currently in beta and we’ll appreciate your feedback!