Viewflow — the low-code for developers with yesterday's deadline

3 min read Original article ↗

Viewflow/turbo

What?

Reusable component library allows to create full-featured business applications in just a few lines of code 


Designed to be easily included in any Django project. Ideal for Corporate and Private Deployments.

Why?

1

Meet yesterday's deadline When you have not much choice. Iterate quickly, deliver a working solution from day one

2

Cut development cost. Focus on your business goals, reuse and customize pre-made building blocks.

3

To be sure that everything is feasible. Retain the ability to use all Django and Python features in a low code project

4

Write as little code as possible. Keep your codebase manageable, understandable, and adaptable to new requirements

tips_and_updates

When?

Quick start right now:

pip install django-viewflow
Add into settings.py
INSTALLED_APPS = [
    '...',
    'viewflow',
]
        
And follow the quickstart guide

How?

Viewflow helps speed up development process

{% extends 'viewflow/base_page.html' %}


{% block page-toolbar-actions %}
   {{ block.super }}
   <!-- additional toolbar actions -->
{% endblock %}


{% block page-menu-app %}
  {{ block.super }}
  <!-- additional sidebar actions -->
{% end block %}


{% block content %}
  <!-- page content -->
{% endblock %}

Start immediately

Simple, and beautiful design system already familiar for millions of users

class UserViewset(
    ExportViewsetMixin,
    DeleteViewMixin,
    ModelViewset
):
  model = User
  create_view_class = CreateUserView
  list_columns = ('first_name', 'last_name',)
  list_filter_fields = ('is_superuser', )
  form_widgets = {
      'department': AjaxModelSelect(
          lookups=['name__istartswith']
      )
  }

  def get_queryset(self):
      return User.objects.exclude(
          removed=True
      ).select_related('groups')
Ready-made and customizable

Class-based composition for views with declaration of behavior in one place

layout = Layout(
    Row('first_name', 'last_name'),
    Row('email', 'phone'),
    FieldSet(
      "Card Details",
      Row(
          Column("card_type", desktop=4),
          Column(
              "card_holder",
              Row(
                  Span("card_number", desktop=10),
                  Span("card_ccv2", desktop=2)),
              Row("card_exp_month", "card_exp_year"),
              desktop=8,
          ),
      ),
    )
    FormSet('addresses', card_desktop=4),
)
Control on layout and logic

Complex data-entry forms without wasting time with HTML or Javascript

class Workflow(flow.Flow):
    start = (
        flow.Start(start_view)
        .Permission("workflow.can_start_request")
        .Next(this.approve)
    )
    approve = (
      flow.View(UpdateProcessView.as_view(
        fields=['comment'])
      )
      .Assign(select_random_admin)
      .Next(this.process)
    )
    process = (
        celery.Job(process_request)
        .Next(this.end)
    )
    end = flow.End()
  
Explicitly describe people collaboration

An additional thin architectural layer on top of standard Django Model-ViewTemplate for simple control of dependency logic

Who?

Our happy customers

+100 more

Where?

Viewflow is a tool for developers who sit next to real users. It's well-suited for for a small team of developers working on real-world business automation

Viewflow helps you collaborate with people to get a working solution from day one of development. Deploy and iterate daily with your users. You can choose from a variety of out-of-the-box components or implement custom solutions, all while leveraging the power of Python and Django and maintaining a small code base

Have a question?

Contact Us!

Mikhail Podgurskiy

Software developer

  • Came to idea of workflow library when fighting with Workflows GUI in 2004
  • Spent 5 years in the banking industry to shoulder-to-shoulder work with business on automation.
  • Wrote open sourced django-fsm library to reduce pain of business apps development at 2010