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
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 | Working with debian packages
- 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
- CHANGELOG