LaunchKit is a web-based starter generator for solo developers who want to create a ready-to-run Next.js project without rebuilding the same setup from scratch.
Live site: https://launchkit.dovudkhon.com
Repository: github.com/DavidAsrorxonov/launch-kit
LaunchKit lets a user configure a project in the browser, generate a starter from local EJS templates, and download the result as a ZIP file.
The current generator supports:
- A base Next.js starter.
- Optional MongoDB support with Mongoose.
- Optional Better Auth setup with Google OAuth.
- Automatic ZIP creation in the browser flow.
- A live output tree preview before download.
- A feedback form that stores user feedback in MongoDB.
The product scope is intentionally narrow: one framework, one database option, one auth option, and one-click ZIP generation.
- Next.js 16.2.4 with the App Router.
- React 19.2.4 and TypeScript.
- Tailwind CSS 4 with shadcn UI primitives.
- Radix UI and lucide-react for UI building blocks and icons.
- EJS for rendering starter templates.
- JSZip for ZIP generation.
- MongoDB and Mongoose for feedback storage.
- Better Auth in generated auth-enabled starters.
- Vercel Analytics for site analytics.
- The user opens the marketing page at
/. - The user clicks Generate Starter and moves to
/wizard. - The user enters a project name.
- The user chooses:
- no database or MongoDB;
- no auth or Better Auth + Google.
- If Better Auth is selected, MongoDB is automatically selected because the auth module requires a database.
- The wizard shows a merged output tree for the selected modules.
- The user clicks Generate Starter.
- The browser posts the configuration to
/api/generate. - The server renders the selected EJS templates, merges module files and package dependencies, creates a ZIP, and returns it.
- The browser downloads
<projectName>.zip.
| Route | Type | Purpose |
|---|---|---|
/ |
Page | Landing page with hero, project preview, feedback form, and footer. |
/wizard |
Page | Interactive starter generator. |
/api/generate |
Route Handler | Accepts project options and returns a generated ZIP file. |
/api/feedback |
Route Handler | Validates and stores feedback messages in MongoDB. |
app/
api/
feedback/route.ts Feedback API endpoint
generate/route.ts ZIP generation endpoint
wizard/page.tsx Starter configuration wizard
globals.css Tailwind and theme styles
layout.tsx Root layout, metadata, analytics, toaster
page.tsx Landing page
components/
effect/ Background visual effects
icon/ Custom icons
ui/ shadcn/Radix-style UI primitives
feedback-section.tsx Feedback form
footer.tsx Footer and GitHub link
hero.tsx Landing page hero
logo.tsx Brand mark
navbar.tsx Top navigation
render-output-tree.tsx Renders the wizard file tree preview
constants/
files.ts Static preview tree used in the landing hero
nav-links.ts Navbar links
output-files.ts Generated file trees for each selectable module
tech.ts Tech badges shown in the hero
interface/
files.ts Global file preview type
nav-links.ts Global nav link type
output-files.ts Global output tree type
lib/
db.ts MongoDB/Mongoose connection cache
generator/ Template rendering, merging, and ZIP helpers
helper/ Output tree merge helper
utils.ts Shared className utility
models/
feedback.ts Mongoose feedback schema
public/
favicon/ App icons and manifest assets
images/logo.png Open Graph/logo image
templates/
base/ Base generated Next.js starter
modules/db/mongodb/ MongoDB module templates
modules/auth/better-auth/ Better Auth module templates
The generator is centered around lib/generator/index.ts.
generateProject(config) receives:
{
projectName?: string;
db?: "mongodb";
auth?: "better-auth";
}It then:
- Normalizes the project name, defaulting to
launchkit-app. - Decides whether MongoDB is required.
- Renders every non-partial
.ejsfile intemplates/base. - If MongoDB is selected, renders
templates/modules/db/mongodb. - If Better Auth is selected, renders
templates/modules/auth/better-auth. - Merges module files over the base file map.
- Reads
package.json.partial.ejsfiles for selected modules and merges their dependencies into the generatedpackage.json. - Reads
.env.example.partial.ejsfiles for selected modules and appends them to the generated.env.example. - Returns an in-memory file map.
lib/generator/zip.ts converts that file map into a ZIP with JSZip. The /api/generate route returns the ZIP with Content-Type: application/zip.
Every generated project includes:
app/layout.tsxapp/page.tsxREADME.mdpackage.json.env.examplenext-env.d.tsnext.config.jstsconfig.json
When MongoDB is enabled, LaunchKit also adds:
lib/db.tsmodels/User.tsapp/api/test-db/route.tsMONGODB_URIin.env.example
The base generated package.json currently includes mongoose; the MongoDB module adds the database files and environment variable that make that dependency useful.
When Better Auth is enabled, LaunchKit also adds:
lib/auth/auth.tslib/auth/auth-client.tsapp/api/auth/[...all]/route.tsapp/login/page.tsxapp/dashboard/page.tsxbetter-authandmongodbdependenciesBETTER_AUTH_URL,BETTER_AUTH_SECRET,GOOGLE_CLIENT_ID, andGOOGLE_CLIENT_SECRETin.env.example
The Better Auth option currently provides the auth wiring and placeholder login/dashboard pages. It is a starter foundation, not a complete production auth UI or finished access-control layer.
The landing page includes a feedback form in components/feedback-section.tsx.
The form posts to /api/feedback with:
{
"email": "optional@example.com",
"message": "Feedback message"
}Validation rules:
messageis required.messagemust be at least 10 characters.messagemust be under 1000 characters.emailis optional.
Accepted feedback is saved through the Feedback Mongoose model with timestamps.
Create a local .env file before running features that touch MongoDB:
MONGODB_URI=mongodb://127.0.0.1:27017/launch-kitMONGODB_URI is required by:
/api/feedbacklib/db.ts
Generated projects may also include environment variables in their own .env.example, depending on the selected modules.
Requirements:
- Node.js 20.9 or newer.
- npm.
- A MongoDB connection string if you want feedback submission to work locally.
Install dependencies:
npm installRun the development server:
npm run devOpen:
http://localhost:3000
Build for production:
npm run buildRun the production server:
npm run startLint:
npm run lint- This project uses the Next.js App Router. Routes are defined by files under
app/. - API endpoints are App Router Route Handlers named
route.ts. - The repository includes an
AGENTS.mdnote warning that this Next.js version may differ from older conventions. Checknode_modules/next/dist/docs/before making Next-specific code changes. - Templates are generated from
.ejsfiles. Files ending in.partial.ejsare not emitted directly; they are used for dependency and environment-variable merging. - The wizard's visual file tree comes from
constants/output-files.ts, so add new generator modules there when you want them to appear in the UI. templates/baseis always included. Module templates are layered on top of it.
- Create a module directory under
templates/modules. - Add
.ejsfiles that should be emitted into the generated starter. - Add
package.json.partial.ejsif the module needs extra dependencies. - Add
.env.example.partial.ejsif the module needs extra environment variables. - Update
GenerateProjectConfiginlib/generator/index.ts. - Render and merge the module in
generateProject. - Update
constants/output-files.tsso the wizard preview matches the generated files. - Add UI controls in
app/wizard/page.tsx. - Test by generating a ZIP, installing the generated project, and running it.
The app is designed for deployment on Vercel or any platform that supports Next.js 16.
Production deployment needs:
MONGODB_URIconfigured if feedback collection should work.- Public URL metadata aligned with
https://launchkit.dovudkhon.com. - Static assets from
public/included in the build.
Included:
- Web app.
- Next.js starter generation.
- MongoDB module.
- Better Auth + Google module foundation.
- ZIP download.
- Generated
.env.example. - Generated README.
- Dashboard placeholder in generated auth starters.
- Feedback collection.
Not included yet:
- GitHub repository creation.
- Stripe.
- Email.
- Role-based access control.
- Multi-tenancy.
- Multiple frontend frameworks.
- CLI.
- A complete generated auth UI.
- Live app: https://launchkit.dovudkhon.com
- GitHub repository: github.com/DavidAsrorxonov/launch-kit
- Next.js documentation: nextjs.org/docs
- Tailwind CSS documentation: tailwindcss.com/docs
- shadcn documentation: ui.shadcn.com
- MongoDB documentation: mongodb.com/docs
- Mongoose documentation: mongoosejs.com/docs
- Better Auth documentation: better-auth.com/docs