{
  "markdown": "# spartan\n\n<a href=\"https://www.spartan.ng\" target=\"_blank\">\n<img alt=\"A spartan shield\" width=\"100px\" src=\"./spartan.svg\" title=\"Spartan logo\"/>\n</a>\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT) [![Discord server](https://dcbadge.limes.pink/api/server/EqHnxQ4uQr?style=flat-square)](https://discord.gg/EqHnxQ4uQr)\n\n[Website](https://www.spartan.ng) • [Documentation](https://www.spartan.ng/documentation/introduction) • [Components](https://www.spartan.ng/components) • [Blocks](https://www.spartan.ng/blocks) • [GitHub](https://github.com/spartan-ng/spartan)\n\n> Cutting-edge tools that power Angular full-stack development - accessible, un-styled UI primitives with copy-paste, shadcn-style styles, plus an opinionated full-stack setup. Build like a spartan.\n\nWelcome to the spartan mono-repo. This Nx repository is home to **spartan/ui** - accessible,\nun-styled UI primitives for Angular with copy-paste, shadcn-style helm styles - and the **spartan/stack**,\nan opinionated full-stack setup built on AnalogJs.\n\nspartan/ui is **1.0** and stable: production-ready, [semantically versioned](https://semver.org), and\nshipping more than 55 components. Install it from npm with\n[`@spartan-ng/brain`](https://www.npmjs.com/package/@spartan-ng/brain) and the\n[`@spartan-ng/cli`](https://www.npmjs.com/package/@spartan-ng/cli), or explore everything at\n[spartan.ng](https://www.spartan.ng).\n\n## Packages\n\n| Package                             | Description                                                                    |                                                        |\n| ----------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------ |\n| [`@spartan-ng/brain`](./libs/brain) | Headless, accessible UI primitives for Angular - the behavior half of spartan. | [npm](https://www.npmjs.com/package/@spartan-ng/brain) |\n| [`@spartan-ng/cli`](./libs/cli)     | Nx plugin & Angular schematics that add spartan/ui to any workspace in one go. | [npm](https://www.npmjs.com/package/@spartan-ng/cli)   |\n| [`@spartan-ng/mcp`](./libs/mcp)     | Model Context Protocol server giving AI assistants up-to-date spartan docs.    | [npm](https://www.npmjs.com/package/@spartan-ng/mcp)   |\n\nThe styled **helm** components aren't published as a package on purpose - the [CLI](./libs/cli) copies them straight into your project so you own and customize every line.\n\n## The 300 spartans\n\nAll of spartan is an MIT-licensed open source project with its ongoing development made possible by contributors and sponsors.\n\nOur initial 300 contributors and sponsors are featured here and on the front page of [spartan.ng](https://www.spartan.ng)\n\n1. [goetzrobin](https://github.com/goetzrobin)\n2. [thatsamsonkid](https://github.com/thatsamsonkid)\n3. [elite-benni](https://github.com/elite-benni)\n4. [ashley-hunter](https://github.com/ashley-hunter)\n5. [marcjulian](https://github.com/marcjulian)\n6. [MerlinMoos](https://github.com/MerlinMoos)\n7. [zeropsio](https://github.com/zeropsio)\n8. [snyder-tech](https://github.com/snyder-tech)\n9. [mihajm](https://github.com/mihajm)\n10. [ajitzero](https://github.com/ajitzero)\n11. [arturgawlik](https://github.com/arturgawlik)\n12. [deepakrudrapaul](https://github.com/deepakrudrapaul)\n13. [evanfuture](https://github.com/evanfuture)\n14. [AdditionAddict](https://github.com/AdditionAddict)\n15. [Altamimi-Dev](https://github.com/Altamimi-Dev)\n16. [ferat](https://github.com/ferat)\n17. [jeremy-js-devweb](https://github.com/jeremy-js-devweb)\n18. [heddendorp](https://github.com/heddendorp)\n19. [tutkli](https://github.com/tutkli)\n20. [Pascalmh](https://github.com/Pascalmh)\n21. [okkindel](https://github.com/okkindel)\n22. [oidre](https://github.com/oidre)\n23. [nartc](https://github.com/nartc)\n24. [santoshyadavdev](https://github.com/santoshyadavdev)\n25. [markostanimirovic](https://github.com/markostanimirovic)\n26. [theo-matzavinos](https://github.com/theo-matzavinos)\n27. [jkuri](https://github.com/jkuri)\n28. [dongphuong0905](https://github.com/dongphuong0905)\n29. [DominikPieper](https://github.com/DominikPieper)\n30. [brandonroberts](https://github.com/brandonroberts)\n31. [izikd](https://github.com/izikd)\n32. [ryancraigmartin](https://github.com/ryancraigmartin)\n33. [gaetanBloch](https://github.com/gaetanBloch)\n34. [gergobergo](https://github.com/gergobergo)\n35. [rpacheco124](https://github.com/rpacheco124)\n36. [benjaminforras](https://github.com/benjaminforras)\n37. [jstnjs](https://github.com/jstnjs)\n38. [r3ps4J](https://github.com/r3ps4J)\n39. [Celtian](https://github.com/Celtian)\n40. [miljan-code](https://github.com/miljan-code)\n41. [alexciesielski](https://github.com/alexciesielski)\n42. [ty-ler](https://github.com/ty-ler)\n43. [m-risto](https://github.com/m-risto)\n44. [badsgahhl](https://github.com/badsgahhl)\n45. [monacodelisa](https://github.com/monacodelisa)\n46. [tomdev9](https://github.com/tomdev9)\n47. [ragul1697](https://github.com/ragul1697)\n48. [kkamman](https://github.com/kkamman)\n49. [i-am-the-slime](https://github.com/i-am-the-slime)\n50. [DevWedeloper](https://github.com/DevWedeloper)\n51. [mrsofiane](https://github.com/mrsofiane)\n52. [mateoetchepare](https://github.com/mateoetchepare)\n53. [DonaldMurillo](https://github.com/DonaldMurillo)\n54. [toniskobic](https://github.com/toniskobic)\n55. [eneajaho](https://github.com/eneajaho)\n56. [Den-dp](https://github.com/Den-dp)\n57. [0xfraso](https://github.com/0xfraso)\n58. [Muneersahel](https://github.com/Muneersahel)\n59. [danilolmc](https://github.com/danilolmc)\n60. [tomalaforge](https://github.com/tomalaforge)\n61. [canserkanuren](https://github.com/canserkanuren)\n62. [cjosue15](https://github.com/cjosue15)\n63. [hirenchauhan2](https://github.com/hirenchauhan2)\n64. [Roguyt](https://github.com/Roguyt)\n65. [tsironis13](https://github.com/tsironis13)\n66. [guillermoecharri](https://github.com/guillermoecharri)\n67. [ValentinFunk](https://github.com/ValentinFunk)\n68. [Femi236](https://github.com/Femi236)\n69. [dineshkp](https://github.com/dineshkp)\n70. [robingenz](https://github.com/robingenz)\n71. [Balastrong](https://github.com/Balastrong)\n72. [OlegSuncrown](https://github.com/OlegSuncrown)\n73. [stewones](https://github.com/stewones)\n74. [shinkhouse](https://github.com/shinkhouse)\n75. [donaldxdonald](https://github.com/donaldxdonald)\n76. [BenoitPE](https://github.com/BenoitPE)\n77. [Georg632](https://github.com/Georg632)\n78. [hillin](https://github.com/hillin)\n79. [Besbash](https://github.com/Besbash)\n80. [davidedammino](https://github.com/davidedammino)\n81. [marcindz88](https://github.com/marcindz88)\n82. [thyco](https://github.com/thyco)\n83. [hitro11](https://github.com/hitro11)\n84. [GODrums](https://github.com/GODrums)\n85. [samsonkumawong](https://github.com/samsonkumawong)\n86. [suprasannaojha](https://github.com/suprasannaojha)\n87. [JeevanMahesha](https://github.com/JeevanMahesha)\n88. [dlhck](https://github.com/dlhck)\n89. [tomer953](https://github.com/tomer953)\n90. [drdreo](https://github.com/drdreo)\n91. [tlandenberger](https://github.com/tlandenberger)\n92. [yackinn](https://github.com/yackinn)\n93. [OmerGronich](https://github.com/OmerGronich)\n94. [kubalinio](https://github.com/kubalinio)\n95. [AlexHladin](https://github.com/AlexHladin)\n96. [CO97](https://github.com/CO97)\n97. [MatanShushan](https://github.com/MatanShushan)\n98. [maxhov](https://github.com/maxhov)\n99. [josueggh](https://github.com/josueggh)\n100. [namdien177](https://github.com/namdien177)\n101. [zelenchuk](https://github.com/zelenchuk)\n102. [a-malacarne](https://github.com/a-malacarne)\n103. [YasinKuralay](https://github.com/YasinKuralay)\n104. [nico13051995](https://github.com/nico13051995)\n105. [francotalarico](https://github.com/francotalarico)\n106. [koenigderluegner](https://github.com/koenigderluegner)\n107. [Turtl3e](https://github.com/Turtl3e)\n108. [minhnguyen120898](https://github.com/minhnguyen120898)\n109. [liam-langstaff](https://github.com/liam-langstaff)\n110. [dw-0](https://github.com/dw-0)\n111. [Khumozin](https://github.com/Khumozin)\n112. [abiramcodes](https://github.com/abiramcodes)\n113. [garygrossgarten](https://github.com/garygrossgarten)\n114. [Oussemasahbeni](https://github.com/Oussemasahbeni)\n115. [benpsnyder](https://github.com/benpsnyder)\n116. [dhwani1806](https://github.com/dhwani1806)\n117. [elite-lucas](https://github.com/elite-lucas)\n118. [esteecodes](https://github.com/esteecodes)\n119. [felhag](https://github.com/felhag)\n120. [notsufferbutbutter](https://github.com/notsufferbutbutter)\n121. [vlrjuan](https://github.com/vlrjuan)\n122. [Dafnik](https://github.com/Dafnik)\n123. [hassantayyab](https://github.com/hassantayyab)\n124. [mathwizard](https://github.com/mathwizard)\n125. [RaminGe](https://github.com/RaminGe)\n126. [abos-gergo](https://github.com/abos-gergo)\n127. [jpsullivan](https://github.com/jpsullivan)\n128. [ayangabryl](https://github.com/ayangabryl)\n129. [s-froghyar](https://github.com/s-froghyar)\n130. [aziz-zina](https://github.com/aziz-zina)\n131. [avihayAsus](https://github.com/avihayAsus)\n132. [multignite](https://github.com/multignite)\n133. [sefatanam](https://github.com/sefatanam)\n134. [LinboLen](https://github.com/LinboLen)\n135. [Oneill19](https://github.com/Oneill19)\n136. [homj](https://github.com/homj)\n137. [Musta-Pollo](https://github.com/Musta-Pollo)\n138. [mitja-kurath](https://github.com/mitja-kurath)\n139. [alisterpineda](https://github.com/alisterpineda)\n140. [amitshalev2](https://github.com/amitshalev2)\n141. [SOG-web](https://github.com/SOG-web)\n142. [Joebeurg](https://github.com/Joebeurg)\n143. [mehrabix](https://github.com/mehrabix)\n144. [PatrickLarocque](https://github.com/PatrickLarocque)\n145. [Ban117](https://github.com/Ban117)\n146. [gerasidev](https://github.com/gerasidev)\n147. [Nicoss54](https://github.com/Nicoss54)\n148. [xonaib](https://github.com/xonaib)\n149. [SocDario](https://github.com/SocDario)\n150. [bcl-dev](https://github.com/bcl-dev)\n151. [skolldev](https://github.com/skolldev)\n152. [DanGM96](https://github.com/DanGM96)\n153. [possibleo](https://github.com/possibleo)\n154. [dolanmiu](https://github.com/dolanmiu)\n155. [khocef](https://github.com/khocef)\n156. [robmanganelly](https://github.com/robmanganelly)\n157. [PopePAF](https://github.com/PopePAF)\n158. [gerardp](https://github.com/gerardp)\n\n### Sponsor spartan\n\nspartan is MIT-licensed and free, forever. But free to use isn't free to build - countless hours of late-night, hard-fought work hold this phalanx together, and they keep the components shipping and the docs current.\n\nIf spartan saves your company or team time, consider returning the favor. Sponsoring keeps spartan actively maintained, the roadmap moving, and the open-source work of the 300 sustainable. No spartan holds the line alone - every shield in the wall counts.\n\n**[Become a spartan today! →](https://github.com/sponsors/goetzrobin)**\n\n## Zerops: The Strategic Alliance\n\n<div align=\"center\">\n  <a href=\"https://zerops.io\" target=\"_blank\">\n    <img src=\"https://avatars.githubusercontent.com/u/65757521?s=200&v=4\" alt=\"Zerops\" width=\"250\">\n  </a>\n</div>\n\nspartan.ng has formed a powerful alliance with Zerops, a developer-first cloud platform that shares our commitment to advancing the Angular ecosystem.\n\nThrough their strategic support, Zerops has enabled:\n\n- Dedicated resources for our core development team\n- Accelerated component development on our path to v1 and beyond\n- Creation of production-ready templates and starter kits\n- Long-term sustainability for the entire project\n\nZerops eliminates deployment complexity so developers can focus on building great software—a philosophy that perfectly aligns with our mission to create powerful yet easy-to-implement components.\n\n**[Experience the cloud platform that's powering Spartan.ng's future →](https://zerops.io)**\n\n## spartan/ui\n\nspartan/ui brings the [shadcn/ui](https://ui.shadcn.com) philosophy to Angular: accessible, un-styled primitives - inspired by [Radix](https://www.radix-ui.com) and built on the Angular CDK and other proven community solutions - paired with beautiful, copy-paste shadcn-style styles that you own.\n\nEach primitive is made up of two halves:\n\n- a headless **`brain`** library in [`libs/brain`](./libs/brain) that provides the behavior, accessibility, and state - published to npm as [`@spartan-ng/brain`](https://www.npmjs.com/package/@spartan-ng/brain).\n- a **`helm`** library in [`libs/helm`](./libs/helm) that adds the styles, copied straight into your project by the CLI so you can edit them freely.\n\n[`libs/cli`](./libs/cli) holds the Nx plugin & Angular CLI code that adds spartan/ui to any Nx or Angular workspace in a single command - published as [`@spartan-ng/cli`](https://www.npmjs.com/package/@spartan-ng/cli).\n\n[`libs/mcp`](./libs/mcp) is a [Model Context Protocol](https://modelcontextprotocol.io) server - published as [`@spartan-ng/mcp`](https://www.npmjs.com/package/@spartan-ng/mcp) - that gives AI assistants up-to-date spartan docs, components, and blocks.\n\nThe `skills/spartan` folder contains the spartan agent skill - procedural knowledge that teaches AI coding assistants how to build spartan/ui correctly. Users install it with `npx skills add spartan-ng/spartan`. See [the Skills docs](https://www.spartan.ng/documentation/skills).\n\n### Install Dependencies\n\nRun `pnpm install` to install the dependencies of this project.\n\n### Development with storybook\n\nA storybook project is set up and is the primary way to develop UI components. You can run it with:\n\n```\npnpm run storybook\n```\n\nStory files live in `apps/ui-storybook/stories`, one per primitive, e.g. `apps/ui-storybook/stories/accordion.stories.ts`.\n\nUse these files to add stories and drive development of the primitives.\n\n### Testing\n\nspartan uses [Jest](https://jestjs.io) for tests. To test all projects locally, run the following command from the root\nfolder:\n\n```shell\npnpm run test\n```\n\n### e2e testing\n\nCypress e2e testing is set up to run on the storybook. You can run it with:\n\n```\npnpm run e2e\n```\n\nTo add your own `e2e` tests add them to the `apps/ui-storybook-e2e` application.\n\n## spartan/stack\n\nAn example application running\non [Supabase](https://supabase.com/), [Drizzle](https://orm.drizzle.team/), [Analog](https://analogjs.org/),\n[tRPC](https://trpc.io/), [Tailwind](https://tailwindcss.com/), [Angular](https://angular.io/),\nand [Nx](https://nx.dev/). It also serves as the documentation page introducing the stack and UI library.\n\nFollow the directions in the official documentation to set up your own project:\nhttps://www.spartan.ng/stack/overview\n\n### Example App\n\nIn the `apps` folder of this repository, you can also find an example application of the spartan stack.\nIt also serves as the documentation page for this project.\n\nFollow the directions below to get it up and running:\n\n#### Prerequisites\n\n- You will need `pnpm` as your package manager.\n- You will need to set up a [Supabase](https://supabase.com/) account (it's free)\n- You will need [NodeJs](https://nodejs.org/en) installed. The version I have working is `20.17.0`.\n\n#### Development server\n\nThen you can run the following command:\n\n```shell\npnpm nx serve app\n```\n\nor\n\n```shell\npnpm run dev\n```\n\nfor a dev server. Navigate to http://localhost:4200/. The app will automatically reload\nif you change any of the source files.\n\n#### Database\n\nWe use Drizzle to connect to a Supabase instance for the example app.\n\nAdd an `.env` file to your repo with the following contents:\n\nAdd a `.env` file at the root of your Nx workspace and add the connection string like so:\n\n```\nDATABASE_URL=\"postgresql://postgres:[YOUR-PASSWORD]@db.[YOUR-SUPABASE-REFERENCE-ID].supabase.co:5432/postgres?schema=public\"\n```\n\nAnd make sure to run the following script in your Supabase editor to set up the necessary tables:\n\n```sql\ncreate table\n  public.note (\n    id bigserial,\n    title text not null,\n    content text null,\n    created_at timestamp with time zone null default current_timestamp,\n    constraint notes_pkey primary key (id)\n  ) tablespace pg_default;\n```\n\n> [!NOTE] > `.env` should be added to `.gitignore`\n\n## Understand this workspace\n\nRun `pnpm nx graph` to see a diagram of the dependencies of the projects.\n\n## Documentation\n\n- [Introduction](https://www.spartan.ng/documentation/introduction)\n- [Installation](https://www.spartan.ng/documentation/installation)\n- [CLI](https://www.spartan.ng/documentation/cli)\n- [Theming](https://www.spartan.ng/documentation/theming)\n- [Components](https://www.spartan.ng/components)\n- [Blocks](https://www.spartan.ng/blocks)\n\n## Community\n\n- [Discord](https://discord.gg/EqHnxQ4uQr)\n- [GitHub](https://github.com/spartan-ng/spartan)\n- [Sponsor the project](https://github.com/sponsors/goetzrobin)\n\nRun into an issue or have a question? Open an issue on [GitHub](https://github.com/spartan-ng/spartan/issues) or say hi in [Discord](https://discord.gg/EqHnxQ4uQr).\n\n## License\n\nMIT © [goetzrobin](https://github.com/goetzrobin) and the [spartan contributors](https://github.com/spartan-ng/spartan/graphs/contributors)\n",
  "bytes": 17132,
  "sha": "69fc43fa9ef23015e1390c58d12ae5c1b13ed112ad58c1b0d83fa06939eef6d3",
  "repo_slug": "spartan-ng/spartan",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_spartan_ng_spartan_spartan_bf1c9811/readme"
}