Turn plain screenshots into beautiful GitHub-ready cards.
SnapForge is a small C#/.NET CLI that turns ordinary screenshots into polished PNG cards for GitHub READMEs, portfolios, changelogs, social posts, and project presentations.
Project screenshots are useful, but raw screenshots often look unfinished when dropped directly into a README or release note. They can have inconsistent dimensions, no context, awkward cropping, and no visual treatment around the actual interface.
Developers should not need a design tool just to make a clean project card.
SnapForge takes a source screenshot, wraps it in a minimal themed layout, and exports a ready-to-use PNG card with:
- a clean background;
- title and subtitle text;
- a framed screenshot;
- rounded screenshot corners;
- a soft screenshot shadow;
- a subtle border;
- a small
Generated with SnapForgeattribution.
The goal is not to replace design software. The goal is to make the common case fast, consistent, and pleasant.
Requirements:
- .NET 8 SDK
- A PNG/JPG screenshot to use as input
Clone and run locally:
git clone https://github.com/rndv1/SnapForge.git
cd SnapForge
dotnet restore
dotnet buildGenerate a card:
dotnet run --project src/SnapForge.Cli -- card ./examples/input/sample.png \
--output ./examples/output/sample-card.png \
--title "SnapForge" \
--subtitle "GitHub-ready screenshots" \
--preset github \
--theme darkWindows PowerShell:
dotnet run --project src/SnapForge.Cli -- card .\examples\input\sample.png `
--output .\examples\output\sample-card.png `
--title "SnapForge" `
--subtitle "GitHub-ready screenshots" `
--preset github `
--theme darkSnapForge can be packed and installed locally as a .NET tool:
dotnet pack src/SnapForge.Cli/SnapForge.Cli.csproj --configuration Release --output artifacts/packages
dotnet tool install --global SnapForge --add-source ./artifacts/packagesThen run it with the tool command:
snapforge card ./examples/input/sample.png \
--output ./examples/output/sample-card.png \
--title "SnapForge" \
--subtitle "GitHub-ready screenshots" \
--preset github \
--theme darkTo uninstall the local tool:
dotnet tool uninstall --global SnapForgesnapforge card <input> --output <output> --title <title> --subtitle <subtitle> --preset <preset> --theme <theme>During local development, use:
dotnet run --project src/SnapForge.Cli -- card <input> --output <output> --title <title> --subtitle <subtitle> --preset <preset> --theme <theme>Example:
dotnet run --project src/SnapForge.Cli -- card ./examples/input/api-screen.png \
--output ./examples/output/api-card.png \
--title "GrowthOS API" \
--subtitle "ASP.NET Core / PostgreSQL / Docker" \
--preset github \
--theme darkSnapForge also includes a small ASP.NET Core Razor Pages interface for generating cards in the browser:
dotnet run --project src/SnapForge.WebOpen the local URL printed by ASP.NET Core, upload a screenshot, choose a preset and theme, then download the generated PNG.
| Preset | Size | Best for |
|---|---|---|
github |
1280x720 |
README banners, changelog images, project previews |
social |
1080x1080 |
Square social posts and profile updates |
portfolio |
1600x900 |
Portfolio case studies and presentation slides |
| Theme | Style |
|---|---|
light |
Soft neutral background, dark text, clean product feel |
dark |
GitHub-inspired dark background, light text, subtle contrast |
- Generates PNG cards from local screenshots.
- Validates the input file path before rendering.
- Creates the output directory when needed.
- Prevents overwriting the original source screenshot.
- Supports
github,social, andportfoliopresets. - Supports
lightanddarkthemes. - Renders a title, subtitle, screenshot frame, border, shadow, and attribution.
- Prints a structured console report with input, output, preset, theme, size, and status.
- Provides a local Web GUI for browser-based generation.
- Supports drag-and-drop uploads in the Web GUI.
The repository includes a small sample screenshot and generated cards so you can see the visual treatment before running the CLI locally.
| Input screenshot | GitHub dark card |
|---|---|
![]() |
![]() |
| Social light card | Portfolio dark card |
|---|---|
![]() |
![]() |
See examples/README.md for copy-ready commands and naming conventions.
SnapForge/
├── src/
│ ├── SnapForge.Core/
│ │ ├── Models/
│ │ ├── Presets/
│ │ ├── Rendering/
│ │ ├── Themes/
│ │ └── Utils/
│ ├── SnapForge.Cli/
│ │ ├── Program.cs
│ │ └── Commands/
│ └── SnapForge.Web/
│ ├── Pages/
│ └── wwwroot/
├── tests/
│ └── SnapForge.Tests/
├── examples/
│ ├── input/
│ └── output/
├── README.md
├── LICENSE
└── SnapForge.sln
dotnet restore
dotnet build
dotnet testRun the CLI from source:
dotnet run --project src/SnapForge.Cli -- --help
dotnet run --project src/SnapForge.Cli -- card --helpRun the Web GUI from source:
dotnet run --project src/SnapForge.WebSee CONTRIBUTING.md for branch, pull request, and verification guidelines.
SnapForge is intentionally small and focused. It is for developers who want a reliable way to create polished visuals without opening a design app, choosing templates, or manually resizing screenshots every time.
The first version keeps the surface area narrow: one command, three presets, two themes, and predictable output.
- Console application on .NET 8
-
cardcommand -
github,social, andportfoliopresets -
lightanddarkthemes - PNG export
- Rounded screenshot corners, frame, border, and shadow
- Unit tests for preset and theme registries
- GitHub Actions CI
- Example gallery with real before/after screenshots
- Better render tests around output dimensions
- More polished error messages for invalid image files
- Pack as a local/global .NET tool
- Extract reusable rendering core for future UI surfaces
- Web GUI for generating cards in the browser
- Drag-and-drop uploads in the Web GUI
- Web GUI render history for the current session
- Custom background colors
- Optional card padding controls
- Additional presets for Open Graph and presentation slides
- JSON config files for repeatable project branding
- Batch mode for generating multiple cards
SnapForge is built with:
- .NET 8
- C#
- Spectre.Console
- Spectre.Console.Cli
- SixLabors.ImageSharp
- SixLabors.ImageSharp.Drawing
- xUnit
It is designed as a practical open-source .NET CLI project: simple architecture, clear responsibilities, and enough tests to keep the core behavior honest.
SnapForge is licensed under the MIT License. See LICENSE.



