Formbar.js is a comprehensive classroom polling and management system built with Node.js. The system provides tools for formative assessment and a visual representation of class status through an interactive bar interface. Originally written in Python for Raspberry Pi, Formbar.js is a complete rewrite in JavaScript designed to be platform-agnostic.
- Real-time Polling: Create and manage interactive polls with multiple question types
- Classroom Management: Organize students into classes with customizable permissions
- Student Tracking: Monitor student participation, responses, and engagement
- Break & Help System: Students can request breaks or help with built-in approval workflow
- Timer System: Server-side timers with sound notifications
- Tag System: Organize and filter students with custom tags
- Digital Currency: Earn digipogs through poll participation
- Pog Meter: Visual progress tracking for earning rewards
- Transfer System: Send digipogs between users with PIN security
- Pool Management: Create shared pools for group activities
- Transaction Logging: Complete audit trail of all transfers
- Custom Polls: Save and reuse poll templates
- Poll Sharing: Share polls between users and classes
- Permission System: Granular control over user capabilities
- API Integration: RESTful API and WebSocket support for third-party apps
- Google OAuth: Optional Google account integration
- Email System: Password reset and account verification
- IP Management: Whitelist/blacklist system for access control
- WebSocket API: Real-time bidirectional communication
- REST API: HTTP endpoints for external integrations
- Database: SQLite for data persistence
- Authentication: Session-based and API key authentication
- Logging: Comprehensive Winston-based logging system
- Testing: Jest test suite included
- Node.js 14+
- npm or yarn
git clone https://github.com/csmith1188/Formbar.js.git
cd Formbar.js
npm installnpm run init-db
npm run migrate# Development
npm run dev
# Production
npm start- Copy
.env-templateto.env - Configure your settings (port, email, OAuth, etc.)
- The application will generate JWT keys automatically on first run
- WebSocket API: See
websocket_docs.mdfor complete socket event documentation - Digipog System: See
digipog_docs.mdfor currency and transfer documentation - REST API: Available at
/api/*endpoints
npm run dev- Start with nodemon for developmentnpm start- Start production servernpm test- Run test suitenpm run format- Format code with Prettiernpm run init-db- Initialize databasenpm run migrate- Run database migrations
├── app.js # Main application entry point
├── modules/ # Core application modules
├── routes/ # HTTP route handlers
├── sockets/ # WebSocket event handlers
├── views/ # EJS templates
├── static/ # Static assets (CSS, JS, images)
├── database/ # Database initialization and migrations
└── tests/ # Test files
This project is licensed under the YCSTEL-1.0 License.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For issues and questions:
- GitHub Issues: https://github.com/csmith1188/Formbar.js/issues