diff --git a/docs/SUBMISSIONS.md b/docs/SUBMISSIONS.md index 3ac747c..1ea88c6 100644 --- a/docs/SUBMISSIONS.md +++ b/docs/SUBMISSIONS.md @@ -17,6 +17,12 @@ or the post goes live. Newest first. | Date | Venue (website) | Submission URL (PR/post) | Listing URL (when live) | Status | |------|-----------------|--------------------------|-------------------------|--------| +| 2026-07-30 | _auto-run 17:17 UTC_ | 1 PR: [#54 merklefruit/SaaS4Devs](https://github.com/merklefruit/SaaS4Devs/pull/54) | bytefer/awesome-shadcn-ui ([PR #29 merged](https://github.com/bytefer/awesome-shadcn-ui/pull/29) β†’ [live `## Saas`](https://github.com/bytefer/awesome-shadcn-ui#saas)) | `[x]` **πŸŽ‰ FIRST LIVE LISTING** β€” bytefer/awesome-shadcn-ui **PR #29 merged 2026-07-30 01:29 UTC** (Saas table). Opened **1 external PR** (cap ≀3): **merklefruit/SaaS4Devs** β†’ [#54](https://github.com/merklefruit/SaaS4Devs/pull/54) (`### Complete Full-stack Boilerplates`, appended after Nextless JS, `Name β€” Tech β€” Price` format; only Next.js 15 + shadcn entry). SaaS4Devs β˜…748/MIT/no AI-ban; flagged "unmaintained" **but merges outside PRs** (#36,#34 2026-02; steady since 2021) β†’ actionable. **0 emails** β€” fresh research sweep (awesome-turborepo/postgres/vercel/monorepo/authentication/typescript/react-boilerplate/saas/indiehackers/startup/fullstack) found **no public tip email inviting submissions**: **casdoor/awesome-auth** β˜…537 is *auth-libraries-by-language* (wrong category; 6/8 last PRs closed-unmerged) β†’ **skipped**; RunaCapital/awesome-oss-alternatives (19kβ˜…, "OSS alternatives to SaaS" β€” wrong category + dormant >6mo); johackim/awesome-indiehackers (resources list, no tools/templates section); korfuri/awesome-monorepo dormant 2024-08; all others dormant/>6mo/wrong-ecosystem (Nuxt/Vue/Flutter)/dup-of-already-staged. **Pending PRs unchanged:** xcomptek #222 (open), EinGuterWaran #52 (open), unicodeveloper #536 (open/stalled), birobirobiro #554 (open). **No paid venues, no manual tier additions this run.** **Wrap-up PR this run also lands all accumulated 07-19β†’07-29 research to `main`** (origin/main was stale at 94 lines β€” prior wrap-up PRs never merged; this branch builds on `submissions/auto-20260729-1717` which carries the full 139-line research). | +| 2026-07-29 | _auto-run 17:17 UTC_ | 3 PRs: [#222 xcomptek](https://github.com/xcomptek/awesome-saas-boilerplates/pull/222), [#52 EinGuterWaran](https://github.com/EinGuterWaran/awesome-opensource-boilerplates/pull/52), [#29 bytefer](https://github.com/bytefer/awesome-shadcn-ui/pull/29) | β€” (pending merge) | `[~]` **GH_TOKEN FIXED** (login `bucabay`, scopes incl. `repo`/`workflow`) β€” ends the **6-run / 10-day block** (401 since 2026-07-19). Opened **3 external PRs** (cap ≀3) from forks, each a clean 1-line diff, entry verified absent, no AI-PR ban, personalized body: **xcomptek/awesome-saas-boilerplates** β†’ [#222](https://github.com/xcomptek/awesome-saas-boilerplates/pull/222) (`## Next.js`, alphabetical LaunchFa.st↔Mkdirs); **EinGuterWaran/awesome-opensource-boilerplates** β†’ [#52](https://github.com/EinGuterWaran/awesome-opensource-boilerplates/pull/52) (`### React & Next.js`, appended); **bytefer/awesome-shadcn-ui** β†’ [#29](https://github.com/bytefer/awesome-shadcn-ui/pull/29) (`## Saas` table row). Forks: bucabay/{awesome-saas-boilerplates, awesome-opensource-boilerplates, awesome-shadcn-ui-1}. **officialrajdeepsingh DOWNGRADED β†’ MANUAL:** CONTRIBUTING requires **β‰₯100β˜…** + bans **new projects**; mailkite/saas-startup is **0β˜…, created 2026-07-15** β†’ fails both (escape clause β€œif unique, may submit” β‡’ human pitch only). **0 emails** β€” all awesome-lists are PR-based; dev newsletters (JS/React/Next Weeklies) use *forms*, so cold-emailing editors to pitch a 0-star/2-wk repo is non-compliant. Fresh research (GitHub search: nextjs / saas / shadcn / tailwind / drizzle / turborepo / typescript / postgres) found **no new strong venue** β€” niche saturated (hits were already-logged, dormant >6mo, wrong-ecosystem [Flutter/Svelte], archived [dzharii/awesome-typescript], or ≀28β˜…; **shadverse** 28β˜…/1-PR-ever skipped as negligible). Both prior PRs unchanged (**#536** unicodeveloper open/0 comments/stalled; **#554** birobirobiro open/1 bot comment). Stale **PR #1** (DRY RUN 07-19) to saas-startup left open (out of scope). | +| 2026-07-29 | _auto-run 13:17 UTC_ | β€” (no external action) | β€” | `[ ]` **BLOCKED β€” `GH_TOKEN` invalid (HTTP 401), 6th consecutive run (day 10).** Re-confirmed definitively this run: a direct `GET /user` with the token β†’ **HTTP 401 "Bad credentials"**, and a real `git push --dry-run origin main` is rejected ("Invalid username or token"). Token last worked **2026-07-19**; broken every run since (07-27 Γ—3 + 07-28 + 07-29 01:17 + now). Reads still work (repo public). **0 external PRs, 0 emails, no wrap-up PR** (push/fork/PR all 401). **4 staged Tier-1 venues re-verified via the unauth API** β€” all un-archived + recently pushed + entry still absent (xcomptek 07-17 / EinGuterWaran 07-17 / byteferΒ·shadcn 07-08 / officialrajdeepsingh 07-26) β†’ all 4 remain actionable, no re-research needed. Both pending PRs unchanged (**#536 unicodeveloper** open/0 comments/stalled; **#554 birobirobiro** open/1 bot comment). **NEW this run β€” auth-differentiation angle (never searched before):** deep-dived **`lyqht/awesome-supabase`** (β˜…478, CC0-1.0, pushed 07-19, perfect-fit `## Community Starters` section [analogous: Basejump, Supastarter, Supanext], no AI ban, `awesome-lint` required) β†’ **FLAGGED for human review, NOT auto-staged:** ~8 of its last ~12 closed PRs were **closed-unmerged**, incl. **PR #51 "Add Next.js + Supabase SaaS Starter to Community Starters" β€” our exact category β€” closed unmerged**; maintainer merges guides/fixes (#60, #55) but rejects most add-my-starter PRs. Per "when unsure, document as MANUAL, don't act." Other new searches yielded nothing actionable: awesome-stripe/drizzle/nextauth all tiny (β‰€β˜…7) or dormant; the shadcn "registry/directory" hits are component *libraries* (wrong category β€” not awesome-lists); broad SaaS lists are already-staged or dormant. **Email-venue probe** (react.email / nextjs masters / smashingmagazine / css-tricks): all form-only/editorial, no public tip email β†’ **0 emails** (note: `MAILKITE_API_KEY` is SET and is independent of the dead `GH_TOKEN`, so emails are NOT token-blocked β€” only venue-blocked). **Research is cumulative on local branch `submissions/auto-20260729-1317`** (branched from `0117`, inherits all staged entries + ready-to-paste text) β€” ready to `git push -u` + `gh pr create` the moment the token is fixed; top-3 to open first: **officialrajdeepsingh** (merges daily), **xcomptek** (3.1kβ˜… reach), **bytefer/awesome-shadcn-ui**. **Human action (URGENT, unchanged): rotate `GH_TOKEN`** β€” 6 runs / 10 days blocked. | +| 2026-07-29 | _auto-run 01:17 UTC_ | β€” (no external action) | β€” | `[ ]` **BLOCKED β€” `GH_TOKEN` invalid (HTTP 401), 5th consecutive run.** Token broken since **2026-07-19** (10 days): `gh auth status` reports the token invalid and a real `git push --dry-run origin main` is rejected ("Invalid username or token"); reads still work (public repo needs no auth). **Could not fork/push/open PRs** β†’ **0 external PRs, 0 emails**, no wrap-up PR to saas-startup. **Re-verified all 4 staged venues via the unauth API** β€” all un-archived + recently pushed (xcomptek 07-17 / EinGuterWaran 07-17 / byteferΒ·shadcn 07-08 / officialrajdeepsingh 07-26), entries still absent β†’ all 4 remain actionable. Both pending PRs (**unicodeveloper #536, birobirobiro #554**) still **open / unmerged** (no change). Fresh GitHub search (awesome-nextjs / saas-boilerplate / awesome-shadcn / awesome-tailwind) found **NO new actionable venue**: `Correia-jpv/fucking-awesome-nextjs` (133β˜…) is a low-merge fork; `2-fly-4-ai/awesome-shadcnui` (553β˜…) is **dormant** (pushed 2025-06-19 β†’ fails the 6-month rule); `y-h-v-h/shadverse` (28β˜…) too low-reach; every SaaS-boilerplate hit is a competitor *product*, not an aggregator list. No new email venue surfaced (newsletter venues remain form-only). **CRITICAL INTEL β€” `origin/main` is STALE:** it still holds the 94-line 07-17-era doc; **none** of the 07-27/07-28 research (4 staged venues, ready-to-paste entries, pending-PR intel) ever reached it (every prior push 401'd; working-tree edits were lost on checkout). The research survived **only in local branches**. **This run re-commits the full research as a SINGLE clean commit** on `submissions/auto-20260729-0117` (branched straight from `main`) β€” ready to `git push -u` + `gh pr create` the moment the token is fixed, no re-research needed. **Human action (unchanged, URGENT): rotate `GH_TOKEN`** β€” 5 runs / 10 days blocked. Once fixed, top-3 staged PRs to open first: **officialrajdeepsingh** (merges daily), **xcomptek** (3.1kβ˜… reach), **bytefer/awesome-shadcn-ui**. | +| 2026-07-28 | _auto-run 01:17 UTC_ | β€” (no external action) | β€” | `[ ]` **BLOCKED β€” `GH_TOKEN` invalid (HTTP 401), 4th consecutive run.** Token last worked **2026-07-19** (`submissions/auto-20260719-1316` pushed to origin); broken every run since (07-27 01:17 / 13:17 / 17:17 + today). Reads still work (repo public); all writes (push / fork / PR) return 401. Verified `osxkeychain` has **no** github.com entry β€” the inline `$GH_TOKEN` helper is the only credential provider, **no fallback**. Token is a classic `ghp_` PAT (revoked/expired). **Could not fork/push/open PRs** β†’ 4 git-PR venues remain staged in Tier 1; the wrap-up PR to saas-startup could not be opened either (can't push the branch). **Re-verified all 4 staged venues this run via the unauth API**: un-archived, recently pushed, entries still absent. **officialrajdeepsingh/awesome-nextjs confirmed actively merging outside PRs** (#80 Kostra, #81, #84, #85 all merged 07-18β†’07-26, our exact SaaS-starter category) β†’ **#1 priority the moment the token is fixed.** Searched GitHub for NEW venues β€” nothing stronger than the 4 staged (results dominated by competitor starter-kits [boxyhq / Blazity / makerkit …] and hosting-platform template repos [netlify-templates/*]); no dupes added. Probed email venues (nextjsweekly / react.statuscode / javascriptweekly / bytes.dev / builtat.com / uimodule.com) β€” **all form-only / editorial, none expose a public contact email that invites tool submissions** β†’ **0 emails sent** (per "when unsure, document as MANUAL, don't act"). **NEW INTEL:** **unicodeveloper/awesome-nextjs is dormant for merges** (`pushed_at` = 2026-03-24; its last 5 closed PRs were all closed **unmerged**) β†’ **PR #536 is effectively stalled** (flagged for a human decision; **not** auto-closed). PR #554 (birobirobiro) unchanged β€” still open, its only "comment" is a Vercel deploy-auth bot prompt (harmless). **Human action: rotate `GH_TOKEN`** (set a fresh classic PAT or fine-grained token with `repo` + `workflow` for mailkite/saas-startup + fork/PR scope). Branch `submissions/auto-20260728-0117` was branched from the prior unpushed research commit `10845c7` (not `main`) because `origin/main` still lacks the staged-venues doc and pushing it is itself blocked. | +| 2026-07-27 | _auto-run 17:17 UTC_ | β€” (no external action) | β€” | `[ ]` **BLOCKED β€” `GH_TOKEN` invalid (HTTP 401).** An earlier 13:17 UTC attempt today hit the same block; its working-tree edits to this file did **not** persist (working-tree-only, lost on a fresh checkout β€” its own warning realized), so this run re-derived + re-verified everything fresh via the unauthenticated GitHub API. Re-confirmed: `gh api`/`gh auth status` fail and a real `git push` of `submissions/auto-20260727-1717` was rejected ("Invalid username or token"); all git credential helpers route through `$GH_TOKEN`/`gh` with **no keychain fallback**. **Could not fork/push/open PRs** β†’ **4 git-PR venues now staged in Tier 1 with ready-to-paste entries** (all verified active + merging external PRs + no AI ban + entry absent): xcomptek/awesome-saas-boilerplates (3.1kβ˜…), EinGuterWaran/awesome-opensource-boilerplates (1.9kβ˜…), bytefer/awesome-shadcn-ui (719β˜…), and **NEW this run** officialrajdeepsingh/awesome-nextjs (707β˜…, `## Next.js boilerplate`, merges daily). No emails sent (no email-target venue surfaced; + duplication-safety: log can't reach `origin` while push is down). Our 2 pending PRs (unicodeveloper #536, birobirobiro #554) both still open/awaiting. **Human action: rotate `GH_TOKEN`.** Next run acts on the best ≀3 staged venues (recommend xcomptek, officialrajdeepsingh [fastest merge], bytefer/awesome-shadcn-ui; then EinGuterWaran). Local branch `submissions/auto-20260727-1717` (unpushed). | | 2026-07-17 | [awesome-shadcn-ui](https://github.com/birobirobiro/awesome-shadcn-ui) | [PR #554](https://github.com/birobirobiro/awesome-shadcn-ui/pull/554) | _pending merge_ | `[~]` submitted | | 2026-07-17 | [awesome-nextjs](https://github.com/unicodeveloper/awesome-nextjs) | [PR #536](https://github.com/unicodeveloper/awesome-nextjs/pull/536) | _pending merge_ | `[~]` submitted | @@ -29,13 +35,54 @@ Merge a PR, get listed. No account, no forms, no fees. | βœ“ | Place | How | Notes | |---|-------|-----|-------| | [ ] | [vercel/examples](https://github.com/vercel/examples) | PR β€” `pnpm new-example` | **Not a one-line entry** β€” the example must live inside their monorepo, MIT, and Next.js examples must use `@vercel/examples-ui` styling. Its front-matter feeds vercel.com/templates, which is **closed for new submissions** (see Tier 3), so a merge may not surface as a template yet. Needs a human decision on approach before investing | -| [~] | [unicodeveloper/awesome-nextjs](https://github.com/unicodeveloper/awesome-nextjs) | PR to README | 11.1kβ˜…. **Submitted 2026-07-17** β†’ [PR #536](https://github.com/unicodeveloper/awesome-nextjs/pull/536), awaiting review. Added to `## Boilerplates` | +| [~] | [unicodeveloper/awesome-nextjs](https://github.com/unicodeveloper/awesome-nextjs) | PR to README | 11.1kβ˜…. **Submitted 2026-07-17** β†’ [PR #536](https://github.com/unicodeveloper/awesome-nextjs/pull/536). ⚠️ **Likely stalled:** re-checked 2026-07-28 β€” repo `pushed_at` = **2026-03-24** and its last 5 closed PRs were all closed **unmerged** (maintainer isn't merging outside contributions). Human may consider closing #536 (left open pending decision). Added to `## Boilerplates` | | [-] | [aniftyco/awesome-tailwindcss](https://github.com/aniftyco/awesome-tailwindcss) | ~~PR~~ **hand-submit only** | 15.1kβ˜…. CONTRIBUTING.md **bans AI-authored/assisted PRs** β€” closed on sight, submitter may be banned. Gabe must add it by hand (πŸ“ "Full templates" entry, `UI libraries, components & templates` section) | | [-] | [enaqx/awesome-react](https://github.com/enaqx/awesome-react) | β€” | 74kβ˜…, but **no section fits** a full SaaS boilerplate. Skipped to avoid a rejected PR | | [~] | [birobirobiro/awesome-shadcn-ui](https://github.com/birobirobiro/awesome-shadcn-ui) | PR to README | 20.1kβ˜…. **Submitted 2026-07-17** β†’ [PR #554](https://github.com/birobirobiro/awesome-shadcn-ui/pull/554), awaiting review. Added to `## Boilerplates / Templates` | | [ ] | [bytefer/awesome-nextjs](https://github.com/bytefer/awesome-nextjs) | PR to README | 68β˜… β€” low reach, but trivial | +| [~] | [xcomptek/awesome-saas-boilerplates](https://github.com/xcomptek/awesome-saas-boilerplates) | PR to README β†’ `## Next.js` | **3.1kβ˜…**. **Submitted 2026-07-29** β†’ [PR #222](https://github.com/xcomptek/awesome-saas-boilerplates/pull/222) β€” inserted alphabetically between LaunchFa.st & Mkdirs, clean 1-line diff. No CONTRIBUTING, no AI-PR ban. Fork: `bucabay/awesome-saas-boilerplates` | +| [~] | [EinGuterWaran/awesome-opensource-boilerplates](https://github.com/EinGuterWaran/awesome-opensource-boilerplates) | PR to README β†’ `### React & Next.js` | **1.9kβ˜…**. **Submitted 2026-07-29** β†’ [PR #52](https://github.com/EinGuterWaran/awesome-opensource-boilerplates/pull/52) β€” appended after "Platforms Starter Kit", `- [Name](link) - desc` format. CC0-1.0, friendly `contributing.md` (no AI ban); requires OSS + ≀6mo (we qualify). Fork: `bucabay/awesome-opensource-boilerplates` | +| [x] | [bytefer/awesome-shadcn-ui](https://github.com/bytefer/awesome-shadcn-ui) | PR to README β†’ `## Saas` table | **719β˜…**. **Submitted 2026-07-29** β†’ [PR #29](https://github.com/bytefer/awesome-shadcn-ui/pull/29). **βœ… MERGED 2026-07-30 01:29 UTC β†’ LIVE** at [bytefer/awesome-shadcn-ui (`## Saas` table)](https://github.com/bytefer/awesome-shadcn-ui#saas) β€” **our first live listing!** Row appended after "Next Money Stripe Starter", 3-col format. MIT, no CONTRIBUTING, no AI ban. Fork: `bucabay/awesome-shadcn-ui-1` (a prior `bucabay/awesome-shadcn-ui` already existed). **Different maintainer** from birobirobiro/awesome-shadcn-ui β€” not a dup | +| [~] | [merklefruit/SaaS4Devs](https://github.com/merklefruit/SaaS4Devs) | PR to README β†’ `### Complete Full-stack Boilerplates` | **748β˜…** Β· MIT Β· pushed 2026-02-17. **Submitted 2026-07-30** β†’ [PR #54](https://github.com/merklefruit/SaaS4Devs/pull/54) β€” appended a `Name β€” Tech β€” Price` entry after "Nextless JS" (only Next.js 15 + shadcn/ui entry; "free & Open Source"). No CONTRIBUTING, no AI ban; Contributions says "Feel free to send PRs here on GitHub too." ⚠️ Repo marked "no longer being maintained" **but still merges outside PRs** (#36 x402, #34 ShipLegal merged 2026-02; #31 2024-09; steady outside-PR stream since 2021) β†’ actionable on merge evidence. Fork: `bucabay/SaaS4Devs` | +| [ ] ⚠️ FLAG | [officialrajdeepsingh/awesome-nextjs](https://github.com/officialrajdeepsingh/awesome-nextjs) | ~~PR~~ **MANUAL / human-decision** | **707β˜…** Β· MIT Β· pushed 2026-07-26 (near-daily), no AI ban, merges external PRs daily (Kostra #80 07-18; starter #84 07-26). **⚠️ CRITERIA NOT MET β€” do NOT auto-submit:** CONTRIBUTING "What we look for: **at least 100 stars**" + "What we do not accept: **new or unreleased projects**"; mailkite/saas-startup is **0β˜…, created 2026-07-15** (fails both). Escape clause ("if unique, you may still submit a PR for review") β‡’ Gabe pitches the self-contained-auth uniqueness **by hand**, ideally once stars grow. Paste entry ↓ (manual) | +| [ ] ⚠️ FLAG | [lyqht/awesome-supabase](https://github.com/lyqht/awesome-supabase) | PR to README β†’ `## Community Starters` (append to bottom) | **478β˜…** Β· CC0-1.0 Β· pushed 2026-07-19 Β· no AI ban Β· perfect-fit section (analogous entries: Basejump, Supastarter, Supanext, SupaSasS Lite) Β· CONTRIBUTING requires `npx awesome-lint` clean. **⚠️ FLAG β€” human decision, do NOT auto-submit:** ~8 of last ~12 closed PRs closed-unmerged, incl. **PR #51 "Add Next.js + Supabase SaaS Starter to Community Starters" (our exact category) closed unmerged** β€” maintainer is highly selective (merges guides/fixes, rejects most add-my-starter PRs). Researched 2026-07-29 13:17 β€” re-try only with a human-reviewed pitch. (Note: leads with Supabase-Postgres, not the "no Supabase account" angle, to fit this list.) | | [ ] | GitHub topics | repo settings | βœ… **done** β€” `nextjs`, `nextjs15`, `saas-starter`, `saas-boilerplate`, `template`, … | +### Tier 1 β€” ready-to-paste entries (auto-researched 2026-07-27, re-verified 2026-07-29 13:17 UTC) + +**GH_TOKEN fixed 2026-07-29 17:17 UTC** (login `bucabay`, scopes incl. `repo`/`workflow`) β€” +ending the 6-run / 10-day block. **3 of the 4 staged venues were submitted this run** (cap ≀3 PRs): +xcomptek β†’ #222, EinGuterWaran β†’ #52, bytefer β†’ #29 (see table above). The 4th, +**officialrajdeepsingh, is MANUAL** (fails its β‰₯100β˜… + "no new projects" criteria β€” our repo is +0β˜… / 2 weeks old). Paste-ready text below is retained for reference / amending the open PRs. + +**βœ… SUBMITTED 2026-07-29 β†’ [PR #222](https://github.com/xcomptek/awesome-saas-boilerplates/pull/222)** Β· xcomptek/awesome-saas-boilerplates Β· `## Next.js` (inserted alphabetically between +`LaunchFa.st` and `Mkdirs`): + +```md +- MailKite SaaS Starter - **Open Source** Next.js 15 SaaS starter with self-contained auth (Google/GitHub OAuth + email/password, no auth vendor), Stripe subscriptions, teams, Postgres/Drizzle, shadcn/ui, dark-first UI [https://github.com/mailkite/saas-startup](https://github.com/mailkite/saas-startup) [![Stars](https://img.shields.io/github/stars/mailkite/saas-startup.svg)](https://github.com/mailkite/saas-startup) +``` + +**βœ… SUBMITTED 2026-07-29 β†’ [PR #52](https://github.com/EinGuterWaran/awesome-opensource-boilerplates/pull/52)** Β· EinGuterWaran/awesome-opensource-boilerplates Β· `### React & Next.js` (appended; their +format is `- [Name](link) - what makes it unique`): + +```md +- [MailKite SaaS Starter](https://github.com/mailkite/saas-startup) - Next.js 15 SaaS starter with self-contained auth (Google/GitHub OAuth + email/password β€” no Clerk/Auth0/Supabase account needed), Stripe subscriptions, teams, Postgres/Drizzle, and a dark-first shadcn/ui dashboard. +``` + +**βœ… SUBMITTED 2026-07-29 β†’ [PR #29](https://github.com/bytefer/awesome-shadcn-ui/pull/29)** Β· bytefer/awesome-shadcn-ui Β· `## Saas` table (appended a row, 3-column format): + +```md +| MailKite SaaS Starter | Production-ready Next.js 15 SaaS starter: self-contained auth (Google/GitHub OAuth + email/password, no auth vendor), Stripe subscriptions, teams, Postgres/Drizzle, dark-first shadcn/ui. | https://github.com/mailkite/saas-startup | +``` + +**⚠️ MANUAL β€” criteria not met (β‰₯100β˜… required; we're 0β˜…)** Β· officialrajdeepsingh/awesome-nextjs Β· `## Next.js boilerplate` (append at the **end** of +the section; recent additions like Kostra are appended, not alphabetized): + +```md +- [MailKite SaaS Starter](https://github.com/mailkite/saas-startup) - Production-ready Next.js 15 SaaS starter with self-contained auth (Google/GitHub OAuth + email/password β€” no auth vendor), Stripe subscriptions, teams, Postgres/Drizzle, and a dark-first shadcn/ui dashboard. +``` + ## Tier 2 β€” Launch platforms (one-shot traffic spikes) Sequence these; don't burn them all at once. Product Hunt is worth preparing properly.