EvoX Genesis
EvoX Genesis turns a high-level software objective into a persistent recursive software world: finite-lived agents recursively develop software, while only accepted consequences persist across develop
Add adaptive testing to any application. IRT/CAT engine, AI question generation, and learning recommendations. One API key, six capabilities.
Translation pending
Developer toolsPython · JavaScriptGitHub @woodstocksoftwareOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Real-time quiz engine with WebSocket communication and server-authoritative timing
Loading the full README.
Read the full README ↗Real-time WebSocket quiz engine for educational assessments. Students connect, answer timed questions, and receive instant scored results — all powered by server-authoritative timing to prevent client-side cheating.
Part of AdaptiveTest developer API, built by Desert's Edge Solutions.
┌──────────────────┐ WebSocket ┌──────────────────┐
│ React Frontend │◄──────────────────────────►│ FastAPI Backend │
│ (Vite dev) │ JSON messages │ (Uvicorn) │
│ │ │ │
│ QuizLobby │ Client → Server: │ Session Manager │
│ QuizSession │ ├─ start_quiz │ Timer Task │
│ QuizResults │ ├─ answer │ Scoring Engine │
│ │ ├─ next/prev/go_to │ Database Layer │
└──────────────────┘ └─ submit_quiz └────────┬──────────┘
│
Server → Client: ▼
├─ connected ┌──────────────────┐
├─ question │ SQLite │
├─ timer_tick │ │
├─ answer_received │ quizzes │
└─ quiz_complete │ questions │
│ sessions │
│ responses │
└──────────────────┘
Session lifecycle: not_started → in_progress → completed
The server runs an async timer task per session. Each second it decrements the remaining time, persists it to the database, and pushes a timer_tick to the client. When time expires, the quiz auto-submits.
cd backend
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000
The server starts at http://localhost:8000 and seeds a sample quiz ("Python Fundamentals") on first run.
cd frontend
npm install
npm run dev
Open http://localhost:5173 in your browser.
| Method | Endpoint | Description |
|---|---|---|
GET | /api/quizzes | List all available quizzes |
GET | /api/quizzes/{id} | Get quiz details and question count |
POST | /api/sessions | Create a new session ({quiz_id, student_name}) |
GET | /api/sessions/{id} | Get session status and score |
WS | /ws/{session_id} | WebSocket connection for quiz play |
Client → Server:
| Type | Payload | Description |
|---|---|---|
start_quiz | {} | Begin the quiz and start the server timer |
answer | {question_id, answer} | Submit or update an answer |
next_question | {current} | Navigate to the next question |
prev_question | {current} | Navigate to the previous question |
go_to_question | {question_number} | Jump to a specific question |
submit_quiz | {} | End the quiz and receive results |
Server → Client:
| Type | Payload | Description |
|---|---|---|
connected | {quiz, session} | Connection established with quiz metadata and session state |
question | {question_number, total_questions, question, existing_answer?} | Question data with any previously saved answer |
timer_tick | {time_remaining} | Remaining seconds (sent every second) |
answer_received | {question_id, time_spent} | Confirmation that answer was recorded |
quiz_complete | {reason, score, results} | Final score, grade, and per-question breakdown |
Client Server
│ │
│──── WS connect ───────────────►│
│◄─── connected {quiz, session} ─│
│ │
│──── start_quiz ───────────────►│
│◄─── question {Q1} ────────────│
│◄─── timer_tick {299} ─────────│
│◄─── timer_tick {298} ─────────│
│ │
│──── answer {q1, "8"} ────────►│
│◄─── answer_received ──────────│
│ │
│──── next_question {1} ────────►│
│◄─── question {Q2} ────────────│
│ │
│──── submit_quiz ──────────────►│
│◄─── quiz_complete {score} ────│
│ │
Create a quiz programmatically using the database module:
from backend.app.database import create_quiz, add_question
create_quiz("my-quiz", "Geography Quiz", time_limit_seconds=180)
add_question("geo-1", "my-quiz", 1,
question_text="What is the capital of France?",
options=["London", "Berlin", "Paris", "Madrid"],
correct_answer="Paris")
add_question("geo-2", "my-quiz", 2,
question_text="Which ocean is the largest?",
options=["Atlantic", "Indian", "Arctic", "Pacific"],
correct_answer="Pacific")
Create a session via the API:
curl -X POST http://localhost:8000/api/sessions \
-H "Content-Type: application/json" \
-d '{"quiz_id": "my-quiz", "student_name": "Alice"}'
Connect via WebSocket at ws://localhost:8000/ws/{session_id} to begin the quiz.
simple-quiz-engine/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI server, WebSocket handler, session manager
│ │ └── database.py # SQLite schema, CRUD operations, seed data
│ ├── data/ # SQLite database (auto-created, gitignored)
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── QuizLobby.jsx # Quiz selection and name entry
│ │ │ ├── QuizSession.jsx # Live quiz interface with timer
│ │ │ └── QuizResults.jsx # Score display and question breakdown
│ │ ├── App.jsx # Root component, screen routing
│ │ ├── App.css # All component styles
│ │ └── main.jsx # React entry point
│ ├── vite.config.js
│ └── package.json
├── CLAUDE.md # Developer reference
└── README.md
57 backend tests (pytest, 92% coverage) and 22 frontend tests (Vitest).
# Backend
cd backend
pip install pytest httpx pytest-asyncio
pytest
# Frontend
cd frontend
npm test
git checkout -b feature/my-feature)git commit -m 'Add my feature')git push origin feature/my-feature)This is a building block for the Adaptive Synchronous Testing Platform:
| Component | Repository |
|---|---|
| Question Bank MCP | Question management via MCP |
| Student Progress Tracker | Performance analytics |
| Simple Quiz Engine | Real-time quiz delivery |
Built by Jim Williams | GitHub