{"id":29177890,"url":"https://github.com/gitcoinco/core","last_synced_at":"2025-07-25T22:35:35.213Z","repository":{"id":274509819,"uuid":"923081187","full_name":"gitcoinco/core","owner":"gitcoinco","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-18T11:37:57.000Z","size":3402,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-18T11:52:38.923Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitcoin-ui.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gitcoinco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"zenodo":null}},"created_at":"2025-01-27T16:02:40.000Z","updated_at":"2025-06-18T11:35:31.000Z","dependencies_parsed_at":"2025-01-27T19:32:05.726Z","dependency_job_id":"122dc506-df54-4b4f-8e45-03acea56d204","html_url":"https://github.com/gitcoinco/core","commit_stats":null,"previous_names":["gitcoinco/core"],"tags_count":208,"template":false,"template_full_name":null,"purl":"pkg:github/gitcoinco/core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2Fcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2Fcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2Fcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2Fcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitcoinco","download_url":"https://codeload.github.com/gitcoinco/core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitcoinco%2Fcore/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263013738,"owners_count":23399815,"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":[],"created_at":"2025-07-01T18:09:01.992Z","updated_at":"2025-07-01T18:09:07.686Z","avatar_url":"https://github.com/gitcoinco.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gitcoin Core Design System\n\nA comprehensive design system and component library powering Gitcoin's ecosystem of web applications. This monorepo contains the shared UI components, utilities, and configuration used across Gitcoin's products.\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Key Features](#key-features)\n- [What's next?](#whats-next)\n- [Tech Stack](#tech-stack)\n  - [Core Technologies](#core-technologies)\n  - [Tools \u0026 Libraries](#tools--libraries)\n  - [Development Tools](#development-tools)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Development Commands](#development)\n- [Versioning \u0026 Publishing Packages](#versioning--publishing-packages)\n  - [Publishing process](#publishing-process)\n  - [Optional Token](#optional-token-for-locally-versioning-packages)\n- [Project Structure](#project-structure)\n  - [Apps \u0026 Packages](#apps--packages)\n  - [Component Organization](#component-organization)\n- [Build Tools](#build-tools)\n- [Documentation](#documentation)\n- [Contributing](#contributing)\n- [License](#license)\n- [Support](#support)\n\n## Overview\n\nGitcoin Core is built and maintained by the Gitcoin team and community to:\n\n- Ensure consistency across all Gitcoin products\n- Accelerate development with pre-built, tested components\n- Maintain high quality standards for accessibility and user experience\n- Enable seamless collaboration between teams and contributors\n- Provide a single source of truth for Gitcoin's design language\n\n## Key Features\n\n- 🎨 Complete design system implementation\n- 🧱 Production-ready React components\n\n## What's next?\n\n- ⚡️ Production-ready NextJS components\n- ♿️ Accessible by default (WCAG 2.1 compliant) (coming soon)\n- 📱 Responsive and mobile-first (coming soon)\n- 🌗 Dark mode support (coming soon)\n- 🌍 Internationalization ready (coming soon)\n- ⚡️ Performance optimized (coming soon)\n- 📚 Comprehensive documentation (coming soon)\n\n## Tech Stack\n\nThis design system is powered by modern, battle-tested technologies:\n\n### Core Technologies\n\n- 🏎 [Turborepo](https://turbo.build/repo) — High-performance build system for Monorepos\n- 🚀 [React](https://reactjs.org/) — JavaScript library for user interfaces\n- 🛠 [Vite](https://vitejs.dev/) — Next Generation Frontend Tooling (for UI package)\n- 🔨 [Tsup](https://github.com/egoist/tsup) — TypeScript bundler powered by esbuild (for other packages)\n- 📖 [Storybook](https://storybook.js.org/) — UI component environment powered by Vite\n\n### Tools \u0026 Libraries\n\n- [TypeScript](https://www.typescriptlang.org/) for static type checking\n- [Tailwind CSS](https://tailwindcss.com/) for utility-first CSS\n- [Tailwind Variants](https://www.tailwind-variants.org/) for type-safe variants\n- [Shadcn/ui](https://ui.shadcn.com/) for accessible UI components\n- [React Query](https://tanstack.com/query/latest) for server state management\n- [React Hook Form](https://react-hook-form.com/) for form handling\n- [Zod](https://zod.dev/) for schema validation\n\n### Development Tools\n\n- [ESLint](https://eslint.org/) for code linting\n- [Prettier](https://prettier.io) for code formatting\n- [Changesets](https://github.com/changesets/changesets) for versioning\n- [MSW](https://mswjs.io/) for API mocking\n- [Vitest](https://vitest.dev/) for unit testing\n- [Testing Library](https://testing-library.com/) for component testing\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- pnpm 9+\n\n### Installation\n\n1. Clone the repository\n2. Install dependencies:\n\n```bash\npnpm install\n```\n\n### Development\n\n```bash\n# Start Storybook and watch for changes\npnpm dev\n\n# Build all packages\npnpm build\n\n# Run tests\npnpm test\n\n# Lint code\npnpm lint\n\n# Format code\npnpm format\n\n# Clean build artifacts\npnpm clean\n```\n\n## Versioning \u0026 Publishing Packages\n\nThis example uses [Changesets](https://github.com/changesets/changesets) to manage versions, create\nchangelogs, and publish to npm. It's preconfigured so you can start publishing packages immediately.\n\nYou'll need to create an `NPM_TOKEN` and add it to your GitHub repository settings to enable access\nto npm. It's also worth installing the [Changesets bot](https://github.com/apps/changeset-bot) on\nyour repository.\n\n### Publishing Process\n\n1. **Create a Changeset**\n\n   ```bash\n   pnpm changeset\n   ```\n\n   This will:\n\n   - Show which packages have changed\n   - Let you select packages to include in the changeset\n   - Ask about version bumps (major/minor/patch)\n   - Prompt for a change summary\n   - Create a new Markdown file in the `changeset` folder\n\n2. **Update Package Versions** (optional, needs\n   [GITHUB_TOKEN](#optional-token-for-locally-versioning-packages)\n\n   ```bash\n   pnpm version-packages\n   ```\n\n   This command:\n\n   - Reads all changesets\n   - Updates package versions\n   - Updates CHANGELOG files\n   - Commits these changes directly (skipping the PR process)\n\n3. **Release** There are two paths for releasing:\n\n   a) **Direct Release** (if you ran `pnpm version-packages` locally):\n\n   - Push your changes to GitHub\n   - When merged to main, the GitHub Action will automatically:\n     - Build all packages\n     - Publish to npm\n     - Create GitHub releases\n\n   b) **PR-based Release** (if you only created changesets):\n\n   - Push your changes with changesets to GitHub\n   - The GitHub Action will:\n     1. Create a \"Version Packages\" PR that:\n        - Updates package versions\n        - Updates changelogs\n     2. After merging this PR, the action will automatically:\n        - Build all packages\n        - Publish to npm\n        - Create GitHub releases\n\n### Optional Token (for locally versioning packages)\n\nYou'll need to set up a GitHub Personal Access Token (PAT):\n\n1. **Create the token**:\n\n   - Go to [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new)\n   - Name it (e.g., \"Changesets Token\")\n   - Set the expiration as needed\n   - Under \"Repository permissions\", grant:\n     - `repo:status`\n     - `read:user`\n\n2. **Add to Local Environment** (for local development):\n\n   ```bash\n   # For bash users\n   echo 'export GITHUB_TOKEN=your_token_here' \u003e\u003e ~/.bashrc\n   source ~/.bashrc\n\n   # For zsh users\n   echo 'export GITHUB_TOKEN=your_token_here' \u003e\u003e ~/.zshrc\n   source ~/.zshrc\n   ```\n\n## Project Structure\n\n### Apps \u0026 Packages\n\nThis Turborepo includes the following packages and applications:\n\n- `apps/next-app`: A placeholder documentation site powered by [Next.js](https://nextjs.org/)\n- `packages/config`: Shared configuration (ESLint, TypeScript, etc.)\n- `packages/themes`: Shared theme configuration and color utilities\n- `packages/types`: Shared TypeScript types\n- `packages/ui`: Core React components\n- `packages/utils`: Shared React utilities\n\nEach package and app is 100% [TypeScript](https://www.typescriptlang.org/). Workspaces enables us to\n\"hoist\" dependencies that are shared between packages to the root `package.json`. This means smaller\n`node_modules` folders and a better local dev experience. To install a dependency for the entire\nmonorepo, use the `-w` workspaces flag with `pnpm add`.\n\nThis example sets up your `.gitignore` to exclude all generated files, other folders like\n`node_modules` used to store your dependencies.\n\n### Component Organization\n\nThe UI components are organized in the following structure:\n\n```\npackages/ui/src/\n├── components/      # Higher-level components\n├── features/        # Feature-specific components\n├── primitives/      # Basic UI building blocks\n└── ui-shadcn/      # Shadcn UI components\n```\n\nEach component follows a standard structure:\n\n```tsx\n├── ComponentName/\n│   ├── ComponentName.tsx      # Main component\n│   ├── ComponentName.stories.tsx  # Storybook stories\n│   ├── ComponentName.mdx     # Documentation\n│   └── index.ts             # Public exports\n```\n\n## Build Tools\n\nThis monorepo uses different build tools for different packages:\n\n- `@gitcoin/ui`: Uses Vite for building the component library with features like SVG imports, TypeScript declaration files, and CSS processing\n- All other packages: Use Tsup for fast, efficient TypeScript/JavaScript bundling\n\n## Documentation\n\n- [Component Library](packages/ui/README.md)\n- ~~[Contributing Guide]()~~ (comming soon)\n- ~~[Architecture Decisions]()~~ (comming soon)\n\n## Contributing\n\n(Comming soon)\n\n~~Please read our [Contributing Guide]() for details on our code of conduct, and the process for submitting pull requests.~~\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3.0 - see the [LICENSE](LICENSE) file for details.\n\n### What this means\n\n- You can freely use, modify, and distribute this software\n- If you modify this software and provide it as a network service, you must:\n  - Make your modified source code available to users\n  - License your modifications under AGPL-3.0\n  - Preserve all copyright notices and license information\n- All derivative works must also be licensed under AGPL-3.0\n\n## Support\n\n- Join our [Discord](https://discord.gg/gitcoin) for discussions\n- Report bugs via [GitHub Issues](https://github.com/gitcoinco/core/issues)\n- Follow [@gitcoin](https://twitter.com/gitcoin) for updates\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitcoinco%2Fcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitcoinco%2Fcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitcoinco%2Fcore/lists"}