initial commit

This commit is contained in:
Naor Peled 2025-10-03 13:04:52 +07:00
parent 2446bd0d87
commit 41772b5dc7
7 changed files with 304 additions and 0 deletions

34
convert-svg.js Normal file
View File

@ -0,0 +1,34 @@
const fs = require('fs');
const { execSync } = require('child_process');
// Try to use a web-based conversion approach or install a converter
try {
// Install sharp temporarily
console.log('Installing sharp for SVG conversion...');
execSync('npm install sharp --no-save', { stdio: 'inherit' });
const sharp = require('sharp');
// Convert SVG to PNG - Variant 3
sharp('typeorm-thumbnail-variant3.svg')
.png()
.resize(1200, 630, { fit: 'contain', background: { r: 0, g: 0, b: 0, alpha: 0 } })
.toFile('typeorm-linkedin-thumbnail.png')
.then(() => {
console.log('✅ Successfully converted SVG to PNG!');
console.log('📁 Output: typeorm-linkedin-thumbnail.png');
// Clean up
execSync('npm uninstall sharp --no-save', { stdio: 'pipe' });
})
.catch(err => {
console.error('❌ Error converting SVG:', err);
});
} catch (error) {
console.error('❌ Error setting up conversion:', error.message);
console.log('\n💡 Alternative: You can manually convert the SVG file using:');
console.log(' - Online converter like https://cloudconvert.com/svg-to-png');
console.log(' - Or install ImageMagick: brew install imagemagick');
console.log(' - Then run: convert typeorm-release-thumbnail.svg typeorm-release-thumbnail.png');
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200" height="630" viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- Purple gradient background matching the original design -->
<radialGradient id="backgroundGradient" cx="50%" cy="50%" r="70%">
<stop offset="0%" stop-color="#7B2D6B"/>
<stop offset="100%" stop-color="#3A1A5C"/>
</radialGradient>
<!-- Decorative circle gradients -->
<radialGradient id="circleGradient1" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#9B4F7F" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#7B2D6B" stop-opacity="0.3"/>
</radialGradient>
<radialGradient id="circleGradient2" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#B85A91" stop-opacity="0.4"/>
<stop offset="100%" stop-color="#8B3F6F" stop-opacity="0.2"/>
</radialGradient>
<!-- Button gradient -->
<linearGradient id="buttonGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#E55B3C"/>
<stop offset="100%" stop-color="#D4491C"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="1200" height="630" fill="url(#backgroundGradient)"/>
<!-- Decorative background circles -->
<circle cx="200" cy="150" r="180" fill="url(#circleGradient1)" opacity="0.5"/>
<circle cx="1000" cy="480" r="220" fill="url(#circleGradient2)" opacity="0.4"/>
<circle cx="950" cy="100" r="120" fill="url(#circleGradient1)" opacity="0.3"/>
<circle cx="100" cy="500" r="150" fill="url(#circleGradient2)" opacity="0.3"/>
<!-- Main content container -->
<g transform="translate(600, 315)">
<!-- TypeORM title -->
<text x="0" y="-80" text-anchor="middle" font-family="Arial, sans-serif" font-size="72" font-weight="bold" fill="white">
TypeORM
</text>
<!-- Version number -->
<text x="0" y="20" text-anchor="middle" font-family="Arial, sans-serif" font-size="84" font-weight="bold" fill="#FF6B35">
v0.3.27
</text>
<!-- NEW RELEASE button -->
<g transform="translate(0, 90)">
<rect x="-120" y="-25" width="240" height="50" rx="25" fill="url(#buttonGradient)"/>
<text x="0" y="8" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="white">
NEW RELEASE
</text>
</g>
</g>
<!-- Additional decorative elements -->
<circle cx="350" cy="300" r="8" fill="#FF6B35" opacity="0.6"/>
<circle cx="850" cy="200" r="6" fill="#FF6B35" opacity="0.4"/>
<circle cx="150" cy="350" r="5" fill="#FF6B35" opacity="0.5"/>
<circle cx="1050" cy="300" r="7" fill="#FF6B35" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200" height="630" viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- Purple gradient background matching the original design -->
<radialGradient id="backgroundGradient" cx="50%" cy="50%" r="70%">
<stop offset="0%" stop-color="#7B2D6B"/>
<stop offset="100%" stop-color="#3A1A5C"/>
</radialGradient>
<!-- Decorative circle gradients -->
<radialGradient id="circleGradient1" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#9B4F7F" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#7B2D6B" stop-opacity="0.3"/>
</radialGradient>
<radialGradient id="circleGradient2" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#B85A91" stop-opacity="0.4"/>
<stop offset="100%" stop-color="#8B3F6F" stop-opacity="0.2"/>
</radialGradient>
<!-- Button gradient -->
<linearGradient id="buttonGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#E55B3C"/>
<stop offset="100%" stop-color="#D4491C"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="1200" height="630" fill="url(#backgroundGradient)"/>
<!-- Decorative background circles -->
<circle cx="200" cy="150" r="180" fill="url(#circleGradient1)" opacity="0.5"/>
<circle cx="1000" cy="480" r="220" fill="url(#circleGradient2)" opacity="0.4"/>
<circle cx="950" cy="100" r="120" fill="url(#circleGradient1)" opacity="0.3"/>
<circle cx="100" cy="500" r="150" fill="url(#circleGradient2)" opacity="0.3"/>
<!-- Main content container - Variant 1: Centered layout with proper spacing -->
<g transform="translate(600, 315)">
<!-- TypeORM title -->
<text x="0" y="-90" text-anchor="middle" font-family="Arial, sans-serif" font-size="68" font-weight="bold" fill="white">
TypeORM
</text>
<!-- Version number -->
<text x="0" y="10" text-anchor="middle" font-family="Arial, sans-serif" font-size="80" font-weight="bold" fill="#FF6B35">
v0.3.27
</text>
<!-- NEW RELEASE button - Better vertical centering -->
<g transform="translate(0, 85)">
<rect x="-125" y="-27" width="250" height="54" rx="27" fill="url(#buttonGradient)"/>
<text x="0" y="5" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="white" dominant-baseline="middle">
NEW RELEASE
</text>
</g>
</g>
<!-- Additional decorative elements -->
<circle cx="350" cy="280" r="8" fill="#FF6B35" opacity="0.6"/>
<circle cx="850" cy="180" r="6" fill="#FF6B35" opacity="0.4"/>
<circle cx="150" cy="370" r="5" fill="#FF6B35" opacity="0.5"/>
<circle cx="1050" cy="320" r="7" fill="#FF6B35" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200" height="630" viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- Purple gradient background matching the original design -->
<radialGradient id="backgroundGradient" cx="50%" cy="50%" r="70%">
<stop offset="0%" stop-color="#7B2D6B"/>
<stop offset="100%" stop-color="#3A1A5C"/>
</radialGradient>
<!-- Decorative circle gradients -->
<radialGradient id="circleGradient1" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#9B4F7F" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#7B2D6B" stop-opacity="0.3"/>
</radialGradient>
<radialGradient id="circleGradient2" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#B85A91" stop-opacity="0.4"/>
<stop offset="100%" stop-color="#8B3F6F" stop-opacity="0.2"/>
</radialGradient>
<!-- Button gradient -->
<linearGradient id="buttonGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#E55B3C"/>
<stop offset="100%" stop-color="#D4491C"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="1200" height="630" fill="url(#backgroundGradient)"/>
<!-- Decorative background circles -->
<circle cx="200" cy="150" r="180" fill="url(#circleGradient1)" opacity="0.5"/>
<circle cx="1000" cy="480" r="220" fill="url(#circleGradient2)" opacity="0.4"/>
<circle cx="950" cy="100" r="120" fill="url(#circleGradient1)" opacity="0.3"/>
<circle cx="100" cy="500" r="150" fill="url(#circleGradient2)" opacity="0.3"/>
<!-- Main content container - Variant 2: Slightly offset layout with larger button -->
<g transform="translate(600, 320)">
<!-- TypeORM title -->
<text x="0" y="-95" text-anchor="middle" font-family="Arial, sans-serif" font-size="70" font-weight="bold" fill="white">
TypeORM
</text>
<!-- Version number -->
<text x="0" y="5" text-anchor="middle" font-family="Arial, sans-serif" font-size="88" font-weight="bold" fill="#FF6B35">
v0.3.27
</text>
<!-- NEW RELEASE button - Larger and better positioned -->
<g transform="translate(0, 82)">
<rect x="-140" y="-30" width="280" height="60" rx="30" fill="url(#buttonGradient)"/>
<text x="0" y="0" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="white" dominant-baseline="central">
NEW RELEASE
</text>
</g>
</g>
<!-- Additional decorative elements -->
<circle cx="320" cy="250" r="10" fill="#FF6B35" opacity="0.7"/>
<circle cx="880" cy="160" r="8" fill="#FF6B35" opacity="0.5"/>
<circle cx="120" cy="400" r="6" fill="#FF6B35" opacity="0.6"/>
<circle cx="1080" cy="350" r="9" fill="#FF6B35" opacity="0.4"/>
<circle cx="450" cy="480" r="4" fill="#FF6B35" opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200" height="630" viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- Purple gradient background matching the original design -->
<radialGradient id="backgroundGradient" cx="50%" cy="50%" r="70%">
<stop offset="0%" stop-color="#7B2D6B"/>
<stop offset="100%" stop-color="#3A1A5C"/>
</radialGradient>
<!-- Decorative circle gradients -->
<radialGradient id="circleGradient1" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#9B4F7F" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#7B2D6B" stop-opacity="0.3"/>
</radialGradient>
<radialGradient id="circleGradient2" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#B85A91" stop-opacity="0.4"/>
<stop offset="100%" stop-color="#8B3F6F" stop-opacity="0.2"/>
</radialGradient>
<!-- Button gradient with shadow effect -->
<linearGradient id="buttonGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#E55B3C"/>
<stop offset="100%" stop-color="#D4491C"/>
</linearGradient>
<!-- Drop shadow filter -->
<filter id="dropShadow" x="-50%" y="-50%" width="200%" height="200%">
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-color="#000000" flood-opacity="0.3"/>
</filter>
</defs>
<!-- Background -->
<rect width="1200" height="630" fill="url(#backgroundGradient)"/>
<!-- Decorative background circles -->
<circle cx="200" cy="150" r="180" fill="url(#circleGradient1)" opacity="0.5"/>
<circle cx="1000" cy="480" r="220" fill="url(#circleGradient2)" opacity="0.4"/>
<circle cx="950" cy="100" r="120" fill="url(#circleGradient1)" opacity="0.3"/>
<circle cx="100" cy="500" r="150" fill="url(#circleGradient2)" opacity="0.3"/>
<!-- Main content container - Variant 3: Compact layout with shadow effects -->
<g transform="translate(600, 315)">
<!-- TypeORM title with slight shadow -->
<text x="2" y="-77" text-anchor="middle" font-family="Arial, sans-serif" font-size="66" font-weight="bold" fill="#000000" opacity="0.2">
TypeORM
</text>
<text x="0" y="-80" text-anchor="middle" font-family="Arial, sans-serif" font-size="66" font-weight="bold" fill="white">
TypeORM
</text>
<!-- Version number with glow effect -->
<text x="2" y="17" text-anchor="middle" font-family="Arial, sans-serif" font-size="82" font-weight="bold" fill="#000000" opacity="0.2">
v0.3.27
</text>
<text x="0" y="15" text-anchor="middle" font-family="Arial, sans-serif" font-size="82" font-weight="bold" fill="#FF6B35">
v0.3.27
</text>
<!-- NEW RELEASE button - Compact with perfect centering and shadow -->
<g transform="translate(0, 78)">
<rect x="-118" y="-24" width="236" height="48" rx="24" fill="url(#buttonGradient)" filter="url(#dropShadow)"/>
<text x="0" y="0" text-anchor="middle" font-family="Arial, sans-serif" font-size="17" font-weight="bold" fill="white" dominant-baseline="central">
NEW RELEASE
</text>
</g>
</g>
<!-- Additional decorative elements with varied sizes -->
<circle cx="380" cy="290" r="12" fill="#FF6B35" opacity="0.5"/>
<circle cx="820" cy="190" r="7" fill="#FF6B35" opacity="0.6"/>
<circle cx="180" cy="380" r="5" fill="#FF6B35" opacity="0.7"/>
<circle cx="1020" cy="330" r="9" fill="#FF6B35" opacity="0.4"/>
<circle cx="280" cy="450" r="6" fill="#FF6B35" opacity="0.5"/>
<circle cx="920" cy="420" r="4" fill="#FF6B35" opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB