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
```python -c "
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 |