diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fd36b4ff33648a752ceb1078c6e3a563d0ab68d1..874f3952104e5d8dede9d9b3fdf6fd6aa11fb4d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -51,6 +51,10 @@ test_python310:
   image: python:3.10
 
 
+test_python312:
+  extends: .test_python
+  image: python:3.12
+
 
 test_python311:
   extends: .test_python
@@ -71,9 +75,6 @@ test_python311:
   after_script:
     - pip install twine
     - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
-  artifacts:
-    paths:
-      - "*.whl"
 
 upload_python311_armv7l:
   image: zoo.smok.co/build/build:latest
@@ -106,8 +107,16 @@ build_python311:
   image: python:3.11
 
 
+build_python312:
+  extends: .build_python
+  image: python:3.12
+
+
 build_python311_armv7l:
   extends: .build_python
   image: zoo.smok.co/build/build:armv7l-python3.11
   after_script:
     - echo "Do nothing"
+  artifacts:
+    paths:
+      - "*.whl"
diff --git a/docs/changelog.rst b/docs/changelog.rst
index e2ce0b56310b3f419ea40dbc7498adcd300c66a8..bb09bf180b7df8842daaf5a6f3f3ef046e86ec35 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -1,6 +1,11 @@
 Changelog
 =========
 
+v3.1.1
+------
+
+* added support for Python 3.12
+
 v3.1.0
 ------
 
diff --git a/docs/conf.py b/docs/conf.py
index 0fc9bfd68e08775caf02ba8d980685cfca05709c..76edc1c6f776dde2789d1269c149f18aea8e1ca3 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -18,11 +18,11 @@ sys.path.insert(0, os.path.abspath('..'))
 # -- Project information -----------------------------------------------------
 
 project = 'MiniJSON'
-copyright = '2021 Dronehub Group sp. z o. o.'
+copyright = '2021 Dronehub Group sp. z o. o., 2022-2024 SMOK sp. z o. o.'
 author = 'Piotr Maślanka'
 
 # The full version, including alpha/beta/rc tags
-release = '3.1.0'
+release = '3.1.1a1'
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/setup.cfg b/setup.cfg
index 1cfea1ac338aa372bb0cd2a2bc6de962c2cf5a3e..7760fd5ca8da1cb4d3aa3c2764431f18c7d66f7b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
 # coding: utf-8
 [metadata]
-version = 3.1.0
+version = 3.1.1a1
 name = minijson
 long_description = file: README.md
 long_description_content_type = text/markdown; charset=UTF-8
@@ -38,4 +38,4 @@ max-line-length = 100
 universal = 0
 
 [options]
-python_requires = !=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*
+python_requires = !=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*