Add migration scripts and preload participation awards script

- Created migration index file to manage database migrations.
- Added script to preload participation awards and related blog posts into the CMS.
- Introduced new types and default data for application phases.
- Added award articles data structure for the upcoming awards.
This commit is contained in:
syntaxbullet
2026-06-30 19:10:53 +02:00
parent 9545f2513d
commit 7ff405d1a2
47 changed files with 68728 additions and 986 deletions

View File

@@ -50,7 +50,7 @@ export const preistraegerIndexFields: Field[] = [
name: 'hero',
label: '01 · Hero image',
type: 'group',
admin: sectionAdmin('Large image above the filters. Upload an image or keep the migrated URL fallback.'),
admin: sectionAdmin('Large image above the year selector. Upload an image or keep the migrated URL fallback.'),
fields: [
uploadField('image', 'Hero image'),
text('imageUrl', 'Fallback image URL', preistraegerIndexContent.hero.imageUrl),
@@ -64,37 +64,23 @@ export const preistraegerIndexFields: Field[] = [
admin: sectionAdmin('Small page label below the image.'),
fields: [text('label', 'Label', preistraegerIndexContent.breadcrumb.label)],
},
{
name: 'filters',
label: '03 · Filters',
type: 'group',
admin: sectionAdmin('Filter placeholders, toggle label, and reset label.'),
fields: [
text('categoryPlaceholder', 'Category placeholder', preistraegerIndexContent.filters.categoryPlaceholder),
text('searchPlaceholder', 'Search placeholder', preistraegerIndexContent.filters.searchPlaceholder),
textarea('storyHeading', 'Story heading', preistraegerIndexContent.filters.storyHeading),
text('mediaIcon', 'Media icon', preistraegerIndexContent.filters.mediaIcon),
text('mediaLabel', 'Media label', preistraegerIndexContent.filters.mediaLabel),
text('resetLabel', 'Reset label', preistraegerIndexContent.filters.resetLabel),
],
},
{
name: 'count',
label: '04 · Count bar',
label: '03 · Count bar',
type: 'group',
admin: sectionAdmin('Label after the filtered result count.'),
admin: sectionAdmin('Label after the selected-year result count.'),
fields: [text('label', 'Count label', preistraegerIndexContent.count.label)],
},
{
name: 'empty',
label: '05 · Empty state',
label: '04 · Empty state',
type: 'group',
admin: sectionAdmin('Message when filters return no winners.'),
admin: sectionAdmin('Message when the selected year returns no winners.'),
fields: [textarea('message', 'Empty message', preistraegerIndexContent.empty.message)],
},
{
name: 'card',
label: '06 · Winner cards',
label: '05 · Winner cards',
type: 'group',
admin: sectionAdmin('Hover label shown on winner cards.'),
fields: [
@@ -116,7 +102,7 @@ export const preistraegerIndexFields: Field[] = [
},
{
name: 'cta',
label: '07 · Bottom CTA',
label: '06 · Bottom CTA',
type: 'group',
admin: sectionAdmin('Bottom application and membership CTA.'),
fields: [