Skip to content

jeffersoncgo/CoverMaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

165 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฌ CoverMaker

A High-Performance, Client-Side Poster Design Tool for Jellyfin Media Collections

License JavaScript No Build Required Meilisearch Tech Cache State Contributing

๐Ÿš€ Quick Start

  1. Open the app: https://jeffersoncgo.github.io/CoverMaker/
  2. Add image slots using the + button.
  3. Load images from Jellyfin, local files, or drag & drop onto slots, or simply paste from clipboard.
  4. Select a layout type and tweak composite parameters (Format, Salt, Base Scale, Spacing).
  5. Adjust visual settings and apply image effects as desired.
  6. Add text layers and apply as many text effects you wanna to then (previously Stroke and Bloom where their own section, now they are effects).
  7. Export the final image as PNG/JPEG or save the project as a ZIP for later reuse.

Tip: Numeric controls (range/number) support doubleโ€‘click to switch input mode for precise values.


Demo: movies.lego (Scattered Photos / Distressed Headline)

movies.lego app screenshot

Quick summary: Scattered photos composite with a large distressed headline using multiple text effects (waves, gradient, pixelation, long shadow and outline).

  • Canvas / Composite: scatteredPhotos, format cover (1920ร—1080), composite salt 36, baseScale 1.4, blur 5, spacing 1.
  • Visual settings & effects: saturate enabled (amount 1.4), additional subtle effects present but mostly focused on textured headline and pixel matrix.
  • Text layers: single large MOVIES headline using Francois One, with waves, gradient, pixelMatrix, distress, longShadow and outline effects to create a gritty, playful poster look.
  • Export: PNG. Image slots: 12.

๐Ÿ“ฆ Download project: https://jeffersoncgo.github.io/CoverMaker/gallery/projects/movies-lego/movies.lego.project.zip

๐Ÿ–ผ๏ธ Final result image

movies.lego result


Demo: lego.collection (Poster / Pixel Matrix & Stacked Text)

lego.collection app screenshot

Quick summary: Poster-format scattered photos with vibrant pixel matrix text effects and stacked layers creating a playful Lego-themed collection cover.

  • Canvas / Composite: scatteredPhotos, format poster (1080ร—1920), composite salt 36, baseScale 1.4, blur 5, spacing 1.
  • Visual settings & effects: saturate enabled (amount 1.4) for vibrant colors.
  • Text layers: two headline layers (LEGO and COLLECTION) using Francois One with gradient, pixelMatrix, distress, longShadow and outline effects to produce bold, textured lettering with a distinctive blocky aesthetic.
  • Export: PNG. Image slots: 12.

๐Ÿ“ฆ Download project: https://jeffersoncgo.github.io/CoverMaker/gallery/projects/lego-collection/lego.collection.project.zip

๐Ÿ–ผ๏ธ Final result image

lego.collection result


Demo: animes.manga (Collage / Textured Headline)

animes.manga app screenshot

Quick summary: Collage composite with layered headline text (long shadow + distressed overlay) for a stylized anime cover.

  • Canvas / Composite: collage, format cover (1920ร—1080), composite salt 3.
  • Visual settings: subtle overlay (0.1โ†’0.4), reflections, base scale 1.4, blur 5.
  • Active image effects: saturate, scanLines, vignette, blur (grayscale present but disabled).
  • Text layers: two stacked layers using East Sea Dokdo (large italic headline ANIMES), top layer with longShadow + small outline, bottom with distress for texture.
  • Export: PNG. Image slots: 20.

๐Ÿ“ฆ Download project: https://jeffersoncgo.github.io/CoverMaker/gallery/projects/animes-manga/animes.manga.project.zip

๐Ÿ–ผ๏ธ Final result image

animes.manga result


๐Ÿ–ผ๏ธ Gallery Directory

This project includes a gallery folder with a structure intended to host gallery content for the web app. To populate it, you can manually copy ZIP files and their project.json into gallery/projects/<id>/. See gallery/GALLERY.md for manual extraction and contribution instructions.

Demo: movies.metal (Metallic Headline)

movies.metal app screenshot

Quick summary: Line composite with stacked outlines and long shadows to create a metallic, embossed headline.

  • Canvas / Composite: line, format cover (1920ร—1080), reflections enabled, baseScale ~1.35, spacing 3, blurAmount ~3.5.
  • Visual settings & effects: vignette, overlay (dark), sharpen (0.28), saturate (1.4), blur (1), light grayscale โ€” all used to achieve heavy contrast.
  • Text layers: single large MOVIES headline with multiple stacked outline and longShadow effects and a distress pass.
  • Export: PNG. Image slots: 4.

๐Ÿ“ฆ Download project: https://jeffersoncgo.github.io/CoverMaker/gallery/projects/movies-metal/movies.metal.project.zip

๐Ÿ–ผ๏ธ Final result image

movies.metal result


Demo: war.metal (Dramatic / High-Contrast Cover)

war.metal app screenshot

Quick summary: Collage composite tuned with brightness/contrast adjustments and scanlines; heavy stroked headline for a metallic look.

  • Canvas / Composite: collage, format cover (1920ร—1080), composite salt 3.
  • Visual & image effects: multiple brightness passes, overlay darkening, saturate ~1.15, contrast ~1.05, scanLines (density 30).
  • Text layers: single WAR headline (Cal Sans bold) with stacked outlines, longShadow, and distress effects to reinforce metallic emboss.
  • Export: PNG. Image slots: 20.

๐Ÿ“ฆ Download project: https://jeffersoncgo.github.io/CoverMaker/gallery/projects/war-metal/war.metal.project.zip

๐Ÿ–ผ๏ธ Final result image

war.metal result


๐ŸŽจ Share Your Creations!

We'd love to see what you create with CoverMaker! If you design posters or covers you're proud of, please share them with the community.

How to contribute to the gallery:

  1. Create your design and export the final image (PNG or JPG)
  2. Export your project as a ZIP file (use the export feature in the app)
  3. Open an issue or submit a pull request including:
    • Your final image file
    • Your project ZIP file
    • Brief description of your collection (optional)

Your examples will be featured here and help inspire other users!


Text Layer Effects

Create unlimited text layers with professional typography and many built-in text effects. Available text effect types (as used by the app) include:

  • opacity (Opacity)
  • fade (Fade)
  • gradient (Gradient)
  • neon (Neon)
  • glowEdge / Projection (Glow Edge / Projection)
  • longShadow (Long Shadow / Shadow)
  • outline (Outline)
  • glitch (Glitch)
  • chromatic (Chromatic Aberration)
  • ripple (Ripple)
  • waves (Waves)
  • pixelMatrix (Pixelate)
  • skew (Skew)
  • flip (Flip)
  • distress (Texture / Distress)
  • melt (Melt / Drip)
  • paintBrush (Smudge / Paint Brush)
  • lightning (Lightning)
  • scanLines (Scanlines)

In addition to these named effects, text layers support common typography controls:

  • 800+ Google Fonts available
  • Custom font size, weight, and style
  • Gradient fills (linear/radial with multiple color stops)
  • Opacity control and blend modes
  • Multiple strokes and shadows per layer
  • Rotation, scale and skew transforms
  • Layer visibility and reordering

โš™๏ธ Configuration Options

Aspect Ratio Options

  • Cover (16:9): Wide horizontal format, perfect for collection banners
  • Poster (9:16): Vertical format, ideal for movie/series posters
  • Square (1:1): Balanced format for social media
  • Custom: Define any dimensions (width/height in pixels)

(Other canvas and layout-specific settings โ€” salt, base scale, reflections, spacing, effects โ€” are configurable inside the app UI. See the inโ€‘app controls for exact ranges.)


Text Layer Effects

Create unlimited text layers with professional typography:

Basic Settings:

  • 800+ Google Fonts available
  • Custom font size, weight, and style
  • Solid color or gradient fills (linear/radial with multiple color stops)
  • Opacity control (0-1)
  • Position (X, Y) and alignment controls (left, center, right / top, middle, bottom)

3D Effects:

  • Depth control (0-50 pixels)
  • Angle control (0-360ยฐ)
  • Custom 3D layer color
  • Optional shadow projection

Stroke/Outline:

  • Width: 0-20+ pixels
  • Custom color with opacity (0-1)
  • Multiple strokes per layer supported

Shadow Effects:

  • Blur radius: 0+ (default 5)
  • X and Y offset controls
  • Custom shadow color with RGBA support
  • Multiple shadows per layer supported

Glow Effects:

  • Blur radius control
  • Intensity adjustment (0-3)
  • Custom glow color
  • Perfect for neon/glowing text

Transform Options:

  • Rotation (-180ยฐ to 180ยฐ)
  • Scale X and Y independently
  • Skew X and Y for perspective effects

Advanced:

  • Blend modes (normal, multiply, screen, overlay, etc.)
  • Layer visibility toggle
  • Layer reordering (drag or up/down buttons)

๐Ÿง  Current Features

Core Rendering:

  • โœ… OffscreenCanvas rendering for non-blocking UI
  • โœ… Several layout algorithms
  • โœ… Custom canvas dimensions and aspect ratios
  • โœ… PNG and JPEG export with quality control
  • โœ… Memoization cache for rendering steps (faster redraws)

Text System:

  • โœ… Unlimited independent text layers
  • โœ… 800+ Google Fonts with async loading
  • โœ… 3D effects with adjustable depth and angle
  • โœ… Gradient fills (linear and radial) with multiple color stops
  • โœ… Multiple strokes and shadows per layer
  • โœ… Glow effects with customizable intensity
  • โœ… Transform controls (rotation, scale, skew)
  • โœ… Blend modes and opacity control
  • โœ… Layer visibility toggle and reordering

Image Management:

  • โœ… Unlimited image slots with drag-and-drop reordering
  • โœ… Pin protection to lock specific images
  • โœ… Random image selection from library
  • โœ… Local file upload and clipboard paste support
  • โœ… Image caching for faster reloads
  • โœ… Several image effects (blur, grayscale, invert, brightness, contrast, saturate, sepia, hue rotate, vignette, overlay gradient, scale/transform, sharpen, reflection, flip, pixelate, scanlines)
  • โœ… Image cropping and masking using effects (scale, flip, pixelate, scale/transform)

Jellyfin Integration:

  • โœ… Server authentication with fastest-address auto-detection
  • โœ… Multiple library support with metadata caching
  • โœ… IndexedDB persistent cache for offline access
  • โœ… Incremental cache updates (delta sync)
  • โœ… Meilisearch plugin auto-detection
  • โœ… Advanced search filters (tags, genres, studios) (some filters may be activated/deactivated in-app for faster searches)
  • โœ… Pagination with configurable page size

Project Management:

  • โœ… Complete project save/load as JSON files
  • โœ… Automatic localStorage persistence for settings
  • โœ… Session restore on page reload

User Interface:

  • โœ… Tabbed interface with responsive design
  • โœ… Draggable floating windows
  • โœ… Toast notifications
  • โœ… Real-time preview updates
  • โœ… Collapsible sections

Available Text Effects (in-app names):

  • opacity (Opacity)
  • fade (Fade)
  • gradient (Gradient)
  • neon (Neon)
  • glowEdge / Projection (Glow Edge / Projection)
  • longShadow (Long Shadow / Shadow)
  • outline (Outline)
  • glitch (Glitch)
  • chromatic (Chromatic Aberration)
  • ripple (Ripple)
  • waves (Waves)
  • pixelMatrix (Pixelate)
  • skew (Skew)
  • flip (Flip)
  • distress (Texture / Distress)
  • melt (Melt / Drip)
  • paintBrush (Smudge / Paint Brush)
  • lightning (Lightning)
  • scanLines (Scanlines)

Available Image Effects (in-app names):

  • blur (Blur)
  • grayscale (Grayscale)
  • invert (Invert)
  • brightness (Brightness)
  • contrast (Contrast)
  • saturate (Saturate)
  • sepia (Sepia)
  • hueRotate (Hue Rotate)
  • vignette (Vignette)
  • overlay (Overlay gradient)
  • scale (Scale / Transform)
  • sharpen (Sharpen)
  • reflection (Reflection)
  • flip (Flip horizontal/vertical)
  • pixelate (Pixelate)
  • scanLines (Scanlines)

๐Ÿงฑ Technical Architecture

Technology Stack

Core Technologies:

  • Pure Vanilla JavaScript (ES6+)
  • HTML5 Canvas API with OffscreenCanvas
  • CSS3 with Grid and Flexbox
  • IndexedDB for data caching
  • localStorage for preferences

External Integrations:

  • Jellyfin Server API (optional)
  • Meilisearch Plugin (optional)
  • Google Fonts API

Performance

Rendering:

  • OffscreenCanvas prevents UI thread blocking
  • Incremental redraw pipeline
  • Image preprocessing and caching

Data Management:

  • IndexedDB stores 50MB+ of library metadata
  • Smart delta sync for library updates
  • Debounced search prevents redundant API calls

๐ŸŒ Browser Compatibility

Browser Version Status
Chrome 90+ โœ… Full Support
Firefox 88+ โœ… Full Support
Safari 14.1+ โœ… Full Support
Edge 90+ โœ… Full Support
IE 11 - โŒ Not Supported

Required APIs: Canvas, OffscreenCanvas, Fetch, IndexedDB, localStorage


๐Ÿ› Troubleshooting

Connection Issues

"Cannot connect to Jellyfin server"

  • Verify server URL is correct (include port: http://192.168.1.100:8096)
  • Check Jellyfin server is online and accessible
  • For HTTPS, ensure valid SSL certificate

"CORS or network error"

  • Access via online URL or local HTTP server (not file:// protocol)

Library & Search

"Library not loading"

  • First login takes 10-30 seconds to cache metadata
  • Clear browser cache/IndexedDB and retry
  • Check browser console (F12) for errors

"Images not displaying"

  • Verify images exist in Jellyfin library
  • Try refresh icon on slot
  • Check image permissions in Jellyfin

Rendering

"Canvas not updating"

  • Click canvas to trigger manual refresh

"Text not visible"

  • Check layer visibility (eye icon)
  • Verify opacity is not 0
  • Ensure text color contrasts with background

Export

"Downloaded image is blank"

  • Ensure at least one image is loaded before exporting

"Export quality is low"

  • Adjust quality in Settings โ†’ Export Options

Performance

"App is slow or laggy"

  • Reduce number of text layers
  • Use simpler layout modes
  • Reduce canvas dimensions
  • Close other browser tabs

๐Ÿ“„ License

MIT License - See LICENSE for details


๐Ÿ™ Contributing

Contributions welcome! Areas of interest:

  • Performance optimizations
  • UI/UX improvements
  • New layout algorithms
  • Jellyfin API extensions
  • Implementing planned features listed above

๐Ÿ’ฌ Support & Issues

๐Ÿ“ง GitHub Issues: Report bugs here


Made with โค๏ธ for Jellyfin enthusiasts

About

Make Covers for Your Library

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

โšก