diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..2108e34
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,30 @@
+name: CI
+
+on:
+ pull_request:
+ branches: [main, development]
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.12", "3.13"]
+ env:
+ PYTHONPATH: .
+
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@v6
+ with:
+ enable-cache: true
+ cache-dependency-glob: "uv.lock"
+ python-version: ${{ matrix.python-version }}
+
+ - name: Install dependencies
+ run: uv sync --locked
+
+ - name: Run tests
+ run: uv run pytest -rs
diff --git a/.gitignore b/.gitignore
index ffcda29..4940d00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,7 +37,6 @@ package-lock.json
pnpm-lock.yaml
# CSS/JS compiled files
-unfold_extra/static/*/css/styles.css
unfold_extra/static/*/js/bundle.js
# Environment
diff --git a/.sourcery.yaml b/.sourcery.yaml
new file mode 100644
index 0000000..85c47ea
--- /dev/null
+++ b/.sourcery.yaml
@@ -0,0 +1,6 @@
+# Sourcery configuration
+# https://docs.sourcery.ai/
+
+# Ignore compiled/generated files
+ignore:
+ - unfold_extra/static/unfold_extra/css/styles.css
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..0f05464
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,304 @@
+=========
+Changelog
+=========
+
+All notable changes to django-unfold-extra are documented here.
+This project adheres to `Semantic Versioning
{{ instance.subtitle }}
{% endif %} + {% if instance.cta_url %} + {{ instance.cta_label|default:"Learn more" }} + {% endif %} + {% for btn in instance.buttons.all %} + {{ btn.label }} + {% endfor %} +