A Qt desktop application to help you study for the CompTIA Security+ exam.
The app stores data locally in your home directory at ~/.security_plus_study_app/study.db and includes:
- Flashcards with simplified spaced repetition scheduling
- CSV / JSON question import support
- Inline quiz mode with multiple-choice and free-form questions
- Per-question quiz results and explanations
- Quiz history tracking with answer review
- Dashboard stats and optional progress charting
src/security_app.py— app launchersrc/gui.py— main GUI and tab logicsrc/app_core.py— database helpers, import logic, flashcard scheduling, and quiz trackingrequirements.txt— Python dependenciesassets/— app icons and static assetsdata/example_questions/— sample question files
questionstable: stores all questions with fields for domain, question text, answer, options, and explanationflashcardstable: tracks flashcard scheduling with fields for question ID, next review date, and performance historyquizzestable: records quiz attempts with fields for timestamp, domain, question count, and scorequiz_answerstable: stores individual quiz question answers with fields for quiz ID, question ID, user answer, correctness, and explanationattemptstable: tracks quiz attempts with fields for timestamp, domain, question count, and score
- Python 3.8+
PySide6for the GUImatplotlibis optional for dashboard charts
- Clone the repository:
git clone https://github.com/lnsydnr/Security-Plus-App.git cd Security-Plus-App - Install dependencies:
python -m pip install -r requirements.txt
Refer to the Bundling the app guide to create a standalone executable for easier distribution.
From the repository root, launch the app from the src directory:
cd src
python security_app.py- Dashboard: overview of quiz accuracy by domain with interactive bar chart showing value labels and refreshable stats
- Flashcards: review due flashcards and grade them to update scheduling; track easy and hard cards across sessions for focused studying
- Question Bank: browse and delete stored questions
- Quiz: select domain and question count, answer inline, and see results
- History: review past quiz attempts and detailed answer breakdowns
- Import: load questions from CSV or JSON files
- Settings: export question bank, auto-assign missing domains, and reset the local database
The flashcards system automatically categorizes your cards based on performance:
- Due Flashcards: Cards scheduled for review based on the spaced repetition algorithm
- Easy Cards: Cards you've graded as "Easy" (quality 5) - cards you've mastered
- Hard Cards: Cards you've graded as "Hard" (quality 4) - cards that need more practice
Your card categories are saved automatically and persist across sessions, allowing you to focus on weak areas or revisit mastered content as needed.
The app now infers missing domains using CompTIA Security+ objective keyword patterns. This happens automatically during CSV/JSON import when a domain is not supplied, and you can also run a batch reassignment from Settings using Add Domains to Missing Questions.
Supported CSV fields include:
domain(optional; missing values are inferred)questionanswertypeoption aoption boption coption dexplanation
Example:
domain,question,option a,option b,option c,option d,answer,explanation
Network Security,Which protocol is used to securely transfer files over a network?,FTP,SFTP,Telnet,SMTP,SFTP,SFTP uses SSH to securely transfer files.Each item should include:
domain(optional; missing values are inferred)questionansweroptions(for MCQs)explanation
Example:
[
{
"domain": "Network Security",
"question": "Which protocol is used to securely transfer files over a network?",
"options": ["FTP", "SFTP", "Telnet", "SMTP"],
"answer": "SFTP",
"explanation": "SFTP uses SSH to securely transfer files."
}
]The Import tab also includes Convert Questions File to Import Format..., which normalizes CSV or JSON question files into the import-ready JSON structure.
Use the Settings tab and click Export Question Bank (JSON) to save all stored questions.
Use the Settings tab and click Reset Database (delete all) to remove all questions, flashcards, attempts, quizzes, and progress.
- Quiz answers are stored in the local SQLite database for history and statistics.
- Flashcard scheduling uses a simplified SM-2-like algorithm with three grading levels: Hard (4), Easy (5), and Mastered (6).
- The dashboard displays an interactive bar chart showing accuracy by domain, with value labels for quick reference.
- The app supports both multiple-choice and free-form questions.
- Easy and hard flashcard categorizations are persisted in
~/.security_plus_study_app/flashcards/.known_cards.json.
To uninstall, simply delete the executable or the repository (if cloned locally) and remove the local data directory at ~/.security_plus_study_app/.
Windows:
Remove-Item -Recurse -Force ~/.security_plus_study_app/Linux/Mac:
rm -rf ~/.security_plus_study_app/MIT License. See LICENSE for details.