Skip to content

Shakeri-Lab/dl-course-site

Repository files navigation

Deep Learning Mastery - Course Website

A modern, learner-centered course website built with Next.js and designed for seamless integration with Canvas LMS. This repository contains all course materials, resources, and documentation for the Deep Learning Mastery course.

🎯 Project Overview

This project implements a hybrid approach combining the best of GitHub Pages and Canvas LMS:

  • GitHub Pages: Delivers beautiful, static course content (videos, readings, code examples)
  • Canvas LMS: Handles course management (authentication, progress tracking, quizzes, assignments)

Why This Approach?

  • βœ… Clean Separation: Content delivery vs. course management
  • βœ… Always Accessible: Materials remain available after course completion
  • βœ… Easy Maintenance: Update content without breaking Canvas integration
  • βœ… Professional Design: Modern, responsive, and accessible interface
  • βœ… SEO Friendly: Course materials discoverable by search engines

πŸ—οΈ Architecture

``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ GitHub Pages β”‚ β”‚ Canvas LMS β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Course Content│◄──►│ β€’ Authenticationβ”‚ β”‚ β€’ Video Lecturesβ”‚ β”‚ β€’ Progress Trackβ”‚ β”‚ β€’ Code Examples β”‚ β”‚ β€’ Quizzes β”‚ β”‚ β€’ Resources β”‚ β”‚ β€’ Assignments β”‚ β”‚ β€’ Documentation β”‚ β”‚ β€’ Gradebook β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ```

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • Git
  • GitHub account
  • Canvas LMS access (for course management)

Local Development

  1. Clone the repository ```bash git clone https://github.com/your-username/dl-course-materials.git cd dl-course-materials ```

  2. Install dependencies ```bash npm install ```

  3. Start development server ```bash npm run dev ```

  4. Open in browser ``` http://localhost:3000 ```

Deployment to GitHub Pages

  1. Enable GitHub Pages

    • Go to repository Settings β†’ Pages
    • Select "Deploy from a branch"
    • Choose "main" branch and "/ (root)" folder
  2. Configure custom domain (optional) ```bash echo "your-domain.com" > public/CNAME ```

  3. Deploy ```bash npm run build npm run export git add . git commit -m "Deploy to GitHub Pages" git push origin main ```

πŸ“ Project Structure

``` dl-course-materials/ β”œβ”€β”€ app/ # Next.js app directory β”‚ β”œβ”€β”€ page.tsx # Homepage with course overview β”‚ β”œβ”€β”€ layout.tsx # Global layout and navigation β”‚ β”œβ”€β”€ globals.css # Global styles β”‚ β”œβ”€β”€ module/ β”‚ β”‚ └── [id]/ β”‚ β”‚ └── page.tsx # Individual module pages β”‚ β”œβ”€β”€ resources/ β”‚ β”‚ └── page.tsx # Additional learning resources β”‚ β”œβ”€β”€ setup/ β”‚ β”‚ └── page.tsx # Environment setup guide β”‚ β”œβ”€β”€ faq/ β”‚ β”‚ └── page.tsx # Frequently asked questions β”‚ β”œβ”€β”€ canvas-integration/ β”‚ β”‚ └── page.tsx # Canvas integration guide β”‚ └── implementation/ β”‚ └── page.tsx # Implementation checklist β”œβ”€β”€ components/ # Reusable UI components β”‚ └── ui/ # shadcn/ui components β”œβ”€β”€ public/ # Static assets β”‚ β”œβ”€β”€ slides/ # Course slide decks β”‚ β”œβ”€β”€ images/ # Course images β”‚ └── requirements.txt # Python requirements β”œβ”€β”€ docs/ # Documentation β”‚ β”œβ”€β”€ canvas-setup.md # Canvas configuration guide β”‚ └── deployment.md # Deployment instructions β”œβ”€β”€ package.json # Node.js dependencies β”œβ”€β”€ next.config.js # Next.js configuration β”œβ”€β”€ tailwind.config.js # Tailwind CSS configuration └── README.md # This file ```

πŸŽ“ Course Structure

The course consists of 12 modules, each following a consistent structure:

Module Components

  • Learning Objectives: Clear goals for each module
  • Lecture Materials: Video lectures and slide presentations
  • Required Readings: Essential texts and research papers
  • Code Examples: Jupyter notebooks and Python scripts
  • Additional Resources: Supplementary materials and tools

Module Flow

``` Pre-class Preparation β†’ Lectures β†’ Readings β†’ Code Practice β†’ Assessment ```

πŸ”§ Canvas Integration

Setup Overview

  1. Create Canvas Modules: One for each course module (1-12)
  2. Configure External Tools: Set up LTI integration with GitHub Pages
  3. Link Content: Point Canvas modules to GitHub Pages materials
  4. Set Up Assessments: Create quizzes and assignments in Canvas

Canvas Module Template

Each Canvas module should include:

  • Overview page with link to GitHub materials
  • Knowledge check quiz (due before live session)
  • Assignment submission portal
  • Discussion forum for Q&A

Example Canvas Page HTML

```html

πŸ“š Course Materials

Review the materials before taking the quiz.

Open Module 1 Materials
\`\`\`

🎨 Customization

Branding

  • Update colors in tailwind.config.js
  • Replace logo/branding in app/layout.tsx
  • Modify course title and description

Content Updates

  • Module content: Edit files in app/module/[id]/page.tsx
  • Course overview: Update app/page.tsx
  • Resources: Modify app/resources/page.tsx

Navigation

  • Add/remove navigation items in app/layout.tsx
  • Update footer links and information

πŸ“š Content Management

Adding New Modules

  1. Create new module data in the appropriate page component
  2. Add module to the main course modules array
  3. Create any associated resources (slides, notebooks, etc.)
  4. Update Canvas to link to the new module

Updating Existing Content

  1. Edit the relevant page component
  2. Update any linked resources
  3. Test changes locally before deploying
  4. Deploy to GitHub Pages

Managing Resources

  • Videos: Host on YouTube/Vimeo, embed links
  • Slides: Store in public/slides/ directory
  • Notebooks: Host on Google Colab, link to GitHub
  • Readings: Link to external sources or PDFs

πŸ” SEO and Analytics

Built-in SEO Features

  • Semantic HTML structure
  • Meta tags and descriptions
  • Open Graph tags for social sharing
  • Sitemap generation

Adding Analytics

```javascript // Add to app/layout.tsx import { GoogleAnalytics } from '@next/third-parties/google'

export default function RootLayout({ children }) { return ( {children} ) } ```

πŸ§ͺ Testing

Local Testing

```bash

Run development server

npm run dev

Build for production

npm run build

Test production build locally

npm start ```

Pre-deployment Checklist

  • All links work correctly
  • Mobile responsiveness verified
  • Canvas integration tested
  • Content accuracy reviewed
  • Performance optimized

πŸš€ Deployment

GitHub Pages (Recommended)

  1. Push changes to main branch
  2. GitHub Actions automatically deploys
  3. Site available at https://username.github.io/repository-name

Custom Domain Setup

  1. Add CNAME file: echo "yourdomain.com" > public/CNAME
  2. Configure DNS records with your domain provider
  3. Enable HTTPS in GitHub Pages settings

Alternative Deployment Options

  • Vercel: Connect GitHub repo for automatic deployments
  • Netlify: Drag and drop build folder or connect repo
  • AWS S3: Upload build files to S3 bucket with static hosting

πŸ› οΈ Troubleshooting

Common Issues

Build Errors ```bash

Clear cache and reinstall

rm -rf .next node_modules package-lock.json npm install npm run build ```

Canvas Integration Issues

  • Verify External Tool configuration
  • Check CORS settings
  • Test iframe embedding as fallback

Mobile Display Problems

  • Test responsive breakpoints
  • Verify touch interactions
  • Check viewport meta tag

Getting Help

πŸ“ˆ Performance

Optimization Features

  • Static site generation (SSG)
  • Image optimization with Next.js
  • CSS and JavaScript minification
  • Lazy loading for images and components

Performance Monitoring

```bash

Analyze bundle size

npm run build npm run analyze

Lighthouse audit

npx lighthouse http://localhost:3000 ```

πŸ”’ Security

Best Practices Implemented

  • No sensitive data in client-side code
  • External links open in new tabs
  • Content Security Policy headers
  • Regular dependency updates

Security Checklist

  • No API keys in public code
  • External links properly configured
  • Dependencies regularly updated
  • HTTPS enabled for production

🀝 Contributing

For Course Instructors

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/new-module
  3. Make changes and test locally
  4. Submit pull request with description

Content Guidelines

  • Follow existing module structure
  • Ensure mobile responsiveness
  • Test all external links
  • Include proper attribution for resources

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Next.js: React framework for production
  • Tailwind CSS: Utility-first CSS framework
  • shadcn/ui: Beautiful UI components
  • Lucide React: Icon library
  • Canvas LMS: Learning management system integration

πŸ“ž Support

For Students

  • Use Canvas discussion forums for course questions
  • Check the Setup Guide for technical issues
  • Contact course instructors via Canvas messaging

For Instructors

Contact Information


πŸš€ Quick Links

Happy Learning! πŸŽ“

πŸ—‚οΈ Module Page Standard

Each module page (/module/[id]) follows this structure in order:

  1. Lecture Video – Embedded YouTube iframe inside a responsive 16:9 container (padding-bottom: 56.25%) and wrapped in max-w-4xl mx-auto. A right-aligned button in the header links to "Lecture Notes & HW Notebook" (GitHub).
  2. Resources & Homework Card – placed directly under the video and contains:
    • A short paragraph with the recommended reading from Dive into Deep Learning (D2L), e.g. "read up to Β§ 5.2".
    • A second paragraph describing the homework notebook. (No buttons hereβ€”the Notes & Notebook button is next to the lecture title, and Gradescope lives in the top navbar.)

That's itβ€”no separate "Lecture Notes" or "Homework" sections. The page remains minimal: video ➜ single card.

Notebook Repository Layout

notebooks/ (kept only if you want rendered copies)  
# Active development happens in the separate repo:
https://github.com/Shakeri-Lab/dl-course

In each module folder of that repo you keep:

  • notes.pdf or notes.ipynb
  • homework.ipynb

Creating a New Module

  1. Duplicate app/module/1/page.tsx ➜ app/module/2/page.tsx (etc.).
  2. Change: β€’ YouTube src and title β€’ D2L reading range β€’ Button links.
  3. Add the new materials under https://github.com/Shakeri-Lab/dl-course/tree/main/module-X.

About

Deep Learning Mastery - Course Website

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages