A markdown presentation tool that supports SQL queries, Mermaid diagrams, dynamic slide creation, and interactive audience polling.
- Default Markdown View: Start with a clean, readable markdown format
- Slide View: Switch to presentation mode with a "Play Slides" button
- Seamless toggle between views
- Click on SQL queries to execute them
- Automatically creates new slides with query results
- Inherits headers from source slides
- Prevents multiple loads from the same query
- Shows loading states and execution timers
- Tables: Automatic table generation for query results
- Charts: Plotly integration for x/y data visualization
- Real-time: Live query execution with progress indicators
- Support for flowcharts, sequence diagrams, and more
- Click to zoom functionality
- Export to SVG
- Error handling with source code display
- Real-time voting: Audience can vote on questions during presentations
- Live results: Dynamic progress bars showing vote distribution
- TimescaleDB integration: Time-series storage for poll events
- Session tracking: Unique audience member identification
- Responsive design: Works on mobile and desktop devices
- Language detection for code blocks
- Syntax highlighting for multiple languages
- Responsive design for mobile devices
- Toast notifications for user feedback
gem install md-showmd-show your-presentation.mdmd-show your-presentation.md "postgresql://user:password@localhost/dbname"Or set the PG_URI environment variable:
export PG_URI="postgresql://user:password@localhost/dbname"
md-show your-presentation.mdClick on SQL code blocks to execute them:
SELECT 1 as id, 'Test' as name, 42 as value;Queries with x and y columns automatically create charts:
SELECT 1 as x, 10 as y
UNION ALL
SELECT 2 as x, 20 as y;graph TD
A[Start] --> B{Is it working?}
B -->|Yes| C[Great!]
B -->|No| D[Debug]
C --> E[End]
D --> E
Create audience polls using simple markdown syntax:
What's your favorite database?
* PostgreSQL
* MySQL
* MongoDB
* RedisThe system automatically converts these into interactive voting buttons with real-time results.
- Clean, readable format
- Perfect for editing and reviewing content
- All interactive features work
- Full-screen presentation mode
- Keyboard navigation
- Dynamic slide creation
- Professional presentation experience
When you click on a SQL query:
- Loading State: Query shows processing indicator
- Execution: Query runs against your database
- Slide Creation: New slide is added after the source slide
- Navigation: Automatically moves to the new slide
- Results: Displays results with inherited headers
- β Prevents multiple loads from same query
- β Inherits headers from source slides
- β Supports both tables and charts
- β Shows execution time
- β Toast notifications
- β Error handling
Use simple markdown syntax to create interactive polls:
Question to the audience?
* Answer A
* Answer B
* Answer C- Real-time voting: Audience clicks buttons to vote
- Live results: Progress bars update automatically
- Session tracking: Each audience member gets a unique session ID
- TimescaleDB storage: All votes stored in time-series hypertable
- Mobile responsive: Works on all devices
Results are displayed with:
- Progress bars: Visual representation of vote distribution
- Percentages: Exact vote percentages
- Vote counts: Total votes per option
- Real-time updates: Results refresh every 2 seconds
The polling system uses TimescaleDB for:
- Hypertable storage: Efficient time-series data storage
- Real-time aggregation: Fast vote counting and analysis
- Session management: Unique audience member tracking
- Performance optimization: Automatic compression and indexing
The application supports PostgreSQL connections via:
- Command line argument:
md-show file.md "postgresql://..." - Environment variable:
PG_URI="postgresql://..." - Default: Uses
ENV['PG_URI']
The polling feature requires TimescaleDB extension:
CREATE EXTENSION IF NOT EXISTS timescaledb;The system automatically creates the required hypertables on first use.
The application automatically detects and highlights:
- SQL
- JavaScript/TypeScript
- Python
- Ruby
- Go
- Rust
- Java/C#
- CSS/SCSS
- JSON/YAML
- Shell scripts
- And many more...
git clone https://github.com/your-repo/md-show.git
cd md-show
bundle install
ruby bin/md-show your-file.mdbundle exec rspecCreate a markdown file with polls:
# Demo Presentation
What's your favorite color?
* Red
* Blue
* Green
* YellowRun the presentation:
md-show demo.md "postgresql://user:password@localhost/dbname"- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE.txt file for details.