Agentero
Connect your own Agent, keep research context in a local Vault. Seamlessly migrate from Zotero, read, understand, link, and reuse your research context.
AI translation
Professional MARP presentation system with Edera V2 theme, Docker support, and Cloud Run deployment
ProductivityJavaScript · CSSGitHub @denhamparryOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Professional presentations built with MARP and the Edera V2 theme
A modern presentation system for creating beautiful slide decks using Markdown. Built with MARP and featuring the professional Edera V2 theme, this project makes it easy to create, version control, and deploy presentations.
Live Presentations: talks.denhamparry.co.uk
Clone the repository
git clone https://github.com/denhamparry/talks.git
cd talks
Install dependencies
npm install
Copy a template
cp templates/basic-presentation.md slides/my-first-talk.md
Edit your slides
Open slides/my-first-talk.md in your editor and customize the content
Build and preview
# Option 1: Quick preview (MARP file browser)
npm run serve
# Visit http://localhost:8080
# Option 2: Full site preview with themed index (like production)
npm run serve:dist
# Visit http://localhost:8080
# Or build HTML/PDF
npm run build
npm run build:pdf
That's it! Your presentation is ready at dist/my-first-talk.html and dist/my-first-talk.pdf.
Note: npm run serve shows MARP's file browser, while npm run serve:dist shows the complete site with the Edera V2 themed landing page (same as production).
Prefer containers? Use Docker instead:
# Development server (MARP file browser)
make docker-dev
# Visit http://localhost:8080
# Production server (themed index page)
make docker-prod
# Visit http://localhost:8081
# Or build production image only
make docker-build
Note: The dev service shows MARP's file browser. To see the Edera V2 themed landing page (like production), use make docker-prod.
Cloud-Native Manchester | December 4th, 2025
Building GenAI applications with Kubernetes and AI-assisted development workflows.
See templates/layouts/ for examples of all 6 available slide layouts:
This repository includes a Makefile for convenient command-line operations.
make help
# Install dependencies
make install
# Build presentations (HTML + PDF)
make build
# Build HTML only
make build-html
# Build PDF only
make build-pdf
# Development mode with auto-rebuild
make watch
# Serve with MARP dev server (file browser)
make serve
# Serve complete site with themed index (production-like)
make serve-dist
# Run pre-commit hooks
make precommit
# Clean build artifacts
make clean
# Run linting
make lint
# Format files
make format
# Run all pre-commit hooks
make precommit
# Run smoke tests to verify build output
make test-smoke
# Run complete CI workflow (install + build)
make ci
Alternative: You can still use npm scripts directly:
npm run build # Build HTML
npm run build:pdf # Build PDF
npm run watch # Watch mode
npm run serve # MARP dev server (file browser)
npm run serve:dist # Build and serve complete site with themed index
npm run test:smoke # Run smoke tests to verify build output
This repository includes full Docker support for containerized development and deployment.
There are two Docker services available:
Development Service (MARP File Browser)
make docker-dev
# or
docker-compose up dev
# Visit http://localhost:8080
Production Service (Themed Index Page)
make docker-prod
# or
docker-compose --profile production up prod
# Visit http://localhost:8081 (note: different port!)
# Development mode (file browser, port 8080)
docker-compose up dev
# Production mode (themed index, port 8081)
docker-compose --profile production up prod
Important: The production service requires the --profile production flag and runs on port 8081.
# Build production image
make docker-build
# Or using docker directly
docker build --target production -t talks:latest .
Presentations are automatically deployed to Google Cloud Run when changes are pushed to the main branch.
How it works:
main branchghcr.io/denhamparry/talks:latesttalks.denhamparry.co.ukManual deployment:
# Deploy latest image to Cloud Run
gcloud run deploy talks \
--image=ghcr.io/denhamparry/talks:latest \
--region=europe-west1 \
--project=denhamparry-talks
See Deployment Guide for complete setup instructions, including:
Container images are automatically published to GHCR on every main branch push:
# Pull latest image
docker pull ghcr.io/denhamparry/talks:latest
# Run locally
docker run -p 8080:8080 -e PORT=8080 ghcr.io/denhamparry/talks:latest
Want to share your talks? We welcome slide contributions!
No MARP knowledge required - use our simple template:
# Get the contributor template
cp templates/contributor-template.md slides/your-talk-name.md
# Fill in your content (the template has inline instructions)
# Submit a pull request
Features:
See: Slide Contribution Guide for complete instructions.
Example: Check out slides/example-contribution.md for a complete working example!
Want to improve the presentation system itself?
git checkout -b feature/amazing-feature)make ci)See CONTRIBUTING.md for detailed guidelines.
These secrets are configured for the main repository and required for full CI/CD functionality:
GCP_WORKLOAD_IDENTITY_PROVIDER - Google Cloud Workload Identity Provider
.github/workflows/cloudrun-deploy.ymlprojects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_IDdocs/deployment-guide.mdGCP_SERVICE_ACCOUNT - Google Cloud Service Account
.github/workflows/cloudrun-deploy.ymlSERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comdocs/deployment-guide.mdCLAUDE_CODE_OAUTH_TOKEN - Claude Code OAuth Token
.github/workflows/claude.yml/install-github-app in Claude CodeGITHUB_TOKEN - Automatically provided by GitHub Actions (no setup needed)If you fork this repository:
build-slides.yml, ci.yml, docker-publish.ymlTo test your fork:
# Clone your fork
git clone https://github.com/your-username/talks.git
cd talks
# Run full CI locally
make ci
# Build Docker image
make docker-build
# All workflows will run on PRs except deployment
Maintainers can verify secrets are configured:
# Using gh CLI
gh secret list
# Expected output:
# CLAUDE_CODE_OAUTH_TOKEN Updated YYYY-MM-DD
# GCP_SERVICE_ACCOUNT Updated YYYY-MM-DD
# GCP_WORKLOAD_IDENTITY_PROVIDER Updated YYYY-MM-DD
Check the status badges at the top of this README or visit the Actions tab to see workflow runs.
After pushing to main:
Total time: 7-11 minutes from push to live deployment
Check deployment:
# Using curl
curl https://talks.denhamparry.co.uk/health
# Using gh CLI
gh workflow view cloudrun-deploy.yml
# Using gcloud
gcloud run services describe talks \
--region=europe-west1 \
--format='value(status.url)'
If you see 404 errors for edera-logo.png or favicon.ico:
Cause: Static assets not copied during build
Solution:
# Rebuild with asset copying
npm run clean
npm run build
# Verify assets exist
ls dist/assets/ederav2/edera-logo.png
ls dist/favicon.ico
Cause: ImageMagick not installed
Solution:
# macOS
brew install imagemagick
# Ubuntu/Debian
sudo apt-get install imagemagick
# Alpine (Docker)
apk add imagemagick
The build will continue without favicon if ImageMagick is unavailable (non-blocking).
If workflows fail, see:
docs/troubleshooting-cicd.mddocs/deployment-guide.mddocs/repository-settings.mdMIT License - see LICENSE file for details.
Copyright (c) 2025 Lewis Denham-Parry
For questions or issues:
Version: 1.0.0 (preparing for public release) Last Updated: 2025-12-03 Maintainer: Lewis Denham-Parry
Built with ❤️ using MARP and the Edera V2 theme.