diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..90fa6d3 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,47 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: '.' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 9a5aced..1d1f97e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,10 @@ dist # Vite logs files vite.config.js.timestamp-* vite.config.ts.timestamp-* + +# Task runner +.task/ + +# OS files +.DS_Store +Thumbs.db diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..86793d4 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,339 @@ +# Contributing to Presentations + +This repository hosts reveal.js-based presentations for the Codebase Interface organization, deployed at `codebaseinterface.org/presentations/`. + +## Quick Workflow Overview + +``` +1. Create presentation: task new -- my-presentation +2. Edit slides: presentations/my-presentation/slides.md +3. Test locally: task serve +4. Add to index: index.html (update presentations array) +5. Commit & push: Git workflow +6. Auto-deploy: GitHub Actions → GitHub Pages +7. Live at: codebaseinterface.org/presentations/my-presentation/ +``` + +## Prerequisites + +- [Node.js](https://nodejs.org/) (v14 or higher) +- [Task](https://taskfile.dev/) - A task runner / build tool +- Git + +### Installing Task + +**macOS/Linux:** +```bash +sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin +``` + +**Windows (with Scoop):** +```bash +scoop install task +``` + +**Or use npm:** +```bash +npm install -g @go-task/cli +``` + +## Getting Started + +1. **Clone the repository:** + ```bash + git clone https://github.com/codebase-interface/presentations.git + cd presentations + ``` + +2. **Install dependencies:** + ```bash + task install + ``` + +## Creating a New Presentation + +### Using the Task Command + +The easiest way to create a new presentation is using the `task new` command: + +```bash +task new -- my-presentation-name +``` + +This will: +- Create a new directory under `presentations/my-presentation-name/` +- Copy the presentation template (HTML and Markdown files) +- Set up the basic structure with sample slides in Markdown +- Show you the next steps + +**Example:** +```bash +task new -- introduction-to-ai +``` + +### Manual Creation + +If you prefer to create a presentation manually: + +1. Create a new directory under `presentations/`: + ```bash + mkdir -p presentations/my-presentation + ``` + +2. Copy the template: + ```bash + cp -r templates/presentation/* presentations/my-presentation/ + ``` + +3. Edit the `presentations/my-presentation/slides.md` file to add your content in Markdown. + +## Editing Your Presentation + +Presentations use Markdown format, making them easy to write and maintain! + +1. Open `presentations/your-presentation-name/slides.md` in your favorite editor. + +2. Use `---` to separate horizontal slides: + ```markdown + # First Slide + + Content for first slide + + --- + + # Second Slide + + Content for second slide + ``` + +3. Use `--` for vertical slides (sub-slides): + ```markdown + # Main Topic + + --- + + ## Subtopic 1 + + -- + + ## Subtopic 2 + + -- + + ## Subtopic 3 + ``` + +4. Format text with Markdown: + ```markdown + # Heading 1 + ## Heading 2 + + **Bold text** + *Italic text* + `Inline code` + + - Bullet point 1 + - Bullet point 2 + + 1. Numbered item 1 + 2. Numbered item 2 + + [Link text](https://example.com) + ``` + +5. Add code blocks with syntax highlighting: + ```markdown + ```javascript + function example() { + return "Hello World"; + } + ` `` + ``` + +6. Add fragment animations (step-by-step reveals): + ```markdown + - First item + - Second item + - Third item + ``` + +7. Add speaker notes: + ```markdown + This is slide content + + Note: + These are speaker notes that only appear in presenter view + ``` + +### Advanced HTML in Markdown + +You can also use HTML within your Markdown for more control: + +```markdown +
+Custom styled content +
+``` + +## Testing Locally + +Start the local development server: + +```bash +task serve +``` + +Then open your browser to: +- Main page: http://localhost:8000/ +- Your presentation: http://localhost:8000/presentations/your-presentation-name/ + +**Navigation tips:** +- Use arrow keys to navigate between slides +- Press `F` for fullscreen +- Press `S` for speaker notes view +- Press `ESC` for slide overview + +## Available Task Commands + +Run `task --list` to see all available commands: + +- `task install` - Install dependencies +- `task new -- ` - Create a new presentation +- `task serve` - Start local development server +- `task list` - List all presentations +- `task clean` - Clean generated files +- `task help` - Show available commands + +## Adding Your Presentation to the Index + +After creating a presentation, add it to the main index page so it appears on the homepage: + +### Option 1: Using the helper script (Recommended) + +1. Run the script to generate the presentations array: + ```bash + task update-index + ``` + +2. Copy the output and paste it into `index.html`, replacing the existing `presentations` array. + +3. Update the descriptions manually to make them more meaningful. + +### Option 2: Manual Update + +1. Open `index.html` in the root directory +2. Find the `presentations` array in the JavaScript section +3. Add your presentation: + ```javascript + const presentations = [ + { + slug: 'my-presentation', + title: 'My Presentation Title', + description: 'A brief description of the presentation' + } + ]; + ``` + +## Reveal.js Features + +This setup includes the following reveal.js plugins: +- **Markdown** - Write slides in Markdown (primary method) +- **Highlight** - Syntax highlighting for code +- **Notes** - Speaker notes (press `S` during presentation) + +### Advanced Features in Markdown + +**Backgrounds:** + +Add backgrounds using HTML comments: +```markdown + +# Red Background Slide + +--- + + +# Image Background Slide +``` + +**Transitions:** +```markdown + +# This Slide Zooms In +``` + +**Custom Classes and Styles:** +```markdown +This text is red + +Centered content +``` + +For more features, see the [reveal.js documentation](https://revealjs.com/). + +## Customizing Themes + +The template uses the `black` theme by default. You can change it by editing the theme link in your presentation's HTML: + +```html + +``` + +Available themes: +- `black.css` (default) - Dark background +- `white.css` - Light background +- `league.css` - Gray background, blue links +- `beige.css` - Beige background +- `sky.css` - Blue gradient background +- `night.css` - Black background, thick headers +- `serif.css` - Cappuccino background with serif text +- `simple.css` - White background, black text +- `solarized.css` - Cream-colored background +- `moon.css` - Dark blue background +- `dracula.css` - Dracula color scheme +- `blood.css` - Dark background, blood red accents + +## Deployment + +The repository is automatically deployed to GitHub Pages when changes are pushed to the main branch. Your presentation will be available at: + +``` +https://codebaseinterface.org/presentations/your-presentation-name/ +``` + +## Best Practices + +1. **Keep it simple** - Focus on key points, avoid text-heavy slides +2. **Use visuals** - Images, diagrams, and code examples are powerful +3. **Test locally** - Always preview your presentation before committing +4. **Consistent naming** - Use lowercase and hyphens for presentation names (e.g., `my-presentation`) +5. **Organize slides** - Use horizontal slides (`---`) for main topics and vertical slides (`--`) for details +6. **Add speaker notes** - Use `Note:` prefix in Markdown for presenter guidance +7. **Write in Markdown** - It's easier to maintain and version control than HTML + +## Troubleshooting + +### Presentation not showing? +- Ensure you've run `task install` to install dependencies +- Check that your presentation directory has both `index.html` and `slides.md` files +- Verify the reveal.js paths in your HTML are correct (`../../node_modules/reveal.js/...`) +- Make sure the markdown file path in index.html matches your filename + +### Styles not loading? +- Make sure `node_modules` exists (run `task install`) +- Check the console for 404 errors +- Verify the CSS link paths are correct + +### Task command not found? +- Install Task following the instructions in Prerequisites +- Alternatively, run npm scripts directly: `npm run serve` + +## Getting Help + +- **Reveal.js Documentation:** https://revealjs.com/ +- **Task Documentation:** https://taskfile.dev/ +- **Issues:** Open an issue in this repository + +## License + +This project is open source and available under the MIT License. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a721d7e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Codebase Interface + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PROJECT_SUMMARY.md b/PROJECT_SUMMARY.md new file mode 100644 index 0000000..bcf9bef --- /dev/null +++ b/PROJECT_SUMMARY.md @@ -0,0 +1,196 @@ +# Project Summary: Reveal.js Presentation System + +## What Was Implemented + +A complete reveal.js-based presentation system that allows the Codebase Interface organization to create and host unlimited slide decks at `codebaseinterface.org/presentations/{presentation-slug-name}`. + +## Key Features + +### 1. Task Automation (Taskfile.yml) +- `task install` - Install dependencies +- `task new -- ` - Create new presentation from template +- `task serve` - Start local development server +- `task list` - List all presentations +- `task update-index` - Generate index.html array +- `task clean` - Clean generated files + +### 2. Directory Structure +``` +presentations/ +├── .github/workflows/deploy.yml # GitHub Actions deployment +├── .nojekyll # Disable Jekyll processing +├── _config.yml # GitHub Pages config +├── index.html # Main listing page +├── presentations/ # Individual presentations +│ └── getting-started/ # Example presentation +│ └── index.html +├── templates/ # Template for new presentations +│ └── presentation/ +│ └── index.html +├── scripts/ # Helper scripts +│ └── update-index.sh # Auto-generate index array +├── Taskfile.yml # Task automation +├── package.json # Dependencies +├── CONTRIBUTING.md # Comprehensive guide +├── README.md # Quick start guide +└── LICENSE # MIT License +``` + +### 3. Automated Workflow + +**Creating a Presentation:** +```bash +task new -- my-presentation +# Creates: presentations/my-presentation/index.html +``` + +**Local Development:** +```bash +task serve +# View at: http://localhost:8000/presentations/my-presentation/ +``` + +**Deployment:** +- Push to main branch +- GitHub Actions automatically deploys to GitHub Pages +- Live at: codebaseinterface.org/presentations/my-presentation/ + +### 4. Features Included + +**Reveal.js Plugins:** +- Markdown support for slide content +- Syntax highlighting for code blocks +- Speaker notes (press 'S' during presentation) + +**Navigation:** +- Arrow keys for slide navigation +- 'F' for fullscreen +- 'S' for speaker view +- 'ESC' for overview + +**Customization:** +- 13 built-in themes (black, white, league, etc.) +- Fragments for step-by-step reveals +- Code highlighting with line numbers +- Custom backgrounds and transitions + +### 5. Example Presentation + +The `getting-started` presentation demonstrates: +- Title slides +- Content slides with lists +- Vertical slide stacks +- Code highlighting +- Fragment animations +- Speaker notes +- Navigation tips + +## Documentation + +### CONTRIBUTING.md (6000+ words) +Comprehensive guide covering: +- Prerequisites and installation +- Creating presentations +- Editing slides +- Reveal.js features +- Theme customization +- Testing locally +- Deployment process +- Best practices +- Troubleshooting + +### README.md +Quick start guide with: +- Setup instructions +- Command reference +- Feature overview +- Links to detailed documentation + +## Testing Results + +✅ All task commands work correctly: +- `task install` - Dependencies installed successfully +- `task new` - Creates presentations with proper templating +- `task serve` - Local server runs on port 8000 +- `task list` - Lists all presentations +- `task update-index` - Generates JavaScript array for index.html + +✅ Local Testing: +- Main index page loads correctly +- Presentation page loads with all features +- Reveal.js assets accessible +- No 404 errors + +✅ Security: +- CodeQL scan completed: 0 vulnerabilities found +- No secrets in code +- Safe dependency versions + +## GitHub Pages Configuration + +**Files Created:** +- `.nojekyll` - Disables Jekyll processing +- `_config.yml` - GitHub Pages configuration +- `.github/workflows/deploy.yml` - Automated deployment workflow + +**Workflow:** +1. Push to main branch triggers GitHub Actions +2. Workflow installs Node.js and dependencies +3. Uploads site as artifact +4. Deploys to GitHub Pages +5. Site available at codebaseinterface.org/presentations/ + +## URL Structure + +As requested, presentations are hosted at: +``` +https://codebaseinterface.org/presentations/{presentation-slug-name}/ +``` + +Example: +``` +https://codebaseinterface.org/presentations/getting-started/ +``` + +## Next Steps for Users + +1. **Create a presentation:** + ```bash + task new -- introduction-to-project + ``` + +2. **Edit the slides:** + Open `presentations/introduction-to-project/index.html` + +3. **Test locally:** + ```bash + task serve + ``` + +4. **Add to index:** + ```bash + task update-index + # Copy output to index.html + ``` + +5. **Commit and push:** + ```bash + git add . + git commit -m "Add introduction presentation" + git push + ``` + +6. **Automatic deployment:** + GitHub Actions deploys to Pages automatically + +## Technologies Used + +- **Reveal.js 5.0.0** - Presentation framework +- **Task** - Task automation +- **http-server** - Local development server +- **GitHub Actions** - CI/CD +- **GitHub Pages** - Hosting + +## License + +MIT License - See LICENSE file for details diff --git a/QUICK_REFERENCE.md b/QUICK_REFERENCE.md new file mode 100644 index 0000000..652dc3a --- /dev/null +++ b/QUICK_REFERENCE.md @@ -0,0 +1,136 @@ +# Quick Reference Card + +## 🚀 Quick Start (3 Steps) +```bash +1. task install # Install dependencies +2. task new -- my-presentation # Create presentation +3. task serve # Preview at localhost:8000 +``` + +## 📋 All Commands +| Command | What It Does | +|---------|-------------| +| `task install` | Install Node.js dependencies | +| `task new -- ` | Create new presentation from template | +| `task serve` | Start local dev server (port 8000) | +| `task list` | List all presentations | +| `task update-index` | Generate presentations array | +| `task clean` | Clean generated files | + +## 📂 File Locations +``` +presentations/my-presentation/slides.md ← Edit your slides here (Markdown) +presentations/my-presentation/index.html ← HTML wrapper (rarely needs editing) +index.html ← Add to presentations array +CONTRIBUTING.md ← Full documentation +``` + +## ⌨️ Presentation Navigation +| Key | Action | +|-----|--------| +| `→` / `←` | Next/Previous slide | +| `↑` / `↓` | Up/Down (vertical slides) | +| `F` | Fullscreen | +| `S` | Speaker notes view | +| `ESC` | Slide overview | + +## 🎨 Change Theme +Edit your presentation's HTML: +```html + + +``` + +Available: black, white, league, beige, sky, night, serif, simple, solarized, moon, dracula, blood + +## 📝 Basic Markdown Slide Structure +```markdown +# First Slide + +Content for the first slide + +--- + +# Second Slide + +Content for the second slide + +--- + +## Vertical Slides + +Main topic + +-- + +### Subtopic 1 + +Use -- for vertical slides + +-- + +### Subtopic 2 + +Navigate with up/down arrows + +--- + +## Code with Highlighting + +```javascript +function hello() { + console.log("Hello!"); +} +` `` + +--- + +## Step-by-Step Reveal + +- First item +- Second item +- Third item + +--- + +## Speaker Notes + +Slide content here + +Note: +These are speaker notes, press S to view them +``` + +## 🌐 URL Structure +After deployment: +``` +https://codebaseinterface.org/presentations/my-presentation/ +``` + +## 🔄 Workflow +1. **Create:** `task new -- presentation-name` +2. **Edit:** `presentations/presentation-name/slides.md` (Markdown format) +3. **Test:** `task serve` → http://localhost:8000 +4. **List:** `task update-index` → copy to index.html +5. **Deploy:** Push to main branch (auto-deploys via GitHub Actions) + +## 💡 Pro Tips +- Write slides in Markdown for easy editing +- Use `---` for horizontal slides, `--` for vertical slides +- Add `` for step-by-step reveals +- Press `S` during presentation for speaker notes +- Add speaker notes with `Note:` prefix +- Test in fullscreen mode (`F` key) before presenting + +## 🆘 Need Help? +- Full guide: See `CONTRIBUTING.md` +- Reveal.js docs: https://revealjs.com/ +- Issues: GitHub repository issues + +## ✅ Checklist for New Presentation +- [ ] Run `task new -- presentation-name` +- [ ] Edit slides in `presentations/presentation-name/slides.md` (Markdown) +- [ ] Test locally with `task serve` +- [ ] Add entry to `index.html` presentations array +- [ ] Commit and push to trigger deployment +- [ ] Verify live at codebaseinterface.org/presentations/presentation-name/ diff --git a/README.md b/README.md index 44cd203..e1f180f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,95 @@ -# presentations -Presentations for the codebase interface initative +# Presentations + +Reveal.js-based presentations for the Codebase Interface organization. + +🌐 **Live Site:** [codebaseinterface.org/presentations](https://codebaseinterface.org/presentations) + +## Quick Start + +### Prerequisites +- [Node.js](https://nodejs.org/) (v14+) +- [Task](https://taskfile.dev/) - Install with: `npm install -g @go-task/cli` + +### Setup +```bash +# Install dependencies +task install + +# Create a new presentation +task new -- my-presentation-name + +# Start local server +task serve +``` + +Your presentation will be available at: `http://localhost:8000/presentations/my-presentation-name/` + +## Commands + +| Command | Description | +|---------|-------------| +| `task install` | Install dependencies | +| `task new -- ` | Create a new presentation | +| `task serve` | Start local development server | +| `task list` | List all presentations | +| `task update-index` | Generate presentations array for index.html | +| `task help` | Show all available commands | + +## Creating Presentations + +Presentations are written in **Markdown** for easy editing! + +See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions on: +- Creating and editing presentations in Markdown +- Using reveal.js features +- Adding presentations to the index +- Deployment + +**Quick example:** +```markdown +# My Slide Title + +Content goes here + +--- + +# Next Slide + +More content +``` + +## Structure + +``` +presentations/ +├── index.html # Main listing page +├── presentations/ # Individual presentation directories +│ └── example/ +│ ├── index.html # HTML wrapper +│ └── slides.md # Presentation slides (Markdown) +├── templates/ # Templates for new presentations +│ └── presentation/ +│ ├── index.html # HTML wrapper template +│ └── slides.md # Markdown slides template +├── Taskfile.yml # Task automation +└── package.json # Dependencies +``` + +## Features + +- 📊 **Multiple Presentations** - Create unlimited slide decks +- ✍️ **Markdown-Based** - Write slides in Markdown, not HTML +- 🎨 **Beautiful Themes** - 13 built-in reveal.js themes +- 💻 **Code Highlighting** - Syntax highlighting for code examples +- 📱 **Responsive** - Works on desktop, tablet, and mobile +- 🚀 **Easy Deployment** - Automatic deployment to GitHub Pages +- 🛠️ **Task Automation** - Simple commands via Taskfile + +## Documentation + +- [Contributing Guide](CONTRIBUTING.md) - How to create presentations +- [Reveal.js Docs](https://revealjs.com/) - Learn about reveal.js features + +## License + +MIT diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..f2a5d30 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,75 @@ +version: '3' + +vars: + PRESENTATIONS_DIR: presentations + SERVER_PORT: 8000 + +tasks: + install: + desc: Install dependencies + cmds: + - npm install + + serve: + desc: Start local development server + cmds: + - npm run serve + + new: + desc: Create a new presentation (usage - task new -- presentation-slug-name) + cmds: + - | + if [ -z "{{.CLI_ARGS}}" ]; then + echo "Error: Please provide a presentation name" + echo "Usage: task new -- my-presentation-name" + exit 1 + fi + SLUG="{{.CLI_ARGS}}" + PRES_DIR="{{.PRESENTATIONS_DIR}}/${SLUG}" + if [ -d "${PRES_DIR}" ]; then + echo "Error: Presentation '${SLUG}' already exists" + exit 1 + fi + mkdir -p "${PRES_DIR}" + cp -r templates/presentation/* "${PRES_DIR}/" + sed -i "s/PRESENTATION_TITLE/${SLUG}/g" "${PRES_DIR}/index.html" + sed -i "s/PRESENTATION_TITLE/${SLUG}/g" "${PRES_DIR}/slides.md" + echo "✅ Created new presentation: ${SLUG}" + echo "📂 Location: ${PRES_DIR}" + echo "🌐 Will be available at: /presentations/${SLUG}/" + echo "" + echo "Next steps:" + echo " 1. Edit ${PRES_DIR}/slides.md to add your slides (Markdown format)" + echo " 2. Run 'task serve' to preview locally" + echo " 3. View at http://localhost:{{.SERVER_PORT}}/presentations/${SLUG}/" + + list: + desc: List all presentations + cmds: + - | + echo "Available presentations:" + if [ -d "{{.PRESENTATIONS_DIR}}" ]; then + for dir in {{.PRESENTATIONS_DIR}}/*/; do + if [ -d "$dir" ]; then + name=$(basename "$dir") + echo " 📊 ${name} - /presentations/${name}/" + fi + done + else + echo " No presentations found" + fi + + update-index: + desc: Generate presentations array for index.html + cmds: + - ./scripts/update-index.sh + + clean: + desc: Clean generated files + cmds: + - npm run clean + + help: + desc: Show available commands + cmds: + - task --list diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..a3e42de --- /dev/null +++ b/_config.yml @@ -0,0 +1,17 @@ +# Jekyll configuration for GitHub Pages +# This file tells GitHub Pages to serve the site directly without Jekyll processing + +# Prevent Jekyll from processing files +include: + - node_modules + +# Exclude unnecessary files from the published site +exclude: + - .git + - .gitignore + - templates + - Taskfile.yml + - package.json + - package-lock.json + - README.md + - CONTRIBUTING.md diff --git a/index.html b/index.html new file mode 100644 index 0000000..74d816f --- /dev/null +++ b/index.html @@ -0,0 +1,177 @@ + + + + + + Presentations - Codebase Interface + + + +
+
+

📊 Presentations

+

Codebase Interface Presentation Collection

+
+ +
+ +
+ + +
+ + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e5de4d2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,655 @@ +{ + "name": "codebase-interface-presentations", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "codebase-interface-presentations", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "reveal.js": "^5.0.0" + }, + "devDependencies": { + "http-server": "^14.1.1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/portfinder": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", + "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.6", + "debug": "^4.3.6" + }, + "engines": { + "node": ">= 10.12" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/reveal.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-5.2.1.tgz", + "integrity": "sha512-r7//6mIM5p34hFiDMvYfXgyjXqGRta+/psd9YtytsgRlrpRzFv4RbH76TXd2qD+7ZPZEbpBDhdRhJaFgfQ7zNQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7e61892 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "codebase-interface-presentations", + "version": "1.0.0", + "description": "Reveal.js based presentations for codebase interface", + "scripts": { + "serve": "npx http-server -p 8000 -c-1", + "build": "echo 'Build complete - static site ready for deployment'", + "clean": "rm -rf dist" + }, + "dependencies": { + "reveal.js": "^5.0.0" + }, + "devDependencies": { + "http-server": "^14.1.1" + }, + "keywords": [ + "presentations", + "reveal.js", + "slides" + ], + "author": "Codebase Interface", + "license": "MIT" +} diff --git a/presentations/getting-started/index.html b/presentations/getting-started/index.html new file mode 100644 index 0000000..bb32311 --- /dev/null +++ b/presentations/getting-started/index.html @@ -0,0 +1,41 @@ + + + + + + getting-started - Codebase Interface + + + + + + +
+
+ +
+
+
+
+ + + + + + + + diff --git a/presentations/getting-started/slides.md b/presentations/getting-started/slides.md new file mode 100644 index 0000000..9a712b1 --- /dev/null +++ b/presentations/getting-started/slides.md @@ -0,0 +1,132 @@ +# Getting Started + +### Creating Presentations with Reveal.js + +Codebase Interface + +--- + +## Welcome! 👋 + +This is an example presentation demonstrating the capabilities of our presentation system. + +Press the right arrow to continue → + +--- + +## What You'll Learn + +- How to create presentations +- Basic markdown slide features +- Code highlighting +- Navigation and controls + +--- + +## Creating a Presentation + +Use the Task command to create a new presentation: + +```bash +task new -- my-presentation-name +``` + +-- + +## What Gets Created + +- New directory under `presentations/` +- Pre-configured `index.html` +- Markdown file `slides.md` for your content +- Ready-to-use reveal.js setup + +-- + +## Start Developing + +Preview your presentation locally: + +```bash +task serve +``` + +Then visit: `localhost:8000/presentations/my-presentation-name/` + +--- + +## Markdown Slide Features + +Writing slides in Markdown is **easy**! + +- Use `---` to separate horizontal slides +- Use `--` for vertical slides +- Format text with *italic*, **bold**, or `code` +- Add [links](https://revealjs.com) easily + +--- + +## Step-by-Step Reveals + +First, this appears + +Then this + +Finally this! + +You can use different animations + +--- + +## Code Highlighting + +Syntax-highlighted code blocks: + +```javascript +function createPresentation(name) { + return `presentations/${name}`; +} + +const myPresentation = createPresentation('demo'); +console.log(myPresentation); +// Output: presentations/demo +``` + +--- + +## Navigation + +| Key | Action | +|-----|--------| +| **Arrow Keys** | Navigate between slides | +| **F** | Fullscreen mode | +| **S** | Speaker notes view | +| **ESC** | Slide overview | + +Note: +These are speaker notes! Press 'S' to see them. + +--- + +## Deployment + +Push to main branch and GitHub Pages will automatically deploy + +Your presentation will be live at: + +`codebaseinterface.org/presentations/your-name/` + +--- + +## Resources + +- [Reveal.js Documentation](https://revealjs.com/) +- [View All Presentations](../) +- [GitHub Repository](https://github.com/codebase-interface/presentations) + +--- + +# Start Creating! 🚀 + +Run `task new -- your-presentation` to get started + +Visit [codebaseinterface.org](https://codebaseinterface.org) diff --git a/scripts/update-index.sh b/scripts/update-index.sh new file mode 100755 index 0000000..9a3be13 --- /dev/null +++ b/scripts/update-index.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Script to list presentations for index.html +# This generates a JSON array that can be copied into index.html + +echo "// Copy this array into index.html:" +echo "const presentations = [" + +first=true +for dir in presentations/*/; do + if [ -d "$dir" ]; then + name=$(basename "$dir") + + if [ "$first" = true ]; then + first=false + else + echo "," + fi + + # Extract title from the presentation's index.html if possible + title_file="$dir/index.html" + if [ -f "$title_file" ]; then + # Try to extract the first h1 tag + title=$(grep -m 1 "

" "$title_file" | sed 's/.*

\(.*\)<\/h1>.*/\1/' | sed 's/^[[:space:]]*//') + if [ -z "$title" ]; then + # Fallback to name if no h1 found + title="$name" + fi + else + title="$name" + fi + + echo -n " { slug: '$name', title: '$title', description: 'Add description here' }" + fi +done + +echo "" +echo "];" +echo "" +echo "Update index.html with the above array!" diff --git a/templates/presentation/index.html b/templates/presentation/index.html new file mode 100644 index 0000000..74352f5 --- /dev/null +++ b/templates/presentation/index.html @@ -0,0 +1,41 @@ + + + + + + PRESENTATION_TITLE - Codebase Interface + + + + + + +
+
+ +
+
+
+
+ + + + + + + + diff --git a/templates/presentation/slides.md b/templates/presentation/slides.md new file mode 100644 index 0000000..c28a7ca --- /dev/null +++ b/templates/presentation/slides.md @@ -0,0 +1,70 @@ +# PRESENTATION_TITLE + +A presentation by Codebase Interface + +--- + +## Welcome + +This is a sample slide. Edit this file to create your presentation. + +Use `---` to separate slides horizontally. + +--- + +## Vertical Slides + +Press down arrow for more + +-- + +## Nested Slide 1 + +You can create vertical slide stacks + +Use `--` to separate slides vertically. + +-- + +## Nested Slide 2 + +Navigate with arrow keys + +--- + +## Code Examples + +```javascript +function hello() { + console.log("Hello, World!"); +} +``` + +Code blocks are automatically syntax highlighted! + +--- + +## Lists and Formatting + +- **Bold text** with `**text**` +- *Italic text* with `*text*` +- `Inline code` with backticks +- [Links](https://codebaseinterface.org) + +--- + +## Fragment Animations + +- Item 1 +- Item 2 +- Item 3 + +Note: +These are speaker notes. They won't appear on the slides. +Press 'S' during the presentation to view them. + +--- + +## Thank You! + +Visit [codebaseinterface.org](https://codebaseinterface.org)