Skip to main content

Competitions

View co-curricular competitions and events the school has participated in or conducted.

List Competitions

GET /parent/co-curricular/get-competitions?studentId={id}
{
"data": {
"competitions": [
{
"id": "uuid",
"name": "State Level Science Fair",
"description": "Annual science exhibition...",
"date": "2024-03-15",
"venue": "Delhi Public School",
"category": "SCIENCE",
"level": "STATE",
"position": "First",
"students": ["John Doe", "Jane Smith"],
"status": "COMPLETED"
}
]
}
}

Competition Levels

LevelDescription
INTERNALSchool-level competition
DISTRICTDistrict-level
STATEState-level
NATIONALNational-level
INTERNATIONALInternational competition

Categories

CategoryDescription
SCIENCEScience projects, exhibitions
SPORTSAthletic events, tournaments
CULTURALDance, music, drama
ARTDrawing, painting, craft
QUIZKnowledge competitions
TECHNICALCoding, robotics

UI — Competition Card

class CompetitionCard extends StatelessWidget {
final Competition competition;

@override
Widget build(BuildContext context) {
return Card(
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: _categoryColor(competition.category),
borderRadius: BorderRadius.circular(4),
),
child: Text(competition.category, style: const TextStyle(color: Colors.white, fontSize: 10)),
),
const SizedBox(width: 8),
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: Colors.grey.shade200,
borderRadius: BorderRadius.circular(4),
),
child: Text(competition.level, style: const TextStyle(fontSize: 10)),
),
],
),
const SizedBox(height: 8),
Text(competition.name, style: const TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 4),
Text(competition.description, maxLines: 2, overflow: TextOverflow.ellipsis),
const SizedBox(height: 8),
Row(
children: [
const Icon(Icons.calendar_today, size: 14, color: Colors.grey),
const SizedBox(width: 4),
Text(competition.date, style: const TextStyle(color: Colors.grey, fontSize: 12)),
const Spacer(),
if (competition.position != null)
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
decoration: BoxDecoration(color: Colors.green.shade100, borderRadius: BorderRadius.circular(4)),
child: Text('${competition.position} Place', style: TextStyle(color: Colors.green.shade700, fontSize: 12)),
),
],
),
],
),
),
);
}
}