Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.