Expanding ConsoleIQ into an Enhanced Quiz Application
- Statement of Purpose
- Runtime Environment
- Information Needed
- Data to be Persisted (Database)
- App Concerns
- User Interface Outline and Functional Flow
- Absolute Features
- Future Considerations
Title: QuizIQ
Purpose:
QuizIQ builds upon the existing ConsoleIQ application to create a robust, cross-platform quiz application that enhances user engagement and learning. With features like user profiles, progress tracking, diverse question types, and a graphical user interface using .NET MAUI, QuizIQ aims to facilitate interactive education across a wide range of topics.
-
Platform: Desktop and Mobile (Cross-platform)
-
Operating Systems:
- Windows, macOS, Linux, Android, iOS
-
Technologies:
- Framework: .NET 8.0
- Programming Language: C# 12.0
- User Interface: .NET MAUI (Multi-platform App UI) for cross-platform GUI development
-
Services Needed:
- Local and Remote Database: SQL Server, SQLite, MySQL or MariaDB for data persistence
- Optional Cloud Services:
- User authentication and data synchronization across devices
- Online leaderboards and community-shared quizzes (FUTURE)
-
Account Details:
- Username
- Password (securely hashed)
- Email address (for account recovery and notifications)
-
Profile Information:
- Avatar or profile picture
- Topics and Categories
- Questions:
- Question ID
- Type (e.g., Multiple Choice, True/False, Matching)
- Prompt
- Options (for applicable types)
- Correct Answer(s)
- Difficulty Level
- Explanations or hints
- Quiz history and scores
- Time spent on quizzes
- UserID (Primary Key)
- Username
- PasswordHash
- Avatar
- QuizID
- Title
- Description
- Author (UserID if user-generated)
- TopicID
- QuestionID
- QuizID (Foreign Key)
- Type
- Prompt
- Options (stored as JSON or in a related table)
- CorrectAnswer
- Explanation
- DifficultyLevel
- TopicID
- Name
- Description
- ProgressID
- UserID
- QuizID
- Score
- DateTaken
- TimeSpent
- SettingID
- UserID
- Preferences (serialized settings data)
- Implement secure authentication and authorization mechanisms.
- Protect user credentials with robust hashing algorithms (e.g., bcrypt).
- Prevent common vulnerabilities (e.g., SQL injection, cross-site scripting).
- Comply with data protection regulations (e.g., GDPR, CCPA).
- Provide clear privacy policies and obtain user consent for data collection.
- Allow users to control their data (e.g., download, delete account).
- Ensure offline access to quizzes and user data.
- Implement data synchronization strategies for when connectivity is available.
- Design the UI with accessibility in mind (keyboard navigation, screen reader support).
- Offer customization options for different user needs.
- Design the system to accommodate increasing amounts of data and users.
- Optimize performance for a smooth user experience.
- Application logo and loading indicator.
- Fields: Username, Password.
- Buttons: Login, Forgot Password.
- Fields: Username, Email, Password, Confirm Password.
- Buttons: Register.
- Navigation Menu:
- Home, Quizzes, Progress, Logout.
- Filters:
- Topics, Difficulty Levels, Quiz Types.
- Quiz List:
- Quiz title, brief description.
- Option to select and start a quiz.
- Question Display:
- Show question prompt and options (if applicable).
- Progress bar indicating quiz completion.
- Timer (optional).
- Score Summary:
- Total score, percentage.
- Detailed Feedback:
- Correct answers and explanations.
- Option to review questions.
- Cross-Platform User Interface:
- Implement a clean, intuitive UI with .NET MAUI.
- Login/Logout/Register:
- Allow users to create accounts, log in, and log out.
- Store user credentials securely (e.g., hashed passwords).
- Quiz Management:
- Display quizzes by topic or shuffled order.
- Navigate questions with Next/Previous buttons.
- Quiz History and Scores:
- Store and display user scores and quiz history.
- Timer for Quizzes:
- Include an optional timer to enhance the challenge.
- Shuffle Option:
- Allow users to shuffle question order.
- Database Persistence:
- Use SQLite to persist user data, quiz content, and progress.
- Exit During Gameplay:
- Allow users to quit or pause the quiz at any time.
- TBD:
- Everything else not mentioned in the Absolute Features section above.