Skip to main content

Flask scaffold engine

Project description

Lombik icon

Lombik

Lombik is a practical scaffold engine for Flask that saves you from hours on hours of configurations, integrations and a messy project structure.

It leans heavily into a hypermedia-first approach, using Jinja2, template filters, HTMX, and Tailwind to keep logic close to the UI and reduce frontend complexity.

To get started run these 4 commands:

pip install lombik
lombik createapp my-new-app
cd my-new-app
flask run --debug

And start developing.

Structure

Lombik is organized around feature modules. Each module is a self-contained domain containing its own routes, APIs, templates, and logic. By default, you'll get 3 modules:

  • Auth
  • Admin
  • Core

Each of these modules follow the same file structure:

__init__.py

Defines the Flask blueprint used across the module.


routes.py

Defines page routes.

Routes represent full page loads and UI entry points.


queries.py

Handles data retrieval.

Typically used for database reads and returning data or partial HTML (often via HTMX).


actions.py

Handles state changes.

Used for operations that modify data such as POST, PUT, PATCH, and DELETE.


The toolkit

Inside the lombik directory you'll find the engine of the application. Here some of the default behaviors are defined and yo ucan change them to your liking.

I leave it up to you to read through it and get familiar with the engine. With that said, I'd like to show some examples to display waht it's like to build with lombik.

Dates & time handling

Instead of formatting timestamps in the backend, you do it directly in the template:

{{ created_at | localtime }} → 2026-05-19 05:15
{{ created_at | onlydate }} → 2026-05-19
{{ created_at | onlytime }} → 05:15
{{ created_at | shortdatetime }} → May 19 05:15
{{ created_at | timesince }} → Just now // 2 minutes ago // 21 hours ago etc.

Everything defaults to localtime, meaning UTC from the backend is automatically shown in the user’s timezone.

Lombik expects the user’s timezone to be available via g. To change: lombik/filters/_localize.

String helpers

Make frontend less painful

{{ g.user.full_name | proper }}

john_doe → John Doe

{{ g.user.first_name | possessive }}

john → john's
lucas → lucas'

You can chain them:

{{ g.user.full_name | proper | possessive }}

john_doe → John Doe's

You can also normalize user input:

{{ user_input | normalize }}

Hello, world → hello_world email@example.com → email_example_com

In lombik, Jinja is heavily used to display UI elements and these built in template filters make it very easy and re-usable.

As an example, let's assume you have two objects:

user.name = john_doe
created_at = 2026-06-01 13:00:00

In a single line like this you can format it:

{{ user.name | proper | possessive }} response • {{ created_at | timesince }} --> John Doe's response • 21 minutes ago


There is more

But i don't have the time to write it now. I will finish this README at some point and make a detailed overview of what lombik has to offer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lombik-2.0.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lombik-2.0.0-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file lombik-2.0.0.tar.gz.

File metadata

  • Download URL: lombik-2.0.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for lombik-2.0.0.tar.gz
Algorithm Hash digest
SHA256 53d7383ccb6619bfef7a871d850be1f3d577453fe7d6ac629065723dece2fd56
MD5 3c77f423eedcbdfb6c5626ca24169493
BLAKE2b-256 6ec60bbd201c62862cf84e002787d2b2d6282d5c6830019a339d21554115fcd7

See more details on using hashes here.

File details

Details for the file lombik-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: lombik-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 28.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for lombik-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40663969972d1121d6edcbf3e839b0246b5a8353c60e4ebbd53e92eaf7be112a
MD5 f777a8fef0c542ccc7694b712a5fdfe9
BLAKE2b-256 b192c74d19eaf52dace25c6e50420b4c27170f61ca119db3dddb0e435b70e960

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page