{"id":15250471,"url":"https://github.com/spacenectar/builda-app","last_synced_at":"2026-04-10T02:34:09.746Z","repository":{"id":41511546,"uuid":"84548244","full_name":"spacenectar/builda-app","owner":"spacenectar","description":"A generator to build your next web project","archived":false,"fork":false,"pushed_at":"2024-01-10T06:12:12.000Z","size":30140,"stargazers_count":0,"open_issues_count":9,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-08T18:47:53.866Z","etag":null,"topics":["css","css-modules","generator","hacktoberfest","node","npx","react","sass","storybook","styleguide"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spacenectar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"foxleigh81","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-03-10T10:26:09.000Z","updated_at":"2022-09-15T10:06:21.000Z","dependencies_parsed_at":"2024-10-13T06:20:53.164Z","dependency_job_id":"4f771932-cb82-4f43-93df-35be6782b596","html_url":"https://github.com/spacenectar/builda-app","commit_stats":null,"previous_names":["spacenectar/builda","foxleigh81/buildcom","foxleigh81/ctgen"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacenectar%2Fbuilda-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacenectar%2Fbuilda-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacenectar%2Fbuilda-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacenectar%2Fbuilda-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spacenectar","download_url":"https://codeload.github.com/spacenectar/builda-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243885889,"owners_count":20363644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["css","css-modules","generator","hacktoberfest","node","npx","react","sass","storybook","styleguide"],"created_at":"2024-09-29T16:05:01.459Z","updated_at":"2026-01-02T08:47:33.771Z","avatar_url":"https://github.com/spacenectar.png","language":"TypeScript","funding_links":["https://ko-fi.com/foxleigh81","https://www.patreon.com/builda?style=for-the-badge","https://ko-fi.com/I3I21FRCN","https://www.patreon.com/stelmosfire"],"categories":[],"sub_categories":[],"readme":"# ![Builda Logo](https://raw.githubusercontent.com/spacenectar/builda-app/master/builda-logo.png)\n\n[![NPM Version](https://img.shields.io/npm/v/builda?style=for-the-badge\u0026logo=npm)](https://www.npmjs.com/package/builda)\n[![npm](https://img.shields.io/npm/dt/builda?style=for-the-badge\u0026logo=npm)](https://www.npmjs.com/package/builda)\n[![GitHub issues](https://img.shields.io/github/issues/spacenectar/builda-app?style=for-the-badge\u0026logo=github)](https://github.com/spacenectar/builda-app)\n[![GitHub stars](https://img.shields.io/github/stars/spacenectar/builda-app?style=for-the-badge\u0026logo=github)](https://github.com/spacenectar/builda-app)\n![Codacy grade](https://img.shields.io/codacy/grade/2d431f518682497fb27036f95ec38599?style=for-the-badge)\n[![Patreon](https://img.shields.io/badge/Patreon-Support-brightgreen?style=for-the-badge\u0026logo=patreon)](https://www.patreon.com/builda?style=for-the-badge)\n\n\u003e **NOTE:** This readme file is a mess as it is a work in progress.\n\u003e Please bear with me, I will clean it up and add more information soon.\n\u003e Also, the example blueprints and prefabs listed below are not yet available\n\u003e but will be soon.\n\n## What's this\n\nBuilda is a simple command-line tool to make building project elements fast and easy.\n\nBuilda generates files and folders using something called a 'blueprint', this is\na template that contains all the files and directories that you want to create as\nwell as a set of variables (called 'substitutions') that you can use to fill in\nthe template automatically.\n\nYou can also build entire projects using super-powered blueprints known as 'prefabs'\n(see [Prefabs](#prefabs) below).\n\n## Screenshots\n\nComing soon...\n\n## Setup\n\n### Installation\n\nYou can either install `builda` as a global module or install it locally into your\nproject, if you choose to install it locally, you will need to run `npm run builda`\nor `yarn builda` instead of just `builda`.\n\n![NPM](https://img.shields.io/badge/npm-install_globally-red?style=for-the-badge\u0026logo=npm)\n\n```shell\nnpm i -g builda\n```\n\n![Yarn](https://img.shields.io/badge/yarn-install_globally-yellow?style=for-the-badge\u0026logo=yarn)\n\n```shell\nyarn global add builda\n```\n\n![NPM](https://img.shields.io/badge/npm-install_locally-red?style=for-the-badge\u0026logo=npm)\n\n```shell\nnpm i --dev builda\n```\n\n![Yarn](https://img.shields.io/badge/yarn-install_locally-yellow?style=for-the-badge\u0026logo=yarn)\n\n```shell\nyarn add -D builda\n```\n\nThen you can initialise builda by typing `builda --init` this will create a `.builda`\ndirectory in your project root. (see [Configuration](#configuration) below)\n\n### Configuration\n\n\u003e **Note:** If you want to use a prefab, you do not need to run `builda --init`\n\u003e (see [Prefabs](#prefabs) below)\n\nYou can specify some defaults by updating the `builda` object in your `package.json` file.\n\n[This section is incomplete and will be updated soon](#configuration)\n\n## Installing modules\n\nBuilda has two different types of modules, 'blueprints' and 'prefabs'.\n\nYou can install blueprints by running `builda add \u003cblueprint-path\u003e`\n\nInstalling prefabs is a little different. Instead of installing a prefab,\nyou initialise a project using a prefab.\n\nThe command to do that is `builda project \u003cprefab-path\u003e`\n\n### Prefixes\n\nYou can put the full path to the module as a url if you wish or you can use\na prefixed path (known in Builda as a 'resolver')\n\ne.g. The following command will install the 'arctic-fox' blueprint:\n\n```shell\nbuilda add builda:arctic-fox\n```\n\nThe `builda:` prefix tells builda to look at the module registry on the builda\ntrade-store for the appropriate module.\n\nBuilda also supports the following prefixes:\n\n#### `github:` prefix to install modules from GitHub\n\ne.g. The following command will install the 'arctic-fox' blueprint from the\nGitHub user 'builda-modules':\n\n```shell\nbuilda install github:builda-modules/arctic-fox\n```\n\n#### `bitbucket:` prefix to install modules from BitBucket\n\ne.g. The following command will install the 'arctic-fox' blueprint from the\nBitBucket user 'builda-modules':\n\n```shell\nbuilda install bitbucket:builda-modules/arctic-fox\n```\n\n\u003e NOTE: github and bitbucket prefixes require a release tag of 'latest' to exist\n\u003e in order to install the module.\n\n#### Custom prefixes\n\nYou can also specify custom prefixes by adding them to the `config.json` file under\n`resolve`:\n\n```json\n{\n  \"resolve\": {\n    \"sn\": \"https://spacenectar.io/builda/modules\"\n  }\n}\n```\n\nThen you could install 'custom-blueprint' from the spacenectar website by running:\n\n```shell\nbuilda add sn:custom-blueprint\n```\n\n## Usage\n\n### Useful commands\n\n#### `builda init`\n\nInitialises builda in your project. This will create a `.builda` directory in your\nproject root and a `config.json` file inside that.\n(see [Configuration](#configuration) below)\n\n#### `builda project \u003cprefab-path\u003e`\n\nInitialises a new project using a prefab. (see [Prefabs](#prefabs) below)\n\n#### `builda new \u003cthing\u003e`\n\nCreates a new thing from a bluebrint (see [Blueprints](#blueprints) below)\n\n\u003c!-- #### `builda --index`\n\nGenerates an index file any directories specified in 'indexes' in the config\nfile. (see [Indexing](#indexing) below) --\u003e\n\n#### `builda --help`\n\nDisplays the help menu.\n\n### Blueprints\n\nBlueprints can be used to generate files and folders in your project.\n\nOnce you have added a blueprint you then need to edit your `builda` entry in your\n`package.json` file to tell builda where to put the output of the blueprint.\n\nOnce you have installed a blueprint, you will see a `blueprints` entry in your\nbuilda config. After that entry, you can add a `scripts` entry which will contain\na list of scripts that you can run to generate files and folders.\n\nFor example, if you installed the `arctic-fox` blueprint, you would see the\nfollowing in your `package.json` file:\n\n```json\n{\n  \"builda\": {\n    \"blueprints\": {\n      \"arctic-fox\": {\n        \"version\": \"1.0.0\",\n        \"location\": \"builda:arctic-fox\"\n      }\n    }\n  }\n}\n```\n\nYou can add a `scripts` entry below this like so:\n\n```json\n{\n  \"builda\": {\n    \"blueprints\": {\n      \"arctic-fox\": {\n        \"version\": \"1.0.0\",\n        \"location\": \"builda:arctic-fox\"\n      }\n    },\n    \"scripts\": {\n      \"component\": {\n        \"use\": \"arctic-fox\",\n        \"outputDir\": \"src/components\"\n      }\n    }\n  }\n}\n```\n\nThis tells builda that any time you want to generate a new `component` it should\nuse the `arctic-fox` blueprint and put the output in the `src/components` directory.\n\n```shell\nbuilda new component --name my-example-component\n```\n\nThis will generate a component called `my-example-component` in the `src/components`\ndirectory using the `arctic-fox` blueprint.\n\nThis is a powerful feature as not only does it allow you to specify the directory\nto generate files in, it also allows you to specify the blueprint to generate from,\nso you can specify a different blueprint for each type of thing you want to generate.\n\ne.g. You could have a `component` script which uses the `arctic-fox` blueprint and\na `page` script which uses the `arctic-wolf` blueprint.\n\n\u003c!-- ## Indexing\n\nBuilda can generate an index file for any directories you specify in the config\nfile. This is useful if you want to import files from a directory without having\nto specify the full path.\n\nFor example, if you have a directory called `components` and you want to import\na component called `my-component`, you could do this:\n\n```javascript\nimport MyComponent from './components/my-component';\n```\n\nBut if you have an index file, you can do this:\n\n```javascript\nimport { MyComponent } from './components';\n```\n\nIndexing is a little basic at the moment, it just generates an index file which\nexports the default export of any index file it files in the directory\n(excluding the index file itself) and any sub-directories. The name of the\nexport is the name of the containing directory.\n\nThis will be improved in the future.\n\n### Configuring indexing\n\nTo configure indexing, you need to add an `indexes` property to your config file.\nWithin this property, you can specify an array of directories to index.\n\nYou can also specify a file extension to use for the index file. If you do not\nspecify an extension, the default is `.ts`.\n\n```json\n{\n  \"indexes\": {\n    \"directories\": [\"components\", \"atoms\"],\n    \"extension\": \".ts\"\n  }\n}\n``` --\u003e\n\n## Prefabs\n\nBlueprints are a great way to build parts of your project, but sometimes you want\nto build out an entire project. This is where prefabs come in.\n\nA prefab is essentially a massive blueprint, which contains all of the\nfiles and directories that you would need to build a project.\n\nA prefab does differ a little from a blueprint in that it is not designed to be\nmodified once it has been created, all prefab files live inside the .builda\ndirectory and you use a `builda` command to run your application and keep your\nproject files in sync.\n\n### Why?\n\nThe purpose of a prefab is to effectively turn the core parts of your project\ninto a package. This means that you can use the same prefab to build out\nmultiple projects and when you want to update that prefab, a single command\ninside any project that uses that prefab will pull in the latest changes.\n\nThe core of your application is now basically just config. Leaving you free\nto focus on individual features.\n\n### Ok but what if I want parts of the project to be different?\n\nNo problem! You can just `eject` the files you want to update from the prebabs folder\ninto the root of your project. Provided that the paths match up, the files in the\nroot will take precedence over the files in the prefab. This of course means that\nthese files will no longer receive updates when the prefab is updated and you\nwill need to manually update the files in the root if you want them to be updated.\n\n\u003e **COMING SOON:** Prefab migration is on the roadmap. So manually updating the\n\u003e files in the root will eventually be more like a git merge, only requiring manual\n\u003e intervention to resolve conflicts.\n\n### Using prefabs\n\nA prefab is an entire project. So rather than installing a prefab as you do with\na blueprint. You would initialise builda with the `project` command and then\nspecify the prefab you want to use.\n\n```shell\nbuilda project builda:jackanory\n```\n\nThis will build out your new project using the `jackanory` prefab.\n\n\u003e **COMING SOON:** Prefab partials are on the roadmap. This will allow you to\n\u003e add prefabs to existing projects and have only parts of the project connected\n\u003e to a prefab. This would be useful if you wanted to add a preconfigured\n\u003e package to your project (e.g. storybook) and wanted to keep that preconfiguration\n\u003e in sync with the rest of your projects but still leave the rest of your project\n\u003e as a standalone project.\n\n## Migrating from Buildcom\n\nIf you previously used the [buildcom](https://npmjs.com/package/buildcom) package\nthen please be aware that although this is the successor to buildcom,\nit is a completely different package and is not backwards compatible.\n\nIf you rely on the legacy buildcom package, you may find that builda covers\nall of the functionality of buildcom and then some. However as this is an early\nrelease, you may find that you are better off staying with buildcom for now.\n\n## Roadmap\n\n- Add support for generating multiple components at once\n\n- Add a selection of default blueprints\n\n- Create a website for builda with full documentation\n\n- Add the ability to easily generate your own blueprints\n\n- Create a community marketplace for blueprints and prefabs.\n\n- Add support for migrating to new prefabs without having to manually update custom\n  files.\n\n- Add prefab partials to allow smaller parts of your project to be prefabs but not\n  the whole project.\n\n- Even more stuff!\n\n## Get support / discuss builda\n\nI've set up a [GitHub Discussions board](https://github.com/spacenectar/builda-app/discussions)\nfor builda. Feel free to post questions, bugs, suggestions, or just to chat.\n\n## Contribute\n\nBuilda is not yet set up to receive contributions, but if you would like to help\nthen please feel free to post questions, suggestions or bug reports on the\ndiscussions board (link above). I will be happy to review any pull requests you may\nhave but it makes sense to wait until I release the docs and tools which will make\ncontributing much easier.\n\n## Support me\n\n### Donate\n\nI made this with love and of course it is free for you to use and modify however\nyou see fit, however if you would like to buy me a coffee to say thanks, I\ncertainly won't complain :)\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/I3I21FRCN)\n\n### Patreon\n\nI have a [Patreon](https://www.patreon.com/stelmosfire) where you can support me\nand help me keep this project alive. At the moment I only have a single 'Offer\nSupport' tier but I'm sure I'll be adding more tiers in the future when I get\naround to fleshing out my page.\n\n## How to create a blueprint\n\nComing soon...\n\n## How to create a prefab\n\nAt the moment, this is a manual process. I will be adding a tool to make this\neasier in the future.\n\n### Creating the prefab\n\nA prefab requires the following files and directories:\n\n- registry.json - This is the registry file for the prefab. It is used to\n  register the prefab with builda and to specify the name of the prefab.\n- README.md - This is the readme file for the prefab. It is used to provide\n  information about the prefab and how to use it.\n- A 'modules' directory - This is the directory where all of the files for the\n  prefab are stored.\n\nYou can add other files and directories to the prefab if you want, but these\nwill be ignored by builda. If you don't want to install builda globally, you can\nadd a package.json file to the root and install builda as a dev dependency.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacenectar%2Fbuilda-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspacenectar%2Fbuilda-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacenectar%2Fbuilda-app/lists"}