diff --git a/app/cms/admin.py b/app/cms/admin.py
new file mode 100644
index 0000000..9f8f039
--- /dev/null
+++ b/app/cms/admin.py
@@ -0,0 +1,158 @@
+from cms.models import Page, Section, Sitemap
+from django import forms
+from django.contrib import admin
+from django.utils.html import format_html
+
+_CODE_PREVIEW_TEMPLATE = """
+
+
+
+
+
+
+
+
+
+
+ {ta}
+
+
+"""
+
+
+class CodeEditorWidget(forms.Textarea):
+ class Media:
+ css = {
+ "all": (
+ "https://unpkg.com/codemirror@5.65.5/lib/codemirror.css",
+ "https://unpkg.com/codemirror@5.65.5/theme/dracula.css",
+ )
+ }
+ js = (
+ "https://unpkg.com/codemirror@5.65.5/lib/codemirror.js",
+ "https://unpkg.com/codemirror@5.65.5/mode/javascript/javascript.js",
+ "https://unpkg.com/@babel/standalone/babel.min.js",
+ "/static/admin/js/editor.js",
+ )
+
+ def render(self, name, value, attrs=None, renderer=None):
+ ta = super().render(name, value, attrs, renderer)
+ return format_html(_CODE_PREVIEW_TEMPLATE, name=name, ta=ta)
+
+
+class SectionAdminForm(forms.ModelForm):
+ class Meta:
+ model = Section
+ fields = "__all__"
+ widgets = {"body": CodeEditorWidget()}
+
+
+@admin.register(Section)
+class SectionAdmin(admin.ModelAdmin):
+ form = SectionAdminForm
+
+
+admin.site.register(Page)
+admin.site.register(Sitemap)