CubicWeb - The Semantic Web is a construction game!

CubicWeb is a semantic web application framework, licensed under the LGPL, that empowers developers to efficiently build web applications by reusing components (called cubes) and following the well known object-oriented design principles.

Main Features

  • an engine driven by the explicit data model of the application,
  • a query language named RQL similar to W3C’s SPARQL,
  • a selection+view mechanism for semi-automatic XHTML/XML/JSON/text generation,
  • a library of reusable components (data model and views) that fulfill common needs,
  • the power and flexibility of the Python programming language,
  • the reliability of SQL databases, LDAP directories and Mercurial for storage backends.

Built since 2000 from an R&D effort still continued, supporting 100,000s of daily visits at some production sites, CubicWeb is a proven end to end solution for semantic web application development that promotes quality, reusability and efficiency.

Cubicweb core principle


Cubicweb offers two different ways of rooting : one internal to CubicWeb and a new one with pyramid.

  • Principle: cubicweb and pyramid | the CW request object | the pyramid request object | encapsulation of the CW request in the pyramid request bw_compat and the options to use, fallback when CW doesn’t find anything |
  • CubicWeb routing: url publishers | url rewriters
  • Pyramid routing: general principles | predicates | tweens | content negociation

Front development

  • With Javascript / Typescript (using React): general principle how to install and integrate js tooling into CW cwelements | rql browser
  • With Pyramid: general integration with CubicWeb | the renderers | Jinja2 templates | example of usages with CW
  • With CubicWeb Views: Introduction | How to select a views with registers | Facets | How to use javascript inside CW views | Customize CSS
  • RDF: the RDF adaptator | RDFLib integration into CW

Data model and management


Migrate your schema

Each time the schema is updated, two action are needed : update the underlying tables and update the corresponding data.

Cubicweb configuration files

Common Web application tools


  • Command line tool: cubicweb-ctl
  • Performences: Profiling your application
  • Debugging: Command line options for debugging | Debugging configuration directly in the code | Pyramid debug toolbar | Debug channels
  • Good pratices: tox | check-manifest | mypy | flake8 et black
  • CI: Gitlab-ci integration |

System administration

CubicWeb’s ecosystem

CubicWeb is based on different libraries, in which you may be interested :

How to contribute

  • Chat on the matrix room
  • Visio Weekly meeting every Tuesday afternoon (UTC+1). The link is shared in the matrix room
  • Discuss on the mailing-list
  • Discover on the blog
  • Contribute on the forge
  • Find published python modules on pypi
  • Find published npm modules on npm