{"id":20274545,"url":"https://github.com/spartan-ng/spartan","last_synced_at":"2025-05-14T05:10:50.186Z","repository":{"id":152399813,"uuid":"624431943","full_name":"spartan-ng/spartan","owner":"spartan-ng","description":"Cutting-edge tools powering Angular full-stack development.","archived":false,"fork":false,"pushed_at":"2025-05-13T01:34:15.000Z","size":11833,"stargazers_count":1884,"open_issues_count":48,"forks_count":199,"subscribers_count":27,"default_branch":"main","last_synced_at":"2025-05-13T02:32:15.243Z","etag":null,"topics":["accessibility","analogjs","angular","trpc","ui-components"],"latest_commit_sha":null,"homepage":"https://spartan.ng","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spartan-ng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2023-04-06T13:04:03.000Z","updated_at":"2025-05-13T01:34:19.000Z","dependencies_parsed_at":"2023-09-26T16:23:53.262Z","dependency_job_id":"26b9d7ea-13d3-40cd-91af-781cdeca06dd","html_url":"https://github.com/spartan-ng/spartan","commit_stats":{"total_commits":707,"total_committers":71,"mean_commits":9.95774647887324,"dds":0.3493635077793493,"last_synced_commit":"d7f1338aa062198dccbc482299c2e0a434f0c5f8"},"previous_names":["spartan-ng/spartan","goetzrobin/spartan"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spartan-ng%2Fspartan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spartan-ng%2Fspartan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spartan-ng%2Fspartan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spartan-ng%2Fspartan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spartan-ng","download_url":"https://codeload.github.com/spartan-ng/spartan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254040209,"owners_count":22004470,"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":["accessibility","analogjs","angular","trpc","ui-components"],"created_at":"2024-11-14T13:01:16.261Z","updated_at":"2025-05-14T05:10:50.045Z","avatar_url":"https://github.com/spartan-ng.png","language":"TypeScript","funding_links":["https://github.com/sponsors/goetzrobin"],"categories":["TypeScript"],"sub_categories":[],"readme":"# spartan\n\n\u003ca href=\"https://spartan.ng\" target=\"_blank\"\u003e\n\u003cimg alt=\"A spartan shield\" width=\"200px\" src=\"./spartan.svg\" title=\"Spartan logo\"/\u003e\n\u003c/a\u003e\n\n[![Discord server](https://dcbadge.vercel.app/api/server/EqHnxQ4uQr?style=flat-square)](https://discord.gg/EqHnxQ4uQr) [![Twitter](https://img.shields.io/twitter/follow/goetzrobin?color=%23DD0031\u0026style=flat-square)](https://twitter.com/goetzrobin)\n\nWelcome to the spartan mono-repo. This Nx repository holds both the\nspartan/stack and spartan/ui libraries.\n\n##### Important: This is a work in progress, and we update the README as major development efforts are started.\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://spartan.ng)\n\n1. [goetzrobin](https://github.com/goetzrobin)\n2. [elite-benni](https://github.com/elite-benni)\n3. [thatsamsonkid](https://github.com/thatsamsonkid)\n4. [ashley-hunter](https://github.com/ashley-hunter)\n5. [mihajm](https://github.com/mihajm)\n6. [ajitzero](https://github.com/ajitzero)\n7. [arturgawlik](https://github.com/arturgawlik)\n8. [deepakrudrapaul](https://github.com/deepakrudrapaul)\n9. [evanfuture](https://github.com/evanfuture)\n10. [AdditionAddict](https://github.com/AdditionAddict)\n11. [Altamimi-Dev](https://github.com/Altamimi-Dev)\n12. [ferat](https://github.com/ferat)\n13. [jeremy-js-devweb](https://github.com/jeremy-js-devweb)\n14. [heddendorp](https://github.com/heddendorp)\n15. [tutkli](https://github.com/tutkli)\n16. [Pascalmh](https://github.com/Pascalmh)\n17. [okkindel](https://github.com/okkindel)\n18. [marcjulian](https://github.com/marcjulian)\n19. [oidre](https://github.com/oidre)\n20. [nartc](https://github.com/nartc)\n21. [santoshyadavdev](https://github.com/santoshyadavdev)\n22. [markostanimirovic](https://github.com/markostanimirovic)\n23. [theo-matzavinos](https://github.com/theo-matzavinos)\n24. [jkuri](https://github.com/jkuri)\n25. [dongphuong0905](https://github.com/dongphuong0905)\n26. [DominikPieper](https://github.com/DominikPieper)\n27. [brandonroberts](https://github.com/brandonroberts)\n28. [izikd-](https://github.com/izikd-)\n29. [ryancraigmartin](https://github.com/ryancraigmartin)\n30. [gaetanBloch](https://github.com/gaetanBloch)\n31. [gergobergo](https://github.com/gergobergo)\n32. [rpacheco124](https://github.com/rpacheco124)\n33. [benjaminforras](https://github.com/benjaminforras)\n34. [jstnjs](https://github.com/jstnjs)\n35. [r3ps4J](https://github.com/r3ps4J)\n36. [Celtian](https://github.com/Celtian)\n37. [miljan-code](https://github.com/miljan-code)\n38. [alexciesielski](https://github.com/alexciesielski)\n39. [ty-ler](https://github.com/ty-ler)\n40. [m-risto](https://github.com/m-risto)\n41. [badsgahhl](https://github.com/badsgahhl)\n42. [monacodelisa](https://github.com/monacodelisa)\n43. [tomdev9](https://github.com/tomdev9)\n44. [ragul1697](https://github.com/ragul1697)\n45. [snydertechnologies](https://github.com/snydertechnologies)\n46. [kkamman](https://github.com/kkamman)\n47. [i-am-the-slime](https://github.com/i-am-the-slime)\n48. [DevWedeloper](https://github.com/DevWedeloper)\n49. [mrsofiane](https://github.com/mrsofiane)\n50. [mateoetchepare](https://github.com/mateoetchepare)\n51. [DonaldMurillo](https://github.com/DonaldMurillo)\n52. [toniskobic](https://github.com/toniskobic)\n53. [eneajaho](https://github.com/eneajaho)\n54. [Den-dp](https://github.com/Den-dp)\n55. [0xfraso](https://github.com/0xfraso)\n56. [Muneersahel](https://github.com/Muneersahel)\n57. [danilolmc](https://github.com/danilolmc)\n58. [tomalaforge](https://github.com/tomalaforge)\n59. [canserkanuren](https://github.com/canserkanuren)\n60. [cjosue15](https://github.com/cjosue15)\n61. [hirenchauhan2](https://github.com/hirenchauhan2)\n62. [Roguyt](https://github.com/Roguyt)\n63. [tsironis13](https://github.com/tsironis13)\n64. [0xfraso](https://github.com/0xfraso)\n65. [guillermoecharri](https://github.com/guillermoecharri)\n66. [ValentinFunk](https://github.com/ValentinFunk)\n67. [Femi236](https://github.com/Femi236)\n68. [dineshkp](https://github.com/dineshkp)\n69. [robingenz](https://github.com/robingenz)\n70. [Balastrong](https://github.com/Balastrong)\n71. [OlegSuncrown](https://github.com/OlegSuncrown)\n72. [stewones](https://github.com/stewones)\n73. [shinkhouse](https://github.com/shinkhouse)\n74. [donaldxdonald](https://github.com/donaldxdonald)\n75. [BenoitPE](https://github.com/BenoitPE)\n76. [MerlinMoos](https://github.com/MerlinMoos)\n77. [miljan-code](https://www.github.com/miljan-code)\n78. [Georg632](https://www.github.com/Georg632)\n79. [hillin](https://www.github.com/hillin)\n80. [Besbash](https://www.github.com/Besbash)\n81. [davidedammino](https://www.github.com/davidedammino)\n82. [marcindz88](https://www.github.com/marcindz88)\n83. [thyco](https://www.github.com/thyco)\n84. [hitro11](https://www.github.com/hitro11)\n85. [GODrums](https://www.github.com/GODrums)\n86. [samsonkumawong](https://www.github.com/samsonkumawong)\n87. [PR4SAN](https://www.github.com/PR4SAN)\n88. [JeevanMahesha](https://www.github.com/JeevanMahesha)\n\n\n\n[Become a spartan today!](https://github.com/sponsors/goetzrobin)\n\n## spartan/ui\n\nspartan/ui is our effort to port the incredible shadcn/ui project over to the Angular ecosystem.\n\nThe idea is to create un-styled primitives similar to Radix with the help of the Angular CDK and other proven community solutions\nAnd then add the beautiful shadcn styles with primitives (and components where necessary).\n\nYou can find all UI primitives in the `libs/ui` folder.\n\nEach primitive is made up off an un-styled `brain` library, which provides all functionality and a `helm` library, which adds the styles.\n\nThere's also a `libs/cli` folder, which contains the Nx-plugin \u0026 Angular CLI code that allows users to add spartan/ui to their Nx or Angular workspace in a simple way.\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\nAt the root of each primitive's folder, e.g. `libs/ui/accordion` you will find a stories file, e.g, `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### Progress (37/43)\n\nWe finished porting over 37/43 UI primitives. See a more detailed breakdown [here!](./libs/ui/README.md)\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\nFor now. The goal is to move the docs to Astro.\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\u003e [!NOTE] \u003e `.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## Further help\n\nReach out to me on [Twitter](https://twitter.com/goetzrobin/) or [GitHub](https://github.com/goetzrobin) if you run into\nany issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspartan-ng%2Fspartan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspartan-ng%2Fspartan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspartan-ng%2Fspartan/lists"}