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.

First steps

The impatient developer will move right away to Installation of a CubicWeb environment then to Set-up of a CubicWeb environment.

Cubicweb core principle

Routing

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

Security

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

Development

  • 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

Reference API

CubicWeb’s ecosystem

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

How to contribute

  • Chat on the matrix room #cubicweb:matrix.logilab.org

  • 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

  • CHANGELOG