diff --git a/code/13 Demo Project - React Quiz/08-finished/.gitignore b/code/13 Demo Project - React Quiz/08-finished/.gitignore
deleted file mode 100644
index a547bf36d..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/.gitignore	
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/code/13 Demo Project - React Quiz/08-finished/index.html b/code/13 Demo Project - React Quiz/08-finished/index.html
deleted file mode 100644
index 9ae9a44e2..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/index.html	
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-  
-    
-    
-    
-    ReactQuiz
-  
-  
-    
-    
-  
-
diff --git a/code/13 Demo Project - React Quiz/08-finished/package.json b/code/13 Demo Project - React Quiz/08-finished/package.json
deleted file mode 100644
index f7646cbb5..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/package.json	
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "name": "effects-adv-prj",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "scripts": {
-    "dev": "vite",
-    "build": "vite build",
-    "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
-    "preview": "vite preview"
-  },
-  "dependencies": {
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0"
-  },
-  "devDependencies": {
-    "@types/react": "^18.2.15",
-    "@types/react-dom": "^18.2.7",
-    "@vitejs/plugin-react": "^4.0.3",
-    "eslint": "^8.45.0",
-    "eslint-plugin-react": "^7.32.2",
-    "eslint-plugin-react-hooks": "^4.6.0",
-    "eslint-plugin-react-refresh": "^0.4.3",
-    "vite": "^4.4.5"
-  }
-}
diff --git a/code/13 Demo Project - React Quiz/08-finished/public/quiz-logo.png b/code/13 Demo Project - React Quiz/08-finished/public/quiz-logo.png
deleted file mode 100644
index dbcd77059..000000000
Binary files a/code/13 Demo Project - React Quiz/08-finished/public/quiz-logo.png and /dev/null differ
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/App.jsx b/code/13 Demo Project - React Quiz/08-finished/src/App.jsx
deleted file mode 100644
index 6e001d8a6..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/src/App.jsx	
+++ /dev/null
@@ -1,15 +0,0 @@
-import Header from './components/Header.jsx';
-import Quiz from './components/Quiz.jsx';
-
-function App() {
-  return (
-    <>
-      
-      
-        
-      
-    >
-  );
-}
-
-export default App;
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-complete.png b/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-complete.png
deleted file mode 100644
index 4e235aea8..000000000
Binary files a/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-complete.png and /dev/null differ
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-logo.png b/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-logo.png
deleted file mode 100644
index dbcd77059..000000000
Binary files a/code/13 Demo Project - React Quiz/08-finished/src/assets/quiz-logo.png and /dev/null differ
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/components/Answers.jsx b/code/13 Demo Project - React Quiz/08-finished/src/components/Answers.jsx
deleted file mode 100644
index 5a6114aad..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/src/components/Answers.jsx	
+++ /dev/null
@@ -1,47 +0,0 @@
-import { useRef } from 'react';
-
-export default function Answers({
-  answers,
-  selectedAnswer,
-  answerState,
-  onSelect,
-}) {
-  const shuffledAnswers = useRef();
-
-  if (!shuffledAnswers.current) {
-    shuffledAnswers.current = [...answers];
-    shuffledAnswers.current.sort(() => Math.random() - 0.5);
-  }
-
-  return (
-    
-      {shuffledAnswers.current.map((answer) => {
-        const isSelected = selectedAnswer === answer;
-        let cssClass = '';
-
-        if (answerState === 'answered' && isSelected) {
-          cssClass = 'selected';
-        }
-
-        if (
-          (answerState === 'correct' || answerState === 'wrong') &&
-          isSelected
-        ) {
-          cssClass = answerState;
-        }
-
-        return (
-          - 
-            
-          -        );
-      })}
-
-  );
-}
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/components/Header.jsx b/code/13 Demo Project - React Quiz/08-finished/src/components/Header.jsx
deleted file mode 100644
index 0d2d8a37a..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/src/components/Header.jsx	
+++ /dev/null
@@ -1,10 +0,0 @@
-import logoImg from '../assets/quiz-logo.png';
-
-export default function Header() {
-  return (
-    
- -
-      ReactQuiz
-    
-  );
-}
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/components/Question.jsx b/code/13 Demo Project - React Quiz/08-finished/src/components/Question.jsx
deleted file mode 100644
index f80550fab..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/src/components/Question.jsx	
+++ /dev/null
@@ -1,66 +0,0 @@
-import { useState } from 'react';
-
-import QuestionTimer from './QuestionTimer.jsx';
-import Answers from './Answers.jsx';
-import QUESTIONS from '../questions.js';
-
-export default function Question({ index, onSelectAnswer, onSkipAnswer }) {
-  const [answer, setAnswer] = useState({
-    selectedAnswer: '',
-    isCorrect: null,
-  });
-
-  let timer = 10000;
-
-  if (answer.selectedAnswer) {
-    timer = 1000;
-  }
-
-  if (answer.isCorrect !== null) {
-    timer = 2000;
-  }
-
-  function handleSelectAnswer(answer) {
-    setAnswer({
-      selectedAnswer: answer,
-      isCorrect: null,
-    });
-
-    setTimeout(() => {
-      setAnswer({
-        selectedAnswer: answer,
-        isCorrect: QUESTIONS[index].answers[0] === answer,
-      });
-
-      setTimeout(() => {
-        onSelectAnswer(answer);
-      }, 2000);
-    }, 1000);
-  }
-
-  let answerState = '';
-
-  if (answer.selectedAnswer && answer.isCorrect !== null) {
-    answerState = answer.isCorrect ? 'correct' : 'wrong';
-  } else if (answer.selectedAnswer) {
-    answerState = 'answered';
-  }
-
-  return (
-    
-      
-      
{QUESTIONS[index].text}
-      
-    
-      
-    
-  );
-}
diff --git a/code/13 Demo Project - React Quiz/08-finished/src/components/Summary.jsx b/code/13 Demo Project - React Quiz/08-finished/src/components/Summary.jsx
deleted file mode 100644
index 74b54fcc7..000000000
--- a/code/13 Demo Project - React Quiz/08-finished/src/components/Summary.jsx	
+++ /dev/null
@@ -1,59 +0,0 @@
-import quizCompleteImg from '../assets/quiz-complete.png';
-import QUESTIONS from '../questions.js';
-
-export default function Summary({ userAnswers }) {
-  const skippedAnswers = userAnswers.filter((answer) => answer === null);
-  const correctAnswers = userAnswers.filter(
-    (answer, index) => answer === QUESTIONS[index].answers[0]
-  );
-
-  const skippedAnswersShare = Math.round(
-    (skippedAnswers.length / userAnswers.length) * 100
-  );
-  const correctAnswersShare = Math.round(
-    (correctAnswers.length / userAnswers.length) * 100
-  );
-  const wrongAnswersShare = 100 - skippedAnswersShare - correctAnswersShare;
-
-  return (
-    
-      

-      
Quiz Completed!
-      
-        
-          {skippedAnswersShare}%
-          skipped
-        
-        
-          {correctAnswersShare}%
-          answered correctly
-        
-        
-          {wrongAnswersShare}%
-          answered incorrectly
-        
-      
-      
-        {userAnswers.map((answer, index) => {
-          let cssClass = 'user-answer';
-
-          if (answer === null) {
-            cssClass += ' skipped';
-          } else if (answer === QUESTIONS[index].answers[0]) {
-            cssClass += ' correct';
-          } else {
-            cssClass += ' wrong';
-          }
-
-          return (
-            - 
-              {index + 1}-{QUESTIONS[index].text} -{answer ?? 'Skipped'} -
-          );
-        })}
-
-