A modern, interactive learning platform focused on Science, Technology, Engineering, Arts, Mathematics, and Sustainability education.
- Diverse Exercise Types
- Drag and Drop Exercises
- Memory Games
- Timed Quizzes
- Matching Pairs
- Drawing Exercises
- Sorting Exercises
- Messaging System
- Real-time message updates
- Unread message counts
- Push notifications
- Group discussions
- Analytics Dashboard
- Learning progress visualization
- Time spent analysis
- Subject distribution
- Performance metrics
- Export functionality (PDF/CSV)
- Universal Design
- Screen reader optimization
- Keyboard navigation
- High contrast modes
- Font size controls
- Audio feedback
- Touch-friendly interface
- Push Notifications
- Custom notification templates
- Rich notifications with actions
- Offline support
- Multi-device synchronization
- Node.js 18.x or higher
- PostgreSQL 14.x or higher
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/steams-education.git
cd steams-education- Install dependencies:
npm install- Set up environment variables:
cp .env.example .envEdit .env with your configuration.
- Set up the database:
npx prisma migrate dev- Start the development server:
npm run dev-
Frontend
- Next.js 14
- React
- TailwindCSS
- Framer Motion
- Chart.js
-
Backend
- Next.js API Routes
- Prisma ORM
- PostgreSQL
- Socket.IO
-
Authentication
- NextAuth.js
- JWT
-
Testing
- Jest
- React Testing Library
- Cypress
- Course progress updates
- New message alerts
- Achievement notifications
- Learning reminders
- Deadline alerts
- Quiz results
- Weekly digests
- Service Worker implementation
- Background sync
- Cached content
- Offline exercises
<TimedQuiz
questions={questions}
timeLimit={300}
onComplete={(score, maxScore) => handleCompletion(score, maxScore)}
/><MatchingPairs
pairs={pairs}
showImages={true}
onComplete={(score) => handleScore(score)}
/><MemoryGame
cards={cards}
onComplete={(score) => handleMemoryScore(score)}
/><DrawingExercise
prompt="Draw a circuit diagram"
onSave={(imageData) => handleDrawing(imageData)}
/>// Export as PDF
exportToPDF(analyticsData, userName);
// Export as CSV
exportToCSV(analyticsData, userName);- Time spent learning
- Completion rates
- Subject distribution
- Learning styles
- Difficulty levels
- Interaction metrics
- Progress trends
- POST
/api/auth/signin - POST
/api/auth/signout - GET
/api/auth/session
- GET
/api/lessons - GET
/api/lessons/{id} - POST
/api/lessons/{id}/progress - GET
/api/progress
- GET
/api/messages - POST
/api/messages - GET
/api/messages/unread
- POST
/api/notifications/subscribe - POST
/api/notifications/unsubscribe - POST
/api/notifications/send
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.