Skip to content

Commit

Permalink
feat(api/cms/collections): create challenges, events, hackathons, par…
Browse files Browse the repository at this point in the history
…ticipants, schedule, and sponsors
  • Loading branch information
MFarabi619 authored and HasithDeAlwis committed Jan 11, 2025
1 parent c3f8907 commit 2925648
Show file tree
Hide file tree
Showing 8 changed files with 437 additions and 10 deletions.
34 changes: 34 additions & 0 deletions apps/cms/src/collections/Challenges.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import type { CollectionConfig } from 'payload';

export const Challenges: CollectionConfig = {
slug: 'challenges',
fields: [
{
name: 'title',
type: 'text',
required: true,
},
{
name: 'description',
type: 'textarea',
},
{
name: 'prizes',
type: 'textarea',
},
{
name: 'judgingRubric',
type: 'textarea',
},
{
name: 'sponsor',
type: 'relationship',
relationTo: 'sponsors',
},
{
name: 'hackathon',
type: 'relationship',
relationTo: 'hackathons',
},
],
};
30 changes: 30 additions & 0 deletions apps/cms/src/collections/Events.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import type { CollectionConfig } from 'payload';

export const Events: CollectionConfig = {
slug: 'events',
fields: [
{
name: 'title',
type: 'text',
required: true,
},
{
name: 'description',
type: 'textarea',
},
{
name: 'room',
type: 'text',
},
{
name: 'type',
type: 'select',
options: ['workshop', 'networking', 'social', 'food', 'other'],
},
{
name: 'hackathon',
type: 'relationship',
relationTo: 'hackathons',
},
],
};
33 changes: 33 additions & 0 deletions apps/cms/src/collections/Hackathons.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { CollectionConfig } from 'payload';

export const Hackathons: CollectionConfig = {
slug: 'hackathons',
fields: [
{
name: 'year',
type: 'number',
required: true,
unique: true,
},
{
name: 'theme',
type: 'text',
},
{
name: 'sponsors',
type: 'relationship',
relationTo: 'sponsors',
hasMany: true,
},
{
name: 'description',
type: 'richText',
},
{
name: 'participants',
type: 'relationship',
relationTo: 'participants',
hasMany: true,
},
],
};
23 changes: 23 additions & 0 deletions apps/cms/src/collections/Participants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import type { CollectionConfig } from 'payload';

export const Participants: CollectionConfig = {
slug: 'participants',
fields: [
{
name: 'name',
type: 'text',
required: true,
},
{
name: 'role',
type: 'select',
options: ['organizer', 'volunteer', 'mentor', 'judge', 'sponsor-representative'],
required: true,
},
{
name: 'company',
type: 'relationship',
relationTo: 'sponsors',
},
],
};
24 changes: 24 additions & 0 deletions apps/cms/src/collections/Schedule.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import type { CollectionConfig } from 'payload';

export const Schedule: CollectionConfig = {
slug: 'schedule',
fields: [
{
name: 'event',
type: 'relationship',
relationTo: 'events',
required: true,
},
{
name: 'time',
type: 'text',
required: true,
},
{
name: 'day',
type: 'select',
options: ['Friday', 'Saturday', 'Sunday'],
required: true,
},
],
};
30 changes: 30 additions & 0 deletions apps/cms/src/collections/Sponsors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import type { CollectionConfig } from 'payload';

export const Sponsors: CollectionConfig = {
slug: 'sponsors',
fields: [
{
name: 'name',
type: 'text',
required: true,
},
{
name: 'logo',
type: 'upload',
relationTo: 'media', // Assuming a media collection exists for file uploads
},
{
name: 'link',
type: 'text',
required: true,
validate: (value) => {
try {
new URL(value);
return true;
} catch {
return 'Invalid URL format';
}
},
},
],
};
Loading

0 comments on commit 2925648

Please sign in to comment.