PageSourceSearch

https://startupbase.io/login

html startupbase.io collected 2026-10-03 23:28:37 UTC 21,381 bytes, 478 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5    <!-- Required meta tags -->
6    <meta charset="utf-8">
7    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8    
9    <title>Sign in or create your account | StartupBase</title>
10
11    <!-- CSRF Protection -->
12    <meta name="_csrf" content="q_hmYfRU1UFlqbBoPkIG0iSTw4UxrBkShzTKXWKTblwKXzJuk5wEU8UxtCJImYENX28y5Eer7uQAlHg_twf6aleiWGg9bQda" />
13    <meta name="_csrf_header" content="X-XSRF-TOKEN" />
14
15    
16    
17    <meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
18
19    <link rel="canonical" href="https://startupbase.io/login">
20    <link rel="alternate" type="application/rss+xml" title="StartupBase Blog RSS" href="/rss.xml">
21    <link rel="alternate" type="application/atom+xml" title="StartupBase Blog Atom" href="/atom.xml">
22
23    
24    
24<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://startupbase.io/#organization","name":"StartupBase","alternateName":"StartupBase.io","url":"https://startupbase.io","foundingDate":"2017","founder":{"@type":"Person","@id":"https://startupbase.io/#founder","name":"Atta","url":"https://attacomsian.com","sameAs":["https://x.com/attacomsian"]},"description":"StartupBase is a product launch platform and Product Hunt alternative where founders, indie makers, and AI tool creators launch products, get discovered by early adopters, and build long-term visibility.","logo":{"@type":"ImageObject","@id":"https://startupbase.io/#logo","url":"https://startupbase.io/img/ico/web-app-manifest-512x512.png"},"knowsAbout":["Product launches","Startup discovery","SaaS products","AI tools","Indie makers","Product Hunt alternatives"],"sameAs":["https://x.com/startupbaseio","https://www.instagram.com/startupbaseio","https://www.threads.net/@startupbaseio","https://www.linkedin.com/company/startupbaseio"],"contactPoint":{"@type":"ContactPoint","contactType":"customer support","email":"[email protected]"}},{"@type":"WebSite","@id":"https://startupbase.io/#website","name":"StartupBase","url":"https://startupbase.io","publisher":{"@id":"https://startupbase.io/#organization"}}]}</script>
24
25
26    
27            <link rel="preconnect" href="https://statics.startupbase.io">
28            <link rel="preconnect" href="https://fonts.googleapis.com">
29            <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
30            <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
31
32            <!-- Bootstrap Fonts -->
33            <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css"
34                  rel="preload" as="style">
35            <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css"
36                  rel="stylesheet" media="print" onload="this.media='all'">
37
38            <!-- Google Fonts -->
39            <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&amp;family=Geist:ital,wght@0,100..900;1,100..900&amp;family=Geist+Mono:[email protected]&amp;family=Caveat:[email protected]&amp;family=Zeyada&amp;family=Courgette&amp;display=swap"
40                  rel="preload" as="style">
41            <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&amp;family=Geist:ital,wght@0,100..900;1,100..900&amp;family=Geist+Mono:[email protected]&amp;
41family=Caveat:[email protected]&amp;family=Zeyada&amp;family=Courgette&amp;display=swap"
42                  rel="stylesheet" media="print" onload="this.media='all'">
43
44            <noscript>
45                  <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css"
46                        rel="stylesheet" media="all">
47                  <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&amp;family=Geist:ital,wght@0,100..900;1,100..900&amp;family=Geist+Mono:[email protected]&amp;family=Caveat:[email protected]&amp;family=Zeyada&amp;family=Courgette&amp;display=swap"
48                        rel="stylesheet" media="all">
49            </noscript>
50
51            <!--Custom Styles-->
52            <link href="/css/styles.min.1790567378260.css"
53                  rel="stylesheet" media="all">
54      
55    
56        <link rel="icon" type="image/png" href="/img/ico/favicon-96x96.png" sizes="96x96" />
57        <link rel="icon" type="image/svg+xml" href="/img/ico/favicon.svg" />
58        <link rel="shortcut icon" href="/img/ico/favicon.ico" />
59        <link rel="apple-touch-icon" sizes="180x180" href="/img/ico/apple-touch-icon.png" />
60        <meta name="apple-mobile-web-app-title" content="StartupBase" />
61        <link rel="manifest" href="/img/ico/site.webmanifest" />
62    
63    
64        <!-- Google tag (gtag.js) -->
vendor: 73 bytes, lines 64-65
64
65        <script async src="https://www.googletagmanager.com/gtag/js?id=
65G-PFVLSPPFCH
vendor: 21 bytes, lines 65-66
65"></script>
66        
66<script>
67            
vendor: 164 bytes, lines 67-71
67window.dataLayer = window.dataLayer || [];
68            function gtag(){dataLayer.push(arguments);}
69            gtag('js', new Date());
70
71            gtag('config', '
71G-PFVLSPPFCH
vendor: 17 bytes, lines 71-73
71');
72
73            
73window.startupBaseAnalytics = (function () {
74                function toSnakeCase(value) {
75                    return String(value || "")
76                        .replace(/^[A-Z]/, function (match) {
77                            return match.toLowerCase();
78                        })
79                        .replace(/[A-Z]/g, function (match) {
80                            return "_" + match.toLowerCase();
81                        });
82                }
83
84                function normalizeValue(value) {
85                    if (typeof value !== "string") {
86                        return value;
87                    }
88
89                    const trimmed = value.trim();
90                    if (trimmed === "true") {
91                        return true;
92                    }
93                    if (trimmed === "false") {
94                        return false;
95                    }
96                    if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
97                        return Number(trimmed);
98                    }
99
100                    return trimmed.substring(0, 120);
101                }
102
103                function cleanParams(params) {
104                    const cleaned = {};
105                    Object.keys(params || {}).forEach(function (key) {
106                        const value = params[key];
107                        if (value === undefined || value === null || value === "") {
108                            return;
109                        }
110                        cleaned[key] = normalizeValue(value);
111                    });
112                    return cleaned;
113                }
114
115                function readJsonParams(value) {
116                    if (!value) {
117                        return {};
118                    }
119
120                    try {
121                        const parsed = JSON.parse(value);
122                        return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
123                    } catch (_error) {
124                        return {};
125                    }
126                }
127
128                function elementText(element) {
129                    const text = element.getAttribute("aria-label")
130                        || element.getAttribute("title")
131                        || element.innerText
132                        || element.value
133                        || "";
134
135                    return String(text).replace(/\s+/g, " ").trim().substring(0, 120);
136                }
137
138                function addLinkParams(element, params) {
139                    const href = element.getAttribute("href");
140                    if (!href || href.indexOf("#") === 0) {
141                        return;
142                    }
143
144                    if (href.indexOf("mailto:") === 0) {
145                        params.link_domain = "email";
146                        params.outbound = true;
147                        return;
148                    }
149
150                    try {
151                        const url = new URL(href, window.location.href);
152                        params.link_domain = url.hostname;
153                        params.outbound = url.origin !== window.location.origin;
154                        if (url.origin === window.location.origin) {
155                            params.link_path = url.pathname;
156                        }
157                    } catch (_error) {
158                        // Ignore malformed href values.
159                    }
160                }
161
162                function elementParams(element) {
163                    const params = {
164                        page_path: window.location.pathname
165                    };
166
167                    if (element.id) {
168                        params.element_id = element.id;
169                    }
170
171                    const text = elementText(element);
172                    if (text) {
173                        params.element_text = text;
174                    }
175
176                    if (element.dataset.network) {
177                        params.network = element.dataset.network;
178                    }
179
180                    addLinkParams(element, params);
181
182                    Object.keys(element.dataset || {}).forEach(function (key) {
183                        if (key === "gaEvent" || key === "gaSubmitEvent" || key === "gaParams") {
184                            return;
185                        }
186                        if (key.indexOf("ga") !== 0 || key.length <= 2) {
187                            return;
188                        }
189
190                        params[toSnakeCase(key.substring(2))] = element.dataset[key];
191                    });
192
193                    return Object.assign(params, readJsonParams(element.dataset.gaParams));
194                }
195
196                function track(eventName, params) {
197                    const name = String(eventName || "").trim();
198                    if (!name || typeof gtag !== "function") {
199                        return;
200                    }
201
202                    const payload = cleanParams(params);
203                    if (!payload.transport_type) {
204                        payload.transport_type = "beacon";
205                    }
206
207                    gtag("event", name, payload);
208                }
209
210                document.addEventListener("click", function (event) {
211                    const target = event.target && event.target.closest
212                        ? event.target.closest("[data-ga-event]")
213                        : null;
214
215                    if (!target || target.disabled) {
216                        return;
217                    }
218
219                    track(target.dataset.gaEvent, elementParams(target));
220                }, true);
221
222                document.addEventListener("submit", function (event) {
223                    const target = event.target && event.target.matches && event.target.matches("[data-ga-submit-event]")
224                        ? event.target
225                        : null;
226
227                    if (!target) {
228                        return;
229                    }
230
231                    track(target.dataset.gaSubmitEvent, elementParams(target));
232                }, true);
233
234                return {
235                    track: track
236                };
237            })();
238        </script>
238
239    
240
241    <meta name="msvalidate.01" content="3DB770F4A810C935BDEFF665F0D70536" />
242    <meta name="p:domain_verify" content="51e7ec6d6d985d4e7a911f52c0666434" />
243    
244    
245        <meta name="description" content="Sign in to StartupBase, or create an account with Google, LinkedIn, or X to launch your product." />
246
247        <meta name="twitter:card" content="summary_large_image" />
248        <meta name="twitter:site" content="@startupbaseio" />
249        <meta name="twitter:creator" content="@startupbaseio" />
250        <meta name="twitter:title" content="Sign in or create your account | StartupBase" />
251        <meta name="twitter:description" content="Sign in to StartupBase, or create an account with Google, LinkedIn, or X to launch your product." />
252        <meta name="twitter:image" content="https://startupbase.io/img/banner.png?v4" />
253
254        <meta property="og:title" content="Sign in or create your account | StartupBase" />
255        <meta property="og:description" content="Sign in to StartupBase, or create an account with Google, LinkedIn, or X to launch your product." />
256        <meta property="og:url" content="https://startupbase.io/login" />
257        <meta property="og:type" content="website" />
258        <meta property="og:site_name" content="startupbase.io" />
259        <meta property="og:image" content="https://startupbase.io/img/banner.png?v4" />
260    
261</head>
262
263<body
264    class="bg-gradient-lightest-warning">
265
266    <!--cookie consent-->
267    <!-- <div th:replace="~{fragments/cookies :: cookies}"></div> -->
268
269    <!--Exit Ghost Login-->
270    
271
272    
273
274    <nav class="navbar navbar-expand-lg navbar-light sticky-top bg-white py-3">
275        <div class="align-items-center container">
276            <a class="navbar-brand mr-0 mr-lg-4" href="/" aria-label="StartupBase">
277                <img src="/img/branding/icon.svg" alt="StartupBase" height="40" loading="lazy">
278            </a>
279            
280            <button aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"
281                class="navbar-toggler bg-transparent" data-target="#navbarNav" data-toggle="collapse" type="button">
282                <span data-lucide="text"></span>
283            </button>
284            <div class="collapse navbar-collapse" id="navbarNav">
285                
286                <ul class="navbar-nav d-lg-flex align-items-lg-center pt-0 ml-auto">
287                    <li class="nav-item mr-lg-3">
288                        <a class="btn btn-white border border-gray-200 btn-sm btn-pill mt-4 mt-lg-0"
289                            href="/login" data-ga-event="login_cta_clicked" data-ga-source="nav">
290                            <span class="icon svg-icon-xs mr-1">
291                                <i data-lucide="log-in"></i>
292                            </span>
293                            Login
294                        </a>
295                    </li>
296                    
297                    
298                    
299                    
300                    
301                    
302                    <li class="nav-item">
303                        <a class="btn btn-primary btn-sm btn-pill mt-4 mt-lg-0" href="/launch">
304                            <span class="icon svg-icon-xs mr-1">
305                                <i data-lucide="rocket"></i>
306                            </span>
307                            Launch
308                        </a>
309                    </li>
310                    
311                    
312                </ul>
313            </div>
314        </div>
315    </nav>
316
317    
318        <section class="py-5 py-md-7">
319            <div class="container">
320                <div class="row bg-pattern-7">
321                    <div class="col-md-8 col-lg-5 mx-auto">
322                        <div class="card">
323                            <div class="card-body">
324                                
325
326                                
327
328                                
329                                
330        <div id="login-social-panel">
331            <h3 class="text-center">Welcome to StartupBase</h3>
332            <p class="font-size-ml text-muted text-center mb-4">
333                Join a community of founders sharing their products and discovering what others
334                are building.
335            </p>
336
337            <div class="form-group mb-3">
338                <a href="/auth/google?origin=" class="btn btn-white flex-center-center">
339                    <img src="/img/svg/social/google.svg" width="20" height="20" class="mr-2" alt="Google">
340                    Continue with Google
341                </a>
342            </div>
343
344            <div class="form-group mb-3">
345                <a href="/auth/linkedin?origin=" class="btn btn-white flex-center-center">
346                    <img src="/img/svg/social/linkedin.svg" alt="LinkedIn" width="20" height="20" class="mr-2">
347                    Continue with LinkedIn
348                </a>
349            </div>
350
351            <div class="form-group mb-3">
352                <a href="/auth/x?origin=" class="btn btn-white flex-center-center">
353                    <img src="/img/svg/social/x.svg" alt="X" width="18" height="18" class="mr-2">
354                    Continue with X
355                </a>
356            </div>
357
358            <div class="form-group mb-2">
359                <button type="button" class="btn btn-white btn-block flex-center-center" id="continueWithEmailBtn">
360                    <img src="/img/svg/social/email.svg" alt="Email" width="20" height="20" class="mr-2">
361                    Sign in with Email
362                </button>
363            </div>
364
365            
366            <p class="font-size-sm text-muted text-center mb-0">
367                Email sign-in is for existing accounts. New here? Use Google, LinkedIn, or X above
368                &mdash; your account is created automatically.
369            </p>
370        </div>
371
372        <div class="d-none" id="login-email-panel">
373            <input type="hidden" id="login-email-origin" value="">
374
375            <div class="d-flex align-items-center justify-content-between mb-3">
376                <h4 class="mb-0">Continue with email</h4>
377                <button type="button" class="btn btn-link link-muted font-weight-medium p-0 font-size-sm"
378                    id="backToSocialBtn">
379                    <em class="bi bi-chevron-left mr-1"></em> Back
380                </button>
381            </div>
382
383            <p class="font-size-base text-muted mb-4" id="loginEmailRequestIntro">
384                Enter the email address on your existing account and we'll send you a one-time
385                sign-in code. This does not create an account &mdash; to sign up, go back and
386                continue with Google, LinkedIn, or X.
387            </p>
388
389            <p class="font-size-base text-muted mb-4 d-none" id="loginEmailVerify
389Intro">
390                Enter the verification code we sent to your email address.
391            </p>
392
393            <div id="login-email-notify"></div>
394
395            <div id="login-email-request-step">
396                <form id="loginEmailRequestForm">
397                    <div class="form-group">
398                        <label for="login-email-address">Email address</label>
399                        <input type="email" class="form-control" id="login-email-address" autocomplete="email"
400                            placeholder="[email protected]">
401                    </div>
402
403                    <button type="submit" class="btn btn-primary btn-block" id="loginEmailRequestBtn">
404                        Continue with Email
405                    </button>
406                </form>
407            </div>
408
409            <div class="d-none" id="login-email-verify-step">
410                <form id="loginEmailVerifyForm">
411                    <div class="form-group">
412                        <label for="login-email-otp">Verification code</label>
413                        <input type="text" class="form-control" id="login-email-otp" inputmode="numeric"
414                            autocomplete="one-time-code" maxlength="6" placeholder="Enter verification code">
415                    </div>
416
417                    <button type="submit" class="btn btn-primary btn-block" id="loginEmailVerifyBtn">
418                        Verify and Continue
419                    </button>
420                </form>
421
422                <div class="text-center mt-3">
423                    <a href="#" class="border-link link-muted font-size-sm" id="loginEmailResendBtn">
424                        Resend code
425                    </a>
426                </div>
427            </div>
428        </div>
429
430        <p class="font-size-sm pt-4 text-center mb-0">
431            By continuing, you agree to our
432            <a href="/terms" class="border-link font-weight-medium" target="_blank">Terms
433                of
434                Service</a>
435            & <a href="/privacy" class="border-link font-weight-medium" target="_blank">Privacy
436                Policy</a>.
437        </p>
438    
439                            </div>
440                        </div>
441                    </div>
442                </div>
443            </div>
444        </section>
445    
446
447    
448
449    
450
451    
452    
453
454    <!-- Scroll Top -->
455    <div class="scroll-top bg-primary rounded-circle">
456        <i class="bi bi-arrow-up" aria-hidden="true"></i>
457    </div>
458
459    
460        
460<script defer src="/js/scripts.min.1790567378260.js?v=1790567422256"></script>
460
461    
462    
463    
464        
464<script>
465            (function () {
466                window.onload = function () {
467                    // Logout All
468                    if ($('#logoutAll').length > 0 || $('#expiredAlert').length > 0) {
469                        localStorage.setItem('logout-event', 'logout' + Math.random());
470                    }
471                }
472            })()
473        </script>
473
474    
475<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"61b2839f2f8244888b21b582c1fc1b24","r":1,"spa":2}' crossorigin="anonymous"></script>
475
476</body>
477
478</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.