{"_id":"@a5gard/bifrost","_rev":"3-527b5174cb483233bd30160ef2e4dee1","name":"@a5gard/bifrost","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@a5gard/bifrost","version":"1.0.1","keywords":["create","bifrost","stack","template","scaffold","react","remix","nextjs","vite"],"author":"","license":"MIT","_id":"@a5gard/bifrost@1.0.1","maintainers":[{"name":"8an3","email":"skylerzanth@gmail.com"}],"bin":{"bifrost":"dist/index.js"},"dist":{"shasum":"c7dba7be2574d46a778ecb7c0919086e25d80412","tarball":"https://registry.npmjs.org/@a5gard/bifrost/-/bifrost-1.0.1.tgz","fileCount":4,"integrity":"sha512-KDZFj5yd4VchNDtUruS1ll8Aws/CMx2IVC/G4I13zJTUgDR73XroU7YEaSySIz5Mwwh193E//Tcc+sdm1R6GXA==","signatures":[{"sig":"MEYCIQC+b9tKDgS7NRq0qFEYuKTl7UB7GRXybMez8Y032SW8JgIhAJMs+MrHhK8i/uu/vLm1cWGcAJQK6Fq3VZEURu0Cd50f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50613},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c4997bc82b2ad881a6b377bab7becbc3073286e6","scripts":{"dev":"tsc --watch","build":"npm run copy-registry && npm run build:tsup","build:tsup":"tsup src/index.ts --format esm --dts --clean","copy-registry":"bun copy-registry.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"8an3","email":"skylerzanth@gmail.com"},"_npmVersion":"11.6.0","description":"Platform-agnostic project creator with extensible template system","directories":{},"_nodeVersion":"20.19.2","dependencies":{"ora":"^8.0.1","chalk":"^5.3.0","execa":"^8.0.1","prompts":"^2.4.2","fs-extra":"^11.2.0","commander":"^11.1.0","validate-npm-package-name":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","@types/bun":"^1.3.7","typescript":"^5.3.3","@types/node":"^20.11.0","@types/prompts":"^2.4.9","@types/fs-extra":"^11.0.4","@types/validate-npm-package-name":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/bifrost_1.0.1_1769721949979_0.6930723509677263","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@a5gard/bifrost","version":"1.0.2","keywords":["create","bifrost","stack","template","scaffold","react","remix","nextjs","vite"],"author":"","license":"MIT","_id":"@a5gard/bifrost@1.0.2","maintainers":[{"name":"8an3","email":"skylerzanth@gmail.com"}],"bin":{"bifrost":"dist/index.js"},"dist":{"shasum":"1c24421b208d7b3d787ada651ff504cfe1ebe783","tarball":"https://registry.npmjs.org/@a5gard/bifrost/-/bifrost-1.0.2.tgz","fileCount":5,"integrity":"sha512-kV/iOZVgSvZmCPZEkK6EuVG+7HdNfW6/vE9U2sL+IEIUEDSB4cEu+O6A8kU0F8uTeACD+6F9cnZ6CajIEpUbtA==","signatures":[{"sig":"MEUCIGzBkdVJDegnzL759CN4kePXQt1U6zN4bHrUjecKu/iUAiEAi66yeEQcajO3ywmtGvEtCcdaCZpMPtQIl7mqslORNkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66211},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"75926d91aeecafeede8e733cb694d95122a004c9","scripts":{"dev":"tsc --watch","build":"npm run build:tsup && npm run copy-registry ","build:tsup":"tsup src/index.ts --format esm --dts --clean","copy-registry":"bun copy-registry.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"8an3","email":"skylerzanth@gmail.com"},"_npmVersion":"11.6.0","description":"Platform-agnostic project creator with extensible template system","directories":{},"_nodeVersion":"20.19.2","dependencies":{"ora":"^8.0.1","chalk":"^5.3.0","execa":"^8.0.1","prompts":"^2.4.2","fs-extra":"^11.2.0","inquirer":"^13.2.2","commander":"^11.1.0","validate-npm-package-name":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","@types/bun":"^1.3.7","typescript":"^5.3.3","@types/node":"^20.11.0","@types/prompts":"^2.4.9","@types/fs-extra":"^11.0.4","@types/validate-npm-package-name":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/bifrost_1.0.2_1769797092651_0.014125799318569943","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@a5gard/bifrost","version":"1.0.3","description":"Platform-agnostic project creator with extensible template system","type":"module","bin":{"bifrost":"dist/index.js"},"scripts":{"copy-registry":"bun copy-registry.js","build:tsup":"tsup src/index.ts --format esm --dts --clean","build":"npm run build:tsup && npm run copy-registry ","dev":"tsc --watch","prepublishOnly":"npm run build"},"keywords":["create","bifrost","stack","template","scaffold","react","remix","nextjs","vite"],"author":"","license":"MIT","dependencies":{"chalk":"^5.3.0","commander":"^11.1.0","execa":"^8.0.1","fs-extra":"^11.2.0","inquirer":"^13.2.2","ora":"^8.0.1","prompts":"^2.4.2","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/bun":"^1.3.7","@types/fs-extra":"^11.0.4","@types/node":"^20.11.0","@types/prompts":"^2.4.9","@types/validate-npm-package-name":"^4.0.2","tsup":"^8.0.1","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"_id":"@a5gard/bifrost@1.0.3","gitHead":"79199ca9b5dcb480224746bf141096f11b290323","_nodeVersion":"20.19.2","_npmVersion":"11.6.0","dist":{"integrity":"sha512-RtYc3pNMDXOzR2GjIgoBqlh/fnnSnZnpg/Nxuji/xrV67i+z5Rxbhsj8JgevZpUzlBcC5xOUvQgF4VEsJvT5mw==","shasum":"a1fbd5af864a382762818b1b898450d3d182f564","tarball":"https://registry.npmjs.org/@a5gard/bifrost/-/bifrost-1.0.3.tgz","fileCount":5,"unpackedSize":66206,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDiSjHPJUTu78+Gb1YYDddQh6rGS/NP75t60S4IjbXoagIgFZ3yFozzGoshcjJ7Rla29rSTXSwjtwxIISxitJ0T54I="}]},"_npmUser":{"name":"8an3","email":"skylerzanth@gmail.com"},"directories":{},"maintainers":[{"name":"8an3","email":"skylerzanth@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bifrost_1.0.3_1769800187799_0.3039223586726256"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-29T21:25:49.838Z","modified":"2026-01-30T19:09:48.110Z","1.0.1":"2026-01-29T21:25:50.127Z","1.0.2":"2026-01-30T18:18:12.796Z","1.0.3":"2026-01-30T19:09:47.953Z"},"license":"MIT","keywords":["create","bifrost","stack","template","scaffold","react","remix","nextjs","vite"],"description":"Platform-agnostic project creator with extensible template system","maintainers":[{"name":"8an3","email":"skylerzanth@gmail.com"}],"readme":"# bifrost\r\n\r\nPlatform-agnostic project creator with extensible template system inspired by Remix Stacks.\r\n\r\n- [USAGE](#usage)\r\n- [INTERACTIVE MODE](#interactive-mode)\r\n- [CREATING A NEW PROJECT](#creating-a-new-project)\r\n- [CONFIG.BIFROST WIZARD](#config.bifrost-wizard)\r\n- [SUBMIT TEMPLATE](#submit-template)\r\n- [BIFROST-PLUGIN](#bifrost-plugin)\r\n- [INSTALLING A PLUGIN](#installing-a-plugin)\r\n- [LIST AVAILABLE PLUGINS TO INSTALL](#list-available-plugins-to-install)\r\n- [PLUGIN WIZARD](#plugin-wizard)\r\n- [SUBMIT PLUGIN](#submit-plugin)\r\n\r\n\r\n## Features\r\n\r\n- 🌈 **Platform Agnostic**: Works with any framework (Remix, Next.js, Vite, etc.)\r\n- 📦 **Multiple Package Managers**: Support for npm, pnpm, yarn, and bun\r\n- 🎯 **Git-based Stacks**: Use any GitHub repository as a template\r\n- 🚀 **Interactive CLI**: Guided setup with smart prompts\r\n- ⚡ **Fast Setup**: Clone, configure, and install in seconds\r\n- 🔄 **Auto Git Push**: Optionally push initial commit to GitHub\r\n\r\n \r\n\r\n## Usage\r\n\r\n### Interactive Mode\r\n\r\n```bash\r\nbunx @a5gard/bifrost\r\n```\r\n\r\nIn interactive mode, the following prompts will display:\r\n- Create a new project\r\n- `config.bifrost` wizard\r\n- Submit template to bifrost registry\r\n\r\n### `Create a new project`\r\nOnce you start to the `create a new project process` the follow prompts will guide you:\r\n\r\n- What would you like to name your new project?\r\n- Which platform would you like to use? <!-- show the list of platforms, `PLATFORMS` -->\r\n- Do you prefer to use the platforms default install or would you like to opt for a template instead? <!-- show a list displaying two values one for each --> \r\n  - if templates was chosen, you will be presented with a list of templates relevant to the desired platform \r\n  - unless the platform has more than one default install, for example remix offers several default starters to choose from at this time that list will be presented for you to choose from\r\n- Which package manager do you prefer?<!-- display a list of pkg mgrs -->\r\n- The remaining questions will be displayed via a toggle item list\r\n  - Would you like tailwind and its requirements to be installed and configured:\r\n    - using the base tailwind config?\r\n    - using the preset ngin?\r\n  - Pre-install MIÐGARÐR UI components?\r\n  - Pre-install @a5gard/baldr icons?\r\n  - Would you like to auto install the projects libraries once the project has initialized?\r\n  - Would you like to auto create and push the first commit to GitHub?\r\n\r\n\r\n\r\n### `config.bifrost wizard`\r\n\r\n```bash\r\nbunx @a5gard/bifrost wizard\r\n```\r\n\r\nThe wizard will help guide you through the process of the templates config file by going over the following questions:\r\n- description\r\n- repo ( if it doesn't sense the data by scanning your project, it will prompt you to push your current project and create a public repo )\r\n- tags that you would like to associate with your template\r\n- post install scripts that are required to run once the project has initialized, providing the npm scripts names in a csv format\r\n- in a csv format, provide any and all plugins that you would like to include with your template to be installed and used with your template'\r\n\r\nIt will then create config.bifrost for you with the submitted data, and if no values are missing will prompt you, asking if you would like to submit your template at this time. The only requirements for submitting is for the repo to be public and that your template includes the bifrost config file\r\n\r\n```json\r\n// config.bifrost\r\n{\r\n  \"name\": \"My Stack\",\r\n  \"description\": \"A custom template for X platform\",\r\n  \"platform\": \"remix\",\r\n  \"github\": \"owner/repo\",\r\n  \"tags\": [\"react\", \"typescript\", \"tailwind\"],\r\n  \"postInstall\": [\"setup\", \"db:generate\"],\r\n  \"plugins\": [\"owner/plugin1\", \"owner/plugin2\"]\r\n}\r\n```\r\n\r\n### `Submit template`\r\n\r\nAs long as your project already has a public repo already in place, if not it will prompt you to do so at this time, and the required `config.bifrost`. If you don't currently have the config file, it will start the config wizard to help you create it.\r\n\r\n```bash\r\nbunx @a5gard/bifrost submit\r\n```\r\n\r\n\r\n\r\n### Command Flags\r\n\r\n| Flag | Alias | Description |\r\n|------|-------|-------------|\r\n| `--template` | `-s` | Stack to use (format: owner/repo) |\r\n| `--pkg-mgr` | `-p` | Package manager (npm, pnpm, yarn, bun) |\r\n| `--no-install` | | Skip dependency installation |\r\n| `--help` | `-h` | Show help |\r\n| `--version` | `-V` | Show version |\r\n| `--list-templates` |  | List available templates listed within the registry, supplying a platform with the flag will filter the results only listing templates relevant to the desired platform |\r\n| `--wizard` |  | Starts the config wizard |\r\n| `--submit` |  | Submit your template to be saved in the registry |\r\n\r\n```bash\r\nbunx @a5gard/bifrost my-app --template owner/repo --pkg-mgr bun\r\nbunx @a5gard/bifrost my-app -s remix-run/indie-template -p bun\r\nbunx @a5gard/bifrost my-app --list-templates\r\n```\r\n\r\n\r\n### Stack Configuration (Optional)\r\n\r\nAdd a `config.bifrost` to your repository root for enhanced functionality:\r\n\r\n```json\r\n{\r\n  \"name\": \"My Stack\",\r\n  \"description\": \"A custom template for X platform\",\r\n  \"platform\": \"remix\",\r\n  \"github\": \"owner/repo\",\r\n  \"tags\": [\"react\", \"typescript\", \"tailwind\"],\r\n  \"postInstall\": [\"setup\", \"db:generate\"],\r\n  \"plugins\": [\"owner/plugin1\", \"owner/plugin2\"]\r\n}\r\n```\r\n\r\n\r\n> [!IMPORTANT]\r\n> ## Built to Last\r\n> \r\n> This resource has been architected with obsolescence by design—a self-sustaining ecosystem using a decentralized package system built entirely on free infrastructure.\r\n> \r\n> **What this means for you:**\r\n> \r\n> You don't have to worry about the library going down, shutting down, or experiencing service interruptions due to funding issues, infrastructure failures, or anything happening to me personally.\r\n> \r\n> Since there are no operational costs:\r\n> - If my finances collapse, your projects keep running\r\n> - If I get hit by a bus tomorrow, you won't even notice\r\n> - If I abandon the project entirely, everything continues working\r\n> \r\n> Even if this entire project disappeared today, you'd still have:\r\n> - All your templates and plugins (in your repos)\r\n> - The ability to clone and use any community template (via GitHub)\r\n> - Complete ownership of everything you've created\r\n> \r\n> True decentralization means no single point of failure—including me.\r\n\r\n\r\n# bifrost-plugin\r\n\r\nPlugin installer / wizard for bifrost projects.\r\n\r\n\r\n### Interactive Mode\r\n\r\nOnce your project has completed its installation process, you may now cd into the newly created directory and run:\r\n\r\n```bash\r\nbunx @a5gard/bifrost-plugin\r\n```\r\n\r\nEntering interactive mode it will display the following options:\r\n- List available plugins to install\r\n- Plugin wizard ( guide in creating your own plugin )\r\n- Submit Plugin\r\n\r\n## Installing A Plugin\r\n\r\n### `List available plugins to install` \r\n\r\nRunning the following command will start plugin installation process:\r\n\r\n```bash\r\nbunx @a5gard/bifrost-plugin list\r\n```\r\n\r\nThe installer will then obtain the list of available plugins to choose from the @a5gard/bifrost-plugin repo (owner `8an3`) from the file labeled `registry.bifrost`\r\n\r\n### Direct Installation\r\n\r\nor you may use the supplied method \r\n\r\n```bash\r\nbunx @a5gard/bifrost-plugin otp-auth-plugin\r\n```\r\n\r\nWhich will immediatly start the installation process, after scanning your projects config.bifrost to see if the platforms match for compatibility to ensure you are installing the correct plugin.\r\n\r\n## `Plugin wizard`\r\n### Creating your own plugin\r\n\r\nRunning the following command will start the create plugin wizard:\r\n\r\n```bash\r\nbunx @a5gard/bifrost-plugin create\r\n```\r\n\r\nWhere it will then inquirer:\r\n- name of plugin ( req )\r\n- platform ( req )\r\n- description ( req )\r\n- tags you would like to have associated with your plugin\r\n- will ask if you would like to supply the req. libraries now\r\n  - a placeholder will display the format to input the library names but will go as follows @remix-run/react, remix-auth, react\r\n- auto push / create github repo\r\n\r\nIt will then create:\r\n- create `files/` folder\r\n- run `npm init`\r\n- push to github\r\n- create a readme containing a plugin guide and links to the site in order to submit your new plugin and discover others\r\n- create `plugin.bifrost` configuration file, filing in all the fields that it had gotten from you during the setup process\r\n  - name\r\n  - description\r\n  - platform\r\n  - tags, if you completed this step\r\n  - libraries, if you completed this step\r\n  - github\r\n\r\nPlugins are to be made with their own repo so as it can host all the required files for the plugin. \r\nThe repo is required to include a json config file labeled `plugin.bifrost` and a folder labeled `files` where it will host all the required files.\r\nWhen installing a plugin it will prompt the user to either confirm the default supplied file location or the use can also edit the location to suite their use cases needs.\r\n\r\n### plugin.bifrost\r\n\r\n```json\r\n{\r\n  \"name\": \"otp-auth-plugin\",\r\n  \"description\": \"A custom one time password auth plugin for the remix platform\",\r\n  \"platform\": \"remix\",\r\n  \"github\": \"8an3/otp-auth-plugin\",\r\n  \"tags\": [\"remix-run\", \"auth\", \"one-time-password\"],\r\n  \"libraries\": [\"remix-auth-totp\",\"remix-auth\",\"@catalystsoftware/icons\",\"@prisma/client\",\"resend\"],\r\n  \"files\": [\r\n        {\r\n        \"name\": \"email.tsx\",\r\n        \"location\": \"app/components/catalyst-ui/utils/email.tsx\"\r\n        },\r\n        {\r\n        \"name\": \"client-auth.tsx\",\r\n        \"location\": \"app/components/catalyst-ui/utils/client-auth.tsx\"\r\n        },\r\n        {\r\n        \"name\": \"auth-session.ts\",\r\n        \"location\": \"app/components/catalyst-ui/utils/auth-session.ts\"\r\n        },\r\n        {\r\n        \"name\": \"prisma.ts\",\r\n        \"location\": \"app/components/catalyst-ui/utils/prisma.ts\"\r\n        },\r\n        {\r\n        \"name\": \"login.tsx\",\r\n        \"location\": \"app/routes/auth/login.tsx\"\r\n        },\r\n        {\r\n        \"name\": \"lougout.tsx\",\r\n        \"location\": \"app/routes/auth/lougout.tsx\"\r\n        },\r\n        {\r\n        \"name\": \"signup.tsx\",\r\n        \"location\": \"app/routes/auth/signup.tsx\"\r\n        },\r\n        {\r\n        \"name\": \"magic-link.tsx\",\r\n        \"location\": \"app/routes/auth/magic-link.tsx\"\r\n        },\r\n             {\r\n        \"name\": \"verify.tsx\",\r\n        \"location\": \"app/routes/auth/verify.tsx\"\r\n        },\r\n    ],\r\n    \"configs\":[]\r\n}\r\n```\r\n\r\n## `Submit Plugin`\r\n\r\nRunning the following command will start the submission process without the need of interactive mode:\r\n\r\n```bash\r\nbunx @a5gard/bifrost-plugin submit\r\n```\r\n\r\nSelecting this option will automate the submission process for you, adding your plugin to the libraries registry. Allowing you to share you plugin with others that will also be posted on the site to allow users to find it more easily. \r\n\r\n\r\n## Searching / Posting Templates and Plugins\r\n\r\nShortly a site will be available for use where you can search for templates and plugins.\r\n\r\nFeature two tabs, both tabs will host a filtering section located to the left of the pages content and a search bar located at the top of each tabs section. Allowing you to filter by platform, tags, etc meanwhile the search bar will allow you to search for individual templates or plugins for you to use.\r\n\r\n### Templates\r\n\r\nEach template result will display:\r\n- name\r\n- description\r\n- platform\r\n- command line to install the template\r\n- tags\r\n- any plugins that are to be included with the templates installation \r\n\r\n### Plugins\r\n\r\nEach plugin result will display\r\n- name\r\n- description\r\n- platform\r\n- command line to install the plugin\r\n- tags\r\n- required libraries\r\n- required files\r\n\r\n### Submitting\r\n\r\nWhether its a template or plugin, you will have the ability to submit your own to be included with its respective registry, this step is not required or needed but will help in its overall discoverability.\r\nAll you have to do in order to submit is supply your templates or plugins config file once you start the submission process. The pages nav bar will host a `submit` button in order to start the process.\r\n\r\nUpon submission the website will automatically update the relevant registry file and push the update to github to ensure the process is automated.\r\n","readmeFilename":"README.md"}