A fully-featured workflow app, built in Python

In this writeup, I’ll show you how I used Anvil to build a large-scale ticketing system entirely in Anvil, integrating mock ups from professional designers into the drag-and-drop designer.

Anvil makes it simple to build large-scale, shippable new products with Python.

The end result

Here it is! A fully-featured ticketing system, built entirely in Anvil.



Loading video...

Click the following link to clone the finished app and explore it yourself.


The process

Below, I’ve outlined the process involved in building the ticketing system, from concept to final product.

Read on to learn how you can build your own business applications with Anvil.

1. Requirements

The first step is to decide on the key requirements for your system:

My requirements for the ticketing system

My requirements for the ticketing system

Next, work through these requirements and decide on a list of screens that will satisfy each requirement.

I decided my ticketing system would need these screens:

  • Dashboard
  • Ticket inbox
  • Single ticket view
  • Customers view
  • Add a ticket view

2. Wireframes

Next, sketch up some simple wireframes for each of these screens, ready to send to your designers.

Here’s my wireframe for the ticket inbox:

My wireframe for the ticket inbox design

My wireframe for the ticket inbox

3. Professional design

Send your wireframes to a professional designer to provide mock ups of each of your screens.

Here’s the mock up for the wireframe above:

The ticket inbox design

The mock up for the ticket inbox

4. Build the UI

The next step is to build your UI.

Anvil makes it simple to integrate custom designs into an app built with the drag-and-drop designer. For a step-by-step example on customising the look and feel of your Anvil apps, see this post on hand-drawn web apps.

Dropping components into the designer

Here’s the final view of the ticket inbox:

The final ticket inbox

The final ticket inbox

5. Database

Next, you’ll want to set up your database. Anvil’s Data Tables are a full database system built on top of PostgreSQL, with a nice GUI for creating, editing and deleting tables. This makes it simple to define your schema.

Getting my database set up took a matter of minutes:

Setting up the database schema

6. Build the application logic with Python

Finally, the fun bit - writing the logic of your application with Python.

Anvil lets you write Python that runs in the browser, Python that runs on the server, and call your server functions from client-side Python with just one line of Python.

Running Python in the browser

Writing Python that runs in the browser

Wiring up the UI and components was great fun, and surprisingly simple - the backend of the ticketing system is less than 300 lines of Python.

Build your new product with Anvil

Anvil makes building large-scale, powerful applications simple, straightforward and fast. It does this by automating of a lot of the things that make web development using traditional tools slow, and painful. It can power anything from small, simple web apps to large-scale, fully-featured business applications.

You can build your whole new product yourself, all your need is a little Python.

This ticketing system has all the features of a traditional “CRUD” app, is rather nice on the eyes (if I do say so myself..) and it’s very powerful. It’s backed by Postgres, email-driven, and has built-in user authentication. It’s powered by Python running in the browser, as well as on the server, meaning that it’s extremely customisable - clone it into your account, and have a play around for yourself:


Want to dig into how this app works? Our tutorials show you all the pieces this app is made from, and more: