diff --git a/template/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
similarity index 100%
rename from template/.github/ISSUE_TEMPLATE/bug_report.md
rename to .github/ISSUE_TEMPLATE/bug_report.md
diff --git a/template/.github/ISSUE_TEMPLATE/customization_help.md b/.github/ISSUE_TEMPLATE/customization_help.md
similarity index 100%
rename from template/.github/ISSUE_TEMPLATE/customization_help.md
rename to .github/ISSUE_TEMPLATE/customization_help.md
diff --git a/template/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
similarity index 100%
rename from template/.github/ISSUE_TEMPLATE/feature_request.md
rename to .github/ISSUE_TEMPLATE/feature_request.md
diff --git a/template/.github/workflows/deploy-github-pages.yml b/.github/workflows/deploy-github-pages.yml
similarity index 100%
rename from template/.github/workflows/deploy-github-pages.yml
rename to .github/workflows/deploy-github-pages.yml
diff --git a/template/.github/workflows/html-validation.yml b/.github/workflows/html-validation.yml
similarity index 100%
rename from template/.github/workflows/html-validation.yml
rename to .github/workflows/html-validation.yml
diff --git a/template/.gitignore b/.gitignore
similarity index 100%
rename from template/.gitignore
rename to .gitignore
diff --git a/README.md b/README.md
index 27c0cda..fdcf034 100644
--- a/README.md
+++ b/README.md
@@ -1,91 +1,739 @@
-# CourseWebsiteTemplate
-
-A free, modern course website template featuring interactive HTML presentations, attendance tracking with card reader support, and serverless backend - all deployable at no cost using GitHub and Netlify.
-
-## Live Examples
-
-See the template in action with these live course sites:
-- **Web Programming**: [wp.profbobby.com](https://wp.profbobby.com)
-- **Software Engineering**: [se.profbobby.com](https://se.profbobby.com)
-- **Database Design**: [db.profbobby.com](https://db.profbobby.com)
-
-## Features
-
-- **Interactive Presentations**: Built-in HTML slide deck with keyboard navigation and presentation mode
-- **Attendance Tracking**: Student registration and daily attendance with card swipe support
-- **Attendance Overview**: Visual attendance reports and analytics
-- **Serverless Backend**: Netlify Functions + Neon PostgreSQL (all free tier)
-- **No Build Step**: Pure vanilla JS, HTML, and CSS - edit and deploy instantly
-- **Responsive Design**: Works on desktop, tablet, and mobile devices
-- **Dark/Light Mode**: Theme toggle with CSS custom properties
-
-## Quick Start (100% Free!)
-
-### 1. Use This Template
-
-Click the green **"Use this template"** button at the top of this page to create your own course repository.
-
-### 2. Set Up Your Free Services
-
-**GitHub** (already done if you're reading this!)
-- Free hosting for your code
-- Free static site hosting via GitHub Pages (optional)
-
-**Netlify** (recommended - free tier)
-1. Sign up at [netlify.com](https://netlify.com) (free account)
-2. Connect your GitHub repository
-3. Deploy with one click - automatic HTTPS included!
-4. Free tier includes: 100GB bandwidth/month, serverless functions, form handling
-
-**Neon** (for attendance database - free tier)
-1. Sign up at [neon.tech](https://neon.tech) (free account)
-2. Create a PostgreSQL database (free tier: 3GB storage, autoscaling)
-3. Copy connection string to Netlify environment variables
-
-### 3. Customize Your Site
-
-Run the initialization wizard:
-```bash
-bash template/initialize-course.sh
-```
-
-Or manually edit:
-- `template/index.html` - Course title, schedule, instructor info
-- `template/styles/presentation.css` - Colors and theming
-- `template/pages/lectures/` - Add your lecture slides
-
-### 4. Deploy
-
-**Option A: Netlify (Recommended)**
-- Push to GitHub โ Netlify auto-deploys
-- Get free HTTPS domain: `your-course.netlify.app`
-- Optional: Use custom domain
-
-**Option B: GitHub Pages**
-- Enable in repository Settings โ Pages
-- Free hosting at `username.github.io/repo-name`
-
-## Documentation
-
-- **[Template Repository Guide](TEMPLATE_REPOSITORY_GUIDE.md)** - How to use this as a GitHub template
-- **[Setup Checklist](template/SETUP_CHECKLIST.md)** - Step-by-step customization guide
-- **[Project Overview](PROJECT_OVERVIEW.md)** - Technical architecture and features
-
-## Cost Breakdown
-
-Everything runs on free tiers:
-- GitHub: Free (unlimited public repos)
-- Netlify: Free (100GB bandwidth, 125k serverless function calls/month)
-- Neon PostgreSQL: Free (3GB storage, 0.5GB RAM)
-- **Total Monthly Cost: $0**
-
-## Support
-
-For questions or issues:
-1. Check the [documentation files](template/SETUP_CHECKLIST.md)
-2. Review [live examples](#live-examples) for inspiration
-3. Open an issue in this repository
-
-## License
-
-MIT License - see [LICENSE](LICENSE) for details
+# Course Website Template
+
+[](https://github.com/bobbyreed/CourseWebsiteTemplate)
+[](LICENSE)
+[](docs/testing/TEST_REPORT.md)
+
+A domain-agnostic, professional course website template with interactive presentations, attendance tracking, and theme customization. **Battle-tested with 100+ students across 3 production courses.**
+
+## ๐ What Is This?
+
+This template provides everything you need to create a modern, interactive course website. It's designed for educators who want to:
+- **Present lectures** using a built-in slide presentation system with keyboard navigation
+- **Track attendance** (optional) using serverless PostgreSQL backend
+- **Customize branding** quickly with theme variables
+- **Deploy easily** to GitHub Pages, Netlify, or any static host
+
+No complex frameworks, no heavy dependenciesโjust clean HTML, CSS, and vanilla JavaScript that works everywhere.
+
+## ๐ Getting Started
+
+### Step 1: Create Your Repository
+
+This is a **GitHub Template Repository**, which means you can create a copy with one click:
+
+1. Click the **"Use this template"** button (green button at the top of this page)
+2. Name your repository:
+ - Use format: `[CourseNumber]-[CourseName]` (e.g., `CSCI3403-WebProgramming`)
+ - Choose public or private (public allows free GitHub Pages hosting)
+3. Click **"Create repository from template"**
+
+You now have your own copy! All files are yours to customize.
+
+### Step 2: Clone to Your Computer
+
+```bash
+git clone https://github.com/YOUR-USERNAME/YOUR-REPO-NAME.git
+cd YOUR-REPO-NAME
+```
+
+### Step 3: Choose Your Setup Path
+
+#### ๐ฏ Path A: Automated Setup (Recommended for Beginners)
+
+Run the interactive setup wizard:
+
+```bash
+bash initialize-course.sh
+```
+
+The wizard will ask you questions and automatically update:
+- Course title, number, and level
+- Instructor name and contact information
+- Institution colors and branding
+- Semester and schedule
+- Whether you want attendance tracking enabled
+
+**Time:** ~5 minutes | **Best for:** First-time users or quick setup
+
+Then follow the [Setup Checklist](SETUP_CHECKLIST.md) for deployment and final touches.
+
+#### ๐ง Path B: Manual Setup (More Control)
+
+Edit files directly for maximum customization:
+
+1. **Update course info** in `index.html` (lines 10-50)
+2. **Customize colors** in `styles/theme-variables.css`
+3. **Create lectures** by copying `pages/lectures/lectureTemplate.html`
+4. **Deploy** to GitHub Pages or Netlify (see [Deployment](#deployment))
+
+**Time:** ~15-30 minutes | **Best for:** Experienced users or specific customization needs
+
+See the [Quick Start](#quick-start) section below for detailed manual setup instructions.
+
+---
+
+## Features
+
+- **Interactive Presentation System**: Keyboard navigation, theme toggle, timers, and auto-hide controls
+- **Responsive Design**: Mobile-first layout that works on all devices
+- **Dark/Light Themes**: User preference with localStorage persistence
+- **Attendance Tracking** (Optional): Serverless PostgreSQL backend via Netlify Functions
+- **Easy Customization**: Separated theme variables for quick branding
+
+## Quick Start
+
+### Automated Setup (Recommended)
+
+```bash
+# After creating from template and cloning
+cd your-course-repo
+bash initialize-course.sh
+```
+
+The wizard will prompt you for:
+- Course title, number, and level
+- Instructor information
+- Institution colors
+- Whether you want attendance tracking
+- Deployment preferences
+
+Then follow the [Setup Checklist](SETUP_CHECKLIST.md) for remaining tasks.
+
+### Manual Setup
+
+#### Option 1: Static Website (No Attendance)
+
+1. Create repository from this template on GitHub
+2. Clone your new repository
+3. Edit `index.html` with your course information
+4. Customize colors in `styles/theme-variables.css`
+5. Create lectures using `pages/lectures/lectureTemplate.html`
+6. Deploy to GitHub Pages, Netlify, or any static host
+
+#### Option 2: Full Setup (With Attendance Tracking)
+
+1. Create repository from this template
+2. Set up a [Neon PostgreSQL](https://neon.tech) database
+3. Deploy to Netlify
+4. Add `DATABASE_URL` environment variable in Netlify dashboard
+5. Run database schema (see Database Setup below)
+6. Customize your course information
+
+## ๐ Repository Structure
+
+After creating from this template, your repository will have this structure:
+
+```
+your-course-website/
+โโโ index.html # ๐ Course homepage - start here!
+โโโ SETUP_CHECKLIST.md # ๐ Step-by-step setup guide
+โโโ initialize-course.sh # ๐ง Automated setup wizard
+โ
+โโโ pages/ # ๐ All your course pages
+โ โโโ lectures/ # Lecture presentations
+โ โ โโโ lectureTemplate.html # Copy this for each new lecture
+โ โ โโโ 1ExampleLecture.html # Example lecture to reference
+โ โโโ attendance.html # Student attendance tracking (optional)
+โ โโโ register-students.html # Student registration (optional)
+โ
+โโโ js/ # ๐ฎ Interactive functionality
+โ โโโ presentation.js # Core slide navigation & controls
+โ โโโ classroom-auth.js # Authentication helpers (optional)
+โ โโโ utils.js # Shared utility functions
+โ
+โโโ styles/ # ๐จ Look and feel
+โ โโโ theme-variables.css # โก CUSTOMIZE: Your colors here!
+โ โโโ presentation.css # Core presentation styles
+โ
+โโโ images/ # ๐ผ๏ธ Visual assets
+โ โโโ favicon.png # Browser tab icon
+โ
+โโโ docs/ # ๐ Documentation & guides
+โ โโโ CUSTOMIZATION_GUIDE.md # Detailed customization instructions
+โ โโโ LECTURE_CREATION_GUIDE.md # How to create engaging lectures
+โ โโโ PROJECT_OVERVIEW.md # Architecture and design decisions
+โ โโโ repository/ # Template repository documentation
+โ โโโ testing/ # Test files and reports
+โ
+โโโ .github/ # โ๏ธ GitHub configuration
+โ โโโ workflows/ # Automated deployment workflows
+โ โโโ ISSUE_TEMPLATE/ # Issue templates for support
+โ
+โโโ netlify.toml # โ๏ธ Netlify deployment config
+โโโ package.json # ๐ฆ Dependencies (for Netlify functions)
+```
+
+**Key Files to Customize:**
+1. `index.html` - Your course information, lecture list, and homepage content
+2. `styles/theme-variables.css` - Your institution's colors and branding
+3. `pages/lectures/*.html` - Create one file per lecture using the template
+
+## ๐ Common Customization Tasks
+
+### Creating Your First Lecture
+
+**What:** Lectures are HTML slide presentations with keyboard navigation, timers, and theme support.
+
+**How:**
+
+1. **Copy the template:**
+ ```bash
+ cp pages/lectures/lectureTemplate.html pages/lectures/1Introduction.html
+ ```
+
+2. **Edit the content:**
+ Open `pages/lectures/1Introduction.html` and:
+ - Update the `
` tag (line 5)
+ - Replace slide content inside `
` elements
+ - Add or remove slides as needed (each slide is a `
`)
+ - The first slide should have `class="slide active"`
+
+3. **Add to homepage:**
+ Edit `index.html` and add your lecture to the `lectures` array:
+ ```javascript
+ const lectures = [
+ {
+ number: 1,
+ title: "Introduction to Web Development",
+ date: "2025-01-15", // Lecture becomes available day before
+ link: "./pages/lectures/1Introduction.html"
+ },
+ // Add more lectures here
+ ];
+ ```
+
+4. **Test it:**
+ - Open `index.html` in a browser
+ - Your lecture should appear in the schedule
+ - Click to open and test keyboard navigation (โ, โ, Space)
+
+**Pro tip:** Check the date logicโlectures become accessible the day before their scheduled date to allow student preparation.
+
+---
+
+### Changing Colors & Branding
+
+**What:** All colors are centralized in one file for easy customization.
+
+**How:**
+
+1. **Open** `styles/theme-variables.css`
+
+2. **Find the color variables** (around lines 5-20):
+ ```css
+ /* Light mode colors */
+ --primary-color: #00669b; /* Main brand color */
+ --secondary-color: #009edb; /* Links and accents */
+ --accent-color: #ffc222; /* Buttons and highlights */
+ ```
+
+3. **Replace with your institution's colors:**
+ ```css
+ /* Example: University of Example */
+ --primary-color: #003366; /* Deep blue */
+ --secondary-color: #0066cc; /* Bright blue */
+ --accent-color: #ffcc00; /* Gold */
+ ```
+
+4. **Update dark mode colors too** (around lines 30-40):
+ ```css
+ [data-theme="dark"] {
+ --primary-color: #0088cc; /* Lighter shade for dark backgrounds */
+ /* ... update other colors ... */
+ }
+ ```
+
+5. **Test both themes:**
+ - Open `index.html`
+ - Click the theme toggle button (๐/โ๏ธ)
+ - Verify colors look good in both light and dark mode
+
+**Pro tip:** Use your institution's official brand guidelines for color codes.
+
+---
+
+### Updating Course Information
+
+**What:** All course metadata lives in `index.html`.
+
+**Where to edit:**
+
+1. **Page title** (line 6):
+ ```html
+ CSCI 3403 - Web Development | Fall 2025
+ ```
+
+2. **Course header** (around line 40):
+ ```html
+
This course covers modern web development including HTML5, CSS3,
+ JavaScript, responsive design, and web frameworks...
+ ```
+
+**Pro tip:** Search for "CUSTOMIZE" comments in the HTMLโthey mark all places that typically need updates.
+
+## ๐ Database Setup (Optional - For Attendance Tracking)
+
+**Do you need this?** Only if you want to track student attendance using the built-in attendance pages. Most users skip this and just use the presentation features.
+
+### Setting Up Attendance Tracking
+
+**Prerequisites:**
+- Deployed to Netlify (serverless functions required)
+- Free Neon PostgreSQL account
+
+**Step-by-step setup:**
+
+1. **Create a Neon database:**
+ - Go to [neon.tech](https://neon.tech) and sign up (free tier is plenty)
+ - Create a new project
+ - Copy your connection string (looks like: `postgresql://user:pass@host/db`)
+
+2. **Run the database schema:**
+ - In Neon's SQL Editor, run this SQL:
+ ```sql
+ -- Students table
+ CREATE TABLE students (
+ id SERIAL PRIMARY KEY,
+ first_name VARCHAR(100) NOT NULL,
+ last_name VARCHAR(100) NOT NULL,
+ full_name VARCHAR(200) NOT NULL,
+ card_data TEXT, -- Optional: for card swipe systems
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ UNIQUE(first_name, last_name)
+ );
+
+ -- Attendance records table
+ CREATE TABLE attendance (
+ id SERIAL PRIMARY KEY,
+ student_id INTEGER REFERENCES students(id) ON DELETE CASCADE,
+ attendance_date DATE NOT NULL,
+ timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ is_late BOOLEAN DEFAULT false, -- Optional: mark late arrivals
+ UNIQUE(student_id, attendance_date) -- Prevent duplicate records
+ );
+
+ -- Index for faster lookups
+ CREATE INDEX idx_attendance_date ON attendance(attendance_date);
+ CREATE INDEX idx_student_name ON students(last_name, first_name);
+ ```
+
+3. **Add DATABASE_URL to Netlify:**
+ - In Netlify: Site settings โ Environment variables
+ - Variable name: `DATABASE_URL`
+ - Value: Your Neon connection string
+ - Click **Save**
+ - Redeploy your site
+
+4. **Register students:**
+ - Visit: `https://your-site.netlify.app/pages/register-students.html`
+ - Enter student names one by one
+ - Or bulk import via SQL:
+ ```sql
+ INSERT INTO students (first_name, last_name, full_name)
+ VALUES
+ ('John', 'Doe', 'John Doe'),
+ ('Jane', 'Smith', 'Jane Smith');
+ ```
+
+5. **Test attendance:**
+ - Visit: `https://your-site.netlify.app/pages/attendance.html`
+ - Search for a student name
+ - Click to mark present
+ - Check `pages/attendance-overview.html` to see reports
+
+**Security note:** The attendance functions use basic authentication. For production with sensitive data, consider adding proper authentication (e.g., OAuth, password protection).
+
+## Keyboard Shortcuts (In Presentations)
+
+- **Arrow Keys**: Navigate slides
+- **Space**: Next slide
+- **Home/End**: First/Last slide
+- **F**: Toggle fullscreen
+- **T**: Toggle theme
+- **Esc**: Exit fullscreen
+
+## ๐ Deployment Options
+
+Your course website is just static files, so it can be hosted almost anywhere. Here are the most common options:
+
+### Option 1: GitHub Pages (Free & Easy)
+
+**Best for:** Simple deployments without attendance tracking
+
+**Advantages:**
+- โ Completely free
+- โ Automatic deployment on every push
+- โ Built-in HTTPS
+- โ Custom domain support
+
+**Limitations:**
+- โ No serverless functions (attendance tracking won't work)
+
+**Setup Steps:**
+
+1. **Push your code to GitHub:**
+ ```bash
+ git add .
+ git commit -m "Initial course website setup"
+ git push origin main
+ ```
+
+2. **Enable GitHub Pages:**
+ - Go to your repository on GitHub
+ - Click **Settings** โ **Pages**
+ - Under "Source", select **"Deploy from a branch"**
+ - Select branch: **`main`**, folder: **`/ (root)`**
+ - Click **Save**
+
+3. **Wait for deployment** (1-2 minutes):
+ - Go to **Actions** tab to watch the deployment
+ - Once complete, your site will be at:
+ ```
+ https://YOUR-USERNAME.github.io/YOUR-REPO-NAME/
+ ```
+
+4. **Test your site:**
+ - Visit the URL
+ - Test navigation, theme toggle, and lecture links
+ - Share the URL with your students!
+
+**Troubleshooting:**
+- If pages don't load, check that `index.html` is in the root directory
+- If styles are broken, verify all paths are relative (e.g., `./styles/` not `/styles/`)
+
+---
+
+### Option 2: Netlify (Full Features)
+
+**Best for:** Deployments with attendance tracking or advanced features
+
+**Advantages:**
+- โ Serverless functions (attendance tracking works!)
+- โ Deploy previews for every PR
+- โ Custom domains with free SSL
+- โ Environment variables for secrets
+- โ Automatic deployments
+
+**Setup Steps:**
+
+1. **Create Netlify account:**
+ - Go to [netlify.com](https://netlify.com) and sign up (free tier is plenty)
+
+2. **Connect your repository:**
+ - Click **"Add new site"** โ **"Import an existing project"**
+ - Choose **GitHub** and authorize Netlify
+ - Select your course website repository
+
+3. **Configure build settings:**
+ - Build command: *leave empty* (it's a static site)
+ - Publish directory: `.` (root directory)
+ - Click **"Deploy site"**
+
+4. **Set up environment variables** (if using attendance):
+ - Go to **Site settings** โ **Environment variables**
+ - Add variable: `DATABASE_URL`
+ - Value: Your Neon PostgreSQL connection string (see [Database Setup](#database-setup))
+
+5. **Access your site:**
+ - Netlify provides a URL like: `https://random-name-12345.netlify.app`
+ - You can customize this or add your own domain
+
+6. **Automatic deployments:**
+ - Every push to `main` automatically deploys
+ - Pull requests get preview URLs for testing
+
+**Pro tip:** Use Netlify's deploy previews to test changes before merging to main.
+
+---
+
+### Option 3: Other Platforms
+
+This template works with any static hosting provider:
+
+| Provider | Free Tier | Serverless Functions | Custom Domain |
+|----------|-----------|---------------------|---------------|
+| **Vercel** | โ Yes | โ Yes | โ Yes |
+| **Cloudflare Pages** | โ Yes | โ Yes (Workers) | โ Yes |
+| **AWS S3 + CloudFront** | โ ๏ธ Free tier | โ Requires Lambda | โ Yes |
+| **Azure Static Web Apps** | โ Yes | โ Yes | โ Yes |
+
+**General deployment steps:**
+1. Build/bundle: None needed (already static HTML/CSS/JS)
+2. Publish directory: Root directory (where `index.html` is)
+3. Environment variables: `DATABASE_URL` if using attendance
+
+---
+
+### Custom Domain Setup
+
+After deploying to any platform, you can add a custom domain:
+
+**For GitHub Pages:**
+1. Go to Settings โ Pages
+2. Enter your domain (e.g., `csci3403.university.edu`)
+3. Add DNS records (CNAME or A record) per GitHub's instructions
+
+**For Netlify:**
+1. Go to Site settings โ Domain management
+2. Click "Add custom domain"
+3. Follow DNS configuration instructions
+
+**Pro tip:** Most universities allow faculty to create subdomains for courses. Contact your IT department.
+
+## โ Frequently Asked Questions
+
+### General Questions
+
+**Q: Do I need to know how to code to use this template?**
+A: Basic HTML knowledge helps, but the automated setup wizard (`initialize-course.sh`) can handle most customization. For creating lectures, you can copy the template and modify the textโno coding required.
+
+**Q: Is this template free to use?**
+A: Yes! It's MIT licensed, which means you can use it for any educational purpose, modify it, and even share your modified version.
+
+**Q: Can I use this for non-course websites?**
+A: Absolutely! While designed for courses, the presentation system works great for any sequential content: training materials, workshops, conference talks, etc.
+
+**Q: How many students can this handle?**
+A: The static site itself scales infinitely (it's just HTML). If using attendance tracking, Neon's free tier handles 10GB, which is enough for thousands of students across multiple semesters.
+
+### Technical Questions
+
+**Q: Why aren't my lectures showing up on the homepage?**
+A: Check these common issues:
+1. Ensure the lecture `date` is in `YYYY-MM-DD` format
+2. Verify the lecture is added to the `lectures` array in `index.html`
+3. Check browser console (F12) for JavaScript errors
+4. Ensure the `link` path is correct (relative to `index.html`)
+
+**Q: How do I make lectures available immediately (ignore the date check)?**
+A: In `index.html`, find this code:
+```javascript
+const isAvailable = currentDate >= new Date(lecture.date);
+```
+Replace it with:
+```javascript
+const isAvailable = true; // All lectures always available
+```
+
+**Q: The theme toggle isn't working. What's wrong?**
+A: Make sure both CSS files are linked in your HTML:
+```html
+
+
+```
+And that `presentation.js` is loaded at the bottom of the ``.
+
+**Q: Can I add videos to my slides?**
+A: Yes! Just add HTML5 video tags in your slide content:
+```html
+
+
Lecture Video
+
+
+```
+
+**Q: How do I export lectures to PDF?**
+A: Open the lecture in your browser and use Print (Ctrl+P / Cmd+P). The CSS includes print styles that work well for PDF export. For best results:
+1. Set orientation to "Landscape"
+2. Enable "Background graphics"
+3. Print to PDF
+
+**Q: Can I password-protect my course site?**
+A: GitHub Pages and Netlify don't have built-in password protection on free tiers. Options:
+- Use Netlify's password protection (requires paid plan)
+- Deploy to a platform with authentication (e.g., Vercel with auth)
+- Use your university's LMS integration
+- Keep the repository private (but then you can't use GitHub Pages)
+
+### Customization Questions
+
+**Q: How do I change the favicon?**
+A: Replace `images/favicon.png` with your own image (recommended: 32x32 or 64x64 PNG).
+
+**Q: Can I use Google Fonts or custom fonts?**
+A: Yes! Add to the `` of your HTML:
+```html
+
+```
+Then update `theme-variables.css`:
+```css
+--font-family: 'Roboto', sans-serif;
+```
+
+**Q: How do I add a syllabus page?**
+A: Create `pages/syllabus.html`, copy the structure from `index.html`, and add content. Link to it from your homepage quick links.
+
+**Q: Can I add code syntax highlighting to slides?**
+A: Yes! Include a library like Prism.js or Highlight.js. Add to your lecture HTML:
+```html
+
+
+```
+Then use:
+```html
+
+def hello():
+ print("Hello, world!")
+
+```
+
+---
+
+## ๐ ๏ธ Troubleshooting
+
+### Common Issues
+
+**Problem:** Styles aren't loading / site looks broken
+**Solutions:**
+- Check that all CSS files are in the `styles/` folder
+- Verify file paths are relative (e.g., `./styles/theme-variables.css`)
+- Clear browser cache (Ctrl+Shift+R / Cmd+Shift+R)
+- Open browser console (F12) and check for 404 errors
+
+**Problem:** JavaScript features not working (navigation, theme toggle, etc.)
+**Solutions:**
+- Open browser console (F12) and check for errors
+- Verify `js/presentation.js` is loaded before the closing `` tag
+- Ensure you're not blocking JavaScript
+- Try in a different browser to rule out extensions
+
+**Problem:** Lectures are all showing as "Available Soon"
+**Solutions:**
+- Check that lecture dates are in the past or today
+- Remember: lectures become available the day *before* their date
+- Verify dates are in `YYYY-MM-DD` format (not `MM/DD/YYYY` or other formats)
+- Check your computer's date/time settings
+
+**Problem:** Attendance tracking not working on Netlify
+**Solutions:**
+- Verify `DATABASE_URL` environment variable is set in Netlify
+- Check Netlify function logs: Site โ Functions โ Click function โ Logs
+- Ensure database schema was created correctly
+- Test database connection string in a PostgreSQL client
+- Make sure you redeployed after adding environment variables
+
+**Problem:** GitHub Pages deployment fails
+**Solutions:**
+- Check Actions tab for error messages
+- Ensure `index.html` is in the root directory (not in a subfolder)
+- Verify GitHub Pages is enabled in Settings โ Pages
+- Make sure your repository is public (or you have GitHub Pro for private repos)
+
+**Problem:** Mobile layout is broken
+**Solutions:**
+- Add viewport meta tag to HTML (should already be there):
+ ```html
+
+ ```
+- Test using browser developer tools (F12) with device emulation
+- Check for custom CSS that overrides responsive styles
+
+**Problem:** Theme toggle persists across different courses
+**Solutions:**
+- This is expected behavior (uses localStorage per domain)
+- If deploying multiple courses, use different subdomains
+- Or modify the localStorage key in `presentation.js` to include course name
+
+---
+
+## ๐ Additional Documentation
+
+Detailed guides are available in the `docs/` folder:
+
+- **[Customization Guide](docs/CUSTOMIZATION_GUIDE.md)** - Deep dive into customization options
+- **[Lecture Creation Guide](docs/LECTURE_CREATION_GUIDE.md)** - How to create engaging, interactive lectures
+- **[Project Overview](docs/PROJECT_OVERVIEW.md)** - Architecture and design decisions
+- **[Testing Report](docs/testing/TEST_REPORT.md)** - Comprehensive testing documentation
+
+For template repository documentation:
+- **[Template Repository Guide](docs/repository/TEMPLATE_REPOSITORY_GUIDE.md)** - How to use GitHub templates
+- **[Template Repository README](docs/repository/TEMPLATE_REPOSITORY_README.md)** - Original repository information
+
+---
+
+## ๐ Browser Support
+
+**Fully Supported:**
+- Chrome/Edge (latest 2 versions)
+- Firefox (latest 2 versions)
+- Safari (latest 2 versions)
+- Mobile: iOS Safari 13+, Chrome Mobile
+
+**Minimum Requirements:**
+- CSS Grid and Flexbox support
+- CSS Custom Properties (CSS Variables)
+- ES6 JavaScript (arrow functions, const/let, template literals)
+- LocalStorage API
+
+**Not supported:** Internet Explorer (use Edge instead)
+
+---
+
+## ๐ License
+
+MIT License - See [LICENSE](LICENSE) file for details
+
+**What this means:**
+- โ Use for any educational purpose
+- โ Modify and customize freely
+- โ Share your modifications
+- โ Use commercially (e.g., paid courses)
+- โ ๏ธ No warranty or liability (use at your own risk)
+
+---
+
+## ๐ Credits & Acknowledgments
+
+Created by **Bobby Reed** for educational use.
+
+**Based on production course websites from Oklahoma City University:**
+- CSCI 3403 - Web Programming
+- CSCI 2383 - Foundations of Computer Science II
+- CSCI 1383 - Foundations of Computer Science I
+
+**Special thanks to:**
+- 100+ students who battle-tested this template across 3 semesters
+- Oklahoma City University for supporting open educational resources
+
+**Technologies used:**
+- Vanilla JavaScript (no frameworks!)
+- CSS Grid and Flexbox
+- PostgreSQL (via Neon)
+- Netlify Functions (serverless)
+
+---
+
+## ๐ฌ Getting Help & Contributing
+
+**Found a bug?** [Create an issue](https://github.com/bobbyreed/CourseWebsiteTemplate/issues)
+
+**Have a question?** Check the [FAQ](#frequently-asked-questions) or [create a discussion](https://github.com/bobbyreed/CourseWebsiteTemplate/discussions)
+
+**Want to contribute?** Pull requests welcome! Please:
+1. Fork the repository
+2. Create a feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+---
+
+**Ready to create your course website?** Click "Use this template" at the top of this page to get started! ๐
diff --git a/template/SETUP_CHECKLIST.md b/SETUP_CHECKLIST.md
similarity index 100%
rename from template/SETUP_CHECKLIST.md
rename to SETUP_CHECKLIST.md
diff --git a/template/docs/CUSTOMIZATION_GUIDE.md b/docs/CUSTOMIZATION_GUIDE.md
similarity index 100%
rename from template/docs/CUSTOMIZATION_GUIDE.md
rename to docs/CUSTOMIZATION_GUIDE.md
diff --git a/template/docs/LECTURE_CREATION_GUIDE.md b/docs/LECTURE_CREATION_GUIDE.md
similarity index 100%
rename from template/docs/LECTURE_CREATION_GUIDE.md
rename to docs/LECTURE_CREATION_GUIDE.md
diff --git a/PROJECT_OVERVIEW.md b/docs/PROJECT_OVERVIEW.md
similarity index 100%
rename from PROJECT_OVERVIEW.md
rename to docs/PROJECT_OVERVIEW.md
diff --git a/TEMPLATE_REPOSITORY_GUIDE.md b/docs/repository/TEMPLATE_REPOSITORY_GUIDE.md
similarity index 100%
rename from TEMPLATE_REPOSITORY_GUIDE.md
rename to docs/repository/TEMPLATE_REPOSITORY_GUIDE.md
diff --git a/docs/repository/TEMPLATE_REPOSITORY_README.md b/docs/repository/TEMPLATE_REPOSITORY_README.md
new file mode 100644
index 0000000..27c0cda
--- /dev/null
+++ b/docs/repository/TEMPLATE_REPOSITORY_README.md
@@ -0,0 +1,91 @@
+# CourseWebsiteTemplate
+
+A free, modern course website template featuring interactive HTML presentations, attendance tracking with card reader support, and serverless backend - all deployable at no cost using GitHub and Netlify.
+
+## Live Examples
+
+See the template in action with these live course sites:
+- **Web Programming**: [wp.profbobby.com](https://wp.profbobby.com)
+- **Software Engineering**: [se.profbobby.com](https://se.profbobby.com)
+- **Database Design**: [db.profbobby.com](https://db.profbobby.com)
+
+## Features
+
+- **Interactive Presentations**: Built-in HTML slide deck with keyboard navigation and presentation mode
+- **Attendance Tracking**: Student registration and daily attendance with card swipe support
+- **Attendance Overview**: Visual attendance reports and analytics
+- **Serverless Backend**: Netlify Functions + Neon PostgreSQL (all free tier)
+- **No Build Step**: Pure vanilla JS, HTML, and CSS - edit and deploy instantly
+- **Responsive Design**: Works on desktop, tablet, and mobile devices
+- **Dark/Light Mode**: Theme toggle with CSS custom properties
+
+## Quick Start (100% Free!)
+
+### 1. Use This Template
+
+Click the green **"Use this template"** button at the top of this page to create your own course repository.
+
+### 2. Set Up Your Free Services
+
+**GitHub** (already done if you're reading this!)
+- Free hosting for your code
+- Free static site hosting via GitHub Pages (optional)
+
+**Netlify** (recommended - free tier)
+1. Sign up at [netlify.com](https://netlify.com) (free account)
+2. Connect your GitHub repository
+3. Deploy with one click - automatic HTTPS included!
+4. Free tier includes: 100GB bandwidth/month, serverless functions, form handling
+
+**Neon** (for attendance database - free tier)
+1. Sign up at [neon.tech](https://neon.tech) (free account)
+2. Create a PostgreSQL database (free tier: 3GB storage, autoscaling)
+3. Copy connection string to Netlify environment variables
+
+### 3. Customize Your Site
+
+Run the initialization wizard:
+```bash
+bash template/initialize-course.sh
+```
+
+Or manually edit:
+- `template/index.html` - Course title, schedule, instructor info
+- `template/styles/presentation.css` - Colors and theming
+- `template/pages/lectures/` - Add your lecture slides
+
+### 4. Deploy
+
+**Option A: Netlify (Recommended)**
+- Push to GitHub โ Netlify auto-deploys
+- Get free HTTPS domain: `your-course.netlify.app`
+- Optional: Use custom domain
+
+**Option B: GitHub Pages**
+- Enable in repository Settings โ Pages
+- Free hosting at `username.github.io/repo-name`
+
+## Documentation
+
+- **[Template Repository Guide](TEMPLATE_REPOSITORY_GUIDE.md)** - How to use this as a GitHub template
+- **[Setup Checklist](template/SETUP_CHECKLIST.md)** - Step-by-step customization guide
+- **[Project Overview](PROJECT_OVERVIEW.md)** - Technical architecture and features
+
+## Cost Breakdown
+
+Everything runs on free tiers:
+- GitHub: Free (unlimited public repos)
+- Netlify: Free (100GB bandwidth, 125k serverless function calls/month)
+- Neon PostgreSQL: Free (3GB storage, 0.5GB RAM)
+- **Total Monthly Cost: $0**
+
+## Support
+
+For questions or issues:
+1. Check the [documentation files](template/SETUP_CHECKLIST.md)
+2. Review [live examples](#live-examples) for inspiration
+3. Open an issue in this repository
+
+## License
+
+MIT License - see [LICENSE](LICENSE) for details
diff --git a/TESTING_SUMMARY.md b/docs/testing/TESTING_SUMMARY.md
similarity index 100%
rename from TESTING_SUMMARY.md
rename to docs/testing/TESTING_SUMMARY.md
diff --git a/TEST_REPORT.md b/docs/testing/TEST_REPORT.md
similarity index 100%
rename from TEST_REPORT.md
rename to docs/testing/TEST_REPORT.md
diff --git a/final-tests.sh b/docs/testing/final-tests.sh
similarity index 100%
rename from final-tests.sh
rename to docs/testing/final-tests.sh
diff --git a/integration-test.html b/docs/testing/integration-test.html
similarity index 100%
rename from integration-test.html
rename to docs/testing/integration-test.html
diff --git a/run-tests.sh b/docs/testing/run-tests.sh
similarity index 100%
rename from run-tests.sh
rename to docs/testing/run-tests.sh
diff --git a/test-suite.sh b/docs/testing/test-suite.sh
similarity index 100%
rename from test-suite.sh
rename to docs/testing/test-suite.sh
diff --git a/template/images/favicon.png b/images/favicon.png
similarity index 100%
rename from template/images/favicon.png
rename to images/favicon.png
diff --git a/template/index.html b/index.html
similarity index 100%
rename from template/index.html
rename to index.html
diff --git a/template/initialize-course.sh b/initialize-course.sh
similarity index 100%
rename from template/initialize-course.sh
rename to initialize-course.sh
diff --git a/template/js/classroom-auth.js b/js/classroom-auth.js
similarity index 100%
rename from template/js/classroom-auth.js
rename to js/classroom-auth.js
diff --git a/template/js/presentation.js b/js/presentation.js
similarity index 100%
rename from template/js/presentation.js
rename to js/presentation.js
diff --git a/template/js/utils.js b/js/utils.js
similarity index 100%
rename from template/js/utils.js
rename to js/utils.js
diff --git a/template/netlify.toml b/netlify.toml
similarity index 100%
rename from template/netlify.toml
rename to netlify.toml
diff --git a/template/package.json b/package.json
similarity index 100%
rename from template/package.json
rename to package.json
diff --git a/template/pages/attendance-overview.html b/pages/attendance-overview.html
similarity index 100%
rename from template/pages/attendance-overview.html
rename to pages/attendance-overview.html
diff --git a/template/pages/attendance.html b/pages/attendance.html
similarity index 100%
rename from template/pages/attendance.html
rename to pages/attendance.html
diff --git a/template/pages/lectures/1ExampleLecture.html b/pages/lectures/1ExampleLecture.html
similarity index 100%
rename from template/pages/lectures/1ExampleLecture.html
rename to pages/lectures/1ExampleLecture.html
diff --git a/template/pages/lectures/lectureTemplate.html b/pages/lectures/lectureTemplate.html
similarity index 100%
rename from template/pages/lectures/lectureTemplate.html
rename to pages/lectures/lectureTemplate.html
diff --git a/template/pages/register-students.html b/pages/register-students.html
similarity index 100%
rename from template/pages/register-students.html
rename to pages/register-students.html
diff --git a/template/styles/presentation.css b/styles/presentation.css
similarity index 100%
rename from template/styles/presentation.css
rename to styles/presentation.css
diff --git a/template/styles/theme-variables.css b/styles/theme-variables.css
similarity index 100%
rename from template/styles/theme-variables.css
rename to styles/theme-variables.css
diff --git a/template/README.md b/template/README.md
deleted file mode 100644
index fe9abec..0000000
--- a/template/README.md
+++ /dev/null
@@ -1,211 +0,0 @@
-# Course Website Template
-
-[](https://github.com/bobbyreed/CourseWebsiteTemplate)
-[](LICENSE)
-[](TEST_REPORT.md)
-
-A domain-agnostic, professional course website template with interactive presentations, attendance tracking, and theme customization. **Battle-tested with 100+ students across 3 production courses.**
-
-## ๐ Using This Template
-
-This is a GitHub template repository! To create your own course website:
-
-1. **Click "Use this template"** button at the top of this repository
-2. **Name your new repository** (e.g., `CSCI3403-WebProgramming`)
-3. **Clone your new repository** to your local machine
-4. **Run the setup wizard** (optional but recommended):
- ```bash
- bash initialize-course.sh
- ```
- This will prompt you for course details and automatically update the template.
-5. **Follow the [Setup Checklist](SETUP_CHECKLIST.md)** to complete your site
-
-**Prefer manual setup?** See the [Quick Start](#quick-start) section below.
-
----
-
-## Features
-
-- **Interactive Presentation System**: Keyboard navigation, theme toggle, timers, and auto-hide controls
-- **Responsive Design**: Mobile-first layout that works on all devices
-- **Dark/Light Themes**: User preference with localStorage persistence
-- **Attendance Tracking** (Optional): Serverless PostgreSQL backend via Netlify Functions
-- **Easy Customization**: Separated theme variables for quick branding
-
-## Quick Start
-
-### Automated Setup (Recommended)
-
-```bash
-# After creating from template and cloning
-cd your-course-repo
-bash initialize-course.sh
-```
-
-The wizard will prompt you for:
-- Course title, number, and level
-- Instructor information
-- Institution colors
-- Whether you want attendance tracking
-- Deployment preferences
-
-Then follow the [Setup Checklist](SETUP_CHECKLIST.md) for remaining tasks.
-
-### Manual Setup
-
-#### Option 1: Static Website (No Attendance)
-
-1. Create repository from this template on GitHub
-2. Clone your new repository
-3. Edit `index.html` with your course information
-4. Customize colors in `styles/theme-variables.css`
-5. Create lectures using `pages/lectures/lectureTemplate.html`
-6. Deploy to GitHub Pages, Netlify, or any static host
-
-#### Option 2: Full Setup (With Attendance Tracking)
-
-1. Create repository from this template
-2. Set up a [Neon PostgreSQL](https://neon.tech) database
-3. Deploy to Netlify
-4. Add `DATABASE_URL` environment variable in Netlify dashboard
-5. Run database schema (see Database Setup below)
-6. Customize your course information
-
-## File Structure
-
-```
-template/
-โโโ index.html # Course homepage (customize this)
-โโโ package.json # Node dependencies for Netlify functions
-โโโ netlify.toml # Netlify configuration
-โโโ pages/
-โ โโโ lectures/
-โ โ โโโ lectureTemplate.html # Template for new lectures
-โ โโโ notes/
-โ โ โโโ notesTemplate.html # Template for student notes
-โ โโโ attendance.html # Attendance tracking (optional)
-โโโ js/
-โ โโโ presentation.js # Core presentation engine
-โ โโโ classroom-auth.js # Authentication (optional)
-โ โโโ utils.js # Utility functions
-โโโ styles/
-โ โโโ theme-variables.css # CUSTOMIZE: Colors and branding
-โ โโโ presentation.css # Core presentation styles
-โโโ images/
-โ โโโ favicon.png # Course icon
-โโโ netlify/
-โ โโโ functions/ # Serverless backend (optional)
-โโโ docs/
- โโโ CUSTOMIZATION_GUIDE.md
- โโโ LECTURE_CREATION_GUIDE.md
-```
-
-## Customization Guide
-
-### 1. Update Course Information
-
-Edit `index.html`:
-- Course title, number, and description
-- Instructor name and contact
-- Semester and schedule
-- Lecture list with dates and titles
-
-### 2. Customize Colors
-
-Edit `styles/theme-variables.css`:
-```css
---primary-color: #00669b; /* Your institution's primary color */
---secondary-color: #009edb; /* Accent color */
---accent-color: #ffc222; /* Highlight color */
-```
-
-### 3. Create Lectures
-
-1. Copy `pages/lectures/lectureTemplate.html`
-2. Rename to match your lecture (e.g., `1Introduction.html`)
-3. Edit slides with your content
-4. Add to lectures array in `index.html`
-
-## Database Setup (Optional - For Attendance)
-
-If using attendance tracking, create these tables in your Neon database:
-
-```sql
-CREATE TABLE students (
- id SERIAL PRIMARY KEY,
- first_name VARCHAR(100) NOT NULL,
- last_name VARCHAR(100) NOT NULL,
- full_name VARCHAR(200) NOT NULL,
- card_data TEXT,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- UNIQUE(first_name, last_name)
-);
-
-CREATE TABLE attendance (
- id SERIAL PRIMARY KEY,
- student_id INTEGER REFERENCES students(id) ON DELETE CASCADE,
- attendance_date DATE NOT NULL,
- timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- is_late BOOLEAN DEFAULT false,
- UNIQUE(student_id, attendance_date)
-);
-```
-
-## Keyboard Shortcuts (In Presentations)
-
-- **Arrow Keys**: Navigate slides
-- **Space**: Next slide
-- **Home/End**: First/Last slide
-- **F**: Toggle fullscreen
-- **T**: Toggle theme
-- **Esc**: Exit fullscreen
-
-## Deployment
-
-### GitHub Pages (Automated!)
-
-This template includes GitHub Actions for automatic deployment:
-
-**Setup:**
-1. Push your repository to GitHub
-2. Go to Settings โ Pages โ Source: "GitHub Actions"
-3. Workflow automatically deploys on every push to `main`
-4. Access at: `https://[username].github.io/[repository-name]`
-
-**Limitations:** Serverless functions won't work (attendance tracking disabled)
-
-### Netlify (Full Features)
-
-**Setup:**
-1. Connect repository to Netlify
-2. Build settings pre-configured in `netlify.toml`
-3. Add `DATABASE_URL` environment variable (if using attendance)
-4. Auto-deploys on every push
-
-**Benefits:** Serverless functions, custom domains, SSL, deploy previews
-
-### Other Hosts
-Works with Vercel, Cloudflare Pages, AWS S3, Azure Static Web Apps
-
-## Documentation
-
-- [Customization Guide](docs/CUSTOMIZATION_GUIDE.md) - Detailed customization instructions
-- [Lecture Creation Guide](docs/LECTURE_CREATION_GUIDE.md) - How to create engaging lectures
-
-## Browser Support
-
-- Chrome, Firefox, Safari, Edge (latest 2 versions)
-- Mobile: iOS Safari, Chrome Mobile
-- Requires: CSS Grid, Flexbox, CSS Variables, ES6 JavaScript
-
-## License
-
-MIT License - Feel free to use for educational purposes
-
-## Credits
-
-Created for educational use. Based on production course websites from Oklahoma City University.
-
----
-
-**Need Help?** Check the documentation in the `docs/` folder or create an issue.
diff --git a/template/docs/PROJECT_OVERVIEW.md b/template/docs/PROJECT_OVERVIEW.md
deleted file mode 100644
index ff1f740..0000000
--- a/template/docs/PROJECT_OVERVIEW.md
+++ /dev/null
@@ -1,401 +0,0 @@
-# Course Website Template - Project Overview
-
-## Purpose
-
-This repository serves as a **domain-agnostic template** for creating professional course websites, extracted from three production course sites:
-- Web Programming (CSCI 3403) - Undergraduate
-- Software Engineering (CSCI 5403) - Graduate
-- Database Design (CSCI 5603) - Graduate
-
-The template provides a robust foundation for building engaging, interactive course websites with modern presentation features, student tracking, and customizable theming.
-
-## Template Philosophy
-
-This template is designed to be:
-- **Domain-Agnostic**: No course-specific content, ready to customize for any subject
-- **Production-Ready**: Battle-tested infrastructure from three live courses
-- **Feature-Rich**: Presentation system, attendance tracking, theme customization
-- **Easy to Customize**: Clear structure with separated concerns (content, styling, functionality)
-- **Modern**: Responsive design, dark/light themes, keyboard navigation
-
-## Core Features
-
-### 1. Interactive Presentation System
-- **Keyboard Navigation**: Arrow keys, Home, End, Space bar, 'f' for fullscreen, 't' for theme toggle
-- **Auto-Hide Controls**: Intelligent UI that hides after 2 seconds of inactivity
-- **Timer System**: Countdown timers for in-class exercises with audio alerts
-- **Slide Counter**: Current/total slides with visual progress
-- **Smooth Transitions**: CSS-based slide animations
-- **Print-Friendly**: Optimized for PDF export and printing
-
-### 2. Course Homepage
-- **Lecture Grid**: Dynamic, responsive grid of lecture cards
-- **Availability Logic**: Lock lectures until specified dates (day-before access)
-- **Status Indicators**: Visual markers for completed, current, and upcoming lectures
-- **Responsive Layout**: Mobile-first design that adapts to all screen sizes
-- **Quick Links**: Customizable resource cards for external links
-
-### 3. Theme System
-- **Light/Dark Mode**: User preference with localStorage persistence
-- **Custom Color Schemes**: Easy to customize with CSS variables
-- **OCU Branding**: Includes Oklahoma City University color palette (customizable)
-- **Theme Toggle UI**: Bubble interface with auto-hide functionality
-
-### 4. Student Engagement (Optional)
-- **Attendance Tracking**: Card swipe authentication system
-- **Progress Tracking**: Individual student dashboards
-- **Admin Panel**: Instructor-only access for managing students
-- **Database Integration**: PostgreSQL backend via Netlify serverless functions
-
-## Technology Stack
-
-### Frontend
-- **HTML5**: Semantic markup for accessibility
-- **CSS3**: Custom properties (CSS variables), flexbox, grid
-- **Vanilla JavaScript**: No frameworks - pure, maintainable code
-
-### Backend & Services
-- **Netlify Functions**: Serverless backend for database operations
-- **PostgreSQL**: Student and attendance data (via Neon serverless)
-- **GitHub Pages**: Alternative hosting option
-
-### Styling Philosophy
-- **CSS Variables**: All colors, spacing, and typography defined as variables
-- **Mobile-First**: Responsive breakpoints for all screen sizes
-- **Accessibility**: WCAG AA compliant with semantic HTML
-- **Print Support**: Clean print styles for lecture materials
-
-## Project Structure
-
-```
-CourseWebsiteTemplate/
-โโโ index.html # Course homepage template
-โโโ package.json # Node dependencies for Netlify functions
-โโโ netlify.toml # Netlify configuration
-โโโ pages/
-โ โโโ lectures/
-โ โ โโโ lectureTemplate.html # Template for creating new lectures
-โ โโโ notes/
-โ โ โโโ notesTemplate.html # Template for student notes (optional)
-โ โโโ attendance.html # Attendance tracking page (optional)
-โ โโโ quick.html # Quick reference page (optional)
-โโโ js/
-โ โโโ presentation.js # Core presentation engine
-โ โโโ classroom-auth.js # Authentication system (optional)
-โ โโโ utils.js # Utility functions
-โโโ styles/
-โ โโโ presentation.css # Main presentation styles
-โ โโโ lecture-tracking-styles.css # Student progress styles (optional)
-โ โโโ theme-variables.css # Customizable theme variables
-โโโ images/
-โ โโโ favicon.png # Course icon
-โโโ netlify/
-โ โโโ functions/ # Serverless API endpoints (optional)
-โ โโโ db-config.js
-โ โโโ mark-attendance.js
-โ โโโ get-students.js
-โโโ docs/
- โโโ PROJECT_OVERVIEW.md # This file
- โโโ CUSTOMIZATION_GUIDE.md # How to customize for your course
- โโโ LECTURE_CREATION_GUIDE.md # How to create new lectures
-```
-
-## Getting Started
-
-### Option 1: Minimal Setup (Lectures Only)
-1. Clone this repository
-2. Update `index.html` with your course information
-3. Create lectures using `pages/lectures/lectureTemplate.html`
-4. Deploy to GitHub Pages, Netlify, or any static host
-
-### Option 2: Full Setup (With Attendance Tracking)
-1. Clone this repository
-2. Set up Neon PostgreSQL database
-3. Configure Netlify environment variables
-4. Update course information in `index.html`
-5. Create lectures and customize theme
-6. Deploy to Netlify with functions enabled
-
-## Customization Points
-
-### Essential Customizations
-1. **Course Information** (`index.html`):
- - Course title, number, and description
- - Instructor name and contact information
- - Semester and schedule
- - Lecture list with dates and titles
-
-2. **Color Theme** (`styles/theme-variables.css`):
- - Primary and secondary colors
- - Light and dark mode palettes
- - Typography (fonts, sizes, weights)
-
-3. **Lectures** (`pages/lectures/`):
- - Create lecture HTML files from template
- - Add slides with course-specific content
- - Configure timers for exercises
-
-### Optional Customizations
-4. **Branding** (`images/`):
- - Favicon
- - Logo images
- - Background patterns
-
-5. **Features** (Enable/Disable):
- - Attendance tracking system
- - Student progress dashboards
- - Achievement badges
- - Leaderboards
-
-## Key Files Explained
-
-### index.html
-The course homepage that displays:
-- Course header with title and instructor info
-- Course overview section
-- Quick links to resources
-- Lecture grid with availability logic
-- Footer
-
-**Customize**: Update header content, course description, quick links, and lecture array
-
-### pages/lectures/lectureTemplate.html
-A blank lecture presentation with:
-- Presentation framework loaded
-- Title slide structure
-- Example content slides
-- Timer controls
-- Navigation UI
-
-**Use**: Copy this file to create each new lecture
-
-### js/presentation.js
-The core presentation engine that handles:
-- Slide navigation (keyboard and button)
-- Auto-hide controls
-- Timer management
-- Theme toggling
-- Fullscreen mode
-- Print optimization
-
-**Customize**: Rarely needed, but you can adjust timing, transitions, or add features
-
-### styles/presentation.css
-The main stylesheet defining:
-- Slide layout and typography
-- Navigation controls
-- Theme colors (via CSS variables)
-- Responsive breakpoints
-- Print styles
-
-**Customize**: Color scheme, fonts, spacing, and visual design
-
-## Common Course Patterns
-
-### Pattern 1: Undergraduate Course (Web Programming Style)
-- **Lectures**: 30+ classes over 16 weeks
-- **Features**: Student notes, achievement system, leaderboard
-- **Style**: Clean, modern, accessible
-- **Extras**: Integration with external curriculum (The Odin Project)
-
-### Pattern 2: Graduate Intensive (Software Engineering Style)
-- **Lectures**: 15 classes over 8 weeks
-- **Features**: Card swipe attendance, admin panel
-- **Style**: Blueprint/Windows 95 themed, unique aesthetic
-- **Extras**: Industry case studies, hands-on projects
-
-### Pattern 3: Graduate Specialized (Database Design Style)
-- **Lectures**: 16 classes over 8 weeks
-- **Features**: Entity-relationship themed design
-- **Style**: Database-inspired color scheme and iconography
-- **Extras**: Technical documentation, code examples
-
-## Deployment Options
-
-### GitHub Pages (Free, Simple)
-1. Push repository to GitHub
-2. Enable GitHub Pages in repository settings
-3. Select branch and directory
-4. Access at `username.github.io/repository`
-
-**Limitations**: No serverless functions (attendance tracking won't work)
-
-### Netlify (Free, Full-Featured)
-1. Connect repository to Netlify
-2. Configure build settings (none needed for static site)
-3. Add environment variables for database
-4. Auto-deploys on git push
-
-**Benefits**: Serverless functions, custom domains, SSL, previews
-
-### Custom Server
-- Any static file server (Apache, Nginx, etc.)
-- Upload files to web root
-- Configure virtual host if needed
-
-## Database Schema (Optional)
-
-If using attendance tracking:
-
-### students Table
-```sql
-CREATE TABLE students (
- id SERIAL PRIMARY KEY,
- first_name VARCHAR(100) NOT NULL,
- last_name VARCHAR(100) NOT NULL,
- full_name VARCHAR(200) NOT NULL,
- card_data TEXT,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- UNIQUE(first_name, last_name)
-);
-```
-
-### attendance Table
-```sql
-CREATE TABLE attendance (
- id SERIAL PRIMARY KEY,
- student_id INTEGER REFERENCES students(id) ON DELETE CASCADE,
- attendance_date DATE NOT NULL,
- timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- is_late BOOLEAN DEFAULT false,
- UNIQUE(student_id, attendance_date)
-);
-```
-
-## Accessibility Features
-
-- **Semantic HTML**: Proper heading hierarchy, landmarks, and ARIA labels
-- **Keyboard Navigation**: All features accessible without mouse
-- **Color Contrast**: WCAG AA compliant (4.5:1 for text)
-- **Screen Reader Support**: Meaningful alt text and ARIA descriptions
-- **Focus Indicators**: Clear visual focus states
-- **Responsive Text**: Scales appropriately at different zoom levels
-
-## Browser Support
-
-- **Modern Browsers**: Chrome, Firefox, Safari, Edge (latest 2 versions)
-- **Mobile**: iOS Safari, Chrome Mobile, Samsung Internet
-- **Features**: CSS Grid, Flexbox, CSS Variables, ES6 JavaScript
-- **Fallbacks**: Graceful degradation for older browsers
-
-## Best Practices
-
-### Creating Lectures
-1. Copy `lectureTemplate.html` for each new lecture
-2. Update title, lecture number, and total slides
-3. Use semantic HTML structure for slides
-4. Include timers for timed activities
-5. Test keyboard navigation
-6. Verify print layout
-
-### Styling Guidelines
-1. Use CSS variables for all colors and spacing
-2. Follow mobile-first responsive design
-3. Maintain consistent typography hierarchy
-4. Test in both light and dark themes
-5. Verify accessibility with tools (WAVE, axe)
-
-### Content Organization
-1. One topic per slide (avoid overcrowding)
-2. Use visual examples (code, diagrams, screenshots)
-3. Include interactive exercises with timers
-4. Add clear learning objectives
-5. Provide summary/review slides
-
-## File Naming Conventions
-
-### Lecture Files
-- Format: `{Number}{Title}.html`
-- Examples: `1CourseIntro.html`, `15FinalExam.html`
-- Use camelCase for multi-word titles: `5SoftwareArchitecture.html`
-
-### CSS Files
-- `presentation.css` - Core presentation styles
-- `theme-variables.css` - Customizable color/font variables
-- `{feature}-styles.css` - Feature-specific styles (e.g., `attendance-styles.css`)
-
-### JavaScript Files
-- `presentation.js` - Core presentation engine
-- `{feature}.js` - Feature-specific logic (e.g., `classroom-auth.js`)
-
-## Performance Considerations
-
-- **Minimal Dependencies**: Pure JavaScript, no heavy frameworks
-- **Lazy Loading**: Images and content loaded as needed
-- **Local Storage**: Theme preferences cached locally
-- **Serverless Functions**: Cold start ~500ms (acceptable for attendance)
-- **CDN Delivery**: Use Netlify CDN for fast global access
-
-## Security Best Practices
-
-### If Using Attendance System
-1. **Environment Variables**: Never commit database credentials
-2. **Input Validation**: Sanitize all user inputs in functions
-3. **SQL Injection**: Use parameterized queries
-4. **Authentication**: Card-based instructor auth with expiration
-5. **HTTPS Only**: Enforce SSL for all traffic
-
-## Lessons Learned from Production
-
-### What Works Well
-- Auto-hide controls reduce distraction during presentations
-- Keyboard navigation is heavily used by instructors
-- Dark mode is preferred by 60%+ of students
-- Day-before lecture unlocking prevents students from racing ahead
-- Card swipe attendance is faster than manual entry
-
-### What to Avoid
-- Don't over-complicate the UI (keep it clean)
-- Don't use heavy animations (they distract from content)
-- Don't make lectures available too early (students lose sync with class)
-- Don't rely solely on color for status (use icons too)
-
-## Support & Maintenance
-
-### For Course Instructors
-- Update lecture dates in `index.html` lecture array
-- Create new lectures by copying template
-- Customize theme colors in CSS variables
-- Monitor attendance in admin panel (if enabled)
-
-### For Developers
-- All JavaScript is well-commented
-- CSS uses BEM-like naming conventions
-- Database queries are in `netlify/functions/`
-- Logs available in Netlify dashboard
-
-## Future Enhancement Ideas
-
-- **Video Integration**: Embed lecture recordings
-- **Quiz System**: Interactive quizzes with instant feedback
-- **Discussion Boards**: Integrated Q&A for each lecture
-- **Assignment Submission**: Upload and track assignments
-- **Grade Book**: Full LMS-lite functionality
-- **Mobile App**: Native iOS/Android companion apps
-- **Live Polling**: Real-time audience participation
-- **Code Playground**: Embedded code editor for live coding
-
-## Credits
-
-This template is derived from three production course websites created for Oklahoma City University:
-- **Web Programming** (CSCI 3403) - Fall 2024/2025
-- **Software Engineering** (CSCI 5403) - Spring 2025
-- **Database Design** (CSCI 5603) - Fall 2024
-
-**Created By**: bobby reed
-**Institution**: Oklahoma City University
-**License**: Educational use encouraged
-
-## Next Steps
-
-After reviewing this overview:
-1. Read `CUSTOMIZATION_GUIDE.md` for step-by-step customization
-2. Read `LECTURE_CREATION_GUIDE.md` for creating lecture content
-3. Explore the three source courses in their respective directories
-4. Start customizing for your own course!
-
----
-
-**Last Updated**: November 2025
-**Template Version**: 1.0
-**Maintainer**: Course Website Template Team