Technical Design for Citizen Science Classification
Building a classification interface that empowers volunteers to contribute to real astronomical research through Zooniverse integration.
Technical Design for Citizen Science Classification
Citizen science has revolutionised astronomy. Projects like Galaxy Zoo have demonstrated that volunteers can make meaningful contributions to research. Here's how I designed the classification system for NebulaX.
The Zooniverse Model
Zooniverse is the world's largest platform for people-powered research. Key concepts:
- Projects: Research initiatives (Galaxy Zoo, Planet Hunters)
- Subjects: Items to classify (images, light curves)
- Workflows: Classification sequences
- Annotations: User responses
Architecture
┌─────────────────────────────────────────┐
│ ClassificationHub │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ ProjectList │ │ ClassifyPanel │ │
│ │ │ │ ┌─────────────┐ │ │
│ │ • GalaxyZoo │ │ │SubjectViewer│ │ │
│ │ • RadioZoo │ │ └─────────────┘ │ │
│ │ • Hunters │ │ ┌─────────────┐ │ │
│ │ │ │ │ OptionList │ │ │
│ └─────────────┘ │ └─────────────┘ │ │
│ └─────────────────┘ │
└─────────────────────────────────────────┘
User Flow
State Management
Classification state requires careful management:
class="code-keyword">interface ClassificationState {
currentProject: Project | null
currentSubject: Subject | null
annotations: Annotation[]
startTime: string
isSubmitting: boolean
}
class="code-comment">// Reset on project change
useEffect(() => {
class="code-keyword">if (projectId) {
loadSubject(projectId)
setAnnotations([])
setStartTime(new Date().toISOString())
}
}, [projectId])
Optimistic Updates
For responsive UX, we submit classifications optimistically:
class="code-keyword">const handleSubmit = class="code-keyword">async () => {
class="code-comment">// Immediately load next subject
setCurrentSubject(null)
loadNextSubject()
class="code-comment">// Submit in background
try {
class="code-keyword">await submitClassification(annotations)
setClassificationCount(c => c + 1)
} catch (error) {
class="code-comment">// Retry logic, error display
}
}
Gamification
Engagement features encourage continued participation:
Ranks
class="code-keyword">const RANKS = [
{ name: 039;Stargazer039;, min: 0 },
{ name: 039;Space Cadet039;, min: 10 },
{ name: 039;Explorer039;, min: 50 },
{ name: 039;Voyager039;, min: 100 },
class="code-comment">// ...
]
Badges
- First classification
- Century club (100)
- Project-specific achievements
Progress Tracking
- Session statistics
- Historical activity
- Contribution graphs
Australian Focus
The platform highlights Australian projects:
- ASKAP EMU: Classify radio morphologies
- Murchison: Low-frequency source identification
Data Quality
Zooniverse ensures quality through:
- Retirement: Subjects retire after N classifications
- Gold Standard: Known answers for accuracy tracking
- Weighting: Experienced users' votes count more
Future Enhancements
- Real-time collaboration (see what others classify)
- Expert feedback on your classifications
- Machine learning assistance (highlight features)
- Mobile-optimised classification