git-paid 2.1.6 → 2.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,123 +1,179 @@
1
- // Complete 85-Directory Database for Postbuild (postbuild.dev)
2
- // Curated startup, AI, developer, indie SaaS, and software discovery directories.
3
-
4
- export const DIRECTORIES = [
5
- // Tier 1: Major Launch Boards & Communities (1-15)
6
- { id: "dir-01", name: "Product Hunt", url: "https://www.producthunt.com/posts/new", dr: 91, category: "Launch Board", authType: "OAuth / Magic Link", autoSubmit: false },
7
- { id: "dir-02", name: "Hacker News (Show HN)", url: "https://news.ycombinator.com/submit", dr: 92, category: "Developer Community", authType: "Account Session", autoSubmit: false },
8
- { id: "dir-03", name: "AlternativeTo", url: "https://alternativeto.net/add-application/", dr: 86, category: "Software Discovery", authType: "OTP (@postbuild.dev)", autoSubmit: true },
9
- { id: "dir-04", name: "There's An AI For That", url: "https://theresanaiforthat.com/submit/", dr: 82, category: "AI Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true },
10
- { id: "dir-05", name: "Indie Hackers Products", url: "https://www.indiehackers.com/products", dr: 81, category: "Indie SaaS", authType: "Email Link", autoSubmit: true },
11
- { id: "dir-06", name: "Futurepedia", url: "https://www.futurepedia.io/submit-tool", dr: 79, category: "AI Directory", authType: "Email Verification", autoSubmit: true },
12
- { id: "dir-07", name: "SaaSHub", url: "https://www.saashub.com/submit", dr: 77, category: "Software Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true },
13
- { id: "dir-08", name: "BetaList", url: "https://betalist.com/submit", dr: 76, category: "Early Adopters", authType: "Email Verification", autoSubmit: true },
14
- { id: "dir-09", name: "FutureTools.io", url: "https://www.futuretools.io/submit-a-tool", dr: 75, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
15
- { id: "dir-10", name: "Toolify.ai", url: "https://www.toolify.ai/submit", dr: 74, category: "AI Directory", authType: "Direct Form + Email", autoSubmit: true },
16
- { id: "dir-11", name: "G2 Software", url: "https://www.g2.com/products/new", dr: 90, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true },
17
- { id: "dir-12", name: "Crozdesk", url: "https://crozdesk.com/vendors", dr: 73, category: "B2B SaaS", authType: "Email Verification", autoSubmit: true },
18
- { id: "dir-13", name: "SourceForge", url: "https://sourceforge.net/create/", dr: 91, category: "Developer Tools", authType: "OTP (@postbuild.dev)", autoSubmit: true },
19
- { id: "dir-14", name: "Slant.co", url: "https://www.slant.co", dr: 80, category: "Comparison Engine", authType: "Account Session", autoSubmit: false },
20
- { id: "dir-15", name: "StackShare", url: "https://stackshare.io/submit", dr: 82, category: "Developer Stack", authType: "GitHub / Email", autoSubmit: false },
21
-
22
- // Tier 2: Developer & Open-Source Directories (16-30)
23
- { id: "dir-16", name: "DevHunt", url: "https://devhunt.org/login", dr: 68, category: "Developer Tools", authType: "GitHub / Email", autoSubmit: false },
24
- { id: "dir-17", name: "OpenAlternative", url: "https://openalternative.co/submit", dr: 66, category: "Open Source", authType: "Direct Form", autoSubmit: true },
25
- { id: "dir-18", name: "Console.dev", url: "https://console.dev/submit", dr: 69, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
26
- { id: "dir-19", name: "LibHunt", url: "https://www.libhunt.com", dr: 72, category: "Developer Libraries", authType: "GitHub Link", autoSubmit: false },
27
- { id: "dir-20", name: "Awesome Lists Index", url: "https://awesomelists.top", dr: 61, category: "Open Source", authType: "PR / Form", autoSubmit: false },
28
- { id: "dir-21", name: "FindDevTools", url: "https://finddevtools.com/submit", dr: 54, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
29
- { id: "dir-22", name: "DevPages", url: "https://www.devpages.io/submit", dr: 52, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
30
- { id: "dir-23", name: "Tooling.one", url: "https://tooling.one/submit", dr: 49, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
31
- { id: "dir-24", name: "Daily.dev Picks", url: "https://daily.dev", dr: 76, category: "Developer Feed", authType: "Email Link", autoSubmit: true },
32
- { id: "dir-25", name: "CodeGems", url: "https://codegems.io", dr: 48, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
33
- { id: "dir-26", name: "HelloGitHub", url: "https://hellogithub.com", dr: 64, category: "Open Source", authType: "Direct Form", autoSubmit: true },
34
- { id: "dir-27", name: "RepoTrends", url: "https://repotrends.com", dr: 51, category: "Developer Tools", authType: "Direct Form", autoSubmit: true },
35
- { id: "dir-28", name: "Selfh.st", url: "https://selfh.st/submit", dr: 62, category: "Self-Hosted / Dev", authType: "Direct Form", autoSubmit: true },
36
- { id: "dir-29", name: "CLI.club", url: "https://cli.club", dr: 46, category: "CLI Tools", authType: "Direct Form", autoSubmit: true },
37
- { id: "dir-30", name: "TerminalTroves", url: "https://terminaltrove.com/submit/", dr: 58, category: "CLI & Terminal", authType: "Direct Form", autoSubmit: true },
38
-
39
- // Tier 3: Indie Launch & Maker Platforms (31-50)
40
- { id: "dir-31", name: "Uneed.best", url: "https://www.uneed.best/submit-a-tool", dr: 64, category: "Indie Launch", authType: "Magic Link (@postbuild.dev)", autoSubmit: true },
41
- { id: "dir-32", name: "MicroLaunch", url: "https://microlaunch.net/submit", dr: 59, category: "Indie Launch", authType: "OTP (@postbuild.dev)", autoSubmit: true },
42
- { id: "dir-33", name: "TinyLaunch", url: "https://tinylaunch.com/submit", dr: 54, category: "Indie Launch", authType: "Direct Form + Email", autoSubmit: true },
43
- { id: "dir-34", name: "Launching Next", url: "https://www.launchingnext.com/submit/", dr: 67, category: "Startup Directory", authType: "Direct Form", autoSubmit: true },
44
- { id: "dir-35", name: "SideProjectors", url: "https://www.sideprojectors.com/project/submit", dr: 62, category: "Side Projects", authType: "Email Verification", autoSubmit: true },
45
- { id: "dir-36", name: "StartupBase", url: "https://startupbase.io/submit", dr: 61, category: "Startup Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true },
46
- { id: "dir-37", name: "Peerlist Spotlight", url: "https://peerlist.io/projects", dr: 74, category: "Maker Network", authType: "OTP (@postbuild.dev)", autoSubmit: true },
47
- { id: "dir-38", name: "1000.tools", url: "https://1000.tools/submit", dr: 57, category: "Indie Tools", authType: "Direct Form", autoSubmit: true },
48
- { id: "dir-39", name: "Fazier", url: "https://fazier.com/launch", dr: 56, category: "Indie Launch", authType: "Magic Link (@postbuild.dev)", autoSubmit: true },
49
- { id: "dir-40", name: "Huzzler", url: "https://huzzler.so/products", dr: 55, category: "Indie Founders", authType: "Email Verification", autoSubmit: true },
50
- { id: "dir-41", name: "IndiePage", url: "https://indiepa.ge", dr: 63, category: "Maker Portfolio", authType: "Magic Link (@postbuild.dev)", autoSubmit: true },
51
- { id: "dir-42", name: "BetaPage", url: "https://betapage.co/submit-startup", dr: 68, category: "Startup Launch", authType: "Email Verification", autoSubmit: true },
52
- { id: "dir-43", name: "StartupBuffer", url: "https://startupbuffer.com/site/submit", dr: 60, category: "Startup Directory", authType: "Direct Form", autoSubmit: true },
53
- { id: "dir-44", name: "StartupStash", url: "https://startupstash.com/add-listing/", dr: 72, category: "Startup Resources", authType: "Direct Form + Email", autoSubmit: true },
54
- { id: "dir-45", name: "KillerStartups", url: "https://www.killerstartups.com/submit-startup", dr: 71, category: "Startup Reviews", authType: "Direct Form", autoSubmit: true },
55
- { id: "dir-46", name: "CrazyAboutStartups", url: "https://www.crazyaboutstartups.com/submit-startup/", dr: 55, category: "Startup Directory", authType: "Direct Form", autoSubmit: true },
56
- { id: "dir-47", name: "Startups.fyi", url: "https://www.startups.fyi/submit", dr: 58, category: "Startup Discovery", authType: "Direct Form", autoSubmit: true },
57
- { id: "dir-48", name: "NoCodeList", url: "https://nocodelist.co/submit", dr: 57, category: "Modern Software", authType: "Direct Form", autoSubmit: true },
58
- { id: "dir-49", name: "Makerlog Products", url: "https://getmakerlog.com", dr: 60, category: "Maker Community", authType: "Email Verification", autoSubmit: true },
59
- { id: "dir-50", name: "wip.co Products", url: "https://wip.co", dr: 63, category: "Maker Community", authType: "Account Session", autoSubmit: false },
60
-
61
- // Tier 4: AI & Automation Directories (51-70)
62
- { id: "dir-51", name: "TopAI.tools", url: "https://topai.tools/submit", dr: 69, category: "AI Directory", authType: "Email Verification", autoSubmit: true },
63
- { id: "dir-52", name: "AI Scout", url: "https://aiscout.net/submit-listing/", dr: 58, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
64
- { id: "dir-53", name: "Easy With AI", url: "https://easywithai.com/submit-tool/", dr: 66, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
65
- { id: "dir-54", name: "AI Tool Hunt", url: "https://www.aitoolhunt.com/submit", dr: 61, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
66
- { id: "dir-55", name: "Insidr.ai", url: "https://www.insidr.ai/submit-tools/", dr: 65, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
67
- { id: "dir-56", name: "AI Valley", url: "https://aivalley.ai/submit-tool/", dr: 57, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
68
- { id: "dir-57", name: "AllThingsAI", url: "https://allthingsai.com/submit", dr: 64, category: "AI Directory", authType: "Email Verification", autoSubmit: true },
69
- { id: "dir-58", name: "AIDir.cc", url: "https://aidir.cc/submit", dr: 49, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
70
- { id: "dir-59", name: "OpenTools.ai", url: "https://opentools.ai/submit-a-tool", dr: 67, category: "AI Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true },
71
- { id: "dir-60", name: "AIxploria", url: "https://www.aixploria.com/en/add-ai/", dr: 71, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
72
- { id: "dir-61", name: "SaaS AI Tools", url: "https://saasaitools.com/submit/", dr: 59, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
73
- { id: "dir-62", name: "GPTE.ai", url: "https://gpte.ai/submit-a-tool/", dr: 62, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
74
- { id: "dir-63", name: "AI Center", url: "https://aicenter.ai/submit", dr: 53, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
75
- { id: "dir-64", name: "AI Tools Directory", url: "https://aitoolsdirectory.com/submit-tool", dr: 63, category: "AI Directory", authType: "Direct Form + Email", autoSubmit: true },
76
- { id: "dir-65", name: "NextGenTools", url: "https://www.nxgntools.com/submit", dr: 55, category: "AI & SaaS", authType: "Magic Link (@postbuild.dev)", autoSubmit: true },
77
- { id: "dir-66", name: "BasedTools", url: "https://www.basedtools.ai/submit", dr: 54, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
78
- { id: "dir-67", name: "Tap4 AI", url: "https://tap4.ai/submit", dr: 58, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
79
- { id: "dir-68", name: "WaildWorld AI", url: "https://waildworld.com/submit", dr: 48, category: "AI Directory", authType: "Direct Form", autoSubmit: true },
80
- { id: "dir-69", name: "AgentLocker", url: "https://agentlocker.ai/submit", dr: 51, category: "AI Agents", authType: "Direct Form", autoSubmit: true },
81
- { id: "dir-70", name: "MCP.so Directory", url: "https://mcp.so/submit", dr: 64, category: "MCP & Agents", authType: "GitHub / Form", autoSubmit: false },
82
-
83
- // Tier 5: SaaS, Growth & Niche Directories (71-85)
84
- { id: "dir-71", name: "SaaSWorthy", url: "https://www.saasworthy.com/offerings", dr: 74, category: "SaaS Directory", authType: "Work Email (@postbuild.dev)", autoSubmit: true },
85
- { id: "dir-72", name: "GetApp / Capterra", url: "https://www.capterra.com/vendors/sign-up", dr: 90, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true },
86
- { id: "dir-73", name: "SoftwareSuggest", url: "https://www.softwaresuggest.com/vendors", dr: 76, category: "SaaS Directory", authType: "Email Verification", autoSubmit: true },
87
- { id: "dir-74", name: "GoodFirms", url: "https://www.goodfirms.co/get-listed", dr: 84, category: "Software Directory", authType: "Email Verification", autoSubmit: true },
88
- { id: "dir-75", name: "TrustRadius", url: "https://www.trustradius.com/vendor", dr: 85, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true },
89
- { id: "dir-76", name: "Serchen", url: "https://www.serchen.com/get-listed/", dr: 68, category: "Cloud & SaaS", authType: "Email Verification", autoSubmit: true },
90
- { id: "dir-77", name: "Cloudswave", url: "https://www.cloudswave.com", dr: 61, category: "Cloud SaaS", authType: "Direct Form", autoSubmit: true },
91
- { id: "dir-78", name: "Feedough Startups", url: "https://www.feedough.com/submit-your-startup/", dr: 69, category: "Startup Media", authType: "Direct Form", autoSubmit: true },
92
- { id: "dir-79", name: "EU-Startups Directory", url: "https://www.eu-startups.com/directory/", dr: 78, category: "Startup Directory", authType: "Email Verification", autoSubmit: true },
93
- { id: "dir-80", name: "F6S Startup Network", url: "https://www.f6s.com", dr: 83, category: "Founder Network", authType: "OTP (@postbuild.dev)", autoSubmit: true },
94
- { id: "dir-81", name: "Gust Startups", url: "https://gust.com", dr: 80, category: "Startup Platform", authType: "Email Verification", autoSubmit: true },
95
- { id: "dir-82", name: "IndieDeals", url: "https://indiedeals.co/submit", dr: 50, category: "Deals & Launch", authType: "Direct Form", autoSubmit: true },
96
- { id: "dir-83", name: "PitchWall", url: "https://pitchwall.co", dr: 65, category: "Product Pitch", authType: "Email Verification", autoSubmit: true },
97
- { id: "dir-84", name: "Land-book", url: "https://land-book.com/submit", dr: 73, category: "Landing Design", authType: "Direct Form", autoSubmit: true },
98
- { id: "dir-85", name: "OnePageLove", url: "https://onepagelove.com/submit", dr: 79, category: "Landing Showcase", authType: "Direct Form", autoSubmit: true }
99
- ];
100
-
101
- export function buildPrefilledDirectoryUrl(dir, launchKit) {
102
- try {
103
- const u = new URL(dir.url);
104
- const utmTarget = launchKit?.utmUrl || launchKit?.targetUrl || "https://postbuild.dev";
105
- const name = launchKit?.productName || "Postbuild";
106
- const tagline = launchKit?.tagline || "Ship code, automate SEO and directory dispatch";
107
-
108
- if (dir.url.includes("news.ycombinator.com/submit")) {
109
- u.searchParams.set("u", utmTarget);
110
- u.searchParams.set("t", `Show HN: ${name} – ${tagline}`);
111
- return u.toString();
112
- }
113
- u.searchParams.set("url", utmTarget);
114
- u.searchParams.set("name", name);
115
- u.searchParams.set("tagline", tagline);
116
- if (launchKit?.makerEmail) {
117
- u.searchParams.set("email", launchKit.makerEmail);
118
- }
119
- return u.toString();
120
- } catch {
121
- return dir.url;
122
- }
123
- }
1
+ // Complete 85-Directory Database for Postbuild (postbuild.dev)
2
+ // Every entry points to a direct submission form path or native URL-prefillable launch endpoint (zero root homepages or dead domains).
3
+
4
+ export const DIRECTORIES = [
5
+ // Tier 1: Flagship Launch Boards & URL-Prefillable Communities (1-15)
6
+ { id: "dir-01", name: "Hacker News (Show HN)", url: "https://news.ycombinator.com/submit", dr: 92, category: "Developer Community", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
7
+ { id: "dir-02", name: "Reddit r/SideProject", url: "https://www.reddit.com/r/SideProject/submit", dr: 91, category: "Launch Board", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
8
+ { id: "dir-03", name: "Product Hunt", url: "https://www.producthunt.com/posts/new", dr: 91, category: "Launch Board", authType: "OAuth / Magic Link", autoSubmit: false, prefillMode: "clipboard_form" },
9
+ { id: "dir-04", name: "BetaList", url: "https://betalist.com/submissions/new", dr: 76, category: "Early Adopters", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
10
+ { id: "dir-05", name: "SaaSHub", url: "https://www.saashub.com/submit", dr: 77, category: "Software Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
11
+ { id: "dir-06", name: "AlternativeTo", url: "https://alternativeto.net/add-application/", dr: 86, category: "Software Discovery", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
12
+ { id: "dir-07", name: "There's An AI For That", url: "https://theresanaiforthat.com/submit/", dr: 82, category: "AI Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
13
+ { id: "dir-08", name: "FutureTools.io", url: "https://futuretools.io/submit-a-tool", dr: 75, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
14
+ { id: "dir-09", name: "Indie Hackers Launch", url: "https://www.indiehackers.com/new-post", dr: 81, category: "Indie SaaS", authType: "Email Link", autoSubmit: true, prefillMode: "clipboard_form" },
15
+ { id: "dir-10", name: "Toolify.ai", url: "https://www.toolify.ai/submit", dr: 74, category: "AI Directory", authType: "Direct Form + Email", autoSubmit: true, prefillMode: "clipboard_form" },
16
+ { id: "dir-11", name: "G2 Software", url: "https://www.g2.com/products/new", dr: 90, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
17
+ { id: "dir-12", name: "Reddit r/indiehackers", url: "https://www.reddit.com/r/indiehackers/submit", dr: 91, category: "Indie SaaS", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
18
+ { id: "dir-13", name: "SourceForge", url: "https://sourceforge.net/create/", dr: 91, category: "Developer Tools", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
19
+ { id: "dir-14", name: "Slashdot Submission", url: "https://slashdot.org/submission", dr: 89, category: "Developer Community", authType: "URL Prefill Form", autoSubmit: true, prefillMode: "url_params" },
20
+ { id: "dir-15", name: "StackShare", url: "https://stackshare.io/submit", dr: 82, category: "Developer Stack", authType: "GitHub / Email", autoSubmit: false, prefillMode: "clipboard_form" },
21
+
22
+ // Tier 2: Developer, CLI & Open-Source Directories (16-30)
23
+ { id: "dir-16", name: "DevHunt", url: "https://devhunt.org/login", dr: 68, category: "Developer Tools", authType: "GitHub / Email", autoSubmit: false, prefillMode: "clipboard_form" },
24
+ { id: "dir-17", name: "OpenAlternative", url: "https://openalternative.co/submit", dr: 66, category: "Open Source", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
25
+ { id: "dir-18", name: "Console.dev", url: "https://console.dev/selection-criteria", dr: 69, category: "Developer Tools", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
26
+ { id: "dir-19", name: "Lobste.rs", url: "https://lobste.rs/stories/new", dr: 76, category: "Developer Community", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
27
+ { id: "dir-20", name: "Awesome Indie (GitHub)", url: "https://github.com/mezod/awesome-indie/issues/new", dr: 96, category: "Open Source", authType: "URL Prefill Issue", autoSubmit: false, prefillMode: "url_params" },
28
+ { id: "dir-21", name: "Free-for-Dev (GitHub)", url: "https://github.com/ripienaar/free-for-dev/pulls", dr: 96, category: "Developer Tools", authType: "GitHub PR", autoSubmit: false, prefillMode: "clipboard_form" },
29
+ { id: "dir-22", name: "Dev.to Launch Post", url: "https://dev.to/new", dr: 88, category: "Developer Feed", authType: "Account Session", autoSubmit: false, prefillMode: "clipboard_form" },
30
+ { id: "dir-23", name: "Hashnode Launch Story", url: "https://hashnode.com/create/story", dr: 84, category: "Developer Feed", authType: "Account Session", autoSubmit: false, prefillMode: "clipboard_form" },
31
+ { id: "dir-24", name: "Reddit r/devtools", url: "https://www.reddit.com/r/devtools/submit", dr: 91, category: "Developer Tools", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
32
+ { id: "dir-25", name: "Reddit r/opensource", url: "https://www.reddit.com/r/opensource/submit", dr: 91, category: "Open Source", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
33
+ { id: "dir-26", name: "Reddit r/commandline", url: "https://www.reddit.com/r/commandline/submit", dr: 91, category: "CLI & Terminal", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
34
+ { id: "dir-27", name: "Reddit r/selfhosted", url: "https://www.reddit.com/r/selfhosted/submit", dr: 91, category: "Self-Hosted / Dev", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
35
+ { id: "dir-28", name: "Selfh.st", url: "https://selfh.st/submit/", dr: 62, category: "Self-Hosted / Dev", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
36
+ { id: "dir-29", name: "Reddit r/coolgithubprojects", url: "https://www.reddit.com/r/coolgithubprojects/submit", dr: 91, category: "Open Source", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
37
+ { id: "dir-30", name: "TerminalTrove", url: "https://terminaltrove.com/submit/", dr: 58, category: "CLI & Terminal", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
38
+
39
+ // Tier 3: Indie Launch & Maker Platforms (31-50)
40
+ { id: "dir-31", name: "Uneed.best", url: "https://www.uneed.best/submit-a-tool", dr: 64, category: "Indie Launch", authType: "Magic Link (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
41
+ { id: "dir-32", name: "MicroLaunch", url: "https://microlaunch.net/premium", dr: 59, category: "Indie Launch", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
42
+ { id: "dir-33", name: "TinyLaunch", url: "https://www.tinylaunch.com/submit", dr: 54, category: "Indie Launch", authType: "Direct Form + Email", autoSubmit: true, prefillMode: "clipboard_form" },
43
+ { id: "dir-34", name: "Launching Next", url: "https://www.launchingnext.com/submit/", dr: 67, category: "Startup Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
44
+ { id: "dir-35", name: "SideProjectors", url: "https://www.sideprojectors.com/project/submit", dr: 62, category: "Side Projects", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
45
+ { id: "dir-36", name: "StartupBase", url: "https://startupbase.io/submit", dr: 61, category: "Startup Directory", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
46
+ { id: "dir-37", name: "Peerlist Launchpad", url: "https://peerlist.io/launchpad", dr: 74, category: "Maker Network", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
47
+ { id: "dir-38", name: "Reddit r/MicroSaaS", url: "https://www.reddit.com/r/MicroSaaS/submit", dr: 91, category: "Indie SaaS", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
48
+ { id: "dir-39", name: "Fazier", url: "https://fazier.com/launch", dr: 56, category: "Indie Launch", authType: "Magic Link (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
49
+ { id: "dir-40", name: "Reddit r/SaaS", url: "https://www.reddit.com/r/SaaS/submit", dr: 91, category: "SaaS Directory", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
50
+ { id: "dir-41", name: "Reddit r/AlphaAndBetaUsers", url: "https://www.reddit.com/r/AlphaAndBetaUsers/submit", dr: 91, category: "Early Adopters", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
51
+ { id: "dir-42", name: "Reddit r/roastmystartup", url: "https://www.reddit.com/r/roastmystartup/submit", dr: 91, category: "Startup Reviews", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
52
+ { id: "dir-43", name: "StartupBuffer", url: "https://startupbuffer.com/site/submit", dr: 60, category: "Startup Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
53
+ { id: "dir-44", name: "StartupStash", url: "https://startupstash.com/add-listing/", dr: 72, category: "Startup Resources", authType: "Direct Form + Email", autoSubmit: true, prefillMode: "clipboard_form" },
54
+ { id: "dir-45", name: "KillerStartups", url: "https://killerstartups.com/submit-startup/", dr: 71, category: "Startup Reviews", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
55
+ { id: "dir-46", name: "Reddit r/EntrepreneurRideAlong", url: "https://www.reddit.com/r/EntrepreneurRideAlong/submit", dr: 91, category: "Indie Founders", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
56
+ { id: "dir-47", name: "Reddit r/startups", url: "https://www.reddit.com/r/startups/submit", dr: 91, category: "Startup Community", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
57
+ { id: "dir-48", name: "NoCodeList", url: "https://nocodelist.co/submit", dr: 57, category: "Modern Software", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
58
+ { id: "dir-49", name: "X / Twitter Launch Post", url: "https://x.com/intent/tweet", dr: 94, category: "Launch Social", authType: "URL Prefill Intent", autoSubmit: false, prefillMode: "url_params" },
59
+ { id: "dir-50", name: "Bluesky Launch Post", url: "https://bsky.app/intent/compose", dr: 88, category: "Launch Social", authType: "URL Prefill Intent", autoSubmit: false, prefillMode: "url_params" },
60
+
61
+ // Tier 4: AI, Agent & MCP Directories (51-70)
62
+ { id: "dir-51", name: "TopAI.tools", url: "https://topai.tools/submit", dr: 69, category: "AI Directory", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
63
+ { id: "dir-52", name: "ToolPilot.ai", url: "https://www.toolpilot.ai/pages/submit-your-ai-tool", dr: 58, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
64
+ { id: "dir-53", name: "Easy With AI", url: "https://easywithai.com/submit-tool/", dr: 66, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
65
+ { id: "dir-54", name: "FindMyAITool", url: "https://findmyaitool.com/submit-tool", dr: 61, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
66
+ { id: "dir-55", name: "Insidr.ai", url: "https://www.insidr.ai/submit-tools/", dr: 65, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
67
+ { id: "dir-56", name: "AI Valley", url: "https://aivalley.ai/submit-tool/", dr: 57, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
68
+ { id: "dir-57", name: "The Rundown Supertools", url: "https://www.therundown.ai/submit", dr: 78, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
69
+ { id: "dir-58", name: "AITools.fyi (Tally Form)", url: "https://tally.so/r/2EkV4g", dr: 62, category: "AI Directory", authType: "URL Prefill Form", autoSubmit: true, prefillMode: "url_params" },
70
+ { id: "dir-59", name: "Awesome AI Tools (GitHub)", url: "https://github.com/mahseema/awesome-ai-tools/issues/new", dr: 96, category: "AI Directory", authType: "URL Prefill Issue", autoSubmit: false, prefillMode: "url_params" },
71
+ { id: "dir-60", name: "AIxploria", url: "https://www.aixploria.com/en/featured-on-aixploria/", dr: 71, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
72
+ { id: "dir-61", name: "SaaS AI Tools", url: "https://saasaitools.com/join/", dr: 59, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
73
+ { id: "dir-62", name: "AI Agents Directory", url: "https://aiagentsdirectory.com/submit-agent", dr: 60, category: "AI Agents", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
74
+ { id: "dir-63", name: "AI Agents List", url: "https://aiagentslist.com/submit", dr: 56, category: "AI Agents", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
75
+ { id: "dir-64", name: "AI Tools Directory", url: "https://aitoolsdirectory.com/submit-tool", dr: 63, category: "AI Directory", authType: "Direct Form + Email", autoSubmit: true, prefillMode: "clipboard_form" },
76
+ { id: "dir-65", name: "Glama MCP Servers", url: "https://glama.ai/mcp/servers", dr: 68, category: "MCP & Agents", authType: "GitHub / Form", autoSubmit: false, prefillMode: "clipboard_form" },
77
+ { id: "dir-66", name: "BasedTools", url: "https://www.basedtools.ai/submit", dr: 54, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
78
+ { id: "dir-67", name: "Tap4 AI", url: "https://tap4.ai/submit/", dr: 58, category: "AI Directory", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
79
+ { id: "dir-68", name: "PulseMCP Directory", url: "https://pulsemcp.com/submit", dr: 61, category: "MCP & Agents", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
80
+ { id: "dir-69", name: "Reddit r/ChatGPTCoding", url: "https://www.reddit.com/r/ChatGPTCoding/submit", dr: 91, category: "AI & Coding", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
81
+ { id: "dir-70", name: "MCP.so Directory", url: "https://mcp.so/submit?type=server", dr: 64, category: "MCP & Agents", authType: "GitHub / Form", autoSubmit: false, prefillMode: "clipboard_form" },
82
+
83
+ // Tier 5: SaaS, B2B & Landing Showcase Directories (71-85)
84
+ { id: "dir-71", name: "SaaSWorthy", url: "https://www.saasworthy.com/offerings", dr: 74, category: "SaaS Directory", authType: "Work Email (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
85
+ { id: "dir-72", name: "GetApp / Capterra", url: "https://www.capterra.com/vendors/sign-up", dr: 90, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
86
+ { id: "dir-73", name: "SoftwareSuggest", url: "https://www.softwaresuggest.com/vendors", dr: 76, category: "SaaS Directory", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
87
+ { id: "dir-74", name: "GoodFirms", url: "https://www.goodfirms.co/get-listed", dr: 84, category: "Software Directory", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
88
+ { id: "dir-75", name: "TrustRadius", url: "https://www.trustradius.com/vendor", dr: 85, category: "B2B Software", authType: "Work Email (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
89
+ { id: "dir-76", name: "Serchen", url: "https://www.serchen.com/get-listed", dr: 68, category: "Cloud & SaaS", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
90
+ { id: "dir-77", name: "Crunchbase Add Company", url: "https://www.crunchbase.com/add-new", dr: 91, category: "Startup Directory", authType: "Work Email (@postbuild.dev)", autoSubmit: false, prefillMode: "clipboard_form" },
91
+ { id: "dir-78", name: "Feedough Startups", url: "https://www.feedough.com/submit-your-startup/", dr: 69, category: "Startup Media", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
92
+ { id: "dir-79", name: "EU-Startups Directory", url: "https://www.eu-startups.com/directory/", dr: 78, category: "Startup Directory", authType: "Email Verification", autoSubmit: true, prefillMode: "clipboard_form" },
93
+ { id: "dir-80", name: "F6S Startup Network", url: "https://www.f6s.com/companies", dr: 83, category: "Founder Network", authType: "OTP (@postbuild.dev)", autoSubmit: true, prefillMode: "clipboard_form" },
94
+ { id: "dir-81", name: "Reddit r/InternetIsBeautiful", url: "https://www.reddit.com/r/InternetIsBeautiful/submit", dr: 91, category: "Web Showcase", authType: "URL Prefill + Account", autoSubmit: false, prefillMode: "url_params" },
95
+ { id: "dir-82", name: "Landingfolio", url: "https://www.landingfolio.com/submit", dr: 72, category: "Landing Design", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
96
+ { id: "dir-83", name: "Minimal Gallery", url: "https://minimal.gallery/submit/", dr: 68, category: "Landing Design", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
97
+ { id: "dir-84", name: "Land-book", url: "https://land-book.com/submit", dr: 73, category: "Landing Design", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" },
98
+ { id: "dir-85", name: "OnePageLove", url: "https://onepagelove.com/submit", dr: 79, category: "Landing Showcase", authType: "Direct Form", autoSubmit: true, prefillMode: "clipboard_form" }
99
+ ];
100
+
101
+ export function buildPrefilledDirectoryUrl(dir, launchKit) {
102
+ try {
103
+ const u = new URL(dir.url);
104
+ const utmTarget = launchKit?.utmUrl || launchKit?.targetUrl || "https://postbuild.dev";
105
+ const cleanTarget = launchKit?.targetUrl || utmTarget.split("?")[0] || "https://postbuild.dev";
106
+ const name = launchKit?.productName || "Postbuild";
107
+ const tagline = launchKit?.tagline || "Ship code, automate SEO and directory dispatch";
108
+ const shortPitch = launchKit?.shortPitch || `${name} — ${tagline}`;
109
+ const headline = `${name} – ${tagline}`;
110
+
111
+ // 1. Hacker News (Show HN) — natively reads ?u= and ?t=
112
+ if (dir.url.includes("news.ycombinator.com/submit")) {
113
+ u.searchParams.set("u", cleanTarget);
114
+ u.searchParams.set("t", launchKit?.showHnTitle || `Show HN: ${headline}`);
115
+ return u.toString();
116
+ }
117
+
118
+ // 2. Reddit Subreddit Submit — natively reads ?url= and ?title=
119
+ if (dir.url.includes("reddit.com/r/") && dir.url.endsWith("/submit")) {
120
+ u.searchParams.set("url", cleanTarget);
121
+ u.searchParams.set("title", `${headline}`);
122
+ return u.toString();
123
+ }
124
+
125
+ // 3. Lobste.rs — natively reads ?url= and ?title=
126
+ if (dir.url.includes("lobste.rs/stories/new")) {
127
+ u.searchParams.set("url", cleanTarget);
128
+ u.searchParams.set("title", headline);
129
+ return u.toString();
130
+ }
131
+
132
+ // 4. Slashdot — natively reads ?url=, ?subj=, and ?story=
133
+ if (dir.url.includes("slashdot.org/submission")) {
134
+ u.searchParams.set("url", cleanTarget);
135
+ u.searchParams.set("subj", headline);
136
+ u.searchParams.set("story", shortPitch);
137
+ return u.toString();
138
+ }
139
+
140
+ // 5. GitHub Issue Submission (Awesome Lists) — natively reads ?title= and ?body=
141
+ if (dir.url.includes("github.com/") && dir.url.endsWith("/issues/new")) {
142
+ u.searchParams.set("title", `Add ${name} – ${tagline}`);
143
+ u.searchParams.set(
144
+ "body",
145
+ `### Product Name\n${name}\n\n### URL\n${cleanTarget}\n\n### Tagline\n${tagline}\n\n### Description\n${shortPitch}\n\n### Markdown Entry\n- [${name}](${cleanTarget}) - ${tagline}`
146
+ );
147
+ return u.toString();
148
+ }
149
+
150
+ // 6. X / Twitter Intent — natively reads ?text= and ?url=
151
+ if (dir.url.includes("x.com/intent/tweet")) {
152
+ u.searchParams.set("text", `Just launched ${name} — ${tagline}\n\n${shortPitch}`);
153
+ u.searchParams.set("url", utmTarget);
154
+ return u.toString();
155
+ }
156
+
157
+ // 7. Bluesky Compose Intent — natively reads ?text=
158
+ if (dir.url.includes("bsky.app/intent/compose")) {
159
+ u.searchParams.set("text", `Just launched ${name} — ${tagline}\n\n${shortPitch}\n\n${utmTarget}`);
160
+ return u.toString();
161
+ }
162
+
163
+ // 8. Tally Form — supports query field prefill
164
+ if (dir.url.includes("tally.so/r/")) {
165
+ u.searchParams.set("name", name);
166
+ u.searchParams.set("url", utmTarget);
167
+ u.searchParams.set("tagline", tagline);
168
+ u.searchParams.set("description", shortPitch);
169
+ if (launchKit?.makerEmail) u.searchParams.set("email", launchKit.makerEmail);
170
+ return u.toString();
171
+ }
172
+
173
+ // For standalone web forms that do not parse arbitrary query params, return the clean direct form URL
174
+ // so we never trigger WAF blocks or homepage redirects.
175
+ return dir.url;
176
+ } catch {
177
+ return dir.url;
178
+ }
179
+ }