A full-stack adaptive test-taking system developed as a final-year project. This mobile app allows students to solve dynamically generated tests based on question difficulty, analyze their performance, and sync results when online. The backend is powered by Flask and supports MySQL as the main database, while the app also works fully offline using local SQLite.
dynamic-test-app/
├── app/ # Android Studio project (Kotlin)
├── backend/ # Flask backend (app.py, config.py)
├── db/ # Offline JSON + MySQL schema
├── .gitignore
└── README.md
- Adaptive test generation by difficulty
- Offline test solving using local SQLite
- Instant feedback after each question
- Test history tracking
- Sync results to backend when online
- Internet/server availability check
- RESTful API with custom user ID support
- Basic POST/GET endpoints
- MySQL database integration
- Offline result sync endpoint
- Frontend: Kotlin, Android Studio, SQLite
- Backend: Python 3, Flask, MySQLdb
- Offline Storage:
assets/questions.json→ local SQLite
- Open the project in Android Studio
- Build & run on device/emulator
- Offline questions are loaded from
assets/questions.jsonon first launch - Results are stored locally and synced when network is detected
Python 3.10+ is recommended
cd backend/
python -m venv venv
venv\Scripts\activate # or source venv/bin/activate
pip install -r requirements.txt
python app.pyBackend runs at: http://localhost:5000
test_results: stores overall test score and timestamptest_analytics: stores performance per difficulty level- SQLite DB (offline) mirrors this schema
- SQL dump and JSON data are in
db/folder
- User completes test while offline
- Results saved to local SQLite DB
- App detects connection + server
- Sends results via
/api/sync-results - Local record is deleted
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/questions | Fetch questions |
| POST | /api/test-result | Submit a test result |
| GET | /api/test-results/<user_id> | Get user’s test history |
| POST | /api/test-analytics | Submit analytics |
| POST | /api/sync-results | Sync offline results |
| GET | /ping | Ping server |
Alperen Özkılıç
Final Year Software Engineering Student
GitHub: github.com/diskkk741
This project is for educational/demo purposes only.