QuestLab is a Flask-based experiential learning platform that transforms theoretical lessons into practical, real-world quests. Educators create and publish quests, learners discover them and submit reflections, and the system provides feedback on submissions.
- Create and publish quests with tasks and instructions
- Browse and filter quests in a public gallery
- Submit reflections with media uploads and receive AI-generated feedback
- Track progress and submissions from a personal dashboard
- Creator (Educator): creates and publishes quests
- Quester (Learner): discovers and completes quests
- Both: can create and complete quests
- Guest: browses public quests only
- Python 3.11+
- Flask, Flask-SQLAlchemy, Flask-Login
- SQLite (default development database)
git clone <your-repo-url>
cd questlabpython3 -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windowspip install -r requirements.txtCreate a .env file in questlab/:
FLASK_ENV=development
FLASK_CONFIG=development
SECRET_KEY=your-strong-secret-here
DATABASE_URL=sqlite:///instance/questlab.dbOption A: Seed sample data (creates admin/Password123! and sample quests if none exist).
DATABASE_URL=sqlite:///instance/questlab.db python seed.pyOption B: Create an empty database schema.
python - <<'PY'
from app import create_app, db
app = create_app()
with app.app_context():
db.create_all()
PYFLASK_ENV=development FLASK_CONFIG=development python run.pyVisit http://127.0.0.1:5000.
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
venv/bin/pytest -qquestlab/
app/ # models, routes, services, templates, utils
instance/ # db, uploads, logs (gitignored)
tests/
seed.py # optional local seeding
run.py
- Register accounts for the roles you want to test (Educator, Learner, Both).
- Create a quest from the dashboard or "Create New Quest."
- Discover quests in the gallery and begin a quest.
- Submit task reflections with media uploads.
- Review feedback and track progress in the dashboard.
- App won't start: install dependencies with
pip install -r requirements.txt - Import errors: ensure the virtual environment is active
- Upload errors: confirm file type and size (max 10MB)
- Database missing: initialize the schema with
db.create_all() - Tests fail: recreate the database schema
questlab-BuildandSetupGuide.docxquestlab-UserGuide.docx