examinal-api / README.md
aryanmirza01's picture
FYP Clean Final Push
419bd6e
|
Raw
History Blame Contribute Delete
2.76 kB

1. Create virtual env

python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate

2. Install deps

pip install -r requirements.txt

3. Create .env from example and fill in your API keys

cp .env.example .env

4. Run the server

uvicorn main:app --reload --host 0.0.0.0 --port 8000

5. Open API docs

http://localhost:8000/docs

6. Create admin user

from app.database import SessionLocal, engine, Base
from app.models.user import User
from app.utils.security import hash_password
Base.metadata.create_all(bind=engine)
db = SessionLocal()
if not db.query(User).filter(User.role == 'admin').first():
    db.add(User(
        email='admin@examinal.com',
        username='admin',
        hashed_password=hash_password('admin123'),
        full_name='System Admin',
        role='admin',
    ))
    db.commit()
    print('Admin created: admin / admin123')
else:
    print('Admin already exists')
db.close()

API Endpoint Summary

Method Endpoint Role Purpose
POST /api/auth/register Public Register
POST /api/auth/login Public Login → JWT
POST /api/auth/refresh Any Refresh token
GET /api/auth/me Any Current user
GET/PATCH/DELETE /api/users/{id} Admin/self User CRUD
POST/GET/PATCH/DELETE /api/courses/... Instructor+ Course CRUD
POST /api/courses/{id}/enroll Instructor+ Enroll student
POST /api/content/upload/{course_id} Instructor+ Upload file
POST /api/content/ingest/{doc_id} Instructor+ Parse & embed
POST /api/questions/generate Instructor+ RAG question gen
CRUD /api/questions/... Instructor+ Manual question CRUD
CRUD /api/exams/... Instructor+ Exam lifecycle
POST /api/exams/{id}/publish Instructor+ Publish exam
POST /api/exams/{id}/assign Instructor+ Assign students
POST /api/submissions/start Student Begin exam
POST /api/submissions/{id}/autosave Student Save progress
POST /api/submissions/{id}/submit Student Final submit
POST /api/submissions/activity Student Log proctoring event
POST /api/grading/auto/{sub_id} Instructor+ Auto‑grade
POST /api/grading/auto/exam/{id} Instructor+ Batch auto‑grade
PATCH /api/grading/manual/{ans_id} Instructor+ Override score
GET /api/analytics/exam/{id} Instructor+ Exam stats
GET /api/analytics/student/{id} Instructor+/self Performance
GET /api/analytics/course/{id} Instructor+ Course overview
GET /api/admin/stats Admin Platform stats
GET /api/admin/activity-logs Admin Audit trail
GET /api/admin/exam/{id}/integrity Admin Cheating flags