{"id":46517303,"url":"https://github.com/luciancaetano/startercraft","last_synced_at":"2026-03-06T18:12:37.698Z","repository":{"id":40755259,"uuid":"284255683","full_name":"luciancaetano/startercraft","owner":"luciancaetano","description":"An opinionated boilerplate designed to accelerate the development of modern, scalable React applications with TypeScript.","archived":false,"fork":false,"pushed_at":"2026-03-06T01:01:44.000Z","size":6293,"stargazers_count":22,"open_issues_count":14,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-06T01:25:56.535Z","etag":null,"topics":["boilerplate","hooks","react","react-hooks","react-router","typescript"],"latest_commit_sha":null,"homepage":"https://luciancaetano.github.io/startercraft/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luciancaetano.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-08-01T12:28:51.000Z","updated_at":"2026-03-06T00:57:18.000Z","dependencies_parsed_at":"2024-02-19T01:26:13.755Z","dependency_job_id":"61e099f4-cbaf-4214-909d-28bd48620af3","html_url":"https://github.com/luciancaetano/startercraft","commit_stats":null,"previous_names":["luciancaetano/startercraft"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/luciancaetano/startercraft","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luciancaetano%2Fstartercraft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luciancaetano%2Fstartercraft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luciancaetano%2Fstartercraft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luciancaetano%2Fstartercraft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luciancaetano","download_url":"https://codeload.github.com/luciancaetano/startercraft/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luciancaetano%2Fstartercraft/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30189699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","hooks","react","react-hooks","react-router","typescript"],"created_at":"2026-03-06T18:12:37.165Z","updated_at":"2026-03-06T18:12:37.666Z","avatar_url":"https://github.com/luciancaetano.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./src/assets/images/startercraft.png\" alt=\"Startercraft Logo\" width=\"200\" /\u003e\n\u003c/div\u003e\n\n# ⚡️ Fast and Scalable React Project\n\n[![License](https://img.shields.io/github/license/luciancaetano/startercraft?color=blue)](./LICENCE.md)\n[![Contributors](https://img.shields.io/github/contributors/luciancaetano/startercraft)](https://github.com/luciancaetano/startercraft/graphs/contributors)\n[![Last Commit](https://img.shields.io/github/last-commit/luciancaetano/startercraft?logo=git)](https://github.com/luciancaetano/startercraft/commits/main)\n\nAn **opinionated boilerplate** designed to accelerate the development of modern, scalable React applications with TypeScript.\nThis template is especially suited for projects that require high scalability and complexity, promoting a clean architecture, modularity, and conventions that make maintenance easier, improve code quality, and enhance overall codebase understanding across the team.\n\n## 🚀 Create a New Project\n\nTo quickly start a new project using this template, run the following command:\n\n```bash\nnpx create-startercraft my-awesome-scalable-project\n```\n\nReplace `my-awesome-scalable-project` with your desired project name. This command will set up a new project with all the configurations and best practices included in this template.\n\n---\n\n## 📖 Index\n\n- [📂 Component Organization](./docs/component-organization.md)\n- [🏛️ Domain Layer](./docs/domain-layer.md)\n- [⚙️ Code Generation](./docs/code-generation.md)\n- [🧩 What is a Feature?](./docs/feature-definition.md)\n- [⚖️ License](./LICENCE.md)\n- [🚀 Features](#-features)\n- [📋 Prerequisites](#-prerequisites)\n- [📦 Installation](#-installation)\n- [🛠️ Scripts](#%EF%B8%8F-scripts)\n- [🧭 Path Aliases](#-path-aliases)\n- [⚙️ Code Generation](#%EF%B8%8F-code-generation)\n- [🧩 Why This Structure?](#-why-this-structure)\n- [📚 Examples of Use](#-examples-of-use)\n- [🧪 Testing Guide](./docs/testing-guide.md)\n- [🔄 GitHub Workflows](./docs/workflows-deps.md)\n- [❓ FAQ](#-faq)\n- [🤝 Contributing](#-contributing)\n- [📜 License](#-license)\n- [🌟 Acknowledgements](#-acknowledgements)\n- [🔗 Useful Links](#-useful-links)\n\n---\n\n## 🚀 Features\n\n[🔝 Back to Index](#-index)\n\nThis starter ships with everything you need to build production-grade React apps:\n\n- **Core**\n  - [React](https://reactjs.org/) – UI library\n  - [TypeScript](https://www.typescriptlang.org/) – static typing\n  - [React Router](https://reactrouter.com/) – routing\n  - [web-vitals](https://web.dev/vitals/) – performance monitoring\n\n- **Styling \u0026 UI**\n  - [Tailwind CSS](https://tailwindcss.com/) – utility-first styling\n\n- **Testing \u0026 Quality**\n  - [Vitest](https://vitest.dev/) – unit testing\n  - [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) – testing React components\n  - [ESLint](https://eslint.org/) – linting\n\n- **Developer Experience**\n  - Code generation (components \u0026 features)\n  - Path aliases for cleaner imports\n  - Pre-configured validation pipeline (`type-check + lint + test`)\n\n---\n\n## 📋 Prerequisites\n\n[🔝 Back to Index](#-index)\n\nBefore you begin, ensure you have the following installed:\n\n- [Node.js](https://nodejs.org/) (version 18 or higher)\n- [npm](https://www.npmjs.com/)\n\n---\n\n## 📦 Installation\n\n[🔝 Back to Index](#-index)\n\n```bash\ngit clone https://github.com/luciancaetano/startercraft.git\ncd startercraft\nnpm install\n```\n\n---\n\n## 🛠️ Scripts\n\n[🔝 Back to Index](#-index)\n\nCommonly used commands from `package.json`:\n\n| Command            | Description                                    |\n| ------------------ | ---------------------------------------------- |\n| `npm start`        | Start the development server                   |\n| `npm run build`    | Compile the application for production         |\n| `npm run preview`  | Preview the production build                   |\n| `npm run test`     | Run all tests with coverage                    |\n| `npm run lint`     | Run ESLint                                     |\n| `npm run generate` | Run the code generator for components/features |\n| `npm run validate` | Type-check, lint, and run tests                |\n\n---\n\n## 🧭 Path Aliases\n\n[🔝 Back to Index](#-index)\n\nTo avoid messy relative imports, this starter uses TypeScript path aliases:\n\n| Alias           | Path                     | Description                          |\n| --------------- | ------------------------ | ------------------------------------ |\n| `@features/*`   | `./src/app/features/*`   | Feature modules                      |\n| `@components/*` | `./src/app/components/*` | Reusable UI components               |\n| `@config/*`     | `./src/app/config/*`     | Configurations                       |\n| `@domain/*`     | `./src/app/domain/*`     | Domain models, types \u0026 services      |\n| `@hooks/*`      | `./src/app/hooks/*`      | Custom React hooks                   |\n| `@utils/*`      | `./src/app/utils/*`      | Utility functions                    |\n| `@assets/*`     | `./src/assets/*`         | Static assets (images, icons, fonts) |\n\n---\n\n## ⚙️ Code Generation\n\n[🔝 Back to Index](#-index)\n\nEasily scaffold new components or features with:\n\n```bash\nnpm run generate\n```\n\n### 📂 Component Structure\n\n```bash\nsrc/app/components/[type]/[name]/\n│── [name].tsx            # Component view\n│── [name].spec.tsx       # Unit test\n│── [name].module.scss    # Styles (scoped)\n│── [name].types.ts       # Types \u0026 interfaces\n│── [name].view-model.ts  # View-model / logic\n│── index.ts              # Public exports\n```\n\n- **\\[type]** → `elements`, `providers`, `pages`, or `layouts`\n- **\\[name]** → The component name\n\n### 📂 Feature Structure\n\n```bash\nsrc/app/features/[name]/\n│── [name].routes.tsx     # Feature route definitions\n```\n\n\u003e Features are lightweight by default. Add `components/`, `hooks/`, `types/`, `utils/`, and `config/` subdirectories as needed.\n\n### 📂 Scoped Component Structure\n\nFor components that are exclusively scoped to a parent component, nest them inside a `components/` folder:\n\n```bash\nsrc/app/components/[type]/[parent-name]/components/[child-name]/\n│── [name].tsx            # Scoped child component view\n│── [name].spec.tsx       # Unit test\n│── [name].module.scss    # Styles (scoped)\n│── [name].types.ts       # Types \u0026 interfaces\n│── [name].view-model.ts  # View-model / logic\n│── index.ts              # Public exports\n```\n\n---\n\n## 🧩 Why This Structure?\n\n[🔝 Back to Index](#-index)\n\n- ✅ **Modularity** – clean separation of concerns\n- ✅ **Scalability** – easy to extend features\n- ✅ **Reusability** – atomic components \u0026 shared utils\n- ✅ **Maintainability** – consistent architecture \u0026 conventions\n- ✅ **DX Friendly** – generation tools, linting \u0026 validation pipeline\n\n---\n\n## 📚 Examples of Use\n\n[🔝 Back to Index](#-index)\n\n### Running the Development Server\n\n```bash\nnpm start\n```\n\n### Running Tests\n\n```bash\nnpm test\n```\n\n### Building for Production\n\n```bash\nnpm run build\n```\n\n---\n\n## ❓ FAQ\n\n[🔝 Back to Index](#-index)\n\n### What is the minimum Node.js version required?\n\nNode.js version 18 or higher is required. Using the latest LTS version is recommended for better stability and support.\n\n### How do I add a new feature or component?\n\nUse the code generation tool by running:\n\n```bash\nnpm run generate\n```\n\nFollow the prompts to scaffold the desired feature or component.\n\n### How do I configure environment variables?\n\nCreate a `.env` file in the root directory and define your variables there. Use the `example.env` file as a reference.\n\n### How do I update dependencies?\n\nRun the following command to update all dependencies:\n\n```bash\nnpm update\n```\n\nFor major version updates, review the changelogs of the respective packages to ensure compatibility.\n\n### How do I report a bug or request a feature?\n\nOpen an issue on the [GitHub repository](https://github.com/luciancaetano/startercraft/issues) with detailed information about the bug or feature request.\n\n---\n\n## 🤝 Contributing\n\n[🔝 Back to Index](#-index)\n\n1. Fork the repository\n2. Create a new branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m \"feat: add amazing feature\"`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## 📜 License\n\n[🔝 Back to Index](#-index)\n\nThis project is licensed under the [CC0](./LICENCE.md).\n\n---\n\n## 🌟 Acknowledgements\n\n[🔝 Back to Index](#-index)\n\nThis starter was inspired by best practices and setups from the React community, with the goal of helping teams build robust and maintainable apps faster.\n\n---\n\n## 🔗 Useful Links\n\n[🔝 Back to Index](#-index)\n\n- [React Documentation](https://reactjs.org/docs/getting-started.html)\n- [TypeScript Documentation](https://www.typescriptlang.org/docs/)\n- [React Router Documentation](https://reactrouter.com/)\n- [Tailwind CSS Documentation](https://tailwindcss.com/docs)\n- [Vitest Documentation](https://vitest.dev/guide/)\n- [Web Vitals](https://web.dev/vitals/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluciancaetano%2Fstartercraft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluciancaetano%2Fstartercraft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluciancaetano%2Fstartercraft/lists"}