diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5978c3e --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# Dependencies +node_modules/ +.npm/ +/package-lock.json + +# Build output +dist/ +build/ +.next/ +.vite/ + +# Environment files +.env +.env.local +.env.*.local + +# Legacy database (sensitive data - NEVER upload) +legacydb/ + +# OS files +.DS_Store +Thumbs.db + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +*~ + +# Logs +logs/ +*.log +npm-debug.log* + +# Coverage +coverage/ +client/test-results/ + +# Docker volumes +mongo-data/ +data/db/ +.data/ + +# Temporary files +tmp/ +.tmp/ +.qlicker.pids + +# Uploaded files +server/uploads/ + +# Production setup runtime data (sensitive/generated — NEVER commit) +production_setup/.env +production_setup/certs/ +production_setup/backups/ +production_setup/legacydb/ + +# Load testing generated state (contains credentials) and results +load-testing/state.json +load-testing/state/ +load-testing/results/ +load-testing/node_modules/ +load-testing/.env diff --git a/README.md b/README.md index 93ffff0..9ba60a2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,44 @@ -# qlicker2 -In class polling, onlines quizzes, practice question, grade manage, question libraries, and SSO integration. +# Qlicker + +Qlicker is a classroom response system (clicker) for higher education. It allows professors to create interactive sessions with questions (multiple choice, true/false, short answer, multi-select, numerical) that students can answer in real-time, as well as timed quizzes. It includes grading, group management, video chat features, question libraries, and SSO integration. + +This repository is the new home for Qlicker, migrated from the original [MeteorJS implementation](https://github.com/qlicker/qlicker) to a modern **Fastify + React** stack. The code is being moved from [ryanmartinneutrino/qlicker-1](https://github.com/ryanmartinneutrino/qlicker-1). + +## Repository Structure + +Once the migration code is brought in, the repository will be structured as follows: + +``` +├── server/ # Fastify backend +├── client/ # React frontend (Vite) +├── ssoserver/ # Isolated local SimpleSAMLphp IdP for SSO smoke tests +├── load-testing/ # k6 load testing scenario + seed script +├── production_setup/ # Self-contained production deployment package +├── scripts/ # Setup and utility scripts +├── docs/ # Developer and user documentation +├── docker-compose.yml # Docker orchestration (development) +└── .env.example # Environment variable template +``` + +## Tech Stack + +- **Backend:** [Fastify](https://fastify.dev/) (Node.js) +- **Frontend:** [React](https://react.dev/) + [Vite](https://vitejs.dev/) +- **Database:** MongoDB +- **Cache / Pub-Sub:** Redis (optional; enables multi-instance WebSocket pub/sub) +- **Auth:** Session-based with optional SAML SSO + +## Prerequisites + +- Node.js >= 20.x +- npm >= 10.x +- MongoDB >= 6.x (or Docker) +- Redis >= 7.x (optional — or Docker) + +## Status + +> **Note:** The application code is being migrated into this repository. See [ryanmartinneutrino/qlicker-1](https://github.com/ryanmartinneutrino/qlicker-1) for the current working implementation. + +## License + +This project is licensed under the [GNU General Public License v3.0](LICENSE).