From b015b367344f34485a570998f1930825300caa31 Mon Sep 17 00:00:00 2001 From: Felipe Ricardo <163346085+FelipeRicard0@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:34:00 -0300 Subject: [PATCH 1/2] v1.0.0 --- README.md | 73 +++++------- docs/Capa.png | Bin 0 -> 146560 bytes index.html | 4 +- package.json | 4 +- pnpm-lock.yaml | 37 ++++++ src/App.tsx | 44 ++++++- src/components/command-step.tsx | 11 +- src/components/theme-provider.tsx | 2 +- src/i18n.ts | 2 +- src/lib/command-generator.ts | 152 +++-------------------- src/locales/ar.json | 60 ++++++++++ src/locales/bn.json | 60 ++++++++++ src/locales/en.json | 60 ++++++++++ src/locales/es.json | 60 ++++++++++ src/locales/fr.json | 60 ++++++++++ src/locales/hi.json | 60 ++++++++++ src/locales/ja.json | 60 ++++++++++ src/locales/pt.json | 60 ++++++++++ src/locales/ru.json | 60 ++++++++++ src/locales/zh.json | 60 ++++++++++ src/main.tsx | 14 ++- src/pages/Builder.tsx | 103 +++++++--------- src/pages/LandingPage.tsx | 192 +++++++++++++----------------- 23 files changed, 875 insertions(+), 363 deletions(-) create mode 100644 docs/Capa.png diff --git a/README.md b/README.md index 18caa3d..c610b54 100644 --- a/README.md +++ b/README.md @@ -2,83 +2,72 @@ # Stack Builder -O **Stack Builder** é uma ferramenta para montar rapidamente o setup de um projeto. Você escolhe a stack e as tecnologias desejadas, e a aplicação gera comandos prontos para copiar e colar no terminal, agilizando o início do desenvolvimento. +**Stack Builder** is a tool designed to quickly set up a project environment. You choose the stack and desired technologies, and the application generates ready-to-use commands that you can copy and paste into the terminal, speeding up the start of development. -Além disso, o Stack Builder sugere uma estrutura de pastas organizada, seguindo boas práticas para cada stack escolhida. +In addition, Stack Builder suggests an organized folder structure, following best practices for each selected stack. -## 🚀 Demonstração +## 🚀 Demo -Confira abaixo uma prévia visual do Stack Builder em ação: +Check out a visual preview of Stack Builder in action below: -### Edição de texto com formatação +### Editing with Formatting ![Demonstração1](/docs/Demontração%201.gif) -A interface permite selecionar opções de stack e visualizar rapidamente os comandos e a estrutura recomendada para o projeto. +The interface allows you to select stack options and quickly view the commands and the recommended project structure. -## 📦 Funcionalidades +## 📦 Features -- ✅ Geração automática de comandos para setup do projeto -- ✅ Sugestão de estrutura de pastas baseada em boas práticas -- ✅ Interface responsiva e amigável -- ✅ Temas com estilização moderna via TailwindCSS e shadcn/ui -- ✅ Ícones interativos com lucide-react -- ✅ Suporte para 10 idiomas -- 🔧 Construído com Next.js + TypeScript, garantindo performance e escalabilidade -- 🔧 Código limpo com padronização via Biome +- ✅ Automatic generation of setup commands +- ✅ Folder structure suggestions based on best practices +- ✅ Responsive and user-friendly interface +- ✅ Modern themed styling with TailwindCSS and shadcn/ui +- ✅ Interactive icons with lucide-react +- ✅ Support for 10 languages +- 🔧 Built with Vite + React + TypeScript, ensuring performance and scalability +- 🔧 Clean code with standardization via ESLint -## 🛠️ Tecnologias Utilizadas +## 🛠️ Technologies Used -- **Linguagem/Framework:** +- **Language/Framework:** - [TypeScript](https://www.typescriptlang.org/) - - [React](https://react.dev/) com [Vite](https://vite.dev/) + - [React](https://react.dev/) with [Vite](https://vite.dev/) -- **Gerenciamento de estado:** - - [Zustand](https://zustand-demo.pmnd.rs/) - -- **Estilização:** +- **Styling:** - [TailwindCSS](https://tailwindcss.com/) - [shadcn/ui](https://ui.shadcn.com/) -- **Ícones:** +- **Icons:** - [lucide-react](https://lucide.dev/) -- **Formatação & Qualidade de Código:** +- **Formatting & Code Quality:** - [ESLint](https://eslint.org/) - [Prettier](https://prettier.io/) -- **Outras ferramentas:** - - [Git](https://git-scm.com/) & [GitHub](https://github.com/) +- **Other tools:** + - [Git](https://git-scm.com/) and [GitHub](https://github.com/) -## ⚙ Instalação +## ⚙ Installation -Para rodar o projeto localmente, siga os passos abaixo. +To run the project locally, follow the steps below. > [!NOTE] -> **Dica**: Antes de começar, certifique-se de ter o **Node.js** instalado na versão mais recente. +> **Tip**: Before starting, make sure you have **Node.js** installed in the latest version. -1. Clone o repositório: +1. Clone the repository: ```bash git clone https://github.com/FelipeRicard0/stack-builder.git ``` -2. Instale as dependências: +2. Install dependencies: ```bash pnpm install ``` -3. Rode o projeto: +3. Run the project: ```bash pnpm run dev ``` -## 📁 Variáveis de Ambiente - -Crie um arquivo `.env` na raiz do projeto e adicione as seguinte variáveis: - -```env -VITE_API_KEY=url_da_api -``` - -## Licença +## License -Distribuído sob a licença personalizada de uso não comercial. Veja [`LICENSE`](https://github.com/FelipeRicard0/stack-builder/blob/main/LICENSE) para mais informações. +Distributed under a custom non-commercial use license. See [`LICENSE`](https://github.com/FelipeRicard0/stack-builder/blob/main/LICENSE) for more information. diff --git a/docs/Capa.png b/docs/Capa.png new file mode 100644 index 0000000000000000000000000000000000000000..be9e757e0421d3a756a0fc83c6df92a92a8c7af2 GIT binary patch literal 146560 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

;z!;E?BMw~AeOG#Wtr)!i}ram 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 - stack-builder + Stack Builder diff --git a/package.json b/package.json index e71a9ae..c2e2db3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "stack-builder", "private": true, - "version": "0.5.0", + "version": "1.0.0", "type": "module", "scripts": { "dev": "vite", @@ -16,8 +16,10 @@ "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.8", + "@types/react-router-hash-link": "^2.4.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "i18next": "^25.8.0", "lucide-react": "^0.563.0", "react": "^19.2.0", "react-dom": "^19.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d2d043..44a33ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,12 +26,18 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.8 version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@types/react-router-hash-link': + specifier: ^2.4.9 + version: 2.4.9 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 + i18next: + specifier: ^25.8.0 + version: 25.8.0(typescript@5.9.3) lucide-react: specifier: ^0.563.0 version: 0.563.0(react@19.2.4) @@ -1059,6 +1065,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1070,6 +1079,15 @@ packages: peerDependencies: '@types/react': ^19.2.0 + '@types/react-router-dom@5.3.3': + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + + '@types/react-router-hash-link@2.4.9': + resolution: {integrity: sha512-zl/VMj+lfJZhvjOAQXIlBVPNKSK+/fRG8AUHhlP9++LhlA2ziLeTmbRxIMJI3PCiCTS+W/FosEoDRoNOGH0OzA==} + + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + '@types/react@19.2.10': resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} @@ -2763,6 +2781,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/history@4.7.11': {} + '@types/json-schema@7.0.15': {} '@types/node@24.10.9': @@ -2773,6 +2793,23 @@ snapshots: dependencies: '@types/react': 19.2.10 + '@types/react-router-dom@5.3.3': + dependencies: + '@types/history': 4.7.11 + '@types/react': 19.2.10 + '@types/react-router': 5.1.20 + + '@types/react-router-hash-link@2.4.9': + dependencies: + '@types/history': 4.7.11 + '@types/react': 19.2.10 + '@types/react-router-dom': 5.3.3 + + '@types/react-router@5.1.20': + dependencies: + '@types/history': 4.7.11 + '@types/react': 19.2.10 + '@types/react@19.2.10': dependencies: csstype: 3.2.3 diff --git a/src/App.tsx b/src/App.tsx index 8300e81..3035ae3 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,50 @@ -import { Route, Routes } from "react-router-dom"; +import { Navigate, Route, Routes, useParams } from "react-router-dom"; import Buildpage from "./pages/Builder"; import LandingPage from "./pages/LandingPage"; +import i18n from "./i18n"; +import { useEffect } from "react"; + +function LangLayout() { + const { lang } = useParams(); + + const supported = [ + "ar", + "bn", + "en", + "es", + "fr", + "hi", + "ja", + "pt", + "ru", + "zh", + ]; + const validLang = supported.includes(String(lang)) ? lang : "en"; + + useEffect(() => { + i18n.changeLanguage(validLang); + }, [validLang]); + + if (lang !== validLang) { + return ; + } + + return ( + + } /> + } /> + + ); +} export default function App() { return ( - } /> - } /> + } + /> + } /> ); } diff --git a/src/components/command-step.tsx b/src/components/command-step.tsx index ea595a3..e9a17b7 100644 --- a/src/components/command-step.tsx +++ b/src/components/command-step.tsx @@ -35,16 +35,11 @@ export default function CommandStep({ step, index }: CommandStepProps) { {step.label} - diff --git a/src/components/theme-provider.tsx b/src/components/theme-provider.tsx index e18440d..7dc566d 100644 --- a/src/components/theme-provider.tsx +++ b/src/components/theme-provider.tsx @@ -23,7 +23,7 @@ const ThemeProviderContext = createContext(initialState); export function ThemeProvider({ children, defaultTheme = "system", - storageKey = "vite-ui-theme", + storageKey = "stack-builder-theme", ...props }: ThemeProviderProps) { const [theme, setTheme] = useState( diff --git a/src/i18n.ts b/src/i18n.ts index b6f0fdd..5a4c31e 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -12,7 +12,7 @@ import ru from "./locales/ru.json"; import ja from "./locales/ja.json"; i18n.use(initReactI18next).init({ - lng: navigator.language, + lng: navigator.language.split("-")[0], fallbackLng: "en", resources: { pt: { translation: pt }, diff --git a/src/lib/command-generator.ts b/src/lib/command-generator.ts index 76432b0..7bf677c 100644 --- a/src/lib/command-generator.ts +++ b/src/lib/command-generator.ts @@ -4,29 +4,15 @@ export type CommandStep = { description?: string; }; -/** - * Valida seleções para detectar dependências conflitantes ou redundantes. - * - * @param selections - Set de strings representando as tecnologias selecionadas - * @returns Array de strings contendo avisos sobre conflitos ou incompatibilidades - * - * @example - * ```ts - * const warnings = validateSelections(new Set(["biome", "eslint"])); - * // Retorna: ["Biome e ESLint podem conflitar. Recomenda-se escolher apenas um."] - * ``` - */ export function validateSelections(selections: Set): string[] { const warnings: string[] = []; - // Verificar linters conflitantes if (selections.has("biome") && selections.has("eslint")) { warnings.push( "Biome e ESLint podem conflitar. Recomenda-se escolher apenas um.", ); } - // Verificar múltiplos ORMs const orms = ["drizzle", "prisma", "mongoose"]; const selectedOrms = orms.filter((orm) => selections.has(orm)); if (selectedOrms.length > 1) { @@ -35,21 +21,18 @@ export function validateSelections(selections: Set): string[] { ); } - // Verificar múltiplos gerenciadores de Git hooks if (selections.has("husky") && selections.has("lefthook")) { warnings.push( "Husky e Lefthook são ambos gerenciadores de Git hooks. Escolha apenas um.", ); } - // Verificar Auth.js sem Next.js if (selections.has("authjs") && !selections.has("nextjs")) { warnings.push( "Auth.js (next-auth) é projetado principalmente para Next.js.", ); } - // Verificar múltiplos routers const routers = ["tanstack-router", "react-router"]; const selectedRouters = routers.filter((router) => selections.has(router)); if (selectedRouters.length > 1) { @@ -58,23 +41,9 @@ export function validateSelections(selections: Set): string[] { ); } - // Verificar TanStack Router sem framework adequado - if ( - selections.has("tanstack-router") && - !selections.has("tanstack-start") && - !selections.has("nextjs") && - !selections.has("react-router") - ) { - // TanStack Router é para React, então está ok se houver React base - // Este aviso só será mostrado se nenhum framework React estiver selecionado - } - return warnings; } -/** - * Constantes para agrupamentos de frameworks e tecnologias. - */ const FRAMEWORKS_WITH_TAILWIND = [ "nextjs", "expo-uniwind", @@ -88,44 +57,10 @@ const FRAMEWORKS_WITH_TAILWIND = [ "nuxt", ]; -// Constantes documentadas para referência futura -// const NODE_FRAMEWORKS = ["express", "fastify", "hono", "elysia"]; -// const EXPO_FRAMEWORKS = ["expo-bare", "expo-uniwind", "expo-unistyles"]; -// const FRONTEND_FRAMEWORKS = [ -// "nextjs", -// "tanstack-router", -// "react-router", -// "tanstack-start", -// "nuxt", -// "astro", -// "svelte", -// "solid", -// ]; - -/** - * Verifica se o set de seleções contém qualquer uma das opções fornecidas. - * - * @param selections - Set de strings representando as seleções - * @param options - Array de strings para verificar - * @returns true se qualquer opção estiver em selections - */ function hasAnySelection(selections: Set, options: string[]): boolean { return options.some((option) => selections.has(option)); } -/** - * Gera uma lista de passos de comando para configurar um projeto baseado nas seleções do usuário. - * - * @param projectName - Nome do projeto a ser criado - * @param selections - Set de strings representando as tecnologias selecionadas - * @returns Array de objetos CommandStep contendo label, command e description - * - * @example - * ```ts - * const steps = generateCommands("my-app", new Set(["nextjs", "typescript", "tailwindcss"])); - * // Retorna comandos para criar um projeto Next.js com TypeScript e Tailwind - * ``` - */ export function generateCommands( projectName: string, selections: Set, @@ -163,20 +98,15 @@ export function generateCommands( ? "yarn add -D" : "bun add -d"; - // Track if initialization includes cd (for manual mkdir cases) let needsSeparateCd = false; - // Helper to check if using Tailwind (for prettier-plugin-tailwindcss) const usesTailwind = hasAnySelection(selections, FRAMEWORKS_WITH_TAILWIND) || selections.has("tailwindcss"); - // 1. Project initialization if (selections.has("nextjs")) { - // Build Next.js command with only selected options let nextCmd = `${pmx === "npx" ? "npx" : pm} create${pmx === "npx" ? "-" : " "}next-app@latest ${projectName}`; - // Add conditional flags based on user selections const flags: string[] = []; flags.push(selections.has("typescript") ? "--typescript" : "--js"); @@ -219,7 +149,6 @@ export function generateCommands( }); needsSeparateCd = true; } else if (selections.has("solid")) { - // Usar template ts se TypeScript selecionado, caso contrário js const solidTemplate = selections.has("typescript") ? "ts" : "js"; const description = selections.has("typescript") ? "Initialize a new Solid project with TypeScript" @@ -239,7 +168,6 @@ export function generateCommands( }); needsSeparateCd = true; } else if (selections.has("tanstack-router")) { - // Usar template react-ts se TypeScript selecionado, caso contrário react const viteTemplate = selections.has("typescript") ? "react-ts" : "react"; const description = selections.has("typescript") ? "Initialize a new React project with Vite and TypeScript" @@ -252,7 +180,6 @@ export function generateCommands( }); needsSeparateCd = true; } else if (selections.has("react-router")) { - // Usar template react-ts se TypeScript selecionado, caso contrário react const viteTemplate = selections.has("typescript") ? "react-ts" : "react"; const description = selections.has("typescript") ? "Initialize a new React project with Vite and TypeScript" @@ -290,7 +217,6 @@ export function generateCommands( }); needsSeparateCd = true; } else if (selections.has("express") || selections.has("fastify")) { - // For Express/Fastify, combine mkdir + cd + init + folder structure into one step const initCmd = pm === "npm" ? `npm init -y` @@ -306,9 +232,8 @@ export function generateCommands( description: "Create a new Node.js project directory with recommended structure and initialize package.json", }); - needsSeparateCd = false; // Already included cd + needsSeparateCd = false; } else { - // Generic initialization - combine mkdir + cd + init const initCmd = pm === "npm" ? `npm init -y` @@ -322,10 +247,9 @@ export function generateCommands( command: `mkdir ${projectName} && cd ${projectName} && ${initCmd}`, description: "Create a new project directory and initialize package.json", }); - needsSeparateCd = false; // Already included cd + needsSeparateCd = false; } - // 2. Create server structure for monorepo (frontend + backend) const isMonorepo = (selections.has("nextjs") || selections.has("tanstack-router") || @@ -345,7 +269,6 @@ export function generateCommands( }); } - // 3. Navigate to project (only if not already included in init command) if (!isMonorepo && needsSeparateCd) { steps.push({ label: "Navigate to project", @@ -354,11 +277,9 @@ export function generateCommands( }); } - // 4. Additional dependencies based on selections const deps: string[] = []; const devDeps: string[] = []; - // Router dependencies if (selections.has("tanstack-router") && !selections.has("tanstack-start")) { deps.push("@tanstack/react-router"); devDeps.push("@tanstack/router-plugin"); @@ -368,7 +289,6 @@ export function generateCommands( deps.push("react-router-dom"); } - // Backend framework (if not already included) if (selections.has("hono") && !steps[0].command.includes("hono")) { deps.push("hono"); } @@ -403,7 +323,6 @@ export function generateCommands( ); } - // Database & ORM if (selections.has("drizzle")) { deps.push("drizzle-orm"); devDeps.push("drizzle-kit"); @@ -449,7 +368,6 @@ export function generateCommands( } if (selections.has("authjs")) { - // Use next-auth v5 (stable) - anteriormente era beta deps.push("next-auth"); } @@ -457,9 +375,7 @@ export function generateCommands( deps.push("lucia", "@lucia-auth/adapter-drizzle"); } - // UI Libraries if (selections.has("shadcn")) { - // shadcn is installed via CLI, but we need the base deps deps.push("class-variance-authority", "clsx", "tailwind-merge"); } @@ -475,7 +391,6 @@ export function generateCommands( deps.push("@ark-ui/react"); } - // Payments if (selections.has("stripe")) { deps.push("stripe", "@stripe/stripe-js"); } @@ -484,7 +399,6 @@ export function generateCommands( deps.push("@polar-sh/nextjs"); } - // Validation if (selections.has("zod")) { deps.push("zod"); } @@ -493,49 +407,42 @@ export function generateCommands( deps.push("valibot"); } - // TypeScript (Abordagem Minimalista) if (selections.has("typescript")) { - // Lista de frameworks que JÁ instalam TypeScript via CLI const frameworkInstallsTS = (selections.has("nextjs") && - steps[0]?.command.includes("--typescript")) || // create-next-app --typescript - selections.has("nuxt") || // nuxi init (sempre TS) - selections.has("astro") || // create astro (inclui TS) - selections.has("tanstack-start") || // create-tanstack-app (inclui TS) + steps[0]?.command.includes("--typescript")) || + selections.has("nuxt") || + selections.has("astro") || + selections.has("tanstack-start") || (selections.has("tanstack-router") && - steps[0]?.command.includes("react-ts")) || // vite react-ts + steps[0]?.command.includes("react-ts")) || (selections.has("react-router") && - steps[0]?.command.includes("react-ts")) || // vite react-ts - (selections.has("svelte") && steps[0]?.command.includes("sv create")) || // sv create instala TS - (selections.has("solid") && steps[0]?.command.includes("templates/ts")); // Solid ts template + steps[0]?.command.includes("react-ts")) || + (selections.has("svelte") && steps[0]?.command.includes("sv create")) || + (selections.has("solid") && steps[0]?.command.includes("templates/ts")); - // Só instalar typescript se o framework NÃO instalou if (!frameworkInstallsTS) { devDeps.push("typescript"); } - // Lista de frameworks que JÃ instalam @types/node via CLI const frameworkInstallsTypesNode = (selections.has("nextjs") && - steps[0]?.command.includes("--typescript")) || // create-next-app --typescript - selections.has("nuxt") || // nuxi init - selections.has("astro") || // create astro - selections.has("tanstack-start") || // create-tanstack-app - (selections.has("hono") && steps[0]?.command.includes("create hono")) || // hono CLI - (selections.has("elysia") && steps[0]?.command.includes("create elysia")); // elysia CLI - - // Projetos que NÃO precisam de @types/node (React Native) + steps[0]?.command.includes("--typescript")) || + selections.has("nuxt") || + selections.has("astro") || + selections.has("tanstack-start") || + (selections.has("hono") && steps[0]?.command.includes("create hono")) || + (selections.has("elysia") && steps[0]?.command.includes("create elysia")); + const isReactNative = selections.has("expo-bare") || selections.has("expo-uniwind") || selections.has("expo-unistyles"); - // Instalar @types/node apenas se: 1. Não é React Native 2. Framework não instalou if (!isReactNative && !frameworkInstallsTypesNode) { devDeps.push("@types/node"); } - // tsx e tsc-alias: APENAS para backends puros que precisam executar TS diretamente const needsRuntimeTS = selections.has("express") || selections.has("fastify") || @@ -547,12 +454,10 @@ export function generateCommands( } } - // Tailwind CSS (Abordagem Minimalista) if (selections.has("tailwindcss") && !selections.has("nextjs")) { devDeps.push("tailwindcss", "@tailwindcss/vite"); } - // Tooling if (selections.has("biome") && !selections.has("nextjs")) { devDeps.push("@biomejs/biome"); } @@ -563,7 +468,6 @@ export function generateCommands( if (selections.has("prettier")) { devDeps.push("prettier"); - // Only add tailwind plugin if using Tailwind CSS if (usesTailwind || selections.has("tailwindcss")) { devDeps.push("prettier-plugin-tailwindcss"); } @@ -596,7 +500,6 @@ export function generateCommands( deps.push("react-native-unistyles"); } - // Add dependency installation steps if (deps.length > 0) { steps.push({ label: "Install dependencies", @@ -605,7 +508,6 @@ export function generateCommands( }); } - // Install dev dependencies (excluding packages already installed by framework CLIs) if (devDeps.length > 0) { steps.push({ label: "Install dev dependencies", @@ -615,7 +517,6 @@ export function generateCommands( }); } - // 4. Setup commands if (selections.has("shadcn")) { steps.push({ label: "Initialize shadcn/ui", @@ -638,8 +539,6 @@ export function generateCommands( }); } - // Tailwind CSS is configured automatically - no initialization needed - if (selections.has("prisma")) { steps.push({ label: "Initialize Prisma", @@ -672,7 +571,6 @@ export function generateCommands( }); } - // 5. Git initialization if (selections.has("git-init")) { steps.push({ label: "Initialize Git", @@ -684,20 +582,6 @@ export function generateCommands( return steps; } -/** - * Gera um único comando de inicialização de projeto. - * Retorna apenas o comando primário para criar o projeto, sem etapas adicionais. - * - * @param projectName - Nome do projeto a ser criado - * @param selections - Set de strings representando as tecnologias selecionadas - * @returns String contendo o comando de inicialização do projeto - * - * @example - * ```ts - * const cmd = generateSingleCommand("my-app", new Set(["nextjs", "typescript"])); - * // Retorna: "npx create-next-app@latest my-app --app --src-dir ..." - * ``` - */ export function generateSingleCommand( projectName: string, selections: Set, @@ -718,9 +602,7 @@ export function generateSingleCommand( ? "yarn dlx" : "bunx"; - // Return the primary creation command if (selections.has("nextjs")) { - // Build Next.js command with only selected options const nextCmd = `${pmx === "npx" ? "npx" : pm} create${pmx === "npx" ? "-" : " "}next-app@latest ${projectName}`; const flags: string[] = []; diff --git a/src/locales/ar.json b/src/locales/ar.json index e69de29..33c85b1 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "دعم Stack Builder", + "support_description": "ساعدنا في الحفاظ على هذا المشروع مفتوح المصدر ومجانيًا. مساهمتك تحدث فرقًا.", + "share": "مشاركة", + "support": "دعم", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "دعم شهري أو لمرة واحدة", + "buy_me_coffee": "اشتر لي قهوة", + "buy_me_coffee_desc": "مساهمة سريعة لمرة واحدة", + "thank_you_support": "شكرًا لدعم المشاريع مفتوحة المصدر!", + "features": "المميزات", + "presets": "إعدادات مسبقة", + "start_building": "ابدأ التطوير", + "build_faster": "طور بشكل أسرع مع التقنيات المناسبة", + "build_your_perfect": "اصنع", + "tech_stack": "Tech Stack المثالي", + "stop_wasting_time": "توقف عن إضاعة الوقت في إعداد المشاريع من الصفر. اختر تقنياتك، احصل على الأوامر المثالية، وابدأ التطوير في ثوانٍ.", + "open_builder": "فتح Builder", + "everything_you_need": "كل ما تحتاجه للبدء بسرعة", + "thoughtfully_designed": "Builder مصمم بعناية لتطوير الويب الحديث.", + "curated_stack": "خيارات Stack منتقاة", + "choose_battle_tested": "اختر من تقنيات مجربة في Frontend و Backend و Database والأدوات.", + "smart_compatibility": "توافق ذكي", + "intelligent_system": "نظامنا الذكي يمنع الاختيارات غير المتوافقة ويقترح أفضل التركيبات.", + "instant_commands": "أوامر فورية", + "get_ready_to_run": "احصل على أوامر CLI جاهزة للتشغيل مخصصة لاختياراتك ومدير الحزم المفضل.", + "project_structure": "هيكل المشروع", + "view_recommended": "اعرض هيكل المجلدات الموصى به بناءً على اختيارات التقنية قبل البدء.", + "start_with_preset": "ابدأ بإعداد مسبق", + "jump_start_project": "ابدأ مشروعك بسرعة مع التركيبات المفضلة في المجتمع.", + "use_this_preset": "استخدم هذا الإعداد", + "ready_build_great": "هل أنت مستعد لبناء شيء رائع؟", + "join_thousands": "انضم إلى آلاف المطورين الذين يستخدمون Stack Builder لبدء مشاريعهم بشكل أسرع.", + "launch_builder": "تشغيل Builder", + "view_on_github": "عرض على GitHub", + "built_with_care": "مبني بعناية لمجتمع المطورين.", + "select_one": "اختر واحدًا", + "recommended_structure": "الهيكل الموصى به", + "share_your_stack": "شارك Stack الخاص بك", + "share_this_configuration": "شارك هذا الإعداد مع الآخرين", + "selected_technologies": "التقنيات المختارة", + "share_link": "رابط المشاركة", + "no_technologies_selected_yet": "لم يتم اختيار تقنيات بعد", + "copy_btn": "نسخ", + "copied_btn": "تم النسخ", + "reset_all": "إعادة تعيين الكل", + "random_stack": "Stack عشوائي", + "project_name": "اسم المشروع", + "command_label": "أمر", + "selected_stack": "Stack المختار", + "no_technologies_selected": "لم يتم اختيار تقنيات", + "save_btn": "حفظ", + "back_btn": "رجوع", + "builder_badge": "Builder", + "configure_tab": "إعداد", + "commands_tab": "أوامر", + "preview_tab": "معاينة", + "setup_commands": "أوامر الإعداد", + "run_these_commands": "قم بتشغيل هذه الأوامر بالترتيب لإعداد مشروعك" +} diff --git a/src/locales/bn.json b/src/locales/bn.json index e69de29..1c200a7 100644 --- a/src/locales/bn.json +++ b/src/locales/bn.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Stack Builder সমর্থন করুন", + "support_description": "আমাদের এই প্রজেক্টকে বিনামূল্যে এবং ওপেন সোর্স রাখতে সাহায্য করুন। আপনার অবদান পার্থক্য তৈরি করে।", + "share": "শেয়ার করুন", + "support": "সমর্থন", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "মাসিক বা একবারের সমর্থন", + "buy_me_coffee": "আমাকে কফি কিনুন", + "buy_me_coffee_desc": "দ্রুত একবারের অবদান", + "thank_you_support": "ওপেন সোর্স সমর্থনের জন্য ধন্যবাদ!", + "features": "বৈশিষ্ট্য", + "presets": "Presets", + "start_building": "ডেভেলপমেন্ট শুরু করুন", + "build_faster": "সঠিক stack দিয়ে দ্রুত ডেভেলপ করুন", + "build_your_perfect": "আপনার পারফেক্ট", + "tech_stack": "Tech Stack তৈরি করুন", + "stop_wasting_time": "স্ক্র্যাচ থেকে প্রজেক্ট কনফিগার করতে সময় নষ্ট করা বন্ধ করুন। আপনার টেকনোলজি নির্বাচন করুন, পারফেক্ট কমান্ড পান এবং সেকেন্ডের মধ্যে ডেভেলপমেন্ট শুরু করুন।", + "open_builder": "Builder খুলুন", + "everything_you_need": "দ্রুত শুরু করার জন্য আপনার প্রয়োজনীয় সবকিছু", + "thoughtfully_designed": "আধুনিক web development এর জন্য সযত্নে ডিজাইন করা একটি builder।", + "curated_stack": "কিউরেটেড Stack অপশন", + "choose_battle_tested": "Frontend, backend, database এবং tooling ক্যাটাগরিতে যুদ্ধ-পরীক্ষিত টেকনোলজি থেকে চয়ন করুন।", + "smart_compatibility": "স্মার্ট সামঞ্জস্য", + "intelligent_system": "আমাদের বুদ্ধিমান সিস্টেম অসামঞ্জস্যপূর্ণ নির্বাচনগুলি প্রতিরোধ করে এবং সর্বোত্তম সমন্বয়গুলি পরামর্শ দেয়।", + "instant_commands": "তাৎক্ষণিক Commands", + "get_ready_to_run": "আপনার নির্বাচন এবং পছন্দের package manager এর জন্য ready-to-run CLI কমান্ড পান।", + "project_structure": "প্রজেক্ট Structure", + "view_recommended": "শুরু করার আগে আপনার টেকনোলজি পছন্দের উপর ভিত্তি করে সুপারিশকৃত folder structure দেখুন।", + "start_with_preset": "একটি preset দিয়ে শুরু করুন", + "jump_start_project": "কমিউনিটি-পছন্দের কম্বিনেশনগুলির সাথে আপনার প্রজেক্টকে দ্রুত শুরু করুন।", + "use_this_preset": "এই preset টি ব্যবহার করুন", + "ready_build_great": "কিছু দুর্দান্ত তৈরি করতে প্রস্তুত?", + "join_thousands": "হাজার হাজার ডেভেলপারদের সাথে যোগ দিন যারা তাদের প্রজেক্ট দ্রুত শুরু করতে Stack Builder ব্যবহার করে।", + "launch_builder": "Builder চালু করুন", + "view_on_github": "GitHub-এ দেখুন", + "built_with_care": "ডেভেলপার কমিউনিটির জন্য যত্ন সহকারে তৈরি।", + "select_one": "একটি নির্বাচন করুন", + "recommended_structure": "সুপারিশকৃত Structure", + "share_your_stack": "আপনার Stack শেয়ার করুন", + "share_this_configuration": "এই configuration অন্যদের সাথে শেয়ার করুন", + "selected_technologies": "নির্বাচিত টেকনোলজি", + "share_link": "শেয়ার লিঙ্ক", + "no_technologies_selected_yet": "এখনও কোন টেকনোলজি নির্বাচন করা হয়নি", + "copy_btn": "কপি করুন", + "copied_btn": "কপি হয়েছে", + "reset_all": "সব রিসেট করুন", + "random_stack": "Random stack", + "project_name": "প্রজেক্টের নাম", + "command_label": "Command", + "selected_stack": "নির্বাচিত Stack", + "no_technologies_selected": "কোন টেকনোলজি নির্বাচন করা হয়নি", + "save_btn": "সংরক্ষণ করুন", + "back_btn": "ফিরে যান", + "builder_badge": "Builder", + "configure_tab": "Configure করুন", + "commands_tab": "Commands", + "preview_tab": "Preview", + "setup_commands": "Setup Commands", + "run_these_commands": "আপনার প্রজেক্ট সেটআপ করতে এই commands ক্রমে চালান" +} diff --git a/src/locales/en.json b/src/locales/en.json index e69de29..33855b4 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Support Stack Builder", + "support_description": "Help us keep this project free and open source. Your contribution makes a difference.", + "share": "Share", + "support": "Support", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "Monthly or one-time support", + "buy_me_coffee": "Buy Me a Coffee", + "buy_me_coffee_desc": "Quick one-time contribution", + "thank_you_support": "Thank you for supporting open source!", + "features": "Features", + "presets": "Presets", + "start_building": "Start Building", + "build_faster": "Build faster with the right stack", + "build_your_perfect": "Build Your Perfect", + "tech_stack": "Tech Stack", + "stop_wasting_time": "Stop wasting time configuring projects from scratch. Select your technologies, get the perfect commands, and start building in seconds.", + "open_builder": "Open Builder", + "everything_you_need": "Everything you need to start fast", + "thoughtfully_designed": "A thoughtfully designed builder for modern web development.", + "curated_stack": "Curated Stack Options", + "choose_battle_tested": "Choose from battle-tested technologies across frontend, backend, database, and tooling categories.", + "smart_compatibility": "Smart Compatibility", + "intelligent_system": "Our intelligent system prevents incompatible selections and suggests optimal combinations.", + "instant_commands": "Instant Commands", + "get_ready_to_run": "Get ready-to-run CLI commands tailored to your selections and preferred package manager.", + "project_structure": "Project Structure", + "view_recommended": "View the recommended folder structure based on your technology choices before you start.", + "start_with_preset": "Start with a preset", + "jump_start_project": "Jump-start your project with community-favorite combinations.", + "use_this_preset": "Use this preset", + "ready_build_great": "Ready to build something great?", + "join_thousands": "Join thousands of developers who use Stack Builder to start their projects faster.", + "launch_builder": "Launch Builder", + "view_on_github": "View on GitHub", + "built_with_care": "Built with care for the developer community.", + "select_one": "Select one", + "recommended_structure": "Recommended Structure", + "share_your_stack": "Share Your Stack", + "share_this_configuration": "Share this configuration with others", + "selected_technologies": "Selected Technologies", + "share_link": "Share Link", + "no_technologies_selected_yet": "No technologies selected yet", + "copy_btn": "Copy", + "copied_btn": "Copied", + "reset_all": "Reset all", + "random_stack": "Random stack", + "project_name": "Project Name", + "command_label": "Command", + "selected_stack": "Selected Stack", + "no_technologies_selected": "No technologies selected", + "save_btn": "Save", + "back_btn": "Back", + "builder_badge": "Builder", + "configure_tab": "Configure", + "commands_tab": "Commands", + "preview_tab": "Preview", + "setup_commands": "Setup Commands", + "run_these_commands": "Run these commands in order to set up your project" +} diff --git a/src/locales/es.json b/src/locales/es.json index e69de29..02f5a32 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Apoya Stack Builder", + "support_description": "Ayúdanos a mantener este proyecto gratuito y de código abierto. Tu contribución hace la diferencia.", + "share": "Compartir", + "support": "Soporte", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "Soporte mensual o único", + "buy_me_coffee": "Cómprame un café", + "buy_me_coffee_desc": "Contribución única rápida", + "thank_you_support": "¡Gracias por apoyar el código abierto!", + "features": "Características", + "presets": "Presets", + "start_building": "Comenzar a desarrollar", + "build_faster": "Desarrolla más rápido con el stack adecuado", + "build_your_perfect": "Construye tu", + "tech_stack": "Tech Stack perfecto", + "stop_wasting_time": "Deja de perder tiempo configurando proyectos desde cero. Selecciona tus tecnologías, obtén los comandos perfectos y comienza a desarrollar en segundos.", + "open_builder": "Abrir Builder", + "everything_you_need": "Todo lo que necesitas para comenzar rápido", + "thoughtfully_designed": "Un builder diseñado cuidadosamente para el desarrollo web moderno.", + "curated_stack": "Opciones de Stack curadas", + "choose_battle_tested": "Elige entre tecnologías probadas en batalla en categorías de frontend, backend, database y tooling.", + "smart_compatibility": "Compatibilidad inteligente", + "intelligent_system": "Nuestro sistema inteligente previene selecciones incompatibles y sugiere combinaciones óptimas.", + "instant_commands": "Comandos instantáneos", + "get_ready_to_run": "Obtén comandos CLI listos para ejecutar adaptados a tus selecciones y package manager preferido.", + "project_structure": "Estructura del proyecto", + "view_recommended": "Ver la estructura de carpetas recomendada según tus elecciones de tecnología antes de comenzar.", + "start_with_preset": "Comienza con un preset", + "jump_start_project": "Impulsa tu proyecto con combinaciones favoritas de la comunidad.", + "use_this_preset": "Usa este preset", + "ready_build_great": "¿Listo para construir algo grandioso?", + "join_thousands": "Únete a miles de desarrolladores que usan Stack Builder para comenzar sus proyectos más rápido.", + "launch_builder": "Lanzar Builder", + "view_on_github": "Ver en GitHub", + "built_with_care": "Construido con cuidado para la comunidad de desarrolladores.", + "select_one": "Selecciona uno", + "recommended_structure": "Estructura recomendada", + "share_your_stack": "Comparte tu Stack", + "share_this_configuration": "Comparte esta configuración con otros", + "selected_technologies": "Tecnologías seleccionadas", + "share_link": "Enlace de compartir", + "no_technologies_selected_yet": "Ninguna tecnología seleccionada aún", + "copy_btn": "Copiar", + "copied_btn": "Copiado", + "reset_all": "Reiniciar todo", + "random_stack": "Stack aleatorio", + "project_name": "Nombre del proyecto", + "command_label": "Comando", + "selected_stack": "Stack seleccionado", + "no_technologies_selected": "No hay tecnologías seleccionadas", + "save_btn": "Guardar", + "back_btn": "Atrás", + "builder_badge": "Builder", + "configure_tab": "Configurar", + "commands_tab": "Comandos", + "preview_tab": "Vista previa", + "setup_commands": "Comandos de configuración", + "run_these_commands": "Ejecuta estos comandos en orden para configurar tu proyecto" +} diff --git a/src/locales/fr.json b/src/locales/fr.json index e69de29..daa82e0 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Soutenir Stack Builder", + "support_description": "Aidez-nous à garder ce projet gratuit et open source. Votre contribution fait la différence.", + "share": "Partager", + "support": "Support", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "Support mensuel ou unique", + "buy_me_coffee": "Offrez-moi un café", + "buy_me_coffee_desc": "Contribution unique rapide", + "thank_you_support": "Merci de soutenir l'open source !", + "features": "Fonctionnalités", + "presets": "Presets", + "start_building": "Commencer le développement", + "build_faster": "Développer plus rapidement avec le bon stack", + "build_your_perfect": "Construisez votre", + "tech_stack": "Tech Stack parfait", + "stop_wasting_time": "Arrêtez de perdre du temps à configurer des projets à partir de zéro. Sélectionnez vos technologies, obtenez les commandes parfaites et commencez à développer en quelques secondes.", + "open_builder": "Ouvrir le Builder", + "everything_you_need": "Tout ce dont vous avez besoin pour démarrer rapidement", + "thoughtfully_designed": "Un builder soigneusement conçu pour le développement web moderne.", + "curated_stack": "Options de Stack sélectionnées", + "choose_battle_tested": "Choisissez parmi des technologies éprouvées au combat dans les catégories frontend, backend, database et tooling.", + "smart_compatibility": "Compatibilité intelligente", + "intelligent_system": "Notre système intelligent prévient les sélections incompatibles et suggère des combinaisons optimales.", + "instant_commands": "Commandes instantanées", + "get_ready_to_run": "Obtenez des commandes CLI prêtes à l'exécution adaptées à vos sélections et à votre package manager préféré.", + "project_structure": "Structure du projet", + "view_recommended": "Afficher la structure de dossiers recommandée en fonction de vos choix de technologie avant de commencer.", + "start_with_preset": "Commencer avec un preset", + "jump_start_project": "Lancez rapidement votre projet avec des combinaisons favorites de la communauté.", + "use_this_preset": "Utiliser ce preset", + "ready_build_great": "Prêt à construire quelque chose de formidable ?", + "join_thousands": "Rejoignez des milliers de développeurs qui utilisent Stack Builder pour démarrer leurs projets plus rapidement.", + "launch_builder": "Lancer le Builder", + "view_on_github": "Voir sur GitHub", + "built_with_care": "Construit avec soin pour la communauté des développeurs.", + "select_one": "Sélectionnez-en un", + "recommended_structure": "Structure recommandée", + "share_your_stack": "Partagez votre Stack", + "share_this_configuration": "Partagez cette configuration avec d'autres", + "selected_technologies": "Technologies sélectionnées", + "share_link": "Lien de partage", + "no_technologies_selected_yet": "Aucune technologie sélectionnée pour l'instant", + "copy_btn": "Copier", + "copied_btn": "Copié", + "reset_all": "Réinitialiser tout", + "random_stack": "Stack aléatoire", + "project_name": "Nom du projet", + "command_label": "Commande", + "selected_stack": "Stack sélectionné", + "no_technologies_selected": "Aucune technologie sélectionnée", + "save_btn": "Enregistrer", + "back_btn": "Retour", + "builder_badge": "Builder", + "configure_tab": "Configurer", + "commands_tab": "Commandes", + "preview_tab": "Aperçu", + "setup_commands": "Commandes de configuration", + "run_these_commands": "Exécutez ces commandes dans l'ordre pour configurer votre projet" +} diff --git a/src/locales/hi.json b/src/locales/hi.json index e69de29..583f276 100644 --- a/src/locales/hi.json +++ b/src/locales/hi.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Stack Builder को support करें", + "support_description": "हमें इस project को free और open source रखने में मदद करें। आपका contribution फर्क लाता है।", + "share": "Share करें", + "support": "Support", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "Monthly या one-time support", + "buy_me_coffee": "मुझे coffee खरीद दें", + "buy_me_coffee_desc": "तेज़ one-time contribution", + "thank_you_support": "Open source को support करने के लिए धन्यवाद!", + "features": "Features", + "presets": "Presets", + "start_building": "Development शुरू करें", + "build_faster": "सही stack के साथ तेज़ी से develop करें", + "build_your_perfect": "अपना perfect", + "tech_stack": "Tech Stack बनाएं", + "stop_wasting_time": "Scratch से projects configure करने में समय बर्बाद करना बंद करें। अपनी technologies चुनें, perfect commands पाएं, और seconds में development शुरू करें।", + "open_builder": "Builder खोलें", + "everything_you_need": "तेज़ी से शुरू करने के लिए आपको सब कुछ चाहिए", + "thoughtfully_designed": "Modern web development के लिए सावधानीपूर्वक design किया गया एक builder।", + "curated_stack": "Curated Stack options", + "choose_battle_tested": "Frontend, backend, database और tooling categories में battle-tested technologies से चुनें।", + "smart_compatibility": "Smart compatibility", + "intelligent_system": "हमारी intelligent system incompatible selections को रोकती है और optimal combinations का सुझाव देती है।", + "instant_commands": "Instant commands", + "get_ready_to_run": "अपने selections और पसंदीदा package manager के लिए ready-to-run CLI commands पाएं।", + "project_structure": "Project structure", + "view_recommended": "शुरू करने से पहले अपनी technology choices के आधार पर recommended folder structure देखें।", + "start_with_preset": "एक preset के साथ शुरू करें", + "jump_start_project": "Community-favorite combinations के साथ अपने project को तेज़ी से शुरू करें।", + "use_this_preset": "इस preset का उपयोग करें", + "ready_build_great": "कुछ शानदार बनाने के लिए तैयार?", + "join_thousands": "हज़ारों developers से जुड़ें जो अपने projects तेज़ी से शुरू करने के लिए Stack Builder का उपयोग करते हैं।", + "launch_builder": "Builder launch करें", + "view_on_github": "GitHub पर देखें", + "built_with_care": "Developer community के लिए देखभाल के साथ बनाया गया।", + "select_one": "एक चुनें", + "recommended_structure": "Recommended structure", + "share_your_stack": "अपना Stack share करें", + "share_this_configuration": "इस configuration को दूसरों के साथ share करें", + "selected_technologies": "चुनी गई technologies", + "share_link": "Share link", + "no_technologies_selected_yet": "अभी तक कोई technologies चुनी नहीं गई", + "copy_btn": "Copy करें", + "copied_btn": "Copy किया गया", + "reset_all": "सब reset करें", + "random_stack": "Random stack", + "project_name": "Project का नाम", + "command_label": "Command", + "selected_stack": "चुना गया Stack", + "no_technologies_selected": "कोई technologies चुनी नहीं गईं", + "save_btn": "Save करें", + "back_btn": "वापस", + "builder_badge": "Builder", + "configure_tab": "Configure करें", + "commands_tab": "Commands", + "preview_tab": "Preview", + "setup_commands": "Setup commands", + "run_these_commands": "अपने project को setup करने के लिए इन commands को क्रम में चलाएं" +} diff --git a/src/locales/ja.json b/src/locales/ja.json index e69de29..27135e5 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Stack Builderをサポート", + "support_description": "このプロジェクトを無料およびオープンソースに保つのを支援してください。皆様の貢献が大きな違いを生みます。", + "share": "共有", + "support": "サポート", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "月次または1回限りのサポート", + "buy_me_coffee": "コーヒーをおごってください", + "buy_me_coffee_desc": "迅速な1回限りの寄付", + "thank_you_support": "オープンソースをサポートしていただきありがとうございます!", + "features": "機能", + "presets": "Presets", + "start_building": "開発開始", + "build_faster": "適切なstackでより速く開発", + "build_your_perfect": "あなたの完璧な", + "tech_stack": "Tech Stackを構築", + "stop_wasting_time": "ゼロからプロジェクトを構成するのに時間を無駄にするのを止めてください。テクノロジーを選択し、完璧なコマンドを取得し、数秒で開発を開始します。", + "open_builder": "Builderを開く", + "everything_you_need": "迅速に始めるために必要なすべて", + "thoughtfully_designed": "最新のweb開発のための思慮深く設計されたbuilder。", + "curated_stack": "キュレートされたStackオプション", + "choose_battle_tested": "Frontend、backend、database、toolingカテゴリにわたる、戦闘でテストされたテクノロジーから選択してください。", + "smart_compatibility": "スマート互換性", + "intelligent_system": "当社のintelligent systemは、互換性のない選択を防止し、最適な組み合わせを提案します。", + "instant_commands": "インスタントコマンド", + "get_ready_to_run": "選択とお好みのpackage managerに合わせたready-to-runのCLIコマンドを取得してください。", + "project_structure": "プロジェクト構造", + "view_recommended": "開始する前に、テクノロジーの選択に基づいて推奨folder構造を表示します。", + "start_with_preset": "Presetから始める", + "jump_start_project": "コミュニティのお気に入りの組み合わせであなたのプロジェクトをjump-startしてください。", + "use_this_preset": "このpresetを使用", + "ready_build_great": "何か素晴らしいものを作る準備ができていますか?", + "join_thousands": "Stack Builderを使用してプロジェクトをより速く開始する数千人の開発者に参加してください。", + "launch_builder": "Builderを起動", + "view_on_github": "GitHubで表示", + "built_with_care": "開発者コミュニティのために細心の注意を払って構築されました。", + "select_one": "1つ選択", + "recommended_structure": "推奨構造", + "share_your_stack": "Stackを共有", + "share_this_configuration": "この設定を他の人と共有", + "selected_technologies": "選択されたテクノロジー", + "share_link": "リンク共有", + "no_technologies_selected_yet": "まだテクノロジーが選択されていません", + "copy_btn": "コピー", + "copied_btn": "コピーしました", + "reset_all": "すべてリセット", + "random_stack": "ランダムstack", + "project_name": "プロジェクト名", + "command_label": "コマンド", + "selected_stack": "選択されたStack", + "no_technologies_selected": "テクノロジーが選択されていません", + "save_btn": "保存", + "back_btn": "戻る", + "builder_badge": "Builder", + "configure_tab": "設定", + "commands_tab": "コマンド", + "preview_tab": "プレビュー", + "setup_commands": "セットアップコマンド", + "run_these_commands": "プロジェクトをセットアップするために、これらのコマンドを順番に実行してください" +} diff --git a/src/locales/pt.json b/src/locales/pt.json index e69de29..e099216 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Apoie o Stack Builder", + "support_description": "Ajude-nos a manter este projeto gratuito e de código aberto. Sua contribuição faz diferença.", + "share": "Compartilhar", + "support": "Suporte", + "github_sponsors": "Patrocinadores GitHub", + "github_sponsors_desc": "Suporte mensal ou único", + "buy_me_coffee": "Compre-me um café", + "buy_me_coffee_desc": "Contribuição única e rápida", + "thank_you_support": "Obrigado por apoiar o código aberto!", + "features": "Recursos", + "presets": "Predefinições", + "start_building": "Começar a Construir", + "build_faster": "Construa mais rápido com a stack correta", + "build_your_perfect": "Construa sua Tech", + "tech_stack": "Stack Perfeita", + "stop_wasting_time": "Pare de perder tempo configurando projetos do zero. Selecione suas tecnologias, obtenha os comandos perfeitos e comece a construir em segundos.", + "open_builder": "Abrir Construtor", + "everything_you_need": "Tudo o que você precisa para começar rápido", + "thoughtfully_designed": "Um construtor cuidadosamente projetado para o desenvolvimento web moderno.", + "curated_stack": "Opções de stack recomendadas", + "choose_battle_tested": "Escolha entre tecnologias testadas em batalha nas categorias frontend, backend, banco de dados e ferramentas.", + "smart_compatibility": "Compatibilidade Inteligente", + "intelligent_system": "Nosso sistema inteligente previne seleções incompatíveis e sugere combinações ideais.", + "instant_commands": "Comandos Instantâneos", + "get_ready_to_run": "Obtenha comandos CLI prontos para usar personalizados para suas seleções e gerenciador de pacotes preferido.", + "project_structure": "Estrutura do Projeto", + "view_recommended": "Visualize a estrutura de pasta recomendada com base nas suas escolhas de tecnologia antes de começar.", + "start_with_preset": "Comece com uma predefinição", + "jump_start_project": "Inicie rapidamente seu projeto com combinações favoritas da comunidade.", + "use_this_preset": "Use esta predefinição", + "ready_build_great": "Pronto para construir algo ótimo?", + "join_thousands": "Junte-se a milhares de desenvolvedores que usam Stack Builder para iniciar seus projetos mais rápido.", + "launch_builder": "Iniciar Construtor", + "view_on_github": "Ver no GitHub", + "built_with_care": "Construído com cuidado para a comunidade de desenvolvedores.", + "select_one": "Selecione um", + "recommended_structure": "Estrutura Recomendada", + "share_your_stack": "Compartilhe Sua Stack", + "share_this_configuration": "Compartilhe esta configuração com outros", + "selected_technologies": "Tecnologias Selecionadas", + "share_link": "Link de Compartilhamento", + "no_technologies_selected_yet": "Nenhuma tecnologia selecionada ainda", + "copy_btn": "Copiar", + "copied_btn": "Copiado", + "reset_all": "Redefinir tudo", + "random_stack": "Stack aleatória", + "project_name": "Nome do Projeto", + "command_label": "Comando", + "selected_stack": "Stack Selecionada", + "no_technologies_selected": "Nenhuma tecnologia selecionada", + "save_btn": "Salvar", + "back_btn": "Voltar", + "builder_badge": "Construtor", + "configure_tab": "Configurar", + "commands_tab": "Comandos", + "preview_tab": "Visualizar", + "setup_commands": "Comandos de Configuração", + "run_these_commands": "Execute estes comandos em ordem para configurar seu projeto" +} diff --git a/src/locales/ru.json b/src/locales/ru.json index e69de29..f482524 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "Поддержите Stack Builder", + "support_description": "Помогите нам сохранить этот проект бесплатным и открытым исходным кодом. Ваш вклад имеет значение.", + "share": "Поделиться", + "support": "Поддержка", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "Ежемесячная или разовая поддержка", + "buy_me_coffee": "Купите мне кофе", + "buy_me_coffee_desc": "Быстрый разовый вклад", + "thank_you_support": "Спасибо за поддержку открытого исходного кода!", + "features": "Возможности", + "presets": "Presets", + "start_building": "Начать разработку", + "build_faster": "Разрабатывайте быстрее с правильным stack", + "build_your_perfect": "Постройте свой идеальный", + "tech_stack": "Tech Stack", + "stop_wasting_time": "Прекратите тратить время на настройку проектов с нуля. Выберите свои технологии, получите идеальные команды и начните разработку за секунды.", + "open_builder": "Открыть Builder", + "everything_you_need": "Всё что вам нужно чтобы начать быстро", + "thoughtfully_designed": "Тщательно продуманный builder для современной web-разработки.", + "curated_stack": "Отобранные варианты Stack", + "choose_battle_tested": "Выбирайте из боевых технологий в категориях frontend, backend, database и tooling.", + "smart_compatibility": "Умная совместимость", + "intelligent_system": "Наша intelligent система предотвращает несовместимые варианты и предлагает оптимальные комбинации.", + "instant_commands": "Мгновенные команды", + "get_ready_to_run": "Получите готовые к запуску CLI команды, адаптированные к вашему выбору и предпочтительному package manager.", + "project_structure": "Структура проекта", + "view_recommended": "Посмотрите рекомендуемую структуру папок на основе ваших технологических выборов перед началом.", + "start_with_preset": "Начните с preset", + "jump_start_project": "Быстро запустите свой проект с популярными комбинациями сообщества.", + "use_this_preset": "Использовать этот preset", + "ready_build_great": "Готовы ли вы построить что-то замечательное?", + "join_thousands": "Присоединитесь к тысячам разработчиков, которые используют Stack Builder для более быстрого запуска своих проектов.", + "launch_builder": "Запустить Builder", + "view_on_github": "Просмотр на GitHub", + "built_with_care": "Разработано с заботой о сообществе разработчиков.", + "select_one": "Выберите один", + "recommended_structure": "Рекомендуемая структура", + "share_your_stack": "Поделитесь своим Stack", + "share_this_configuration": "Поделитесь этой конфигурацией с другими", + "selected_technologies": "Выбранные технологии", + "share_link": "Ссылка общего доступа", + "no_technologies_selected_yet": "Технологии еще не выбраны", + "copy_btn": "Копировать", + "copied_btn": "Скопировано", + "reset_all": "Сбросить все", + "random_stack": "Случайный stack", + "project_name": "Имя проекта", + "command_label": "Команда", + "selected_stack": "Выбранный Stack", + "no_technologies_selected": "Технологии не выбраны", + "save_btn": "Сохранить", + "back_btn": "Назад", + "builder_badge": "Builder", + "configure_tab": "Конфигурировать", + "commands_tab": "Команды", + "preview_tab": "Предпросмотр", + "setup_commands": "Команды установки", + "run_these_commands": "Выполните эти команды по порядку, чтобы настроить проект" +} diff --git a/src/locales/zh.json b/src/locales/zh.json index e69de29..b6002c5 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -0,0 +1,60 @@ +{ + "support_stackbuilder": "支持 Stack Builder", + "support_description": "帮助我们保持这个项目免费和开源。您的贡献至关重要。", + "share": "分享", + "support": "支持", + "github_sponsors": "GitHub Sponsors", + "github_sponsors_desc": "月度或一次性支持", + "buy_me_coffee": "给我买杯咖啡", + "buy_me_coffee_desc": "快速一次性捐助", + "thank_you_support": "感谢您对开源的支持!", + "features": "功能", + "presets": "Presets", + "start_building": "开始开发", + "build_faster": "使用正确的stack更快地开发", + "build_your_perfect": "构建您的完美", + "tech_stack": "Tech Stack", + "stop_wasting_time": "停止浪费时间从头配置项目。选择您的技术,获得完美的命令,并在几秒钟内开始开发。", + "open_builder": "打开Builder", + "everything_you_need": "快速启动所需的一切", + "thoughtfully_designed": "为现代web开发精心设计的builder。", + "curated_stack": "精选Stack选项", + "choose_battle_tested": "从frontend、backend、database和tooling类别中经过战斗检验的技术中进行选择。", + "smart_compatibility": "智能兼容性", + "intelligent_system": "我们的intelligent系统可防止不兼容的选择并建议最佳组合。", + "instant_commands": "即时命令", + "get_ready_to_run": "获得根据您的选择和首选package manager定制的现成CLI命令。", + "project_structure": "项目结构", + "view_recommended": "根据您的技术选择查看建议的文件夹结构,然后开始。", + "start_with_preset": "从preset开始", + "jump_start_project": "使用社区最受欢迎的组合快速启动您的项目。", + "use_this_preset": "使用此preset", + "ready_build_great": "准备好构建一些伟大的东西吗?", + "join_thousands": "加入数千名使用Stack Builder更快地启动项目的开发者。", + "launch_builder": "启动Builder", + "view_on_github": "在GitHub上查看", + "built_with_care": "以关怀开发者社区的方式构建。", + "select_one": "选择一个", + "recommended_structure": "推荐结构", + "share_your_stack": "分享您的Stack", + "share_this_configuration": "与他人分享此配置", + "selected_technologies": "选定的技术", + "share_link": "分享链接", + "no_technologies_selected_yet": "尚未选择任何技术", + "copy_btn": "复制", + "copied_btn": "已复制", + "reset_all": "重置全部", + "random_stack": "随机stack", + "project_name": "项目名称", + "command_label": "命令", + "selected_stack": "选定的Stack", + "no_technologies_selected": "未选择任何技术", + "save_btn": "保存", + "back_btn": "返回", + "builder_badge": "Builder", + "configure_tab": "配置", + "commands_tab": "命令", + "preview_tab": "预览", + "setup_commands": "设置命令", + "run_these_commands": "按顺序运行这些命令以设置您的项目" +} diff --git a/src/main.tsx b/src/main.tsx index d895272..fc5687c 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -4,13 +4,17 @@ import "./index.css"; import App from "./App.tsx"; import { ThemeProvider } from "./components/theme-provider.tsx"; import { BrowserRouter } from "react-router-dom"; +import { I18nextProvider } from "react-i18next"; +import i18n from "./i18n.ts"; createRoot(document.getElementById("root")!).render( - - - - - + + + + + + + , ); diff --git a/src/pages/Builder.tsx b/src/pages/Builder.tsx index 08d25fd..966915e 100644 --- a/src/pages/Builder.tsx +++ b/src/pages/Builder.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, useCallback } from "react"; -import { Link, useSearchParams } from "react-router-dom"; +import { Link, useParams, useSearchParams } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; @@ -31,7 +31,6 @@ import { Check, RotateCcw, Shuffle, - Save, Share2, ChevronRight, Settings, @@ -49,6 +48,7 @@ import { import { cn } from "@/lib/utils"; import CommandStep from "@/components/command-step"; import { ModeToggle } from "@/components/mode-toggle"; +import { useTranslation } from "react-i18next"; function CategorySection({ category, @@ -61,6 +61,7 @@ function CategorySection({ onSelect: (tech: Technology, category: (typeof categories)[number]) => void; isIncompatible: (tech: Technology) => boolean; }) { + const { t } = useTranslation(); return (

@@ -70,7 +71,7 @@ function CategorySection({ {category.singleSelect && ( - Select one + {t("select_one")} )}
@@ -140,6 +141,7 @@ function FolderStructure({ projectName: string; selections: Set; }) { + const { t } = useTranslation(); const generateStructure = () => { // Helper function to get the correct file extension based on TypeScript selection const getExt = (type: "ts" | "tsx" = "ts"): string => { @@ -384,7 +386,7 @@ function FolderStructure({ return (

- Recommended Structure + {t("recommended_structure")}

@@ -417,7 +419,9 @@ function FolderStructure({ } function ShareDialog({ selections }: { selections: Set }) { + const { t } = useTranslation(); const [copied, setCopied] = useState(false); + const { lang } = useParams(); // Map category IDs to URL parameter names const categoryMap: Record = { @@ -467,8 +471,8 @@ function ShareDialog({ selections }: { selections: Set }) { const baseUrl = typeof window !== "undefined" - ? `${window.location.origin}/builder` - : "http://localhost:3000/builder"; + ? `${window.location.origin}/${lang}/builder` + : `http://stack-builder/${lang}/builder`; return params.toString() ? `${baseUrl}?${params.toString()}` : baseUrl; }; @@ -498,25 +502,21 @@ function ShareDialog({ selections }: { selections: Set }) { return ( - - Share Your Stack - - Share this configuration with others - + {t("share_your_stack")} + {t("share_this_configuration")}
-

Selected Technologies

+

+ {t("selected_technologies")} +

{selectedTechs.length > 0 ? ( selectedTechs.map((tech) => ( @@ -542,26 +542,28 @@ function ShareDialog({ selections }: { selections: Set }) { )) ) : (

- No technologies selected yet + {t("no_technologies_selected_yet")}

)}
- +
@@ -574,6 +576,9 @@ function ShareDialog({ selections }: { selections: Set }) { } export default function BuilderPage() { + const { t } = useTranslation(); + const { lang } = useParams(); + const searchParams = useSearchParams()[0]; const presetParam = searchParams.get("preset"); @@ -746,23 +751,23 @@ export default function BuilderPage() {
- Back + {t("back_btn")}
Logo - StackForge + Stack Builder - Builder + {t("builder_badge")}
@@ -775,7 +780,7 @@ export default function BuilderPage() { - Reset all + {t("reset_all")} @@ -785,13 +790,13 @@ export default function BuilderPage() { - Random stack + {t("random_stack")} @@ -818,7 +823,7 @@ export default function BuilderPage() {
@@ -920,25 +910,24 @@ export default function BuilderPage() { className="data-[state=active]:bg-secondary gap-2" > - Configure + {t("configure_tab")} - Commands + {t("commands_tab")} - Preview + {t("preview_tab")}
-

- Setup Commands + {t("setup_commands")}

- Run these commands in order to set up your project + {t("run_these_commands")}

{allCommands.map((step, index) => ( diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx index 9b2744a..85cfaad 100644 --- a/src/pages/LandingPage.tsx +++ b/src/pages/LandingPage.tsx @@ -1,5 +1,5 @@ -import { useState } from "react"; import { Link } from "react-router-dom"; +import { HashLink } from "react-router-hash-link"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,11 +18,12 @@ import { Sparkles, Terminal, Zap, - Copy, - Check, Twitter, - Coffee, + Menu, + X, } from "lucide-react"; +import { useTranslation } from "react-i18next"; +import { useState } from "react"; const techLogos = [ { name: "React", icon: "react" }, @@ -38,27 +39,23 @@ const techLogos = [ const features = [ { icon: Layers, - title: "Curated Stack Options", - description: - "Choose from battle-tested technologies across frontend, backend, database, and tooling categories.", + title: "curated_stack", + description: "choose_battle_tested", }, { icon: Zap, - title: "Smart Compatibility", - description: - "Our intelligent system prevents incompatible selections and suggests optimal combinations.", + title: "smart_compatibility", + description: "intelligent_system", }, { icon: Terminal, - title: "Instant Commands", - description: - "Get ready-to-run CLI commands tailored to your selections and preferred package manager.", + title: "instant_commands", + description: "get_ready_to_run", }, { icon: Sparkles, - title: "Project Structure", - description: - "View the recommended folder structure based on your technology choices before you start.", + title: "project_structure", + description: "view_recommended", }, ]; @@ -88,25 +85,22 @@ const presets = [ ]; function SupportDialog() { + const { t } = useTranslation(); return ( - Support StackForge - - Help us keep this project free and open source. Your contribution - makes a difference. - + {t("support_stackbuilder")} + {t("support_description")}
- - -
- -
-
-
Buy Me a Coffee
-
- Quick one-time contribution + {t("github_sponsors_desc")}

- Thank you for supporting open source! + {t("thank_you_support")}

@@ -153,58 +131,76 @@ function SupportDialog() { } export default function LandingPage() { - const [copied, setCopied] = useState(false); - - const handleCopy = () => { - navigator.clipboard.writeText("npx create-stackforge@latest my-app"); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - }; + const { t } = useTranslation(); + const [menu, setMenu] = useState(false); + const [visible, setVisible] = useState(false); return ( <> -
+
Logo - - StackForge + + Stack Builder
-
- - - + {window.innerWidth <= 640 && ( + + )}
@@ -221,17 +217,17 @@ export default function LandingPage() { } > - Build faster with the right stack + {t("build_faster")}

- Build Your Perfect + {t("build_your_perfect")}
- Tech Stack + {t("tech_stack")}

- Stop wasting time configuring projects from scratch. Select your - technologies, get the perfect commands, and start building in - seconds. + {t("stop_wasting_time")}

- + -
@@ -299,10 +278,10 @@ export default function LandingPage() {

- Everything you need to start fast + {t("everything_you_need")}

- A thoughtfully designed builder for modern web development. + {t("thoughtfully_designed")}

@@ -315,10 +294,10 @@ export default function LandingPage() {

- {feature.title} + {t(feature.title)}

- {feature.description} + {t(feature.description)}

))} @@ -329,10 +308,10 @@ export default function LandingPage() {

- Start with a preset + {t("start_with_preset")}

- Jump-start your project with community-favorite combinations. + {t("jump_start_project")}

@@ -340,7 +319,7 @@ export default function LandingPage() { {presets.map((preset) => (

@@ -358,7 +337,7 @@ export default function LandingPage() { ))}

- Use this preset + {t("use_this_preset")}
@@ -370,16 +349,13 @@ export default function LandingPage() {

- Ready to build something great? + {t("ready_build_great")}

-

- Join thousands of developers who use StackForge to start their - projects faster. -

+

{t("join_thousands")}

- + @@ -390,7 +366,7 @@ export default function LandingPage() { >
@@ -404,10 +380,10 @@ export default function LandingPage() {
- StackForge + Stack Builder
-

- Built with care for the developer community. +

+ {t("built_with_care")}

Date: Fri, 6 Feb 2026 23:00:12 -0300 Subject: [PATCH 2/2] v1.1.0 --- .gitignore | 1 + package.json | 4 +++- pnpm-lock.yaml | 16 ++++++++++++++++ src/Analytics.tsx | 13 +++++++++++++ src/main.tsx | 7 +++++++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/Analytics.tsx diff --git a/.gitignore b/.gitignore index a547bf3..a0377b4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ lerna-debug.log* node_modules dist dist-ssr +.env *.local # Editor directories and files diff --git a/package.json b/package.json index c2e2db3..6425076 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "stack-builder", "private": true, - "version": "1.0.0", + "version": "1.1.0", "type": "module", "scripts": { "dev": "vite", @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@microsoft/clarity": "^1.0.2", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-scroll-area": "^1.2.10", @@ -23,6 +24,7 @@ "lucide-react": "^0.563.0", "react": "^19.2.0", "react-dom": "^19.2.0", + "react-ga4": "^2.1.0", "react-i18next": "^16.5.4", "react-router-dom": "^7.13.0", "react-router-hash-link": "^2.4.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44a33ee..dd59b40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@microsoft/clarity': + specifier: ^1.0.2 + version: 1.0.2 '@radix-ui/react-dialog': specifier: ^1.1.15 version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -47,6 +50,9 @@ importers: react-dom: specifier: ^19.2.0 version: 19.2.4(react@19.2.4) + react-ga4: + specifier: ^2.1.0 + version: 2.1.0 react-i18next: specifier: ^16.5.4 version: 16.5.4(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) @@ -426,6 +432,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@microsoft/clarity@1.0.2': + resolution: {integrity: sha512-9EZYROFpJxEGmQpHvUFqvD3ZJ7QQSqnibYSWmS+1xusoZfG1QQ1/Al9yVBBc11DWMbJrs1pe1hLT273it/skJg==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -1706,6 +1715,9 @@ packages: peerDependencies: react: ^19.2.4 + react-ga4@2.1.0: + resolution: {integrity: sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==} + react-i18next@16.5.4: resolution: {integrity: sha512-6yj+dcfMncEC21QPhOTsW8mOSO+pzFmT6uvU7XXdvM/Cp38zJkmTeMeKmTrmCMD5ToT79FmiE/mRWiYWcJYW4g==} peerDependencies: @@ -2249,6 +2261,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@microsoft/clarity@1.0.2': {} + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} @@ -3377,6 +3391,8 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 + react-ga4@2.1.0: {} + react-i18next@16.5.4(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.6 diff --git a/src/Analytics.tsx b/src/Analytics.tsx new file mode 100644 index 0000000..10e3610 --- /dev/null +++ b/src/Analytics.tsx @@ -0,0 +1,13 @@ +import { useLocation } from "react-router-dom"; +import { useEffect } from "react"; +import ReactGA from "react-ga4"; + +export default function Analytics() { + const location = useLocation(); + + useEffect(() => { + ReactGA.send({ hitType: "pageview", page: location.pathname }); + }, [location]); + + return null; +} diff --git a/src/main.tsx b/src/main.tsx index fc5687c..7f134e5 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6,12 +6,19 @@ import { ThemeProvider } from "./components/theme-provider.tsx"; import { BrowserRouter } from "react-router-dom"; import { I18nextProvider } from "react-i18next"; import i18n from "./i18n.ts"; +import ReactGA from "react-ga4"; +import Analytics from "./Analytics.tsx"; +import Clarity from "@microsoft/clarity"; + +ReactGA.initialize(import.meta.env.VITE_GA_ID); +Clarity.init(import.meta.env.VITE_CLARITY_ID); createRoot(document.getElementById("root")!).render( +