diff --git a/.changeset/red-banks-dig.md b/.changeset/red-banks-dig.md
new file mode 100644
index 0000000..9c917b8
--- /dev/null
+++ b/.changeset/red-banks-dig.md
@@ -0,0 +1,5 @@
+---
+"create-better-t-stack": patch
+---
+
+Replace log.info with note for post-install instructions
diff --git a/README.md b/README.md
index f35346e..e4aba1d 100644
--- a/README.md
+++ b/README.md
@@ -57,10 +57,6 @@ bun dev:cli
bun dev:web
```
-## Contributors
+## Want to contribute?
-
-
-
-
-Made with [contrib.rocks](https://contrib.rocks).
+Just fork the repository and submit a pull request!
diff --git a/apps/cli/README.md b/apps/cli/README.md
index 2e557f5..912b199 100644
--- a/apps/cli/README.md
+++ b/apps/cli/README.md
@@ -34,7 +34,7 @@ Follow the prompts to configure your project or use the `-y` flag for defaults.
- **Desktop Apps**: Build native desktop apps with Tauri integration
- **Code Quality**: Biome for linting and formatting
- **Git Hooks**: Husky with lint-staged for pre-commit checks
-- **Examples**: Todo app with full CRUD functionality
+- **Examples**: Todo app with full CRUD functionality, AI Chat using AI SDK
- **Developer Experience**: Git initialization, various package manager support (npm, pnpm, bun)
## Usage
@@ -43,39 +43,27 @@ Follow the prompts to configure your project or use the `-y` flag for defaults.
Usage: create-better-t-stack [project-directory] [options]
Options:
- -V, --version Output the version number
- -y, --yes Use default configuration
- --no-database Skip database setup
- --sqlite Use SQLite database
- --postgres Use PostgreSQL database
- --auth Include authentication
- --no-auth Exclude authentication
- --pwa Include Progressive Web App support
- --tauri Include Tauri desktop app support
- --biome Include Biome for linting and formatting
- --husky Include Husky, lint-staged for Git hooks
- --no-addons Skip all additional addons
- --examples Include specified examples
- --no-examples Skip all examples
- --git Include git setup (default)
- --no-git Skip git initialization
- --npm Use npm as package manager
- --pnpm Use pnpm as package manager
- --bun Use bun as package manager
- --drizzle Use Drizzle ORM
- --prisma Use Prisma ORM
- --install Install dependencies (default)
- --no-install Skip installing dependencies
- --turso Set up Turso for SQLite database
- --no-turso Skip Turso setup for SQLite database
- --hono Use Hono backend framework (default)
- --elysia Use Elysia backend framework
- --runtime Specify runtime (bun or node)
- --web Include web frontend (default)
- --native Include Expo frontend
- --no-web Exclude web frontend
- --no-native Exclude Expo frontend
- -h, --help Display help
+ -V, --version Output the version number
+ -y, --yes Use default configuration
+ --database Database type (none, sqlite, postgres)
+ --orm ORM type (none, drizzle, prisma)
+ --auth Include authentication
+ --no-auth Exclude authentication
+ --frontend Frontend types (web,native or both)
+ --addons Additional addons (pwa,tauri,biome,husky)
+ --no-addons Skip all additional addons
+ --examples Examples to include (todo,ai)
+ --no-examples Skip all examples
+ --git Initialize git repository
+ --no-git Skip git initialization
+ --package-manager Package manager (npm, pnpm, bun)
+ --install Install dependencies
+ --no-install Skip installing dependencies
+ --turso Set up Turso for SQLite database
+ --no-turso Skip Turso setup
+ --backend Backend framework (hono, elysia)
+ --runtime Runtime (bun, node)
+ -h, --help Display help
```
## Examples
@@ -87,17 +75,20 @@ npx create-better-t-stack my-app -y
Create a project with specific options:
```bash
-npx create-better-t-stack my-app --postgres --drizzle --auth --pwa --biome
+npx create-better-t-stack my-app --database postgres --orm drizzle --auth --addons pwa,biome
```
Create a project with Elysia and Node.js runtime:
```bash
-npx create-better-t-stack my-app --elysia --runtime node
+npx create-better-t-stack my-app --backend elysia --runtime node
```
-Create a project using Hono with no addons:
+Create a project with specific frontend options:
```bash
-npx create-better-t-stack my-app --hono --no-addons
+npx create-better-t-stack my-app --frontend web,native
```
-Created by [Aman Varshney](https://github.com/AmanVarshney01) & [Nitish Singh](https://github.com/FgrReloaded)
+Create a project with examples:
+```bash
+npx create-better-t-stack my-app --examples todo,ai
+```
diff --git a/apps/cli/src/helpers/post-installation.ts b/apps/cli/src/helpers/post-installation.ts
index 7fda3a9..45679de 100644
--- a/apps/cli/src/helpers/post-installation.ts
+++ b/apps/cli/src/helpers/post-installation.ts
@@ -1,4 +1,4 @@
-import { log } from "@clack/prompts";
+import { note } from "@clack/prompts";
import pc from "picocolors";
import type {
ProjectAddons,
@@ -42,8 +42,8 @@ export function displayPostInstallInstructions(
const hasNativeFrontend = frontends?.includes("native");
const hasFrontend = hasWebFrontend || hasNativeFrontend;
- log.info(`${pc.bold("Next steps:")}
-${pc.cyan("1.")} ${cdCmd}
+ note(
+ `${pc.cyan("1.")} ${cdCmd}
${!depsInstalled ? `${pc.cyan("2.")} ${packageManager} install\n` : ""}${pc.cyan(depsInstalled ? "2." : "3.")} ${runCmd} dev
${pc.bold("Your project will be available at:")}
@@ -52,15 +52,17 @@ ${
? `${hasWebFrontend ? `${pc.cyan("•")} Frontend: http://localhost:3001\n` : ""}`
: `${pc.yellow("NOTE:")} You are creating a backend-only app (no frontend selected)\n`
}${pc.cyan("•")} API: http://localhost:3000
-${nativeInstructions ? `\n${nativeInstructions.trim()}` : ""}${databaseInstructions ? `\n${databaseInstructions.trim()}` : ""}${tauriInstructions ? `\n${tauriInstructions.trim()}` : ""}${lintingInstructions ? `\n${lintingInstructions.trim()}` : ""}`);
+${nativeInstructions ? `\n${nativeInstructions.trim()}` : ""}${databaseInstructions ? `\n${databaseInstructions.trim()}` : ""}${tauriInstructions ? `\n${tauriInstructions.trim()}` : ""}${lintingInstructions ? `\n${lintingInstructions.trim()}` : ""}`,
+ "Next steps",
+ );
}
function getNativeInstructions(): string {
- return `${pc.yellow("NOTE:")} If the Expo app cannot connect to the server, update the EXPO_PUBLIC_SERVER_URL in apps/native/.env to use your local IP address instead of localhost:\n${pc.dim("EXPO_PUBLIC_SERVER_URL=http://192.168.0.103:3000")}\n`;
+ return `${pc.yellow("NOTE:")} If the Expo app cannot connect to the server, update the EXPO_PUBLIC_SERVER_URL in apps/native/.env to use your local IP address instead of localhost:\n${"EXPO_PUBLIC_SERVER_URL=http://192.168.0.103:3000"}\n`;
}
function getLintingInstructions(runCmd?: string): string {
- return `${pc.bold("Linting and formatting:")}\n${pc.cyan("•")} Format and lint fix: ${pc.dim(`${runCmd} check`)}\n\n`;
+ return `${pc.bold("\nLinting and formatting:")}\n${pc.cyan("•")} Format and lint fix: ${`${runCmd} check`}\n\n`;
}
function getDatabaseInstructions(
@@ -75,7 +77,7 @@ function getDatabaseInstructions(
if (database === "sqlite") {
instructions.push(
`${pc.yellow("NOTE:")} Turso support with Prisma is in Early Access and requires additional setup.`,
- `${pc.dim("Learn more at: https://www.prisma.io/docs/orm/overview/databases/turso")}`,
+ `${"Learn more at: https://www.prisma.io/docs/orm/overview/databases/turso"}`,
);
}
@@ -85,24 +87,16 @@ function getDatabaseInstructions(
);
}
- instructions.push(
- `${pc.cyan("•")} Apply schema: ${pc.dim(`${runCmd} db:push`)}`,
- );
- instructions.push(
- `${pc.cyan("•")} Database UI: ${pc.dim(`${runCmd} db:studio`)}`,
- );
+ instructions.push(`${pc.cyan("•")} Apply schema: ${`${runCmd} db:push`}`);
+ instructions.push(`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`);
} else if (orm === "drizzle") {
if (database === "sqlite") {
instructions.push(
- `${pc.cyan("•")} Start local DB: ${pc.dim(`cd apps/server && ${runCmd} db:local`)}`,
+ `${pc.cyan("•")} Start local DB: ${`cd apps/server && ${runCmd} db:local`}`,
);
}
- instructions.push(
- `${pc.cyan("•")} Apply schema: ${pc.dim(`${runCmd} db:push`)}`,
- );
- instructions.push(
- `${pc.cyan("•")} Database UI: ${pc.dim(`${runCmd} db:studio`)}`,
- );
+ instructions.push(`${pc.cyan("•")} Apply schema: ${`${runCmd} db:push`}`);
+ instructions.push(`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`);
}
return instructions.length
@@ -111,5 +105,5 @@ function getDatabaseInstructions(
}
function getTauriInstructions(runCmd?: string): string {
- return `${pc.bold("Desktop app with Tauri:")}\n${pc.cyan("•")} Start desktop app: ${pc.dim(`cd apps/web && ${runCmd} desktop:dev`)}\n${pc.cyan("•")} Build desktop app: ${pc.dim(`cd apps/web && ${runCmd} desktop:build`)}\n${pc.yellow("NOTE:")} Tauri requires Rust and platform-specific dependencies. See: ${pc.dim("https://v2.tauri.app/start/prerequisites/")}\n\n`;
+ return `${pc.bold("Desktop app with Tauri:")}\n${pc.cyan("•")} Start desktop app: ${`cd apps/web && ${runCmd} desktop:dev`}\n${pc.cyan("•")} Build desktop app: ${`cd apps/web && ${runCmd} desktop:build`}\n${pc.yellow("NOTE:")} Tauri requires Rust and platform-specific dependencies. See: ${"https://v2.tauri.app/start/prerequisites/"}\n\n`;
}