Collective work of the Normes & standards working group of the SNE digital commission.
The quality control lists for digital books aim to :
- ensure access to digital books for as many readers as possible, without discrimination as to age, skills, physical or mental abilities, culture, equipment or access methods;
- to build a common quality standard for digital books
- make it easier for professionals to take ownership and give meaning to the actions undertaken;
This work is based on the Opquast Checklist - web quality assurance, 240 rules to improve your sites and take better account of your users - Version 4 - 2020-2025
## Licence The rules are published under a Creative Commons BY-SA licence. You may use them freely, provided you maintain authorship of the content, via a link to :
- https://www.opquast.com. Opquast is a French registered trademark.
- https://github.com/edrlab/qualebook
- https://creativecommons.org/licenses/by-sa/4.0/
JSON and CSV outputs are used to export rule data in structured formats that can be consumed by other systems or used for data analysis.
The CSV export contains all quality rules with 16 columns (semicolon-separated):
| Column | Description | Type |
|---|---|---|
title |
Rule title | String |
abstract |
Brief description of the rule | String |
categories |
Rule categories (semicolon-delimited list) | Array |
agrege |
Aggregation identifier | String |
description |
Detailed rule description | String |
actif |
Active status (1 = active, 0 = inactive) | Boolean |
tags |
Labels/tags (semicolon-delimited list, e.g., "Legality", "Accessibility") | Array |
objectif |
Objectives/goals (semicolon-delimited list) | Array |
Meo |
Best Implementation Practice guidance (semicolon-delimited list) | Array |
Controle |
Validation/control criteria (semicolon-delimited list) | Array |
Source |
Reference sources (semicolon-delimited list) | Array |
Referentiel |
Standards and specifications (semicolon-delimited list, e.g., EPUB, WCAG) | Array |
epubcheck |
EPUB validation status | Boolean |
ace |
Accessibility checker status | Boolean |
humancheck |
Human review status | Boolean |
steps |
Process steps (semicolon-delimited list) | Array |
- French: https://edrlab.github.io/qualebook/fr/rules/index.csv
- English: https://edrlab.github.io/qualebook/en/rules/index.csv
-
Download the CSV file: Access the URL above for your desired language.
-
Import into spreadsheet software: Open in Excel, Google Sheets, or LibreOffice Calc using semicolon as the delimiter.
-
Parse array fields: Fields marked as "Array" contain multiple values separated by semicolons. Split by
;when processing programmatically. -
Use cases:
- Rule filtering by category, tags, or status
- Compliance reporting
- Integration with QA systems
- Data analysis and reporting
The JSON export follows the JSON Feed v1.1 standard and contains all 16 rule fields per item:
Root object fields:
version: JSON Feed versiontitle: Feed titledescription: Feed descriptionhome_page_url: Homepage URLfeed_url: JSON feed URLitems: Array of rule objects
Each rule item contains:
title,abstract,description,agrege: Text fieldscategories,tags,steps,objectif,Meo,Controle,Source,Referentiel: Array fieldsactif,epubcheck,ace,humancheck: Boolean fieldsdate_published,date_modified: ISO 8601 timestampsid,url: Unique identifier and link to rule
- French: https://edrlab.github.io/qualebook/fr/rules/index.json
- English: https://edrlab.github.io/qualebook/en/rules/index.json
{
"version": "https://jsonfeed.org/version/1.1",
"title": "Qualebook Rules Database",
"description": "Quality checklist for digital books - Rule database",
"home_page_url": "https://edrlab.github.io/qualebook",
"feed_url": "https://edrlab.github.io/qualebook/en/rules/index.json",
"items": [
{
"title": "Copyright and reuse information is available",
"date_published": "2024-01-15T10:30:00Z",
"date_modified": "2025-03-10T14:20:00Z",
"id": "https://edrlab.github.io/qualebook/en/rules/001/",
"url": "https://edrlab.github.io/qualebook/en/rules/001/",
"abstract": "Users must be informed of the rights governing the reuse of content",
"categories": ["rights management"],
"agrege": "O4094-E010",
"description": "Rule #01",
"actif": 1,
"tags": ["Legality", "Discoverability"],
"objectif": ["Inform users about conditions of content publication"],
"Meo": ["Add metadata to mark copyright information"],
"Controle": ["Verify presence of copyright notice"],
"Source": ["Opquast"],
"Referentiel": ["EPUB 3", "Dublin Core"],
"epubcheck": false,
"ace": false,
"humancheck": true,
"steps": ["Editorial planning", "Digital production"]
}
]
}-
Fetch the JSON: Download or stream the JSON feed URL.
-
Parse programmatically: Use a JSON parser to access rule data.
-
JavaScript example (fetch and filter by tag):
fetch('https://edrlab.github.io/qualebook/en/rules/index.json') .then(response => response.json()) .then(data => { const a11yRules = data.items.filter(rule => rule.tags.includes('Accessibility') ); console.log(`Found ${a11yRules.length} accessibility rules`); a11yRules.forEach(rule => { console.log(`${rule.title}: ${rule.abstract}`); }); });
-
Python example (search and analyze):
import requests response = requests.get('https://edrlab.github.io/qualebook/en/rules/index.json') data = response.json() # Find all active rules with humancheck status reviewed_rules = [ rule for rule in data['items'] if rule['actif'] == 1 and rule['humancheck'] ] # Group by category by_category = {} for rule in reviewed_rules: for cat in rule['categories']: if cat not in by_category: by_category[cat] = [] by_category[cat].append(rule['title']) for category, rules in by_category.items(): print(f"{category}: {len(rules)} rules")
-
Use cases:
- Build custom rule viewers/dashboards
- Integrate rules into publishing workflows
- Create rule recommendation systems
- Perform automated compliance checks
- Feed data into other applications
This repo documentation is available as deepwiki
Hugoplate is a free starter template built with Hugo, and TailwindCSS, providing everything you need to jumpstart your Hugo project and save valuable time.
Made with ♥ by Zeon Studio
To start using this template, you need to have some prerequisites installed on your machine.
We build this custom script to make your project setup easier. It will create a new Hugo theme folder, and clone the Hugoplate theme into it. Then move the exampleSite folder into the root directory. So that you can start your Hugo server without going into the exampleSite folder. Use the following command to setup your project.
npm run project-setupInstall all the dependencies using the following command.
npm installStart the development server using the following command.
npm run devCopyright (c) 2023 - Present, Designed & Developed by Zeon Studio
Code License: Released under the MIT license.