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¶
Why cubicweb ? Concepts
Cubes: What is a cube | How to create a cube | Cubes general structure
The Registeries: What are registries | How to use registries | All available registries
A Data-centric framework: Data schema with YAMS | RQL
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¶
Data in CubicWeb: The data modelization | Data as objects
Importation: standard import | massive store
Security¶
Security: The permission model | Permissions management with Pyramid | CSRF protection
Migrate your schema¶
Each time the schema is updated, two action are needed : update the underlying tables and update the corresponding data.
Migrations: Execute and write script migration | Debug script migration
Cubicweb configuration files¶
Base configuration: The all-in-one.conf | The Pyramid configuration
Advanced configuration: The database connection pooler
Common Web application tools¶
Test cubicweb Test pyramid
Caching Cache management
Internationalisation Localize your application
Full text indexation The searchbar
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¶
Deployment: Raw python deployment | Working with Docker | Working with Kubernetes |
Administration: Cubicweb-ctl tool | Sources configuration | Backup
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