-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlaunch.html
More file actions
204 lines (183 loc) · 10.7 KB
/
launch.html
File metadata and controls
204 lines (183 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Launch in 60s — evolver-tools</title>
<meta name="description" content="Three copy-ready posts to launch evolver-tools. Pick one, paste, done.">
<link rel="canonical" href="https://evolver-dev.github.io/evolver-tools/launch.html">
<meta property="og:title" content="Launch in 60s — evolver-tools">
<meta property="og:description" content="Three copy-ready posts to launch evolver-tools on HN, Reddit, and Dev.to. Pick one, paste, done.">
<meta property="og:url" content="https://evolver-dev.github.io/evolver-tools/launch.html">
<meta property="og:image" content="https://evolver-dev.github.io/evolver-tools/og-image.svg">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Launch in 60s — evolver-tools">
<meta name="twitter:description" content="Three copy-ready posts to launch evolver-tools on HN, Reddit, and Dev.to. Pick one, paste, done.">
<meta name="twitter:image" content="https://evolver-dev.github.io/evolver-tools/og-image.svg">
<style>
:root {
--bg: #0a0e14;
--surface: #111820;
--border: #1e2d3d;
--text: #b3c7e5;
--text-secondary: #7a8ba8;
--accent: #00d4aa;
--accent-dim: #00a88a;
--yellow: #ffcb6b;
--font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: var(--bg); color: var(--text); font-family: var(--font-sans); line-height: 1.6; padding: 2rem; }
.container { max-width: 720px; margin: 0 auto; }
h1 { font-size: 1.8rem; color: #fff; margin-bottom: .3rem; }
.subtitle { color: var(--text-secondary); margin-bottom: 2rem; font-size: .95rem; }
.stats { display: flex; gap: 1.5rem; margin-bottom: 2rem; flex-wrap: wrap; }
.stat { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: .8rem 1.2rem; }
.stat-num { font-family: var(--font-mono); font-size: 1.3rem; color: var(--accent); }
.stat-label { font-size: .75rem; color: var(--text-secondary); text-transform: uppercase; letter-spacing: .5px; }
.post-card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; margin-bottom: 1.5rem; overflow: hidden; }
.post-header { display: flex; align-items: center; justify-content: space-between; padding: .8rem 1.2rem; border-bottom: 1px solid var(--border); }
.post-platform { font-weight: 600; color: #fff; }
.post-target { font-size: .8rem; color: var(--text-secondary); }
.post-body { padding: 1.2rem; font-family: var(--font-mono); font-size: .82rem; line-height: 1.5; white-space: pre-wrap; word-break: break-word; color: #c9d8f0; }
.post-body .hl { color: var(--accent); }
.post-body .hl-y { color: var(--yellow); }
.btn-row { display: flex; gap: .5rem; padding: .8rem 1.2rem; border-top: 1px solid var(--border); }
.btn { font-family: var(--font-sans); font-size: .85rem; padding: .5rem 1rem; border-radius: 6px; cursor: pointer; border: none; transition: .15s; }
.btn-copy { background: var(--accent); color: #0a0e14; font-weight: 600; }
.btn-copy:hover { background: var(--accent-dim); }
.btn-copy.copied { background: #2ecc71; }
.btn-link { background: transparent; color: var(--text-secondary); border: 1px solid var(--border); text-decoration: none; display: inline-flex; align-items: center; }
.btn-link:hover { border-color: var(--accent); color: var(--accent); }
.toast { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%); background: #2ecc71; color: #0a0e14; padding: .6rem 1.2rem; border-radius: 8px; font-weight: 600; font-size: .9rem; opacity: 0; transition: .3s; pointer-events: none; }
.toast.show { opacity: 1; }
.section-title { font-size: .75rem; text-transform: uppercase; letter-spacing: 1px; color: var(--text-secondary); margin: 2rem 0 .8rem; }
.pitch-line { text-align: center; margin: 2rem 0; padding: 1.5rem; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }
.pitch-line code { font-family: var(--font-mono); background: #1a273a; padding: .2rem .5rem; border-radius: 4px; font-size: .9rem; }
.pitch-note { color: var(--text-secondary); font-size: .8rem; margin-top: .5rem; }
</style>
</head>
<body>
<div class="container">
<h1>🚀 Launch in 60 Seconds</h1>
<p class="subtitle">Choose one platform. Copy the post. Paste. Done.</p>
<div class="stats">
<div class="stat"><div class="stat-num">261</div><div class="stat-label">CLI Tools</div></div>
<div class="stat"><div class="stat-num">0</div><div class="stat-label">Dependencies</div></div>
<div class="stat"><div class="stat-num">pip</div><div class="stat-label">Install</div></div>
<div class="stat"><div class="stat-num">3k+</div><div class="stat-label">PyPI DLs</div></div>
</div>
<!-- Show HN -->
<div class="post-card">
<div class="post-header">
<div>
<div class="post-platform">Show HN</div>
<div class="post-target">news.ycombinator.com/submit</div>
</div>
<a href="https://news.ycombinator.com/submit" target="_blank" class="btn btn-link">Open HN →</a>
</div>
<div class="post-body" id="hn-body">Title: Show HN: evolver-tools — 261 CLI tools, one pip install, zero dependencies
I got tired of installing 261 separate packages for basic CLI tasks (CSV wrangling, JSON formatting, port scanning, diffing, QR codes, you name it).
So I built evolver-tools. 261 standalone CLI tools in a single pip install. Zero external dependencies — pure Python stdlib only. Cross-platform (Linux, macOS, Windows).
Highlights:
• csv-stats — column inference, histograms, correlation
• chart-cli — terminal bar/line/pie charts (Unicode)
• json-pretty — pretty-print, filter, jq-like queries
• sysmon — real-time CPU/memory/disk/network TUI
• qrcode, banner-gen, calendar-cli, hexdump, siege-lite, ren (batch renamer)…
Install: pip install evolver-tools
Try: curl -s https://evolver-dev.github.io/evolver-tools/try.sh | bash
Docs: https://evolver-dev.github.io/evolver-tools/
Code: https://github.com/evolver-dev/evolver-tools</div>
<div class="btn-row">
<button class="btn btn-copy" onclick="copy('hn-body')">📋 Copy Show HN Post</button>
<a href="https://github.com/evolver-dev/evolver-tools" target="_blank" class="btn btn-link">→ GitHub</a>
<a href="https://evolver-dev.github.io/evolver-tools/try.sh" target="_blank" class="btn btn-link">→ try.sh</a>
</div>
</div>
<!-- Reddit r/Python -->
<div class="post-card">
<div class="post-header">
<div>
<div class="post-platform">Reddit r/Python</div>
<div class="post-target">reddit.com/r/Python/submit</div>
</div>
<a href="https://reddit.com/r/Python/submit" target="_blank" class="btn btn-link">Open Reddit →</a>
</div>
<div class="post-body" id="reddit-body">Title: I built 261 CLI tools so you don't have to install 261 packages
I kept installing one-off CLI tools for different tasks — a CSV viewer here, a JSON formatter there, a port scanner for debugging. After a while I realized I had 30+ packages just for basic terminal work.
So I collected them all into one package: evolver-tools. 261 CLI tools, zero Python dependencies, works on Linux/macOS/Windows.
What's inside:
• Data: csv-stats, json-pretty, csv-to-json, json-to-csv, chart-cli, hexdump
• Network: portscan, whois, http-load-tester, ip-geo
• Dev: diff-yaml, project-health-check, code-smell-detector, envcheck
• Fun: qrcode, banner-gen, sysmon (TUI), calendar-cli, ascii-art
• Utility: ren (batch rename), web-summary, siege-lite, licensed (SPDX checker)
Install: pip install evolver-tools
Demo: curl -s https://evolver-dev.github.io/evolver-tools/try.sh | bash
All 261 have --help. All use only Python stdlib — no pip bloat.</div>
<div class="btn-row">
<button class="btn btn-copy" onclick="copy('reddit-body')">📋 Copy Reddit Post</button>
<a href="https://github.com/evolver-dev/evolver-tools" target="_blank" class="btn btn-link">→ GitHub</a>
</div>
</div>
<!-- Reddit r/commandline -->
<div class="post-card">
<div class="post-header">
<div>
<div class="post-platform">Reddit r/commandline</div>
<div class="post-target">reddit.com/r/commandline/submit</div>
</div>
<a href="https://reddit.com/r/commandline/submit" target="_blank" class="btn btn-link">Open Reddit →</a>
</div>
<div class="post-body" id="cli-body">Title: 261 CLI tools, zero dependencies — packaged into one `pip install`
I've been building a collection of single-file Python CLI tools. No npm, no cargo, no homebrew — just `pip install evolver-tools` and you get 261 commands.
Every tool is lean: Python stdlib only, no external imports. That means instant install and zero compatibility hell.
Some you'll use daily:
- csv-stats → describe your CSV like pandas (but no pandas needed)
- json-pretty → filter, query, and colorize JSON
- chart-cli → draw bar/line/pie charts in your terminal
- sysmon → real-time system monitor (CPU/RAM/disk/net)
- batch-file-renamer → prefix/suffix/regex/number files
- siege-lite → HTTP load testing with percentile stats
Try before you install:
curl -s https://evolver-dev.github.io/evolver-tools/try.sh | bash</div>
<div class="btn-row">
<button class="btn btn-copy" onclick="copy('cli-body')">📋 Copy r/commandline Post</button>
<a href="https://evolver-dev.github.io/evolver-tools/try.sh" target="_blank" class="btn btn-link">→ Try in Browser</a>
</div>
</div>
<div class="pitch-line">
<div><strong>One-line pitch</strong></div>
<div style="margin-top:.5rem"><code>pip install evolver-tools</code> — 261 CLI tools, zero deps</div>
<div class="pitch-note">First 100 installs this week = proof of traction</div>
</div>
</div>
<div class="toast" id="toast">✅ Copied! Ready to paste.</div>
<script>
function copy(id) {
const el = document.getElementById(id);
const text = el.textContent;
navigator.clipboard.writeText(text).then(() => {
const btn = event.target;
btn.textContent = '✅ Copied!';
btn.classList.add('copied');
setTimeout(() => { btn.textContent = '📋 Copy Show HN Post'; btn.classList.remove('copied'); }, 2000);
}).catch(() => {
// Fallback
const ta = document.createElement('textarea');
ta.value = text;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
const toast = document.getElementById('toast');
toast.classList.add('show');
setTimeout(() => toast.classList.remove('show'), 2000);
});
}
</script>
</body>
</html>