diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ee25fb4286b2b49b82f042b54190630c9de2893
--- /dev/null
+++ b/aleksis/apps/alsijil/schema.py
@@ -0,0 +1,61 @@
+import graphene
+from graphene_django import DjangoObjectType
+from graphene_django.forms.mutation import DjangoModelFormMutation
+
+from .forms import LessonDocumentationForm
+from .models import ExcuseType, LessonDocumentation, PersonalNote, ExtraMark
+
+# print([ExcuseType, LessonDocumentation, PersonalNote, ExtraMark])
+
+
+class ExcuseTypeType(DjangoObjectType):
+    class Meta:
+        model = ExcuseType
+
+
+class LessonDocumentationType(DjangoObjectType):
+    class Meta:
+        model = LessonDocumentation
+
+
+class PersonalNoteType(DjangoObjectType):
+    class Meta:
+        model = PersonalNote
+
+
+class ExtraMarkType(DjangoObjectType):
+    class Meta:
+        model = ExtraMark
+
+
+class LessonDocumentationMutation(DjangoModelFormMutation):
+    lesson_documentation = graphene.Field(LessonDocumentationType)
+
+    class Meta:
+        form_class = LessonDocumentationForm
+
+
+class Query(graphene.ObjectType):
+    excuse_types = graphene.List(ExcuseTypeType)
+    lesson_documentations = graphene.List(LessonDocumentationType)
+    personal_notes = graphene.List(PersonalNoteType)
+    extra_marks = graphene.List(ExtraMarkType)
+
+    def resolve_excuse_types(root, info, **kwargs):
+        # FIXME do permission stuff
+        print(ExcuseType.objects.all())
+        return ExcuseType.objects.all()
+
+    def resolve_lesson_documentations(root, info, **kwargs):
+        # FIXME do permission stuff
+        return LessonDocumentation.objects.all()
+
+    def resolve_personal_notes(root, info, **kwargs):
+        # FIXME do permission stuff
+        return PersonalNote.objects.all()
+
+    def resolve_extra_marks(root, info, **kwargs):
+        return ExtraMark.objects.all()
+
+# print("Hello2")
+# schema = graphene.Schema(query=Query)