diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..fa708ea
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,41 @@
+[build-system]
+build-backend = "flit_core.buildapi"
+requires = ["flit_core >=3.8.0,<4"]
+
+[project]
+name = "rougail.structural_bitwarden"
+version = "0.0.0"
+authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
+readme = "README.md"
+description = "Rougail structural Bitwarden"
+requires-python = ">=3.8"
+license = {file = "LICENSE"}
+classifiers = [
+ "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3",
+ "Operating System :: OS Independent",
+ "Natural Language :: English",
+ "Natural Language :: French",
+
+]
+dependencies = [
+ "rougail >= 1.1,<2",
+ "rougail-user-data-bitwarden >= 0.0,<2",
+]
+
+[project.urls]
+Home = "https://forge.cloud.silique.fr/stove/rougail-structural-bitwarden"
+
+[tool.commitizen]
+name = "cz_conventional_commits"
+tag_format = "$version"
+version_scheme = "pep440"
+version_provider = "pep621"
+update_changelog_on_bump = true
+changelog_merge_prerelease = true
diff --git a/src/rougail/structural_bitwarden/__init__.py b/src/rougail/structural_bitwarden/__init__.py
new file mode 100644
index 0000000..d5d2b22
--- /dev/null
+++ b/src/rougail/structural_bitwarden/__init__.py
@@ -0,0 +1,22 @@
+"""
+Silique (https://www.silique.fr)
+Copyright (C) 2025
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see .
+"""
+from .object_model import Variable
+
+
+__all__ = ("Variable",)
+
diff --git a/src/rougail/structural_bitwarden/config.py b/src/rougail/structural_bitwarden/config.py
new file mode 100644
index 0000000..e5f511a
--- /dev/null
+++ b/src/rougail/structural_bitwarden/config.py
@@ -0,0 +1,32 @@
+"""
+Silique (https://www.silique.fr)
+Copyright (C) 2025
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see .
+"""
+
+
+def get_rougail_config(
+ *,
+ backward_compatibility: bool = True, # pylint: disable=unused-argument
+) -> dict:
+ return {
+ "name": "bitwarden",
+ "process": "structural",
+ "level": 90,
+ }
+
+
+__all__ = ("get_rougail_config",)
+
diff --git a/src/rougail/structural_bitwarden/object_model.py b/src/rougail/structural_bitwarden/object_model.py
new file mode 100644
index 0000000..ce7370b
--- /dev/null
+++ b/src/rougail/structural_bitwarden/object_model.py
@@ -0,0 +1,31 @@
+"""
+Silique (https://www.silique.fr)
+Copyright (C) 2025
+
+distribued with GPL-2 or later license
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+from typing import Optional
+from pydantic import BaseModel
+
+
+class Variable(BaseModel):
+ bitwarden: bool=False
+
+
+__all__ = ('Variable',)
+
+