Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 54 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,54 +15,88 @@

# ✨ Features

### 🎯 **Multiple Stack Options**
Choose from **7+ popular stacks** including MERN, MEAN, T3, Angular+Tailwind, and more!
### 🎯 *Multiple Stack Options*
Choose from *7+ popular stacks* including MERN, MEAN, T3, Angular+Tailwind, and more!

<div align="center">
<img width="250" height="250" alt="Celtrix Stack Selection Demo" src="https://github.com/user-attachments/assets/7b6a30be-1e34-443e-a906-8c167230c238" />
</div>

### 🌐 **Language Flexibility**
### 🌐 *Language Flexibility*
Pick your preferred programming languages and frameworks to match your workflow.

<div align="center">
<img width="250" height="250" alt="Celtrix Language Selection" src="https://github.com/user-attachments/assets/3f8c775a-b747-4eb1-a22d-c1f236276934" />
</div>

### 🛠️ **Ready-to-Go Setup**
- **ESLint** configuration included
- **Sample components** and boilerplate code
- **API setup** with best practices
- **Automatic dependency installation**
- **Modern development tools** pre-configured
### 🛠 *Ready-to-Go Setup*
- *ESLint* configuration included
- *Sample components* and boilerplate code
- *API setup* with best practices
- *Automatic dependency installation*
- *Modern development tools* pre-configured

---

## 🚀 Quick Start

No global installation needed! Get started instantly:

```bash
bash
npx celtrix my-awesome-app
```


That's it! Follow the interactive prompts to customize your project.

---

## FAQ
## ❓ Frequently Asked Questions (FAQ)

*Q1: What makes Celtrix stand out from other project scaffolding tools?*
A1: Celtrix provides ready-to-use templates, supports multiple popular stacks, and follows modern best practices, allowing you to start projects quickly without setting up everything manually.

*Q2: How do I add a new stack or template to Celtrix?*
A2: You can create a new template in the templates/ folder following the existing folder structure. Test it using the CLI and then submit a Pull Request to contribute.

*Q3: Are projects created with Celtrix ready for production?*
A3: Celtrix projects give you a strong foundation for development. Some adjustments may be needed for production depending on your specific project requirements.

*Q4: Which stacks are currently available in Celtrix?*
A4: Celtrix currently supports MERN, MEAN, T3, Angular+Tailwind, and several other popular stacks. Contributors can add more stacks.

*Q5: Do I need to install anything globally to use Celtrix?*
A5: No, you don't need global installations. Simply run npx celtrix my-awesome-app and follow the interactive prompts to start a project.

*Q6: Can I customize the generated templates?*
A6: Absolutely! You can modify components, styles, API setups, and configurations to match your project's requirements.

You can now find the full list of FAQs here: [FAQ.md](./FAQ.md)
*Q7: How can I report bugs or request new features?*
A7: Open a GitHub Issue in the Celtrix repository. Provide clear steps, screenshots, and a description to help maintainers understand and address your request.

*Q8: Does Celtrix support TypeScript projects?*
A8: Yes, most templates offer optional TypeScript support. You can choose TypeScript when setting up a new project.

*Q9: Can I use Celtrix for commercial projects?*
A9: Yes! Celtrix is open-source under the ISC license, so you can use it for personal or commercial projects following the license terms.

*Q10: How can I improve or update existing templates?*
A10: Fork the repository, make your changes in a separate branch, test them, and submit a Pull Request. Ensure your updates follow the coding guidelines.

*Q11: What prerequisites do I need to use Celtrix?*
A11: You only need Node.js and npm installed. Celtrix will handle other dependencies automatically during project setup.

*Q12: Where can I get support or join the Celtrix community?*
A12: You can ask questions via GitHub Discussions or join the community chat if available. Always stay respectful and constructive while engaging.

---

## 📦 What You Get

- **Production-ready** project structure
- **Modern tooling** and best practices
- **Responsive** starter templates
- **Clean code** architecture
- **Documentation** and examples
- *Production-ready* project structure
- *Modern tooling* and best practices
- *Responsive* starter templates
- *Clean code* architecture
- *Documentation* and examples

---

Expand Down Expand Up @@ -116,9 +150,8 @@ Thanks goes to these wonderful people:

<div align="center">

<p><strong>Made with ❤ by <a href="https://github.com/celtrix-os">Celtrix Team</a></strong></p>
<p><strong>Made with ❤ by <a href="https://github.com/celtrix-os">Celtrix Team</a></strong></p>

<h3>⭐ Star us on GitHub — it motivates us a lot!</h3>

</div>

</div>
Empty file.
59 changes: 43 additions & 16 deletions utils/project.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export async function setupProject(projectName, config) {
const projectPath = path.join(process.cwd(), projectName);

if (fs.existsSync(projectPath)) {
logger.error(`❌ Directory ${chalk.red(projectName)} already exists`);
logger.error(❌ Directory ${chalk.red(projectName)} already exists);
process.exit(1);
}

Expand Down Expand Up @@ -87,24 +87,51 @@ export async function setupProject(projectName, config) {
}

// --- Success + Next Steps ---
console.log(chalk.gray("-------------------------------------------"))
console.log(`${chalk.greenBright(`✅ Project ${chalk.bold.yellow(`${projectName}`)} created successfully! 🎉`)}`);
console.log(chalk.gray("-------------------------------------------"))
console.log(chalk.cyan("👉 Next Steps:\n"));

console.log(\n${chalk.greenBright(✅ Project ${chalk.bold.yellow(projectName)} created successfully! 🎉)}\n);

let nextStepsText = "";

if(config.stack === "mean" || config.stack === "mean+tailwind+auth") {
console.log(` ${chalk.yellow("cd")} ${projectName}/client && ${chalk.green("npm start")}`);
console.log(` ${chalk.yellow("cd")} ${projectName}/server && ${chalk.green("npm start")}`);
nextStepsText = `
${chalk.bold.cyan("1. Navigate to client:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/client && ${chalk.green("npm start")}

${chalk.bold.cyan("2. Navigate to server:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/server && ${chalk.green("npm start")}
`;
} else if(config.stack === "t3-stack") {
console.log(` ${chalk.yellow("cd")} ${projectName}/t3-app && ${chalk.green("npm run dev")}`);
nextStepsText = `
${chalk.bold.cyan("Navigate to your app:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/t3-app && ${chalk.green("npm run dev")}
`;
}else if(config.stack==="hono"){
console.log(` ${chalk.yellow("cd")} ${projectName}/client && ${chalk.green("npm run dev")}`);
console.log(` ${chalk.yellow("cd")} ${projectName}/server && ${chalk.green("npm run dev")}`);
nextStepsText = `
${chalk.bold.cyan("1. Start the client:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/client && ${chalk.green("npm run dev")}

${chalk.bold.cyan("2. Start the server:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/server && ${chalk.green("npm run dev")}
`;
} else {
console.log(` ${chalk.yellow("cd")} ${projectName}/client && ${chalk.green("npm run dev")}`);
console.log(` ${chalk.yellow("cd")} ${projectName}/server && ${chalk.green("npm start")}`);
nextStepsText = `
${chalk.bold.cyan("1. Start the client:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/client && ${chalk.green("npm run dev")}

${chalk.bold.cyan("2. Start the server:")}
${chalk.yellow("cd")} ${chalk.white(projectName)}/server && ${chalk.green("npm start")}
`;
}

console.log(chalk.gray("-------------------------------------------"))
console.log(chalk.gray("\n✨ Made with ❤️ by Celtrix ✨\n"));

console.log(
boxen(nextStepsText, {
padding: 1,
margin: 1,
borderColor: "green",
borderStyle: "round",
title: chalk.greenBright("🚀 Next Steps"),
titleAlignment: "center",
})
);

console.log(chalk.gray("✨ Made with ❤ by Celtrix ✨\n"));
}