Scibowl Org is a full-stack platform designed for National Science Bowl (NSB) students, teams, coaches, and tournament organizers.
The mission:
Build the most complete, modern, competitive, and community-driven Science Bowl platform online.
Scibowl Org offers solo practice tools, tournament organization features, live scorekeeping, and powerful analytics. With planned features for multiplayer buzzing, coaching dashboards, and social leaderboards, the platform aims to replace Google Sheets for tournament management while providing students with modern practice tools.
The project is in active MVP development with a React + TypeScript frontend and Django REST backend fully integrated.
Scibowl Org is built in five major phases:
Build the foundational practice experience:
- β Full question database with comprehensive filtering
- β Search engine (text, category, type, style, source filters)
- β Multiple question types: Short Answer, Multiple Choice, Identify All, Rank
- β Practice modes: Flashcard system with reveal mechanics, Reading mode
- β Session stats (accuracy, history tracking via backend)
- β Hotkey-driven UX (Enter/Skip/Next)
- β User authentication and profiles
- β Question bookmarking and answer history
Introduce competitive play:
- 1v1 buzzing matches (polling β WebSockets later)
- Question lockout + judging/override flow
- Match results + basic rating system
- Rooms and simple invites
- Adjustable match settings (categories, difficulty, modes)
Support real events and scrimmages:
- β Tournament creation and management (name, division, format, dates, location)
- β Team and player management
- β Room assignment system
- β Round scheduling with packet assignments
- β Live tournament dashboard with room status
- β MODAQ integration (read-only API for game result ingestion)
- β Player stats tracking (points, buzzes, accuracy)
- β Game state tracking (current tossup, team scores)
- π¨ PDF packet upload and parsing
- π¨ Reader/Moderator UI for live games
- π¨ Results export and detailed statistics
- π¨ Pool play and bracket generation
Make the platform engaging and persistent:
- β User accounts and profiles (basic implementation)
- π Leaderboards (weekly/monthly/all-time)
- π Achievements & streaks
- π Commenting + discussions on questions
- π Submission leaderboards
- π Enhanced study lists and bookmarking features
Empower teams and coaches:
- π Team creation + roles
- π Coach dashboard with assignments
- π Player analytics (category weakness, accuracy trends)
- π Team scrimmage tools
- π Saved sessions + review pages
- π Heatmaps, buzzpoint patterns, growth tracking
- React 19.2 (Vite 7.2)
- TypeScript 5.9
- TailwindCSS 3.4
- React Router 7.9
- Hotkey-driven UX
- Feature-based architecture
- Django 5.1.4 + Django REST Framework 3.15
- PostgreSQL 16
- JWT Authentication (djangorestframework-simplejwt)
- PDF Processing (pdfplumber)
- CORS enabled for cross-origin requests
- Docker & Docker Compose
- Multi-container orchestration (frontend, backend, database)
- Environment-based configuration
- Comprehensive Filtering: Category (Physics, Chemistry, Biology, Math, Energy, ESS), question type (Tossup/Bonus), style (Short Answer, Multiple Choice, Identify All, Rank), source (MIT, Regionals, Nationals)
- Text Search: Full-text search across questions and answers
- Practice Modes:
- Flashcard system with progressive reveal
- Reading mode with text disclosure
- Multiple choice practice
- Support for Identify-All and Rank questions
- Session Management: Accuracy tracking, answer history, unseen question tracking
- Hotkey-Driven UX: Enter to submit, keyboard shortcuts for navigation
- User Features: Authentication, profiles, bookmarking, answer history
- Tournament Creation: Name, division (MS/HS), format, dates, location, organizer info
- Team & Player Management: Team registration, player rosters with grade levels
- Room Assignment: Physical/virtual room allocation with status tracking
- Round Scheduling: Multiple rounds with packet assignments
- Live Dashboard: Real-time tournament status, room progress monitoring
- MODAQ Integration: Read-only API for external game result ingestion
- Player Statistics: Points, buzzes, accuracy tracking from live games
- Game Tracking: Current tossup number, team scores, completion status
nsb-arena/
βββ frontend/ # React + TypeScript + Vite
βββ backend/ # Django + PostgreSQL API
βββ docker-compose.yml
βββ README.md
# Start everything (frontend + backend + database)
docker-compose up
# Frontend: http://localhost:5173
# Backend API: http://localhost:8000
# Admin Panel: http://localhost:8000/adminFrontend:
cd frontend
npm install
npm run dev
# Runs on http://localhost:5173Backend:
cd backend
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Mac/Linux
# Install dependencies
pip install -r requirements.txt
# Set up database (requires PostgreSQL running)
python manage.py migrate
python manage.py createsuperuser
# Run server
python manage.py runserver
# Runs on http://localhost:8000# Start all services
docker-compose up
# Start in background
docker-compose up -d
# View logs
docker-compose logs -f
# Stop all services
docker-compose down
# Rebuild after code changes
docker-compose up --build
# Run Django commands
docker-compose exec backend python manage.py <command># Create migrations
docker-compose exec backend python manage.py makemigrations
# Apply migrations
docker-compose exec backend python manage.py migrate
# Create superuser
docker-compose exec backend python manage.py createsuperuser
# Access Django shell
docker-compose exec backend python manage.py shellnsb-arena/
βββ frontend/ # React + TypeScript + Vite
β βββ src/
β β βββ features/ # Feature modules
β β β βββ auth/ # Authentication (login/signup)
β β β βββ questions/ # Question database UI
β β β βββ study/ # Practice modes (flashcard, reading)
β β β βββ tournaments/ # Tournament browsing & management
β β β βββ profile/ # User profile management
β β β βββ [multiplayer, social, coaching]/ # Future features
β β βββ core/
β β β βββ api/ # API client for backend communication
β β βββ shared/
β β β βββ types/ # TypeScript type definitions
β β β βββ utils/ # Shared utilities
β β βββ pages/ # Top-level pages
β β βββ App.tsx # Main app router and layout
β β βββ main.tsx # Entry point
β βββ package.json
β
βββ backend/ # Django + PostgreSQL API
β βββ backend/ # Django project config
β βββ questions/ # Questions app (models, API, tests)
β βββ tournaments/ # Tournament management app
β βββ users/ # User management (custom User model)
β βββ manage.py
β βββ requirements.txt
β βββ Dockerfile
β
βββ docker-compose.yml # Multi-container orchestration
βββ README.md
βββ TOURNAMENT.md # Tournament system architecture docs
βββ TESTING_SETUP.md # Testing guide
POST /auth/register/- Register new userPOST /auth/login/- Login (get JWT tokens)POST /auth/refresh/- Refresh access tokenGET /profile/- Get current user profilePUT /profile/- Update profile
GET /- List questions (supports filtering by category, type, style, source)GET /<id>/- Get question detailsPOST /history/- Submit answerGET /history/- Get answer historyPOST /bookmarks/- Bookmark questionGET /bookmarks/- List bookmarks
GET /tournaments/- List tournaments (filterable by status, division)GET /tournaments/<id>/- Tournament detailsGET /tournaments/<id>/teams/- Tournament teamsGET /tournaments/<id>/rooms/- Tournament roomsGET /tournaments/<id>/rounds/- Tournament roundsGET /tournaments/<id>/games/- Tournament gamesGET /teams/- Teams (with filtering)GET /rooms/- Rooms (with filtering)GET /games/- Games (with filtering)
Note: Tournament endpoints are read-only in the MVP. Write operations are reserved for MODAQ integration.
- Monorepo Structure: Frontend and backend in a single repository for tight integration and easier development
- MODAQ Integration: External buzzing/scoring system writes game results β Arena reads and displays (no score recalculation in Arena)
- Read-Heavy MVP: All tournament endpoints are read-only; write operations reserved for MODAQ
- Feature-Based Frontend: Modular folder structure organized by features for better scalability
- JWT Authentication: Stateless token-based authentication for API security
- Docker-First Development: Containerized environment ensures consistency across development and deployment
- TypeScript Throughout: Strong typing on frontend for better developer experience and fewer runtime errors
- Hotkey-Driven UX: Keyboard shortcuts for fast navigation (Enter to submit, Skip questions, Next)
- Multiple Question Types: Support for Short Answer, Multiple Choice, Identify-All, and Rank questions
- Progressive Text Reveal: Reading mode with controlled text disclosure for practice
- Question Randomization: Smart selection with history tracking to avoid repeats
- MODAQ Integration: Designed for seamless data ingestion from external buzzing systems
- Tournament Dashboard: Real-time monitoring of tournament progress across multiple rooms
- Player Analytics: Track performance metrics including points, buzzes, and accuracy
- TOURNAMENT.md - Tournament system architecture and design decisions
- TESTING_SETUP.md - Testing guide and best practices
This project is in active development. The current focus is on completing Phase 3 (Tournament Organizer tools) and refining the MVP experience.
This project is being developed for the National Science Bowl community.