diff --git a/static/css/saburly.css b/about/__init__.py
similarity index 100%
rename from static/css/saburly.css
rename to about/__init__.py
diff --git a/about/__pycache__/__init__.cpython-310.pyc b/about/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..88495449
Binary files /dev/null and b/about/__pycache__/__init__.cpython-310.pyc differ
diff --git a/about/__pycache__/admin.cpython-310.pyc b/about/__pycache__/admin.cpython-310.pyc
new file mode 100644
index 00000000..d303a5b3
Binary files /dev/null and b/about/__pycache__/admin.cpython-310.pyc differ
diff --git a/about/__pycache__/apps.cpython-310.pyc b/about/__pycache__/apps.cpython-310.pyc
new file mode 100644
index 00000000..deb8406d
Binary files /dev/null and b/about/__pycache__/apps.cpython-310.pyc differ
diff --git a/about/__pycache__/models.cpython-310.pyc b/about/__pycache__/models.cpython-310.pyc
new file mode 100644
index 00000000..b7c187ad
Binary files /dev/null and b/about/__pycache__/models.cpython-310.pyc differ
diff --git a/about/admin.py b/about/admin.py
new file mode 100644
index 00000000..8c38f3f3
--- /dev/null
+++ b/about/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/about/apps.py b/about/apps.py
new file mode 100644
index 00000000..d0190e6b
--- /dev/null
+++ b/about/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AboutConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'about'
diff --git a/about/migrations/0001_initial.py b/about/migrations/0001_initial.py
new file mode 100644
index 00000000..9980f98b
--- /dev/null
+++ b/about/migrations/0001_initial.py
@@ -0,0 +1,29 @@
+# Generated by Django 5.0.8 on 2024-09-07 14:49
+
+import django.db.models.deletion
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('wagtailcore', '0094_alter_page_locale'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AboutPage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+ ('about', wagtail.fields.RichTextField(blank=True)),
+ ('origin', wagtail.fields.RichTextField(blank=True)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=('wagtailcore.page',),
+ ),
+ ]
diff --git a/about/migrations/0002_rename_about_aboutpage_af1img_and_more.py b/about/migrations/0002_rename_about_aboutpage_af1img_and_more.py
new file mode 100644
index 00000000..a7ed50ff
--- /dev/null
+++ b/about/migrations/0002_rename_about_aboutpage_af1img_and_more.py
@@ -0,0 +1,44 @@
+# Generated by Django 5.0.8 on 2024-09-08 18:02
+
+import wagtail.fields
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('about', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='about',
+ new_name='af1img',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='origin',
+ new_name='af1text',
+ ),
+ migrations.AddField(
+ model_name='aboutpage',
+ name='af1title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='aboutpage',
+ name='af2img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='aboutpage',
+ name='af2text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='aboutpage',
+ name='af2title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ ]
diff --git a/about/migrations/0003_rename_af1img_aboutpage_section_one_img_and_more.py b/about/migrations/0003_rename_af1img_aboutpage_section_one_img_and_more.py
new file mode 100644
index 00000000..bda9fe04
--- /dev/null
+++ b/about/migrations/0003_rename_af1img_aboutpage_section_one_img_and_more.py
@@ -0,0 +1,43 @@
+# Generated by Django 5.0.8 on 2024-09-10 16:07
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('about', '0002_rename_about_aboutpage_af1img_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af1img',
+ new_name='section_one_img',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af1text',
+ new_name='section_one_text',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af1title',
+ new_name='section_one_title',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af2img',
+ new_name='section_two_img',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af2text',
+ new_name='section_two_text',
+ ),
+ migrations.RenameField(
+ model_name='aboutpage',
+ old_name='af2title',
+ new_name='section_two_title',
+ ),
+ ]
diff --git a/static/css/saburly.d41d8cd98f00.css b/about/migrations/__init__.py
similarity index 100%
rename from static/css/saburly.d41d8cd98f00.css
rename to about/migrations/__init__.py
diff --git a/about/migrations/__pycache__/0001_initial.cpython-310.pyc b/about/migrations/__pycache__/0001_initial.cpython-310.pyc
new file mode 100644
index 00000000..0c7b4982
Binary files /dev/null and b/about/migrations/__pycache__/0001_initial.cpython-310.pyc differ
diff --git a/about/migrations/__pycache__/0002_rename_about_aboutpage_af1img_and_more.cpython-310.pyc b/about/migrations/__pycache__/0002_rename_about_aboutpage_af1img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..6045d778
Binary files /dev/null and b/about/migrations/__pycache__/0002_rename_about_aboutpage_af1img_and_more.cpython-310.pyc differ
diff --git a/about/migrations/__pycache__/0002_rename_aboutaboutpage_aboutpage.cpython-310.pyc b/about/migrations/__pycache__/0002_rename_aboutaboutpage_aboutpage.cpython-310.pyc
new file mode 100644
index 00000000..405f85f7
Binary files /dev/null and b/about/migrations/__pycache__/0002_rename_aboutaboutpage_aboutpage.cpython-310.pyc differ
diff --git a/about/migrations/__pycache__/0003_rename_af1img_aboutpage_section_one_img_and_more.cpython-310.pyc b/about/migrations/__pycache__/0003_rename_af1img_aboutpage_section_one_img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..f196aa6d
Binary files /dev/null and b/about/migrations/__pycache__/0003_rename_af1img_aboutpage_section_one_img_and_more.cpython-310.pyc differ
diff --git a/about/migrations/__pycache__/__init__.cpython-310.pyc b/about/migrations/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..b6272f6d
Binary files /dev/null and b/about/migrations/__pycache__/__init__.cpython-310.pyc differ
diff --git a/about/models.py b/about/models.py
new file mode 100644
index 00000000..78badbe2
--- /dev/null
+++ b/about/models.py
@@ -0,0 +1,32 @@
+from __future__ import unicode_literals
+
+from django.db import models
+
+from wagtail.models import Page
+from wagtail.fields import RichTextField
+from wagtail.admin.panels import FieldPanel, MultiFieldPanel
+
+class AboutPage(Page):
+
+ section_one_title = RichTextField(blank=True)
+ section_one_text = RichTextField(blank=True)
+ section_one_img = RichTextField(blank=True)
+
+ section_two_title = RichTextField(blank=True)
+ section_two_text = RichTextField(blank=True)
+ section_two_img = RichTextField(blank=True)
+
+ content_panels = Page.content_panels + [
+ MultiFieldPanel([
+ FieldPanel('section_one_title', classname="full"),
+ FieldPanel('section_one_text', classname="full"),
+ FieldPanel('section_one_img', classname="full"),
+ ], heading="Section One"),
+
+ MultiFieldPanel([
+ FieldPanel('section_two_title', classname="full"),
+ FieldPanel('section_two_text', classname="full"),
+ FieldPanel('section_two_img', classname="full"),
+ ], heading="Section Two"),
+ ]
+
diff --git a/about/tests.py b/about/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/about/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/about/views.py b/about/views.py
new file mode 100644
index 00000000..91ea44a2
--- /dev/null
+++ b/about/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/contact/__init__.py b/contact/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/contact/__pycache__/__init__.cpython-310.pyc b/contact/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..1051f8dd
Binary files /dev/null and b/contact/__pycache__/__init__.cpython-310.pyc differ
diff --git a/contact/__pycache__/admin.cpython-310.pyc b/contact/__pycache__/admin.cpython-310.pyc
new file mode 100644
index 00000000..5ae18fb8
Binary files /dev/null and b/contact/__pycache__/admin.cpython-310.pyc differ
diff --git a/contact/__pycache__/apps.cpython-310.pyc b/contact/__pycache__/apps.cpython-310.pyc
new file mode 100644
index 00000000..3a7508be
Binary files /dev/null and b/contact/__pycache__/apps.cpython-310.pyc differ
diff --git a/contact/__pycache__/models.cpython-310.pyc b/contact/__pycache__/models.cpython-310.pyc
new file mode 100644
index 00000000..762f3cfa
Binary files /dev/null and b/contact/__pycache__/models.cpython-310.pyc differ
diff --git a/contact/admin.py b/contact/admin.py
new file mode 100644
index 00000000..8c38f3f3
--- /dev/null
+++ b/contact/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/contact/apps.py b/contact/apps.py
new file mode 100644
index 00000000..002d6c20
--- /dev/null
+++ b/contact/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ContactConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'contact'
diff --git a/contact/migrations/0001_initial.py b/contact/migrations/0001_initial.py
new file mode 100644
index 00000000..2c201ec7
--- /dev/null
+++ b/contact/migrations/0001_initial.py
@@ -0,0 +1,28 @@
+# Generated by Django 5.0.8 on 2024-09-06 19:06
+
+import django.db.models.deletion
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('wagtailcore', '0094_alter_page_locale'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ContactPage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+ ('contact', wagtail.fields.RichTextField(blank=True)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=('wagtailcore.page',),
+ ),
+ ]
diff --git a/contact/migrations/0002_contactcontactpage_delete_contactpage.py b/contact/migrations/0002_contactcontactpage_delete_contactpage.py
new file mode 100644
index 00000000..cd084a48
--- /dev/null
+++ b/contact/migrations/0002_contactcontactpage_delete_contactpage.py
@@ -0,0 +1,31 @@
+# Generated by Django 5.0.8 on 2024-09-07 14:11
+
+import django.db.models.deletion
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contact', '0001_initial'),
+ ('wagtailcore', '0094_alter_page_locale'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ContactContactpage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+ ('letsconnect', wagtail.fields.RichTextField(blank=True)),
+ ('mailus', wagtail.fields.RichTextField(blank=True)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=('wagtailcore.page',),
+ ),
+ migrations.DeleteModel(
+ name='ContactPage',
+ ),
+ ]
diff --git a/contact/migrations/0003_rename_contactcontactpage_contactpage.py b/contact/migrations/0003_rename_contactcontactpage_contactpage.py
new file mode 100644
index 00000000..f6e7a237
--- /dev/null
+++ b/contact/migrations/0003_rename_contactcontactpage_contactpage.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.8 on 2024-09-07 14:12
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contact', '0002_contactcontactpage_delete_contactpage'),
+ ('wagtailcore', '0094_alter_page_locale'),
+ ]
+
+ operations = [
+ migrations.RenameModel(
+ old_name='ContactContactpage',
+ new_name='Contactpage',
+ ),
+ ]
diff --git a/contact/migrations/0004_rename_letsconnect_contactpage_cf1img_and_more.py b/contact/migrations/0004_rename_letsconnect_contactpage_cf1img_and_more.py
new file mode 100644
index 00000000..5c673069
--- /dev/null
+++ b/contact/migrations/0004_rename_letsconnect_contactpage_cf1img_and_more.py
@@ -0,0 +1,44 @@
+# Generated by Django 5.0.8 on 2024-09-08 17:39
+
+import wagtail.fields
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contact', '0003_rename_contactcontactpage_contactpage'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='letsconnect',
+ new_name='cf1img',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='mailus',
+ new_name='cf1text',
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='cf1title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='cf2img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='cf2text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='cf2title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ ]
diff --git a/contact/migrations/0005_contactpage_from_address_contactpage_subject_and_more.py b/contact/migrations/0005_contactpage_from_address_contactpage_subject_and_more.py
new file mode 100644
index 00000000..d9ed852c
--- /dev/null
+++ b/contact/migrations/0005_contactpage_from_address_contactpage_subject_and_more.py
@@ -0,0 +1,50 @@
+# Generated by Django 5.0.8 on 2024-09-09 22:40
+
+import django.db.models.deletion
+import modelcluster.fields
+import wagtail.contrib.forms.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contact', '0004_rename_letsconnect_contactpage_cf1img_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='contactpage',
+ name='from_address',
+ field=models.EmailField(blank=True, max_length=255, verbose_name='from address'),
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='subject',
+ field=models.CharField(blank=True, max_length=255, verbose_name='subject'),
+ ),
+ migrations.AddField(
+ model_name='contactpage',
+ name='to_address',
+ field=models.CharField(blank=True, help_text='Optional - form submissions will be emailed to these addresses. Separate multiple addresses by comma.', max_length=255, validators=[wagtail.contrib.forms.models.validate_to_address], verbose_name='to address'),
+ ),
+ migrations.CreateModel(
+ name='FormField',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
+ ('clean_name', models.CharField(blank=True, default='', help_text='Safe name of the form field, the label converted to ascii_snake_case', max_length=255, verbose_name='name')),
+ ('label', models.CharField(help_text='The label of the form field', max_length=255, verbose_name='label')),
+ ('field_type', models.CharField(choices=[('singleline', 'Single line text'), ('multiline', 'Multi-line text'), ('email', 'Email'), ('number', 'Number'), ('url', 'URL'), ('checkbox', 'Checkbox'), ('checkboxes', 'Checkboxes'), ('dropdown', 'Drop down'), ('multiselect', 'Multiple select'), ('radio', 'Radio buttons'), ('date', 'Date'), ('datetime', 'Date/time'), ('hidden', 'Hidden field')], max_length=16, verbose_name='field type')),
+ ('required', models.BooleanField(default=True, verbose_name='required')),
+ ('choices', models.TextField(blank=True, help_text='Comma or new line separated list of choices. Only applicable in checkboxes, radio and dropdown.', verbose_name='choices')),
+ ('default_value', models.TextField(blank=True, help_text='Default value. Comma or new line separated values supported for checkboxes.', verbose_name='default value')),
+ ('help_text', models.CharField(blank=True, max_length=255, verbose_name='help text')),
+ ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='form_fields', to='contact.contactpage')),
+ ],
+ options={
+ 'ordering': ['sort_order'],
+ 'abstract': False,
+ },
+ ),
+ ]
diff --git a/contact/migrations/0006_rename_cf1img_contactpage_section_one_img_and_more.py b/contact/migrations/0006_rename_cf1img_contactpage_section_one_img_and_more.py
new file mode 100644
index 00000000..8d2f8503
--- /dev/null
+++ b/contact/migrations/0006_rename_cf1img_contactpage_section_one_img_and_more.py
@@ -0,0 +1,43 @@
+# Generated by Django 5.0.8 on 2024-09-10 16:36
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contact', '0005_contactpage_from_address_contactpage_subject_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf1img',
+ new_name='section_one_img',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf1text',
+ new_name='section_one_text',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf1title',
+ new_name='section_one_title',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf2img',
+ new_name='section_two_img',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf2text',
+ new_name='section_two_text',
+ ),
+ migrations.RenameField(
+ model_name='contactpage',
+ old_name='cf2title',
+ new_name='section_two_title',
+ ),
+ ]
diff --git a/contact/migrations/__init__.py b/contact/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/contact/migrations/__pycache__/0001_initial.cpython-310.pyc b/contact/migrations/__pycache__/0001_initial.cpython-310.pyc
new file mode 100644
index 00000000..1bf11d59
Binary files /dev/null and b/contact/migrations/__pycache__/0001_initial.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/0002_contactcontactpage_delete_contactpage.cpython-310.pyc b/contact/migrations/__pycache__/0002_contactcontactpage_delete_contactpage.cpython-310.pyc
new file mode 100644
index 00000000..28cb25be
Binary files /dev/null and b/contact/migrations/__pycache__/0002_contactcontactpage_delete_contactpage.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/0003_rename_contactcontactpage_contactpage.cpython-310.pyc b/contact/migrations/__pycache__/0003_rename_contactcontactpage_contactpage.cpython-310.pyc
new file mode 100644
index 00000000..66ce1cd6
Binary files /dev/null and b/contact/migrations/__pycache__/0003_rename_contactcontactpage_contactpage.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/0004_rename_letsconnect_contactpage_cf1img_and_more.cpython-310.pyc b/contact/migrations/__pycache__/0004_rename_letsconnect_contactpage_cf1img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..a8a09ea4
Binary files /dev/null and b/contact/migrations/__pycache__/0004_rename_letsconnect_contactpage_cf1img_and_more.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/0005_contactpage_from_address_contactpage_subject_and_more.cpython-310.pyc b/contact/migrations/__pycache__/0005_contactpage_from_address_contactpage_subject_and_more.cpython-310.pyc
new file mode 100644
index 00000000..b5204043
Binary files /dev/null and b/contact/migrations/__pycache__/0005_contactpage_from_address_contactpage_subject_and_more.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/0006_rename_cf1img_contactpage_section_one_img_and_more.cpython-310.pyc b/contact/migrations/__pycache__/0006_rename_cf1img_contactpage_section_one_img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..ca5675ad
Binary files /dev/null and b/contact/migrations/__pycache__/0006_rename_cf1img_contactpage_section_one_img_and_more.cpython-310.pyc differ
diff --git a/contact/migrations/__pycache__/__init__.cpython-310.pyc b/contact/migrations/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..945336d9
Binary files /dev/null and b/contact/migrations/__pycache__/__init__.cpython-310.pyc differ
diff --git a/contact/models.py b/contact/models.py
new file mode 100644
index 00000000..56b69c2a
--- /dev/null
+++ b/contact/models.py
@@ -0,0 +1,52 @@
+from __future__ import unicode_literals
+
+from django.db import models
+
+from modelcluster.fields import ParentalKey
+
+from wagtail.models import Page
+from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField
+from wagtail.fields import RichTextField
+from wagtail.admin.panels import FieldPanel, FieldRowPanel,InlinePanel, MultiFieldPanel
+
+
+class FormField(AbstractFormField):
+ page = ParentalKey(
+ 'ContactPage',
+ on_delete = models.CASCADE,
+ related_name= 'form_fields'
+ )
+
+class ContactPage(AbstractEmailForm):
+
+ section_one_title = RichTextField(blank=True)
+ section_one_text = RichTextField(blank=True)
+ section_one_img = RichTextField(blank=True)
+
+ section_two_title = RichTextField(blank=True)
+ section_two_text = RichTextField(blank=True)
+ section_two_img = RichTextField(blank=True)
+
+ content_panels = AbstractEmailForm.content_panels + [
+ MultiFieldPanel([
+ FieldPanel('section_one_title', classname="full"),
+ FieldPanel('section_one_text', classname="full"),
+ FieldPanel('section_one_img', classname="full"),
+ ], heading="Section One"),
+
+ MultiFieldPanel([
+ FieldPanel('section_two_title', classname="full"),
+ FieldPanel('section_two_text', classname="full"),
+ FieldPanel('section_two_img', classname="full"),
+ ], heading="Section Two"),
+
+ InlinePanel('form_fields',label='Form Fields'),
+ MultiFieldPanel([
+ FieldRowPanel([
+ FieldPanel('from_address', classname='saburly-input'),
+ FieldPanel('to_address', classname='saburly-input'),
+ ]),
+ FieldPanel('subject'),
+ ], heading = 'Email Settings'),
+ ]
+
diff --git a/contact/tests.py b/contact/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/contact/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/contact/views.py b/contact/views.py
new file mode 100644
index 00000000..91ea44a2
--- /dev/null
+++ b/contact/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/db.sqlite3 b/db.sqlite3
index b4976088..14a27fb6 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ
diff --git a/home/__pycache__/models.cpython-310.pyc b/home/__pycache__/models.cpython-310.pyc
index d5024d8e..3fcd352e 100644
Binary files a/home/__pycache__/models.cpython-310.pyc and b/home/__pycache__/models.cpython-310.pyc differ
diff --git a/home/migrations/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.py b/home/migrations/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.py
new file mode 100644
index 00000000..29238c98
--- /dev/null
+++ b/home/migrations/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.py
@@ -0,0 +1,89 @@
+# Generated by Django 5.0.8 on 2024-09-08 14:34
+
+import wagtail.fields
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('home', '0003_homepage_body'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='homepage',
+ name='hf1img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf1text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf1title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf2img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf2text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf2title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf3img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf3text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf3title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf4img',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf4text',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='hf4title',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='introimg',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='introtext',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ migrations.AddField(
+ model_name='homepage',
+ name='introtitle',
+ field=wagtail.fields.RichTextField(blank=True),
+ ),
+ ]
diff --git a/home/migrations/0005_rename_hf4img_homepage_section_five_img_and_more.py b/home/migrations/0005_rename_hf4img_homepage_section_five_img_and_more.py
new file mode 100644
index 00000000..20d2c51c
--- /dev/null
+++ b/home/migrations/0005_rename_hf4img_homepage_section_five_img_and_more.py
@@ -0,0 +1,92 @@
+# Generated by Django 5.0.8 on 2024-09-10 16:31
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('home', '0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf4img',
+ new_name='section_five_img',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf4text',
+ new_name='section_five_text',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf4title',
+ new_name='section_five_title',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf3img',
+ new_name='section_four_img',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf3text',
+ new_name='section_four_text',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf3title',
+ new_name='section_four_title',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='introimg',
+ new_name='section_one_img',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='introtext',
+ new_name='section_one_text',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='introtitle',
+ new_name='section_one_title',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf2img',
+ new_name='section_three_img',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf2text',
+ new_name='section_three_text',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf2title',
+ new_name='section_three_title',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf1img',
+ new_name='section_two_img',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf1text',
+ new_name='section_two_text',
+ ),
+ migrations.RenameField(
+ model_name='homepage',
+ old_name='hf1title',
+ new_name='section_two_title',
+ ),
+ migrations.RemoveField(
+ model_name='homepage',
+ name='body',
+ ),
+ ]
diff --git a/home/migrations/__pycache__/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.cpython-310.pyc b/home/migrations/__pycache__/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.cpython-310.pyc
new file mode 100644
index 00000000..e676f4eb
Binary files /dev/null and b/home/migrations/__pycache__/0004_homepage_hf1img_homepage_hf1text_homepage_hf1title_and_more.cpython-310.pyc differ
diff --git a/home/migrations/__pycache__/0005_rename_hf4img_homepage_section_five_img_and_more.cpython-310.pyc b/home/migrations/__pycache__/0005_rename_hf4img_homepage_section_five_img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..70943a0d
Binary files /dev/null and b/home/migrations/__pycache__/0005_rename_hf4img_homepage_section_five_img_and_more.cpython-310.pyc differ
diff --git a/home/models.py b/home/models.py
index 9b420811..c8c87ff7 100644
--- a/home/models.py
+++ b/home/models.py
@@ -4,12 +4,59 @@ from django.db import models
from wagtail.models import Page
from wagtail.fields import RichTextField
-from wagtail.admin.panels import FieldPanel
+from wagtail.admin.panels import FieldPanel, MultiFieldPanel
class HomePage(Page):
- body = RichTextField(blank=True)
+
+ section_one_title = RichTextField(blank=True)
+ section_one_text = RichTextField(blank=True)
+ section_one_img = RichTextField(blank=True)
+
+ section_two_title = RichTextField(blank=True)
+ section_two_text = RichTextField(blank=True)
+ section_two_img = RichTextField(blank=True)
+
+ section_three_title = RichTextField(blank=True)
+ section_three_text = RichTextField(blank=True)
+ section_three_img = RichTextField(blank=True)
+
+ section_four_title = RichTextField(blank=True)
+ section_four_text = RichTextField(blank=True)
+ section_four_img = RichTextField(blank=True)
+
+ section_five_title = RichTextField(blank=True)
+ section_five_text = RichTextField(blank=True)
+ section_five_img = RichTextField(blank=True)
content_panels = Page.content_panels + [
- FieldPanel('body', classname="full")
- ]
\ No newline at end of file
+ MultiFieldPanel([
+ FieldPanel('section_one_title', classname="full"),
+ FieldPanel('section_one_text', classname="full"),
+ FieldPanel('section_one_img', classname="full"),
+ ], heading="Section One"),
+
+ MultiFieldPanel([
+ FieldPanel('section_two_title', classname="full"),
+ FieldPanel('section_two_text', classname="full"),
+ FieldPanel('section_two_img', classname="full"),
+ ], heading="Section Two"),
+
+ MultiFieldPanel([
+ FieldPanel('section_three_title', classname="full"),
+ FieldPanel('section_three_text', classname="full"),
+ FieldPanel('section_three_img', classname="full"),
+ ], heading="Section Three"),
+
+ MultiFieldPanel([
+ FieldPanel('section_four_title', classname="full"),
+ FieldPanel('section_four_text', classname="full"),
+ FieldPanel('section_four_img', classname="full"),
+ ], heading="Section Four"),
+
+ MultiFieldPanel([
+ FieldPanel('section_five_title', classname="full"),
+ FieldPanel('section_five_text', classname="full"),
+ FieldPanel('section_five_img', classname="full"),
+ ], heading="Section Five"),
+ ]
diff --git a/home/templates/home/home_page.html b/home/templates/home/home_page.html
deleted file mode 100644
index 6007c91c..00000000
--- a/home/templates/home/home_page.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "base.html" %}
-
-{% load wagtailcore_tags %}
-
-{% block body_class %}template-homepage{% endblock %}
-
-{% block content %}
-
{{ page.body|richtext }}
-{% endblock %}
\ No newline at end of file
diff --git a/home/templates/home/welcome_page.html b/home/templates/home/welcome_page.html
deleted file mode 100644
index dcacaf31..00000000
--- a/home/templates/home/welcome_page.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% load i18n wagtailcore_tags %}
-
-
-
-
-
-
{% trans "Welcome to your new Wagtail site!" %}
-
{% trans 'Please feel free to join our community on Slack, or get started with one of the links below.' %}
-
-
-
diff --git a/media/images/Screenshot_from_2024-08-26_16-52-16.width-500.png b/media/images/Screenshot_from_2024-08-26_16-52-16.width-500.png
new file mode 100644
index 00000000..7ffe3e6f
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-52-16.width-500.png differ
diff --git a/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-165x165.png b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-165x165.png
new file mode 100644
index 00000000..ec8803ad
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-165x165.png differ
diff --git a/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-800x600.png b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-800x600.png
new file mode 100644
index 00000000..0c60b33d
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.max-800x600.png differ
diff --git a/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.width-800.png b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.width-800.png
new file mode 100644
index 00000000..0c60b33d
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.width-800.png differ
diff --git a/media/images/Screenshot_from_2024-08-26_16-52-41.width-500.png b/media/images/Screenshot_from_2024-08-26_16-52-41.width-500.png
new file mode 100644
index 00000000..54930549
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-52-41.width-500.png differ
diff --git a/media/images/Screenshot_from_2024-08-26_16-53-18.width-500.png b/media/images/Screenshot_from_2024-08-26_16-53-18.width-500.png
new file mode 100644
index 00000000..6837cc36
Binary files /dev/null and b/media/images/Screenshot_from_2024-08-26_16-53-18.width-500.png differ
diff --git a/media/images/agile-practitioners.max-800x600.jpg b/media/images/agile-practitioners.max-800x600.jpg
new file mode 100644
index 00000000..504ceac0
Binary files /dev/null and b/media/images/agile-practitioners.max-800x600.jpg differ
diff --git a/media/images/agile-practitioners.width-800.jpg b/media/images/agile-practitioners.width-800.jpg
new file mode 100644
index 00000000..504ceac0
Binary files /dev/null and b/media/images/agile-practitioners.width-800.jpg differ
diff --git a/media/images/agile-practitioners_S8G4McZ.max-165x165.jpg b/media/images/agile-practitioners_S8G4McZ.max-165x165.jpg
new file mode 100644
index 00000000..351d8112
Binary files /dev/null and b/media/images/agile-practitioners_S8G4McZ.max-165x165.jpg differ
diff --git a/media/images/agile-practitioners_S8G4McZ.max-800x600.jpg b/media/images/agile-practitioners_S8G4McZ.max-800x600.jpg
new file mode 100644
index 00000000..504ceac0
Binary files /dev/null and b/media/images/agile-practitioners_S8G4McZ.max-800x600.jpg differ
diff --git a/media/images/agile-practitioners_S8G4McZ.width-800.jpg b/media/images/agile-practitioners_S8G4McZ.width-800.jpg
new file mode 100644
index 00000000..504ceac0
Binary files /dev/null and b/media/images/agile-practitioners_S8G4McZ.width-800.jpg differ
diff --git a/media/images/best-web-development-sweden.max-165x165.svg b/media/images/best-web-development-sweden.max-165x165.svg
new file mode 100644
index 00000000..6f73a397
--- /dev/null
+++ b/media/images/best-web-development-sweden.max-165x165.svg
@@ -0,0 +1,280 @@
+
\ No newline at end of file
diff --git a/media/images/best-web-development-sweden.max-800x600.svg b/media/images/best-web-development-sweden.max-800x600.svg
new file mode 100644
index 00000000..e2d1f9c7
--- /dev/null
+++ b/media/images/best-web-development-sweden.max-800x600.svg
@@ -0,0 +1,280 @@
+
\ No newline at end of file
diff --git a/media/images/best-web-development-sweden.width-800.svg b/media/images/best-web-development-sweden.width-800.svg
new file mode 100644
index 00000000..e2d1f9c7
--- /dev/null
+++ b/media/images/best-web-development-sweden.width-800.svg
@@ -0,0 +1,280 @@
+
\ No newline at end of file
diff --git a/media/images/buslogic.max-165x165.png b/media/images/buslogic.max-165x165.png
new file mode 100644
index 00000000..68664714
Binary files /dev/null and b/media/images/buslogic.max-165x165.png differ
diff --git a/media/images/buslogic.max-800x600.png b/media/images/buslogic.max-800x600.png
new file mode 100644
index 00000000..54930549
Binary files /dev/null and b/media/images/buslogic.max-800x600.png differ
diff --git a/media/images/buslogic.width-800.png b/media/images/buslogic.width-800.png
new file mode 100644
index 00000000..54930549
Binary files /dev/null and b/media/images/buslogic.width-800.png differ
diff --git a/media/images/code-reviews.max-165x165.svg b/media/images/code-reviews.max-165x165.svg
new file mode 100644
index 00000000..aa0fd2b6
--- /dev/null
+++ b/media/images/code-reviews.max-165x165.svg
@@ -0,0 +1,62 @@
+
\ No newline at end of file
diff --git a/media/images/code-reviews.max-800x600.svg b/media/images/code-reviews.max-800x600.svg
new file mode 100644
index 00000000..aa0fd2b6
--- /dev/null
+++ b/media/images/code-reviews.max-800x600.svg
@@ -0,0 +1,62 @@
+
\ No newline at end of file
diff --git a/media/images/code-reviews.width-800.svg b/media/images/code-reviews.width-800.svg
new file mode 100644
index 00000000..aa0fd2b6
--- /dev/null
+++ b/media/images/code-reviews.width-800.svg
@@ -0,0 +1,62 @@
+
\ No newline at end of file
diff --git a/media/images/coder-awards.max-165x165.svg b/media/images/coder-awards.max-165x165.svg
new file mode 100644
index 00000000..c8192021
--- /dev/null
+++ b/media/images/coder-awards.max-165x165.svg
@@ -0,0 +1,34 @@
+
\ No newline at end of file
diff --git a/media/images/coder-awards.max-800x600.svg b/media/images/coder-awards.max-800x600.svg
new file mode 100644
index 00000000..c8192021
--- /dev/null
+++ b/media/images/coder-awards.max-800x600.svg
@@ -0,0 +1,34 @@
+
\ No newline at end of file
diff --git a/media/images/coder-awards.width-500.svg b/media/images/coder-awards.width-500.svg
new file mode 100644
index 00000000..c8192021
--- /dev/null
+++ b/media/images/coder-awards.width-500.svg
@@ -0,0 +1,34 @@
+
\ No newline at end of file
diff --git a/media/images/coder-awards.width-800.svg b/media/images/coder-awards.width-800.svg
new file mode 100644
index 00000000..c8192021
--- /dev/null
+++ b/media/images/coder-awards.width-800.svg
@@ -0,0 +1,34 @@
+
\ No newline at end of file
diff --git a/media/images/coding-tutorials-patience.max-165x165.jpg b/media/images/coding-tutorials-patience.max-165x165.jpg
new file mode 100644
index 00000000..31bb832a
Binary files /dev/null and b/media/images/coding-tutorials-patience.max-165x165.jpg differ
diff --git a/media/images/coding-tutorials-patience.max-165x165.svg b/media/images/coding-tutorials-patience.max-165x165.svg
new file mode 100644
index 00000000..36404984
--- /dev/null
+++ b/media/images/coding-tutorials-patience.max-165x165.svg
@@ -0,0 +1,435 @@
+
\ No newline at end of file
diff --git a/media/images/coding-tutorials-patience.max-800x600.jpg b/media/images/coding-tutorials-patience.max-800x600.jpg
new file mode 100644
index 00000000..cc65bc83
Binary files /dev/null and b/media/images/coding-tutorials-patience.max-800x600.jpg differ
diff --git a/media/images/coding-tutorials-patience.max-800x600.svg b/media/images/coding-tutorials-patience.max-800x600.svg
new file mode 100644
index 00000000..f6917b56
--- /dev/null
+++ b/media/images/coding-tutorials-patience.max-800x600.svg
@@ -0,0 +1,435 @@
+
\ No newline at end of file
diff --git a/media/images/coding-tutorials-patience.width-800.jpg b/media/images/coding-tutorials-patience.width-800.jpg
new file mode 100644
index 00000000..cc65bc83
Binary files /dev/null and b/media/images/coding-tutorials-patience.width-800.jpg differ
diff --git a/media/images/coding-tutorials-patience.width-800.svg b/media/images/coding-tutorials-patience.width-800.svg
new file mode 100644
index 00000000..f6917b56
--- /dev/null
+++ b/media/images/coding-tutorials-patience.width-800.svg
@@ -0,0 +1,435 @@
+
\ No newline at end of file
diff --git a/media/images/continuous-delivery.max-165x165.svg b/media/images/continuous-delivery.max-165x165.svg
new file mode 100644
index 00000000..e0db3efb
--- /dev/null
+++ b/media/images/continuous-delivery.max-165x165.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/media/images/continuous-delivery.max-800x600.svg b/media/images/continuous-delivery.max-800x600.svg
new file mode 100644
index 00000000..e0db3efb
--- /dev/null
+++ b/media/images/continuous-delivery.max-800x600.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/media/images/continuous-delivery.width-800.svg b/media/images/continuous-delivery.width-800.svg
new file mode 100644
index 00000000..e0db3efb
--- /dev/null
+++ b/media/images/continuous-delivery.width-800.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-development.max-165x165.svg b/media/images/custom-software-development.max-165x165.svg
new file mode 100644
index 00000000..3f772b07
--- /dev/null
+++ b/media/images/custom-software-development.max-165x165.svg
@@ -0,0 +1,371 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-development.max-800x600.svg b/media/images/custom-software-development.max-800x600.svg
new file mode 100644
index 00000000..de7442d0
--- /dev/null
+++ b/media/images/custom-software-development.max-800x600.svg
@@ -0,0 +1,371 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-development.width-800.svg b/media/images/custom-software-development.width-800.svg
new file mode 100644
index 00000000..0b3817be
--- /dev/null
+++ b/media/images/custom-software-development.width-800.svg
@@ -0,0 +1,371 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-workflow.max-165x165.svg b/media/images/custom-software-workflow.max-165x165.svg
new file mode 100644
index 00000000..58fe7d9e
--- /dev/null
+++ b/media/images/custom-software-workflow.max-165x165.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-workflow.max-800x600.svg b/media/images/custom-software-workflow.max-800x600.svg
new file mode 100644
index 00000000..3dde03bf
--- /dev/null
+++ b/media/images/custom-software-workflow.max-800x600.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/custom-software-workflow.width-800.svg b/media/images/custom-software-workflow.width-800.svg
new file mode 100644
index 00000000..3dde03bf
--- /dev/null
+++ b/media/images/custom-software-workflow.width-800.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/modern-devops.max-165x165.svg b/media/images/modern-devops.max-165x165.svg
new file mode 100644
index 00000000..c1f03f56
--- /dev/null
+++ b/media/images/modern-devops.max-165x165.svg
@@ -0,0 +1,43 @@
+
\ No newline at end of file
diff --git a/media/images/modern-devops.max-800x600.svg b/media/images/modern-devops.max-800x600.svg
new file mode 100644
index 00000000..c1f03f56
--- /dev/null
+++ b/media/images/modern-devops.max-800x600.svg
@@ -0,0 +1,43 @@
+
\ No newline at end of file
diff --git a/media/images/modern-devops.width-800.svg b/media/images/modern-devops.width-800.svg
new file mode 100644
index 00000000..c1f03f56
--- /dev/null
+++ b/media/images/modern-devops.width-800.svg
@@ -0,0 +1,43 @@
+
\ No newline at end of file
diff --git a/media/images/neverlate.max-165x165.png b/media/images/neverlate.max-165x165.png
new file mode 100644
index 00000000..9fd10dde
Binary files /dev/null and b/media/images/neverlate.max-165x165.png differ
diff --git a/media/images/neverlate.max-800x600.png b/media/images/neverlate.max-800x600.png
new file mode 100644
index 00000000..6837cc36
Binary files /dev/null and b/media/images/neverlate.max-800x600.png differ
diff --git a/media/images/neverlate.width-800.png b/media/images/neverlate.width-800.png
new file mode 100644
index 00000000..6837cc36
Binary files /dev/null and b/media/images/neverlate.width-800.png differ
diff --git a/media/images/saburly-web-agency.max-165x165.jpg b/media/images/saburly-web-agency.max-165x165.jpg
new file mode 100644
index 00000000..c8ad59ee
Binary files /dev/null and b/media/images/saburly-web-agency.max-165x165.jpg differ
diff --git a/media/images/saburly-web-agency.max-800x600.jpg b/media/images/saburly-web-agency.max-800x600.jpg
new file mode 100644
index 00000000..4bd1c239
Binary files /dev/null and b/media/images/saburly-web-agency.max-800x600.jpg differ
diff --git a/media/images/saburly-web-agency.width-800.jpg b/media/images/saburly-web-agency.width-800.jpg
new file mode 100644
index 00000000..4bd1c239
Binary files /dev/null and b/media/images/saburly-web-agency.width-800.jpg differ
diff --git a/media/images/saburly-web-agency_L0fbNkg.max-165x165.jpg b/media/images/saburly-web-agency_L0fbNkg.max-165x165.jpg
new file mode 100644
index 00000000..c8ad59ee
Binary files /dev/null and b/media/images/saburly-web-agency_L0fbNkg.max-165x165.jpg differ
diff --git a/media/images/saburly-web-agency_L0fbNkg.max-800x600.jpg b/media/images/saburly-web-agency_L0fbNkg.max-800x600.jpg
new file mode 100644
index 00000000..4bd1c239
Binary files /dev/null and b/media/images/saburly-web-agency_L0fbNkg.max-800x600.jpg differ
diff --git a/media/images/saburly-web-agency_L0fbNkg.width-800.jpg b/media/images/saburly-web-agency_L0fbNkg.width-800.jpg
new file mode 100644
index 00000000..4bd1c239
Binary files /dev/null and b/media/images/saburly-web-agency_L0fbNkg.width-800.jpg differ
diff --git a/media/images/tool.max-165x165.png b/media/images/tool.max-165x165.png
new file mode 100644
index 00000000..a417f8fd
Binary files /dev/null and b/media/images/tool.max-165x165.png differ
diff --git a/media/images/tool.max-800x600.png b/media/images/tool.max-800x600.png
new file mode 100644
index 00000000..84320d8c
Binary files /dev/null and b/media/images/tool.max-800x600.png differ
diff --git a/media/images/tool.width-800.png b/media/images/tool.width-800.png
new file mode 100644
index 00000000..84320d8c
Binary files /dev/null and b/media/images/tool.width-800.png differ
diff --git a/media/images/unit-and-integration-testing.max-165x165.svg b/media/images/unit-and-integration-testing.max-165x165.svg
new file mode 100644
index 00000000..70b2f924
--- /dev/null
+++ b/media/images/unit-and-integration-testing.max-165x165.svg
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/media/images/unit-and-integration-testing.max-800x600.svg b/media/images/unit-and-integration-testing.max-800x600.svg
new file mode 100644
index 00000000..70b2f924
--- /dev/null
+++ b/media/images/unit-and-integration-testing.max-800x600.svg
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/media/images/unit-and-integration-testing.width-800.svg b/media/images/unit-and-integration-testing.width-800.svg
new file mode 100644
index 00000000..70b2f924
--- /dev/null
+++ b/media/images/unit-and-integration-testing.width-800.svg
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/media/images/user-experience-design-services.max-165x165.svg b/media/images/user-experience-design-services.max-165x165.svg
new file mode 100644
index 00000000..16df2aee
--- /dev/null
+++ b/media/images/user-experience-design-services.max-165x165.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/user-experience-design-services.max-800x600.svg b/media/images/user-experience-design-services.max-800x600.svg
new file mode 100644
index 00000000..9360c6c8
--- /dev/null
+++ b/media/images/user-experience-design-services.max-800x600.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/user-experience-design-services.width-800.svg b/media/images/user-experience-design-services.width-800.svg
new file mode 100644
index 00000000..9360c6c8
--- /dev/null
+++ b/media/images/user-experience-design-services.width-800.svg
@@ -0,0 +1,149 @@
+
\ No newline at end of file
diff --git a/media/images/ux-research.max-165x165.svg b/media/images/ux-research.max-165x165.svg
new file mode 100644
index 00000000..1c58ebfe
--- /dev/null
+++ b/media/images/ux-research.max-165x165.svg
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/media/images/ux-research.max-800x600.svg b/media/images/ux-research.max-800x600.svg
new file mode 100644
index 00000000..1c58ebfe
--- /dev/null
+++ b/media/images/ux-research.max-800x600.svg
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/media/images/ux-research.width-800.svg b/media/images/ux-research.width-800.svg
new file mode 100644
index 00000000..1c58ebfe
--- /dev/null
+++ b/media/images/ux-research.width-800.svg
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/media/images/web-development-consultancy.max-165x165.jpg b/media/images/web-development-consultancy.max-165x165.jpg
new file mode 100644
index 00000000..35aa37e5
Binary files /dev/null and b/media/images/web-development-consultancy.max-165x165.jpg differ
diff --git a/media/images/web-development-consultancy.max-800x600.jpg b/media/images/web-development-consultancy.max-800x600.jpg
new file mode 100644
index 00000000..a5310688
Binary files /dev/null and b/media/images/web-development-consultancy.max-800x600.jpg differ
diff --git a/media/images/web-development-consultants.max-165x165.jpg b/media/images/web-development-consultants.max-165x165.jpg
new file mode 100644
index 00000000..3b417d68
Binary files /dev/null and b/media/images/web-development-consultants.max-165x165.jpg differ
diff --git a/media/images/web-development-consultants.max-800x600.jpg b/media/images/web-development-consultants.max-800x600.jpg
new file mode 100644
index 00000000..fcec5bd5
Binary files /dev/null and b/media/images/web-development-consultants.max-800x600.jpg differ
diff --git a/media/images/web-development-consultants.width-800.jpg b/media/images/web-development-consultants.width-800.jpg
new file mode 100644
index 00000000..fcec5bd5
Binary files /dev/null and b/media/images/web-development-consultants.width-800.jpg differ
diff --git a/media/images/web-development-consultants_aTZTEHC.max-165x165.jpg b/media/images/web-development-consultants_aTZTEHC.max-165x165.jpg
new file mode 100644
index 00000000..3b417d68
Binary files /dev/null and b/media/images/web-development-consultants_aTZTEHC.max-165x165.jpg differ
diff --git a/media/images/web-development-consultants_aTZTEHC.max-800x600.jpg b/media/images/web-development-consultants_aTZTEHC.max-800x600.jpg
new file mode 100644
index 00000000..fcec5bd5
Binary files /dev/null and b/media/images/web-development-consultants_aTZTEHC.max-800x600.jpg differ
diff --git a/media/images/web-development-consultants_aTZTEHC.width-800.jpg b/media/images/web-development-consultants_aTZTEHC.width-800.jpg
new file mode 100644
index 00000000..fcec5bd5
Binary files /dev/null and b/media/images/web-development-consultants_aTZTEHC.width-800.jpg differ
diff --git a/media/original_images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.png b/media/original_images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.png
new file mode 100644
index 00000000..47272169
Binary files /dev/null and b/media/original_images/Screenshot_from_2024-08-26_16-52-16_HzLGQeZ.png differ
diff --git a/media/original_images/agile-practitioners.jpg b/media/original_images/agile-practitioners.jpg
new file mode 100644
index 00000000..fa725a74
Binary files /dev/null and b/media/original_images/agile-practitioners.jpg differ
diff --git a/media/original_images/agile-practitioners_S8G4McZ.jpg b/media/original_images/agile-practitioners_S8G4McZ.jpg
new file mode 100644
index 00000000..fa725a74
Binary files /dev/null and b/media/original_images/agile-practitioners_S8G4McZ.jpg differ
diff --git a/media/original_images/best-web-development-sweden.svg b/media/original_images/best-web-development-sweden.svg
new file mode 100644
index 00000000..72a6d84d
--- /dev/null
+++ b/media/original_images/best-web-development-sweden.svg
@@ -0,0 +1,281 @@
+
+
\ No newline at end of file
diff --git a/media/original_images/buslogic.png b/media/original_images/buslogic.png
new file mode 100644
index 00000000..fca0a35f
Binary files /dev/null and b/media/original_images/buslogic.png differ
diff --git a/media/original_images/code-reviews.svg b/media/original_images/code-reviews.svg
new file mode 100644
index 00000000..34e69324
--- /dev/null
+++ b/media/original_images/code-reviews.svg
@@ -0,0 +1,66 @@
+
+
+
diff --git a/media/original_images/coder-awards.svg b/media/original_images/coder-awards.svg
new file mode 100644
index 00000000..050b24e9
--- /dev/null
+++ b/media/original_images/coder-awards.svg
@@ -0,0 +1,71 @@
+
+
+
diff --git a/media/original_images/coding-tutorials-patience.jpg b/media/original_images/coding-tutorials-patience.jpg
new file mode 100644
index 00000000..8d044c94
Binary files /dev/null and b/media/original_images/coding-tutorials-patience.jpg differ
diff --git a/media/original_images/coding-tutorials-patience.svg b/media/original_images/coding-tutorials-patience.svg
new file mode 100644
index 00000000..77e4855a
--- /dev/null
+++ b/media/original_images/coding-tutorials-patience.svg
@@ -0,0 +1,436 @@
+
+
\ No newline at end of file
diff --git a/media/original_images/continuous-delivery.svg b/media/original_images/continuous-delivery.svg
new file mode 100644
index 00000000..88ac9745
--- /dev/null
+++ b/media/original_images/continuous-delivery.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/media/original_images/custom-software-development.svg b/media/original_images/custom-software-development.svg
new file mode 100644
index 00000000..61463b39
--- /dev/null
+++ b/media/original_images/custom-software-development.svg
@@ -0,0 +1,372 @@
+
+
\ No newline at end of file
diff --git a/media/original_images/custom-software-workflow.svg b/media/original_images/custom-software-workflow.svg
new file mode 100644
index 00000000..2c0409fd
--- /dev/null
+++ b/media/original_images/custom-software-workflow.svg
@@ -0,0 +1,150 @@
+
+
\ No newline at end of file
diff --git a/media/original_images/modern-devops.svg b/media/original_images/modern-devops.svg
new file mode 100644
index 00000000..682a65f9
--- /dev/null
+++ b/media/original_images/modern-devops.svg
@@ -0,0 +1,58 @@
+
+
+
diff --git a/media/original_images/neverlate.png b/media/original_images/neverlate.png
new file mode 100644
index 00000000..7ecf1ad5
Binary files /dev/null and b/media/original_images/neverlate.png differ
diff --git a/media/original_images/saburly-web-agency.jpg b/media/original_images/saburly-web-agency.jpg
new file mode 100644
index 00000000..cc17867f
Binary files /dev/null and b/media/original_images/saburly-web-agency.jpg differ
diff --git a/media/original_images/saburly-web-agency_L0fbNkg.jpg b/media/original_images/saburly-web-agency_L0fbNkg.jpg
new file mode 100644
index 00000000..cc17867f
Binary files /dev/null and b/media/original_images/saburly-web-agency_L0fbNkg.jpg differ
diff --git a/media/original_images/tool.png b/media/original_images/tool.png
new file mode 100644
index 00000000..4e2724bc
Binary files /dev/null and b/media/original_images/tool.png differ
diff --git a/media/original_images/unit-and-integration-testing.svg b/media/original_images/unit-and-integration-testing.svg
new file mode 100644
index 00000000..31b18269
--- /dev/null
+++ b/media/original_images/unit-and-integration-testing.svg
@@ -0,0 +1,103 @@
+
+
+
diff --git a/media/original_images/user-experience-design-services.svg b/media/original_images/user-experience-design-services.svg
new file mode 100644
index 00000000..cfb073b8
--- /dev/null
+++ b/media/original_images/user-experience-design-services.svg
@@ -0,0 +1,150 @@
+
+
\ No newline at end of file
diff --git a/media/original_images/ux-research.svg b/media/original_images/ux-research.svg
new file mode 100644
index 00000000..50d1461e
--- /dev/null
+++ b/media/original_images/ux-research.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/media/original_images/web-development-consultancy.jpg b/media/original_images/web-development-consultancy.jpg
new file mode 100644
index 00000000..74696bdd
Binary files /dev/null and b/media/original_images/web-development-consultancy.jpg differ
diff --git a/media/original_images/web-development-consultants.jpg b/media/original_images/web-development-consultants.jpg
new file mode 100644
index 00000000..709e44d0
Binary files /dev/null and b/media/original_images/web-development-consultants.jpg differ
diff --git a/media/original_images/web-development-consultants_aTZTEHC.jpg b/media/original_images/web-development-consultants_aTZTEHC.jpg
new file mode 100644
index 00000000..709e44d0
Binary files /dev/null and b/media/original_images/web-development-consultants_aTZTEHC.jpg differ
diff --git a/saburly/__pycache__/urls.cpython-310.pyc b/saburly/__pycache__/urls.cpython-310.pyc
index 124cdbbb..c259636f 100644
Binary files a/saburly/__pycache__/urls.cpython-310.pyc and b/saburly/__pycache__/urls.cpython-310.pyc differ
diff --git a/saburly/settings/__pycache__/base.cpython-310.pyc b/saburly/settings/__pycache__/base.cpython-310.pyc
index ece9fb45..947f3c17 100644
Binary files a/saburly/settings/__pycache__/base.cpython-310.pyc and b/saburly/settings/__pycache__/base.cpython-310.pyc differ
diff --git a/saburly/settings/base.py b/saburly/settings/base.py
index 306b45d1..c029f49c 100644
--- a/saburly/settings/base.py
+++ b/saburly/settings/base.py
@@ -26,6 +26,11 @@ BASE_DIR = os.path.dirname(PROJECT_DIR)
INSTALLED_APPS = [
"home",
"search",
+ "about",
+ "contact",
+ "services",
+
+ 'widget_tweaks',
"wagtail.contrib.forms",
"wagtail.contrib.redirects",
"wagtail.embeds",
@@ -65,9 +70,8 @@ ROOT_URLCONF = "saburly.urls"
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
- "DIRS": [
- os.path.join(PROJECT_DIR, "templates"),
- ],
+ "DIRS": [os.path.join(BASE_DIR, "templates")],
+
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
@@ -134,11 +138,11 @@ STATICFILES_FINDERS = [
]
STATICFILES_DIRS = [
- os.path.join(PROJECT_DIR, "static"),
+ os.path.join(PROJECT_DIR, 'static'),
]
-STATIC_ROOT = os.path.join(BASE_DIR, "static")
-STATIC_URL = "/static/"
+STATIC_URL = '/static/'
+STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"
@@ -180,3 +184,5 @@ WAGTAILADMIN_BASE_URL = "http://example.com"
# if untrusted users are allowed to upload files -
# see https://docs.wagtail.org/en/stable/advanced_topics/deploying.html#user-uploaded-files
WAGTAILDOCS_EXTENSIONS = ['csv', 'docx', 'key', 'odt', 'pdf', 'pptx', 'rtf', 'txt', 'xlsx', 'zip']
+
+WAGTAILIMAGES_EXTENSIONS = ["gif", "jpg", "jpeg", "png", "webp", "svg"]
diff --git a/saburly/urls.py b/saburly/urls.py
index c2e8a0cf..986292d8 100644
--- a/saburly/urls.py
+++ b/saburly/urls.py
@@ -13,6 +13,8 @@ urlpatterns = [
path("admin/", include(wagtailadmin_urls)),
path("documents/", include(wagtaildocs_urls)),
path("search/", search_views.search, name="search"),
+ path("", include(wagtail_urls)),
+
]
diff --git a/services/__init__.py b/services/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/services/__pycache__/__init__.cpython-310.pyc b/services/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..5197f5d5
Binary files /dev/null and b/services/__pycache__/__init__.cpython-310.pyc differ
diff --git a/services/__pycache__/admin.cpython-310.pyc b/services/__pycache__/admin.cpython-310.pyc
new file mode 100644
index 00000000..d47cdec3
Binary files /dev/null and b/services/__pycache__/admin.cpython-310.pyc differ
diff --git a/services/__pycache__/apps.cpython-310.pyc b/services/__pycache__/apps.cpython-310.pyc
new file mode 100644
index 00000000..986afb6a
Binary files /dev/null and b/services/__pycache__/apps.cpython-310.pyc differ
diff --git a/services/__pycache__/models.cpython-310.pyc b/services/__pycache__/models.cpython-310.pyc
new file mode 100644
index 00000000..cfcfd521
Binary files /dev/null and b/services/__pycache__/models.cpython-310.pyc differ
diff --git a/services/admin.py b/services/admin.py
new file mode 100644
index 00000000..8c38f3f3
--- /dev/null
+++ b/services/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/services/apps.py b/services/apps.py
new file mode 100644
index 00000000..3fba70bb
--- /dev/null
+++ b/services/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ServicesConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'services'
diff --git a/services/migrations/0001_initial.py b/services/migrations/0001_initial.py
new file mode 100644
index 00000000..d330871d
--- /dev/null
+++ b/services/migrations/0001_initial.py
@@ -0,0 +1,54 @@
+# Generated by Django 5.0.8 on 2024-09-09 14:51
+
+import django.db.models.deletion
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('wagtailcore', '0094_alter_page_locale'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ServicesPage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+ ('sf1title', wagtail.fields.RichTextField(blank=True)),
+ ('sf1text', wagtail.fields.RichTextField(blank=True)),
+ ('sf1img', wagtail.fields.RichTextField(blank=True)),
+ ('sf2title', wagtail.fields.RichTextField(blank=True)),
+ ('sf2text', wagtail.fields.RichTextField(blank=True)),
+ ('sf2img', wagtail.fields.RichTextField(blank=True)),
+ ('sf3title', wagtail.fields.RichTextField(blank=True)),
+ ('sf3text', wagtail.fields.RichTextField(blank=True)),
+ ('sf3img', wagtail.fields.RichTextField(blank=True)),
+ ('sf4title', wagtail.fields.RichTextField(blank=True)),
+ ('sf4text', wagtail.fields.RichTextField(blank=True)),
+ ('sf4img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5title', wagtail.fields.RichTextField(blank=True)),
+ ('sf5text', wagtail.fields.RichTextField(blank=True)),
+ ('sf5img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf1', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf1img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf2', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf2img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf3', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf3img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf4', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf4img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf5', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf5img', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf6', wagtail.fields.RichTextField(blank=True)),
+ ('sf5subf6img', wagtail.fields.RichTextField(blank=True)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=('wagtailcore.page',),
+ ),
+ ]
diff --git a/services/migrations/0002_rename_sf5img_servicespage_section_five_img_and_more.py b/services/migrations/0002_rename_sf5img_servicespage_section_five_img_and_more.py
new file mode 100644
index 00000000..a8f566e8
--- /dev/null
+++ b/services/migrations/0002_rename_sf5img_servicespage_section_five_img_and_more.py
@@ -0,0 +1,148 @@
+# Generated by Django 5.0.8 on 2024-09-10 17:21
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('services', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5img',
+ new_name='section_five_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5text',
+ new_name='section_five_text',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5title',
+ new_name='section_five_title',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf4img',
+ new_name='section_four_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf4text',
+ new_name='section_four_text',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf4title',
+ new_name='section_four_title',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf1img',
+ new_name='section_one_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf1text',
+ new_name='section_one_text',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf1title',
+ new_name='section_one_title',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf3img',
+ new_name='section_three_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf3text',
+ new_name='section_three_text',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf3title',
+ new_name='section_three_title',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf2img',
+ new_name='section_two_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf2text',
+ new_name='section_two_text',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf2title',
+ new_name='section_two_title',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf5',
+ new_name='sub_section_five',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf5img',
+ new_name='sub_section_five_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf4',
+ new_name='sub_section_four',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf4img',
+ new_name='sub_section_four_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf1',
+ new_name='sub_section_one',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf1img',
+ new_name='sub_section_one_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf6',
+ new_name='sub_section_six',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf6img',
+ new_name='sub_section_six_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf3',
+ new_name='sub_section_three',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf3img',
+ new_name='sub_section_three_img',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf2',
+ new_name='sub_section_two',
+ ),
+ migrations.RenameField(
+ model_name='servicespage',
+ old_name='sf5subf2img',
+ new_name='sub_section_two_img',
+ ),
+ ]
diff --git a/services/migrations/__init__.py b/services/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/services/migrations/__pycache__/0001_initial.cpython-310.pyc b/services/migrations/__pycache__/0001_initial.cpython-310.pyc
new file mode 100644
index 00000000..a89ff067
Binary files /dev/null and b/services/migrations/__pycache__/0001_initial.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc b/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc
new file mode 100644
index 00000000..f483d85d
Binary files /dev/null and b/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/__init__.cpython-310.pyc b/services/migrations/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..e901b30a
Binary files /dev/null and b/services/migrations/__pycache__/__init__.cpython-310.pyc differ
diff --git a/services/models.py b/services/models.py
new file mode 100644
index 00000000..522cac2d
--- /dev/null
+++ b/services/models.py
@@ -0,0 +1,98 @@
+from __future__ import unicode_literals
+
+from django.db import models
+from wagtail.fields import RichTextField
+from wagtail.admin.panels import FieldPanel, MultiFieldPanel
+from wagtail.models import Page
+
+class ServicesPage(Page):
+ section_one_title = RichTextField(blank=True)
+ section_one_text = RichTextField(blank=True)
+ section_one_img = RichTextField(blank=True)
+
+
+ section_two_title = RichTextField(blank=True)
+ section_two_text = RichTextField(blank=True)
+ section_two_img = RichTextField(blank=True)
+
+ section_three_title = RichTextField(blank=True)
+ section_three_text = RichTextField(blank=True)
+ section_three_img = RichTextField(blank=True)
+
+
+ section_four_title = RichTextField(blank=True)
+ section_four_text = RichTextField(blank=True)
+ section_four_img = RichTextField(blank=True)
+
+
+ section_five_title = RichTextField(blank=True)
+ section_five_text = RichTextField(blank=True)
+ section_five_img = RichTextField(blank=True)
+
+
+ sub_section_one = RichTextField(blank=True)
+ sub_section_one_img = RichTextField(blank=True)
+
+ sub_section_two = RichTextField(blank=True)
+ sub_section_two_img = RichTextField(blank=True)
+
+ sub_section_three = RichTextField(blank=True)
+ sub_section_three_img = RichTextField(blank=True)
+
+ sub_section_four = RichTextField(blank=True)
+ sub_section_four_img = RichTextField(blank=True)
+
+ sub_section_five = RichTextField(blank=True)
+ sub_section_five_img = RichTextField(blank=True)
+
+ sub_section_six = RichTextField(blank=True)
+ sub_section_six_img = RichTextField(blank=True)
+
+
+
+ content_panels = Page.content_panels + [
+ MultiFieldPanel([
+ FieldPanel('section_one_title'),
+ FieldPanel('section_one_text'),
+ FieldPanel('section_one_img'),
+ ], heading="Section 1"),
+
+ MultiFieldPanel([
+ FieldPanel('section_two_title'),
+ FieldPanel('section_two_text'),
+ FieldPanel('section_two_img'),
+ ], heading="Section 2"),
+
+ MultiFieldPanel([
+ FieldPanel('section_three_title'),
+ FieldPanel('section_three_text'),
+ FieldPanel('section_three_img'),
+ ], heading="Section 3"),
+
+ MultiFieldPanel([
+ FieldPanel('section_four_title'),
+ FieldPanel('section_four_text'),
+ FieldPanel('section_four_img'),
+ ], heading="Section 4"),
+
+ MultiFieldPanel([
+ FieldPanel('section_five_title'),
+ FieldPanel('section_five_text'),
+ FieldPanel('section_five_img'),
+ ], heading="Section 5"),
+
+ MultiFieldPanel([
+ FieldPanel('sub_section_one'),
+ FieldPanel('sub_section_one_img'),
+ FieldPanel('sub_section_two'),
+ FieldPanel('sub_section_two_img'),
+ FieldPanel('sub_section_three'),
+ FieldPanel('sub_section_three_img'),
+ FieldPanel('sub_section_four'),
+ FieldPanel('sub_section_four_img'),
+ FieldPanel('sub_section_five'),
+ FieldPanel('sub_section_five_img'),
+ FieldPanel('sub_section_six'),
+ FieldPanel('sub_section_six_img'),
+ ], heading="Section 5 Subfields"),
+ ]
diff --git a/services/tests.py b/services/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/services/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/services/views.py b/services/views.py
new file mode 100644
index 00000000..91ea44a2
--- /dev/null
+++ b/services/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/static/css/style.css b/static/css/style.css
new file mode 100644
index 00000000..74992bee
--- /dev/null
+++ b/static/css/style.css
@@ -0,0 +1,170 @@
+header {
+ position: fixed;
+ width: 100%;
+ transition: top 0.3s ease-in-out;
+ background-color: #5763AB;
+ width: 100%;
+ z-index: 9999;
+}
+
+.saburly-menu {
+ z-index: 9999;
+ margin-left: 10%;
+ margin-right: 10%;
+}
+
+.side-menu {
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: 256px;
+ min-height: 100vh;
+ overflow-y: scroll;
+ -webkit-overflow-scrolling: touch;
+ background-color: #5763ab;
+ z-index: 0;
+ display: none;
+ transition: all 0.25s ease;
+}
+
+
+.slideout-open .side-menu {
+ transform: translateX(0);
+}
+
+.side-menu .social-icons {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ z-index: 10001;
+}
+
+.menu_icon [class*='menu_bar-'] {
+ background: #ffffff;
+ transform: rotate(0deg);
+ transition: 0.2s ease all;
+ height: 0.18rem;
+ display: block;
+ margin-bottom: 0.3rem;
+}
+
+.menu_icon [class*='menu_bar-']:last-child {
+ margin-bottom: 0rem;
+}
+
+.menu_icon:focus {
+ outline: 0;
+}
+
+.menu_bar-top {
+ width: 25px;
+}
+
+.menu_bar-mid {
+ width: 20px;
+}
+
+.menu_bar-bot {
+ width: 25px;
+}
+
+.menu-opened .menu_bar-top {
+ transform: rotate(45deg);
+ transform-origin: 15% 15%;
+}
+
+.menu-opened .menu_bar-mid {
+ opacity: 0;
+}
+
+.menu-opened .menu_bar-bot {
+ transform: rotate(-45deg);
+ transform-origin: 15% 95%;
+}
+
+.side-toggle {
+ cursor: pointer;
+ z-index: 10001;
+}
+
+.side-toggle:hover {
+ opacity: 0.7;
+}
+
+.side-navigation li {
+ list-style: none;
+}
+
+.side-navigation a {
+ text-decoration: none;
+}
+
+.saburly-footer,
+.content{
+ margin-left: 10%;
+ margin-right: 10%;
+}
+
+footer {
+ background-color: #5763AB;
+ width: 100%;
+}
+
+.saburly-footer {
+ padding-bottom: 1%;
+}
+
+.connect {
+ background-color: #4A5699;
+}
+
+.btn {
+ background-color: #5dcdd4;
+}
+
+.btn:hover {
+ background-color: #51b5bb;
+}
+
+.rqbtn:hover {
+ background-color: #51b5bb;
+ border: 1px solid #51b5bb;
+}
+
+.main-color {
+ background-color: #5763AB;
+ color: white;
+}
+
+/* Hide side menu on large screens */
+@media (min-width: 1024px) {
+ .side-menu {
+ display: none;
+ }
+}
+
+/* Show side menu on smaller screens */
+@media (max-width: 1023px) {
+ .side-menu {
+ display: block;
+ }
+}
+
+.side-menu {
+ display: none;
+}
+
+.side-menu.active {
+ display: block;
+ transform: translateX(0);
+}
+
+.header-hidden {
+ transform: translateY(-100%);
+ transition: transform 0.3s ease;
+}
+
+.header-visible {
+ transform: translateY(0);
+ transition: transform 0.3s ease;
+}
diff --git a/static/css/welcome_page.85e6f9d19e42.css b/static/css/welcome_page.85e6f9d19e42.css
deleted file mode 100644
index bad29334..00000000
--- a/static/css/welcome_page.85e6f9d19e42.css
+++ /dev/null
@@ -1,184 +0,0 @@
-html {
- box-sizing: border-box;
-}
-
-*,
-*:before,
-*:after {
- box-sizing: inherit;
-}
-
-body {
- max-width: 960px;
- min-height: 100vh;
- margin: 0 auto;
- padding: 0 15px;
- color: #231f20;
- font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif;
- line-height: 1.25;
-}
-
-a {
- background-color: transparent;
- color: #308282;
- text-decoration: underline;
-}
-
-a:hover {
- color: #ea1b10;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-p,
-ul {
- padding: 0;
- margin: 0;
- font-weight: 400;
-}
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-.header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding-top: 20px;
- padding-bottom: 10px;
- border-bottom: 1px solid #e6e6e6;
-}
-
-.logo {
- width: 150px;
- margin-inline-end: 20px;
-}
-
-.logo a {
- display: block;
-}
-
-.figure-logo {
- max-width: 150px;
- max-height: 55.1px;
-}
-
-.release-notes {
- font-size: 14px;
-}
-
-.main {
- padding: 40px 0;
- margin: 0 auto;
- text-align: center;
-}
-
-.figure-space {
- max-width: 265px;
-}
-
-@keyframes pos {
- 0%, 100% {
- transform: rotate(-6deg);
- }
- 50% {
- transform: rotate(6deg);
- }
-}
-
-.egg {
- fill: #43b1b0;
- animation: pos 3s ease infinite;
- transform: translateY(50px);
- transform-origin: 50% 80%;
-}
-
-.main-text {
- max-width: 400px;
- margin: 5px auto;
-}
-
-.main-text h1 {
- font-size: 22px;
-}
-
-.main-text p {
- margin: 15px auto 0;
-}
-
-.footer {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- border-top: 1px solid #e6e6e6;
- padding: 10px;
-}
-
-.option {
- display: block;
- padding: 10px 10px 10px 34px;
- position: relative;
- text-decoration: none;
-}
-
-.option svg {
- width: 24px;
- height: 24px;
- fill: gray;
- border: 1px solid #d9d9d9;
- padding: 5px;
- border-radius: 100%;
- top: 10px;
- inset-inline-start: 0;
- position: absolute;
-}
-
-.option h2 {
- font-size: 19px;
- text-decoration: underline;
-}
-
-.option p {
- padding-top: 3px;
- color: #231f20;
- font-size: 15px;
- font-weight: 300;
-}
-
-@media (max-width: 996px) {
- body {
- max-width: 780px;
- }
-}
-
-@media (max-width: 767px) {
- .option {
- flex: 0 0 50%;
- }
-}
-
-@media (max-width: 599px) {
- .main {
- padding: 20px 0;
- }
-
- .figure-space {
- max-width: 200px;
- }
-
- .footer {
- display: block;
- width: 300px;
- margin: 0 auto;
- }
-}
-
-@media (max-width: 360px) {
- .header-link {
- max-width: 100px;
- }
-}
diff --git a/static/css/welcome_page.css b/static/css/welcome_page.css
deleted file mode 100644
index bad29334..00000000
--- a/static/css/welcome_page.css
+++ /dev/null
@@ -1,184 +0,0 @@
-html {
- box-sizing: border-box;
-}
-
-*,
-*:before,
-*:after {
- box-sizing: inherit;
-}
-
-body {
- max-width: 960px;
- min-height: 100vh;
- margin: 0 auto;
- padding: 0 15px;
- color: #231f20;
- font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif;
- line-height: 1.25;
-}
-
-a {
- background-color: transparent;
- color: #308282;
- text-decoration: underline;
-}
-
-a:hover {
- color: #ea1b10;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-p,
-ul {
- padding: 0;
- margin: 0;
- font-weight: 400;
-}
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-.header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding-top: 20px;
- padding-bottom: 10px;
- border-bottom: 1px solid #e6e6e6;
-}
-
-.logo {
- width: 150px;
- margin-inline-end: 20px;
-}
-
-.logo a {
- display: block;
-}
-
-.figure-logo {
- max-width: 150px;
- max-height: 55.1px;
-}
-
-.release-notes {
- font-size: 14px;
-}
-
-.main {
- padding: 40px 0;
- margin: 0 auto;
- text-align: center;
-}
-
-.figure-space {
- max-width: 265px;
-}
-
-@keyframes pos {
- 0%, 100% {
- transform: rotate(-6deg);
- }
- 50% {
- transform: rotate(6deg);
- }
-}
-
-.egg {
- fill: #43b1b0;
- animation: pos 3s ease infinite;
- transform: translateY(50px);
- transform-origin: 50% 80%;
-}
-
-.main-text {
- max-width: 400px;
- margin: 5px auto;
-}
-
-.main-text h1 {
- font-size: 22px;
-}
-
-.main-text p {
- margin: 15px auto 0;
-}
-
-.footer {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- border-top: 1px solid #e6e6e6;
- padding: 10px;
-}
-
-.option {
- display: block;
- padding: 10px 10px 10px 34px;
- position: relative;
- text-decoration: none;
-}
-
-.option svg {
- width: 24px;
- height: 24px;
- fill: gray;
- border: 1px solid #d9d9d9;
- padding: 5px;
- border-radius: 100%;
- top: 10px;
- inset-inline-start: 0;
- position: absolute;
-}
-
-.option h2 {
- font-size: 19px;
- text-decoration: underline;
-}
-
-.option p {
- padding-top: 3px;
- color: #231f20;
- font-size: 15px;
- font-weight: 300;
-}
-
-@media (max-width: 996px) {
- body {
- max-width: 780px;
- }
-}
-
-@media (max-width: 767px) {
- .option {
- flex: 0 0 50%;
- }
-}
-
-@media (max-width: 599px) {
- .main {
- padding: 20px 0;
- }
-
- .figure-space {
- max-width: 200px;
- }
-
- .footer {
- display: block;
- width: 300px;
- margin: 0 auto;
- }
-}
-
-@media (max-width: 360px) {
- .header-link {
- max-width: 100px;
- }
-}
diff --git a/static/images/Saburly-logo-2.svg b/static/images/Saburly-logo-2.svg
new file mode 100644
index 00000000..bc0f0e9f
--- /dev/null
+++ b/static/images/Saburly-logo-2.svg
@@ -0,0 +1,62 @@
+
+
+
diff --git a/static/images/Saburly-logo-3.svg b/static/images/Saburly-logo-3.svg
new file mode 100644
index 00000000..e47383c4
--- /dev/null
+++ b/static/images/Saburly-logo-3.svg
@@ -0,0 +1,59 @@
+
+
+
diff --git a/static/images/Saburly-logo-5.svg b/static/images/Saburly-logo-5.svg
new file mode 100644
index 00000000..a098041e
--- /dev/null
+++ b/static/images/Saburly-logo-5.svg
@@ -0,0 +1,59 @@
+
+
+
diff --git a/static/images/Saburly-logo-variation.svg b/static/images/Saburly-logo-variation.svg
new file mode 100644
index 00000000..bc0f0e9f
--- /dev/null
+++ b/static/images/Saburly-logo-variation.svg
@@ -0,0 +1,62 @@
+
+
+
diff --git a/static/images/Saburly-logo.svg b/static/images/Saburly-logo.svg
new file mode 100644
index 00000000..bd3f3f39
--- /dev/null
+++ b/static/images/Saburly-logo.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/static/images/agile-practitioners.jpg b/static/images/agile-practitioners.jpg
new file mode 100644
index 00000000..fa725a74
Binary files /dev/null and b/static/images/agile-practitioners.jpg differ
diff --git a/static/images/amazon-webservices.svg b/static/images/amazon-webservices.svg
new file mode 100644
index 00000000..32a2c558
--- /dev/null
+++ b/static/images/amazon-webservices.svg
@@ -0,0 +1,45 @@
+
+
+
diff --git a/static/images/angular-js.svg b/static/images/angular-js.svg
new file mode 100644
index 00000000..e0a9d8a9
--- /dev/null
+++ b/static/images/angular-js.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/static/images/best-web-development-sweden.svg b/static/images/best-web-development-sweden.svg
new file mode 100644
index 00000000..72a6d84d
--- /dev/null
+++ b/static/images/best-web-development-sweden.svg
@@ -0,0 +1,281 @@
+
+
\ No newline at end of file
diff --git a/static/images/bg-saburly-default.svg b/static/images/bg-saburly-default.svg
new file mode 100644
index 00000000..4d89096e
--- /dev/null
+++ b/static/images/bg-saburly-default.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/code-reviews.svg b/static/images/code-reviews.svg
new file mode 100644
index 00000000..34e69324
--- /dev/null
+++ b/static/images/code-reviews.svg
@@ -0,0 +1,66 @@
+
+
+
diff --git a/static/images/coder-awards.svg b/static/images/coder-awards.svg
new file mode 100644
index 00000000..050b24e9
--- /dev/null
+++ b/static/images/coder-awards.svg
@@ -0,0 +1,71 @@
+
+
+
diff --git a/static/images/coding-tutorials-patience.jpg b/static/images/coding-tutorials-patience.jpg
new file mode 100644
index 00000000..8d044c94
Binary files /dev/null and b/static/images/coding-tutorials-patience.jpg differ
diff --git a/static/images/coding-tutorials-patience.svg b/static/images/coding-tutorials-patience.svg
new file mode 100644
index 00000000..77e4855a
--- /dev/null
+++ b/static/images/coding-tutorials-patience.svg
@@ -0,0 +1,436 @@
+
+
\ No newline at end of file
diff --git a/static/images/contact-web-consultancy-sweden.svg b/static/images/contact-web-consultancy-sweden.svg
new file mode 100644
index 00000000..ef4ee998
--- /dev/null
+++ b/static/images/contact-web-consultancy-sweden.svg
@@ -0,0 +1,302 @@
+
+
\ No newline at end of file
diff --git a/static/images/continuous-delivery.svg b/static/images/continuous-delivery.svg
new file mode 100644
index 00000000..88ac9745
--- /dev/null
+++ b/static/images/continuous-delivery.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/static/images/coo-edin.jpg b/static/images/coo-edin.jpg
new file mode 100644
index 00000000..e54a4849
Binary files /dev/null and b/static/images/coo-edin.jpg differ
diff --git a/static/images/cto-senad.jpg b/static/images/cto-senad.jpg
new file mode 100644
index 00000000..43307466
Binary files /dev/null and b/static/images/cto-senad.jpg differ
diff --git a/static/images/custom-software-development.svg b/static/images/custom-software-development.svg
new file mode 100644
index 00000000..61463b39
--- /dev/null
+++ b/static/images/custom-software-development.svg
@@ -0,0 +1,372 @@
+
+
\ No newline at end of file
diff --git a/static/images/custom-software-workflow.svg b/static/images/custom-software-workflow.svg
new file mode 100644
index 00000000..2c0409fd
--- /dev/null
+++ b/static/images/custom-software-workflow.svg
@@ -0,0 +1,150 @@
+
+
\ No newline at end of file
diff --git a/static/images/denver-web-agency.jpg b/static/images/denver-web-agency.jpg
new file mode 100644
index 00000000..dd8c3b5c
Binary files /dev/null and b/static/images/denver-web-agency.jpg differ
diff --git a/static/images/developer-almira.jpg b/static/images/developer-almira.jpg
new file mode 100644
index 00000000..e3c33e5b
Binary files /dev/null and b/static/images/developer-almira.jpg differ
diff --git a/static/images/developer-bilal.jpg b/static/images/developer-bilal.jpg
new file mode 100644
index 00000000..fcfc4ab6
Binary files /dev/null and b/static/images/developer-bilal.jpg differ
diff --git a/static/images/developer-mediha.jpg b/static/images/developer-mediha.jpg
new file mode 100644
index 00000000..fc950555
Binary files /dev/null and b/static/images/developer-mediha.jpg differ
diff --git a/static/images/developer-mickey.svg b/static/images/developer-mickey.svg
new file mode 100644
index 00000000..b0c949d3
--- /dev/null
+++ b/static/images/developer-mickey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/developer-mirna.jpg b/static/images/developer-mirna.jpg
new file mode 100644
index 00000000..6f77dffd
Binary files /dev/null and b/static/images/developer-mirna.jpg differ
diff --git a/static/images/developer-nedim.svg b/static/images/developer-nedim.svg
new file mode 100644
index 00000000..8fc91557
--- /dev/null
+++ b/static/images/developer-nedim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/docker.svg b/static/images/docker.svg
new file mode 100644
index 00000000..824f7325
--- /dev/null
+++ b/static/images/docker.svg
@@ -0,0 +1,36 @@
+
+
+
diff --git a/static/images/elastic.svg b/static/images/elastic.svg
new file mode 100644
index 00000000..3143b12f
--- /dev/null
+++ b/static/images/elastic.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/static/images/es6.svg b/static/images/es6.svg
new file mode 100644
index 00000000..a41543fb
--- /dev/null
+++ b/static/images/es6.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/static/images/facebook.svg b/static/images/facebook.svg
new file mode 100644
index 00000000..e16b2089
--- /dev/null
+++ b/static/images/facebook.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/static/images/favicon.png b/static/images/favicon.png
new file mode 100644
index 00000000..5bfbeb16
Binary files /dev/null and b/static/images/favicon.png differ
diff --git a/static/images/favicon32.png b/static/images/favicon32.png
new file mode 100644
index 00000000..71514701
Binary files /dev/null and b/static/images/favicon32.png differ
diff --git a/static/images/find-web-company.svg b/static/images/find-web-company.svg
new file mode 100644
index 00000000..530b30c8
--- /dev/null
+++ b/static/images/find-web-company.svg
@@ -0,0 +1,299 @@
+
+
\ No newline at end of file
diff --git a/static/images/fullstack-web-development-agency.svg b/static/images/fullstack-web-development-agency.svg
new file mode 100644
index 00000000..8b1dc1d2
--- /dev/null
+++ b/static/images/fullstack-web-development-agency.svg
@@ -0,0 +1,263 @@
+
+
\ No newline at end of file
diff --git a/static/images/fullstack-web-development-company.svg b/static/images/fullstack-web-development-company.svg
new file mode 100644
index 00000000..1208a5c8
--- /dev/null
+++ b/static/images/fullstack-web-development-company.svg
@@ -0,0 +1,331 @@
+
+
\ No newline at end of file
diff --git a/static/images/fullstack-web-development.svg b/static/images/fullstack-web-development.svg
new file mode 100644
index 00000000..1fb9d33b
--- /dev/null
+++ b/static/images/fullstack-web-development.svg
@@ -0,0 +1,735 @@
+
+
\ No newline at end of file
diff --git a/static/images/how-we-work.svg b/static/images/how-we-work.svg
new file mode 100644
index 00000000..ac138e62
--- /dev/null
+++ b/static/images/how-we-work.svg
@@ -0,0 +1,67 @@
+
+
\ No newline at end of file
diff --git a/static/images/html-5.svg b/static/images/html-5.svg
new file mode 100644
index 00000000..f4ba11b5
--- /dev/null
+++ b/static/images/html-5.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/static/images/instagram.svg b/static/images/instagram.svg
new file mode 100644
index 00000000..19b206e7
--- /dev/null
+++ b/static/images/instagram.svg
@@ -0,0 +1,21 @@
+
+
+
diff --git a/static/images/jenkins.svg b/static/images/jenkins.svg
new file mode 100644
index 00000000..7c62a296
--- /dev/null
+++ b/static/images/jenkins.svg
@@ -0,0 +1,55 @@
+
+
+
diff --git a/static/images/linkedin.svg b/static/images/linkedin.svg
new file mode 100644
index 00000000..2e8e29c6
--- /dev/null
+++ b/static/images/linkedin.svg
@@ -0,0 +1,13 @@
+
+
+
diff --git a/static/images/logo-colounge.svg b/static/images/logo-colounge.svg
new file mode 100644
index 00000000..f87ee448
--- /dev/null
+++ b/static/images/logo-colounge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/logo-coor-color.svg b/static/images/logo-coor-color.svg
new file mode 100644
index 00000000..0fe3c2b4
--- /dev/null
+++ b/static/images/logo-coor-color.svg
@@ -0,0 +1,30 @@
+
+
+
diff --git a/static/images/logo-coor.svg b/static/images/logo-coor.svg
new file mode 100644
index 00000000..66499188
--- /dev/null
+++ b/static/images/logo-coor.svg
@@ -0,0 +1,30 @@
+
+
+
diff --git a/static/images/logo-hyrma-admin.svg b/static/images/logo-hyrma-admin.svg
new file mode 100644
index 00000000..9143bdbb
--- /dev/null
+++ b/static/images/logo-hyrma-admin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/logo-ibm-color.svg b/static/images/logo-ibm-color.svg
new file mode 100644
index 00000000..6d113585
--- /dev/null
+++ b/static/images/logo-ibm-color.svg
@@ -0,0 +1,60 @@
+
+
+
diff --git a/static/images/logo-ibm.svg b/static/images/logo-ibm.svg
new file mode 100644
index 00000000..218e086a
--- /dev/null
+++ b/static/images/logo-ibm.svg
@@ -0,0 +1,60 @@
+
+
+
diff --git a/static/images/logo-imcg.png b/static/images/logo-imcg.png
new file mode 100644
index 00000000..47232b3e
Binary files /dev/null and b/static/images/logo-imcg.png differ
diff --git a/static/images/logo-kinnarps-color.svg b/static/images/logo-kinnarps-color.svg
new file mode 100644
index 00000000..a5d3e13c
--- /dev/null
+++ b/static/images/logo-kinnarps-color.svg
@@ -0,0 +1,38 @@
+
+
+
diff --git a/static/images/logo-kinnarps.svg b/static/images/logo-kinnarps.svg
new file mode 100644
index 00000000..23c23de6
--- /dev/null
+++ b/static/images/logo-kinnarps.svg
@@ -0,0 +1,38 @@
+
+
+
diff --git a/static/images/logo-ricoh-color.svg b/static/images/logo-ricoh-color.svg
new file mode 100644
index 00000000..e8c747aa
--- /dev/null
+++ b/static/images/logo-ricoh-color.svg
@@ -0,0 +1,20 @@
+
+
+
diff --git a/static/images/logo-ricoh.svg b/static/images/logo-ricoh.svg
new file mode 100644
index 00000000..259ad731
--- /dev/null
+++ b/static/images/logo-ricoh.svg
@@ -0,0 +1,20 @@
+
+
+
diff --git a/static/images/logo-saburly-white.svg b/static/images/logo-saburly-white.svg
new file mode 100644
index 00000000..e0c00582
--- /dev/null
+++ b/static/images/logo-saburly-white.svg
@@ -0,0 +1,36 @@
+
+
\ No newline at end of file
diff --git a/static/images/manager-emil.svg b/static/images/manager-emil.svg
new file mode 100644
index 00000000..dff94f55
--- /dev/null
+++ b/static/images/manager-emil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/mobile-app-development-company.svg b/static/images/mobile-app-development-company.svg
new file mode 100644
index 00000000..9bb552cf
--- /dev/null
+++ b/static/images/mobile-app-development-company.svg
@@ -0,0 +1,221 @@
+
+
\ No newline at end of file
diff --git a/static/images/mobile-development-company.svg b/static/images/mobile-development-company.svg
new file mode 100644
index 00000000..4cd2aa91
--- /dev/null
+++ b/static/images/mobile-development-company.svg
@@ -0,0 +1,297 @@
+
+
\ No newline at end of file
diff --git a/static/images/modern-devops.svg b/static/images/modern-devops.svg
new file mode 100644
index 00000000..682a65f9
--- /dev/null
+++ b/static/images/modern-devops.svg
@@ -0,0 +1,58 @@
+
+
+
diff --git a/static/images/mongodb.svg b/static/images/mongodb.svg
new file mode 100644
index 00000000..f8145241
--- /dev/null
+++ b/static/images/mongodb.svg
@@ -0,0 +1,25 @@
+
+
+
diff --git a/static/images/mysql.svg b/static/images/mysql.svg
new file mode 100644
index 00000000..15638b16
--- /dev/null
+++ b/static/images/mysql.svg
@@ -0,0 +1,32 @@
+
+
+
diff --git a/static/images/nina2.png b/static/images/nina2.png
new file mode 100644
index 00000000..85768847
Binary files /dev/null and b/static/images/nina2.png differ
diff --git a/static/images/nodejs.svg b/static/images/nodejs.svg
new file mode 100644
index 00000000..e8986603
--- /dev/null
+++ b/static/images/nodejs.svg
@@ -0,0 +1,33 @@
+
+
+
diff --git a/static/images/postgresql.svg b/static/images/postgresql.svg
new file mode 100644
index 00000000..6794bc6c
--- /dev/null
+++ b/static/images/postgresql.svg
@@ -0,0 +1,47 @@
+
+
+
diff --git a/static/images/python.svg b/static/images/python.svg
new file mode 100644
index 00000000..5b789c10
--- /dev/null
+++ b/static/images/python.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/static/images/rails.svg b/static/images/rails.svg
new file mode 100644
index 00000000..34edcc98
--- /dev/null
+++ b/static/images/rails.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/static/images/react.svg b/static/images/react.svg
new file mode 100644
index 00000000..2d551c41
--- /dev/null
+++ b/static/images/react.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/static/images/redis.svg b/static/images/redis.svg
new file mode 100644
index 00000000..43c6b40e
--- /dev/null
+++ b/static/images/redis.svg
@@ -0,0 +1,39 @@
+
+
+
diff --git a/static/images/ruby.svg b/static/images/ruby.svg
new file mode 100644
index 00000000..25d0a4b1
--- /dev/null
+++ b/static/images/ruby.svg
@@ -0,0 +1,28 @@
+
+
+
diff --git a/static/images/saburly-logo-1.svg b/static/images/saburly-logo-1.svg
new file mode 100644
index 00000000..c1f05af6
--- /dev/null
+++ b/static/images/saburly-logo-1.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/static/images/saburly-logo-2.svg b/static/images/saburly-logo-2.svg
new file mode 100644
index 00000000..bc0f0e9f
--- /dev/null
+++ b/static/images/saburly-logo-2.svg
@@ -0,0 +1,62 @@
+
+
+
diff --git a/static/images/saburly-logo-3.svg b/static/images/saburly-logo-3.svg
new file mode 100644
index 00000000..e47383c4
--- /dev/null
+++ b/static/images/saburly-logo-3.svg
@@ -0,0 +1,59 @@
+
+
+
diff --git a/static/images/saburly-logo-4.svg b/static/images/saburly-logo-4.svg
new file mode 100644
index 00000000..3f2452ac
--- /dev/null
+++ b/static/images/saburly-logo-4.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/static/images/saburly-logo-5.svg b/static/images/saburly-logo-5.svg
new file mode 100644
index 00000000..a098041e
--- /dev/null
+++ b/static/images/saburly-logo-5.svg
@@ -0,0 +1,59 @@
+
+
+
diff --git a/static/images/saburly-logo-bold.svg b/static/images/saburly-logo-bold.svg
new file mode 100644
index 00000000..12c97b83
--- /dev/null
+++ b/static/images/saburly-logo-bold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/images/saburly-logo-variation.svg b/static/images/saburly-logo-variation.svg
new file mode 100644
index 00000000..bc0f0e9f
--- /dev/null
+++ b/static/images/saburly-logo-variation.svg
@@ -0,0 +1,62 @@
+
+
+
diff --git a/static/images/saburly-logo-w.svg b/static/images/saburly-logo-w.svg
new file mode 100644
index 00000000..7c4a8148
--- /dev/null
+++ b/static/images/saburly-logo-w.svg
@@ -0,0 +1,31 @@
+
+
\ No newline at end of file
diff --git a/static/images/saburly-logo-white.svg b/static/images/saburly-logo-white.svg
new file mode 100644
index 00000000..c6454ff1
--- /dev/null
+++ b/static/images/saburly-logo-white.svg
@@ -0,0 +1,46 @@
+
+
\ No newline at end of file
diff --git a/static/images/saburly-web-agency-2.jpg b/static/images/saburly-web-agency-2.jpg
new file mode 100644
index 00000000..26032e9c
Binary files /dev/null and b/static/images/saburly-web-agency-2.jpg differ
diff --git a/static/images/saburly-web-agency-group.jpg b/static/images/saburly-web-agency-group.jpg
new file mode 100644
index 00000000..87a73eea
Binary files /dev/null and b/static/images/saburly-web-agency-group.jpg differ
diff --git a/static/images/saburly-web-agency.jpg b/static/images/saburly-web-agency.jpg
new file mode 100644
index 00000000..cc17867f
Binary files /dev/null and b/static/images/saburly-web-agency.jpg differ
diff --git a/static/images/saburly.jpg b/static/images/saburly.jpg
new file mode 100644
index 00000000..448541fc
Binary files /dev/null and b/static/images/saburly.jpg differ
diff --git a/static/images/sarajevo-web-agency.jpg b/static/images/sarajevo-web-agency.jpg
new file mode 100644
index 00000000..64e42607
Binary files /dev/null and b/static/images/sarajevo-web-agency.jpg differ
diff --git a/static/images/services-background.svg b/static/images/services-background.svg
new file mode 100644
index 00000000..7c084697
--- /dev/null
+++ b/static/images/services-background.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/static/images/stockholm-web-agency.jpg b/static/images/stockholm-web-agency.jpg
new file mode 100644
index 00000000..95d735f4
Binary files /dev/null and b/static/images/stockholm-web-agency.jpg differ
diff --git a/static/images/top-web-developer-company.png b/static/images/top-web-developer-company.png
new file mode 100644
index 00000000..7e835a8e
Binary files /dev/null and b/static/images/top-web-developer-company.png differ
diff --git a/static/images/twitter.svg b/static/images/twitter.svg
new file mode 100644
index 00000000..ecf29d04
--- /dev/null
+++ b/static/images/twitter.svg
@@ -0,0 +1,14 @@
+
+
+
diff --git a/static/images/unit-and-integration-testing.svg b/static/images/unit-and-integration-testing.svg
new file mode 100644
index 00000000..31b18269
--- /dev/null
+++ b/static/images/unit-and-integration-testing.svg
@@ -0,0 +1,103 @@
+
+
+
diff --git a/static/images/user-experience-design-agency.svg b/static/images/user-experience-design-agency.svg
new file mode 100644
index 00000000..3ea7e265
--- /dev/null
+++ b/static/images/user-experience-design-agency.svg
@@ -0,0 +1,231 @@
+
+
\ No newline at end of file
diff --git a/static/images/user-experience-design-services.svg b/static/images/user-experience-design-services.svg
new file mode 100644
index 00000000..cfb073b8
--- /dev/null
+++ b/static/images/user-experience-design-services.svg
@@ -0,0 +1,150 @@
+
+
\ No newline at end of file
diff --git a/static/images/ux-designer-nina.jpg b/static/images/ux-designer-nina.jpg
new file mode 100644
index 00000000..79337474
Binary files /dev/null and b/static/images/ux-designer-nina.jpg differ
diff --git a/static/images/ux-research.svg b/static/images/ux-research.svg
new file mode 100644
index 00000000..50d1461e
--- /dev/null
+++ b/static/images/ux-research.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/static/images/ux-ui-design-company.svg b/static/images/ux-ui-design-company.svg
new file mode 100644
index 00000000..b238258c
--- /dev/null
+++ b/static/images/ux-ui-design-company.svg
@@ -0,0 +1,409 @@
+
+
\ No newline at end of file
diff --git a/static/images/ux-ui-design-services.svg b/static/images/ux-ui-design-services.svg
new file mode 100644
index 00000000..57626037
--- /dev/null
+++ b/static/images/ux-ui-design-services.svg
@@ -0,0 +1,195 @@
+
+
\ No newline at end of file
diff --git a/static/images/web-development-agency.svg b/static/images/web-development-agency.svg
new file mode 100644
index 00000000..702bc8ad
--- /dev/null
+++ b/static/images/web-development-agency.svg
@@ -0,0 +1,724 @@
+
+
\ No newline at end of file
diff --git a/static/images/web-development-company.svg b/static/images/web-development-company.svg
new file mode 100644
index 00000000..72d53af8
--- /dev/null
+++ b/static/images/web-development-company.svg
@@ -0,0 +1,279 @@
+
+
\ No newline at end of file
diff --git a/static/images/web-development-consultancy.jpg b/static/images/web-development-consultancy.jpg
new file mode 100644
index 00000000..74696bdd
Binary files /dev/null and b/static/images/web-development-consultancy.jpg differ
diff --git a/static/images/web-development-consultants.jpg b/static/images/web-development-consultants.jpg
new file mode 100644
index 00000000..709e44d0
Binary files /dev/null and b/static/images/web-development-consultants.jpg differ
diff --git a/static/images/web-development-services-agency.svg b/static/images/web-development-services-agency.svg
new file mode 100644
index 00000000..135863b1
--- /dev/null
+++ b/static/images/web-development-services-agency.svg
@@ -0,0 +1,186 @@
+
+
\ No newline at end of file
diff --git a/static/images/wow-we-did-design-sprint-remotely.png b/static/images/wow-we-did-design-sprint-remotely.png
new file mode 100644
index 00000000..40fef532
Binary files /dev/null and b/static/images/wow-we-did-design-sprint-remotely.png differ
diff --git a/templates/about/about_page.html b/templates/about/about_page.html
new file mode 100644
index 00000000..00cd491f
--- /dev/null
+++ b/templates/about/about_page.html
@@ -0,0 +1,52 @@
+{% extends "base.html" %}
+
+{% load wagtailcore_tags %}
+
+{% block body_class %}template-aboutpage{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+ {{ page.section_one_title|richtext }}
+
+
+ {{ page.section_one_text|richtext }}
+
+
+
+
+ {{ page.section_one_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.section_two_title|richtext }}
+
+
+ {{ page.section_two_text|richtext }}
+
+
+
+
+ {{ page.section_two_img|richtext }}
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/base.html b/templates/base.html
new file mode 100644
index 00000000..f1e21a8b
--- /dev/null
+++ b/templates/base.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ {% block title %}Saburly - {{ self.title }}{% endblock %}
+
+
+
+
+
+ {% load static %}
+
+
+ {% block extra_head %}{% endblock %}
+
+
+
+
+ {% include 'header.html' %}
+
+ {% block content %}
+ {% endblock %}
+
+ {% include 'footer.html' %}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/contact/contact_page.html b/templates/contact/contact_page.html
new file mode 100644
index 00000000..9138520d
--- /dev/null
+++ b/templates/contact/contact_page.html
@@ -0,0 +1,73 @@
+{% extends "base.html" %}
+
+{% load wagtailcore_tags %}
+
+{% block body_class %}template-contactpage{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {{ page.section_one_title|richtext }}
+
+
+ {{ page.section_one_text|richtext }}
+
+
+
+
+ {{ page.section_one_img|richtext }}
+
+
+
+
+
+
+ {% load widget_tweaks %}
+
+
+
+
+
+
+
+ {{ page.section_two_title|richtext }}
+
+
+
+
+
+ {{ page.section_two_img|richtext }}
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/contact/contact_page_landing.html b/templates/contact/contact_page_landing.html
new file mode 100644
index 00000000..17f8123c
--- /dev/null
+++ b/templates/contact/contact_page_landing.html
@@ -0,0 +1,56 @@
+{% extends "base.html" %}
+
+{% load wagtailcore_tags %}
+
+{% block body_class %}template-contactpage{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {{ page.section_one_title|richtext }}
+
+
+ {{ page.section_one_text|richtext }}
+
+
+
+
+ {{ page.section_one_img|richtext }}
+
+
+
+
+
+
+ {% load widget_tweaks %}
+
+
+
+
+
+
+
+ {{ page.section_two_text|richtext }}
+
+
+
+
+
+ {{ page.section_two_img|richtext }}
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/footer.html b/templates/footer.html
new file mode 100644
index 00000000..bc42c39f
--- /dev/null
+++ b/templates/footer.html
@@ -0,0 +1,79 @@
+{%load static%}
+
\ No newline at end of file
diff --git a/templates/header.html b/templates/header.html
new file mode 100644
index 00000000..8e452199
--- /dev/null
+++ b/templates/header.html
@@ -0,0 +1,83 @@
+
+
+
+
+
diff --git a/templates/home/home_page.html b/templates/home/home_page.html
new file mode 100644
index 00000000..3f287a66
--- /dev/null
+++ b/templates/home/home_page.html
@@ -0,0 +1,97 @@
+{% extends "base.html" %}
+
+{% load wagtailcore_tags %}
+
+{% block body_class %}template-homepage{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ {{ page.section_one_title|richtext }}
+
+
+ {{ page.section_one_text|richtext }}
+
+
+
+
+ {{ page.section_one_img|richtext }}
+
+
+
+
+
+
+
+
+
+ {{ page.section_two_img|richtext }}
+
+
+
+
+ {{ page.section_two_title|richtext }}
+
+
+ {{ page.section_two_text|richtext }}
+
+
+
+
+
+
+
+
+
+ {{ page.section_three_title|richtext }}
+
+
+ {{ page.section_three_text|richtext }}
+
+
+
+
+ {{ page.section_three_img|richtext }}
+
+
+
+
+
+
+
+
+
+ {{ page.section_four_img|richtext }}
+
+
+
+
+ {{ page.section_four_title|richtext }}
+
+
+ {{ page.section_four_text|richtext }}
+
+
+
+
+
+
+
+
+
+ {{ page.section_five_title|richtext }}
+
+
+
+ {{ page.section_five_text|richtext }}
+
+
+ {{ page.section_five_img|richtext }}
+
+
+
+
+{% endblock %}
diff --git a/templates/services/services_page.html b/templates/services/services_page.html
new file mode 100644
index 00000000..17f31c73
--- /dev/null
+++ b/templates/services/services_page.html
@@ -0,0 +1,167 @@
+{% extends "base.html" %}
+
+{% load wagtailcore_tags %}
+
+{% block body_class %}template-services{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {{ page.section_one_title|richtext }}
+
+
+ {{ page.section_one_text|richtext }}
+
+
+
+
+ {{ page.section_one_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.section_two_title|richtext }}
+
+
+ {{ page.section_two_text|richtext }}
+
+
+
+
+ {{ page.section_two_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.section_three_title|richtext }}
+
+
+ {{ page.section_three_text|richtext }}
+
+
+
+
+ {{ page.section_three_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.section_four_title|richtext }}
+
+
+ {{ page.section_four_text|richtext }}
+
+
+
+ {{ page.section_four_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.section_five_title|richtext }}
+
+
+ {{ page.section_five_text|richtext }}
+
+
+
+
+ {{ page.section_five_img|richtext }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ page.sub_section_one_img|richtext }}
+
{{ page.sub_section_one|richtext }}
+
+
+
+
+
+
{{ page.sub_section_two_img|richtext }}
+
{{ page.sub_section_two|richtext }}
+
+
+
+
+
+
{{ page.sub_section_three_img|richtext }}
+
{{ page.sub_section_three|richtext }}
+
+
+
+
+
+
{{ page.sub_section_four_img|richtext }}
+
{{ page.sub_section_four|richtext }}
+
+
+
+
+
+
{{ page.sub_section_five_img|richtext }}
+
{{ page.sub_section_five|richtext }}
+
+
+
+
+
+
{{ page.sub_section_six_img|richtext }}
+
{{ page.sub_section_six|richtext }}
+
+
+
+
+
+
+
+
+
+{% endblock %}
+