- - Table of Contents -
- -Introduction
- -QuizzyMind is a fully functional quiz application built with React Native and Expo Router. This documentation will guide you through setting up and customizing the application to meet your specific needs.
- -Key Features
- -Multiple Quiz Categories
-Extensive question bank with various categories
-Real-time Leaderboards
-Compete with friends and track progress
-Modern UI
-Clean design with smooth animations
-Expo Router
-Optimized navigation experience
-Cross-platform
-Works on both iOS and Android
-Requirements
- -Before you begin, ensure you have the following installed:
- --
-
- Node.js (v14.0.0 or newer) -
- npm (v6.0.0 or newer) or Yarn (v1.22.0 or newer) -
- Expo CLI (
npm install -g expo-cli)
- - Android Studio (for Android development) -
- Xcode (for iOS development, macOS only) -
- Git -
Note: You can verify your Node.js and npm versions by running node -v and npm -v in your terminal.
Installation
- -Follow these steps to get the app up and running:
- --
-
-
- Clone or extract the project files
-
-# If you downloaded as a zip, extract it -cd QuizzyMind-app
-
- -
- Install dependencies
-
-npm install -# or with yarn -yarn install
-
- -
- Start the development server
-
-npx expo start or npm start
-
- -
- Run on device/simulator
-
-
-
- Press
ito open in iOS simulator
- - Press
ato open in Android emulator
- - Scan QR code with Expo Go app on physical device -
- - Press
Tip: If you encounter any issues during installation, refer to the Troubleshooting section.
-Project Structure
- -Key Features
- -Quiz Engine
- -The quiz system supports:
--
-
- Multiple quiz categories -
- Various question types (multiple choice, true/false) -
- Timed quizzes -
- Score tracking and history -
- Difficulty levels -
User Interface
- -The UI is built with:
--
-
- Custom components for consistent design -
- Smooth animations and transitions -
- Dark/light mode support -
- Responsive layouts for different device sizes -
Customization Guide
- -Theme Customization
- -Edit the theme variables in constants/Theme.js:
// Example theme customization
-export const COLORS = {
- primary: '#6366F1',
- secondary: '#8B5CF6',
- accent: '#FFD166',
- // Add your custom colors
-};
-
-export const FONTS = {
- // Customize font families
-};
-
-export const SIZES = {
- // Customize spacing and sizes
-};
-
- Content Customization
- -Quiz questions are stored in data/quizData.js. Modify this file to add your own questions:
export const QUIZ_CATEGORIES = [
- {
- id: 'general',
- title: 'General Knowledge',
- icon: 'brain',
- questions: [
- {
- id: 'q1',
- question: 'What is the capital of France?',
- options: ['London', 'Berlin', 'Paris', 'Madrid'],
- correctAnswer: 'Paris',
- difficulty: 'easy'
- },
- // Add more questions here
- ]
- },
- // Add more categories
-];
-
- Adding New Screens
- -To add a new screen with Expo Router:
- --
-
- Create a new file in the
appdirectory, e.g.,app/newScreen.js
- - Define your screen component: -
import { View, Text, StyleSheet } from 'react-native';
-import { useRouter } from 'expo-router';
-
-export default function NewScreen() {
- const router = useRouter();
-
- return (
- <View style={styles.container}>
- <Text>New Screen Content</Text>
- </View>
- );
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
- Deployment
- -Publishing to Expo
- --
-
- Create an Expo account at expo.dev -
- Configure your app in
app.json: --
-
- Update
name,slug, andowner
- - Set appropriate version numbers -
- Configure splash screen and icons -
- - Update
- Build and publish:
-
-expo build:android # For Android APK/AAB -expo build:ios # For iOS IPA -expo publish # For Expo Go distribution
-
Submitting to App Stores
- -Android (Google Play)
- --
-
- Generate a signed AAB:
-
-eas build -p android --profile production
- - Follow Google Play Console submission guidelines -
iOS (App Store)
- --
-
- Generate a signed IPA:
-
-eas build -p ios --profile production
- - Submit through App Store Connect -
Troubleshooting
- -Common Issues
- -Metro Bundler Issues
-# Clear cache and restart
-expo start -c
-
- Dependency Problems
-# Reset node_modules
-rm -rf node_modules
-npm install
-
- Expo SDK Version Conflicts
-Ensure all packages are compatible with your Expo SDK version in package.json.
Tip: Most common issues can be resolved by clearing your cache and reinstalling dependencies.
-Support
- -For additional support, please contact us at support@email.com or visit our support page on TemplateMonster.
-