{"id":37475174,"url":"https://github.com/aboutcircles/circles-explorer","last_synced_at":"2026-01-16T07:20:42.898Z","repository":{"id":258219537,"uuid":"856355923","full_name":"aboutcircles/circles-explorer","owner":"aboutcircles","description":"An explorer for all circles transactions, events for human avatar, groups and orgs!","archived":false,"fork":false,"pushed_at":"2025-12-05T08:56:47.000Z","size":1806,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-07T23:54:37.478Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://explorer.aboutcircles.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aboutcircles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-12T12:51:00.000Z","updated_at":"2025-12-05T08:56:51.000Z","dependencies_parsed_at":"2025-01-16T12:40:07.838Z","dependency_job_id":"e2fac332-1743-496f-81a7-5a40f91f2fdf","html_url":"https://github.com/aboutcircles/circles-explorer","commit_stats":null,"previous_names":["aboutcircles/circles-explorer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aboutcircles/circles-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aboutcircles%2Fcircles-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aboutcircles%2Fcircles-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aboutcircles%2Fcircles-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aboutcircles%2Fcircles-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aboutcircles","download_url":"https://codeload.github.com/aboutcircles/circles-explorer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aboutcircles%2Fcircles-explorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-16T07:20:41.719Z","updated_at":"2026-01-16T07:20:42.869Z","avatar_url":"https://github.com/aboutcircles.png","language":"TypeScript","funding_links":[],"categories":["Explorers \u0026 Indexers"],"sub_categories":["Developer Demos"],"readme":"# Circles Explorer\n\n![Circles Logo](public/icons/circles-logo.avif)\n\nA web application for visualizing and exploring the Circles Protocol.\n\n## What is Circles Protocol?\n\nCircles is a decentralized protocol designed to create and distribute fair and social money through personal currencies. It creates a new form of money that is distributed equally to all participants as a basic income. The system uses personal currencies and a web of trust to create a money system that is both fair and accessible to everyone.\n\n## Features\n\n- **Avatar Exploration**: View detailed information about avatars (humans, organizations, and groups)\n- **Trust Network Visualization**: Interactive graph visualization of trust relationships\n- **Transaction History**: Explore all transactions and events for any avatar\n- **Bot Detection**: Identify potential bot accounts in the network\n- **Trust Management**: View and analyze trust relationships between avatars\n- **Comprehensive Statistics**: View network-wide statistics and metrics\n\n## Architecture\n\nCircles Explorer follows a domain-driven design (DDD) approach with a clear separation of concerns:\n\n```mermaid\ngraph TD\n    subgraph \"UI Layer\"\n        UI[Frontend Components]\n        Pages[Pages]\n        Shared[Shared Components]\n    end\n\n    subgraph \"Coordinators Layer\"\n        PC[Profiles Coordinator]\n        EC[Events Coordinator]\n    end\n\n    subgraph \"Domain Layer\"\n        PD[Profiles Domain]\n        ED[Events Domain]\n        TD[Trust Domain]\n        AD[Avatars Domain]\n        BD[Bots Domain]\n        ToD[Tokens Domain]\n    end\n\n    subgraph \"Services Layer\"\n        API[API Services]\n        SDK[Circles SDK]\n    end\n\n    subgraph \"State Management\"\n        Store[Zustand Stores]\n    end\n\n    UI --\u003e Pages\n    Pages --\u003e PC\n    Pages --\u003e EC\n    PC --\u003e PD\n    PC --\u003e BD\n    PC --\u003e Store\n    EC --\u003e ED\n    EC --\u003e PD\n    PD --\u003e API\n    ED --\u003e API\n    TD --\u003e API\n    AD --\u003e API\n    BD --\u003e API\n    ToD --\u003e API\n    API --\u003e SDK\n```\n\n### Key Components\n\n1. **Domain Layer**: Contains domain-specific logic, repositories, adapters, and types\n2. **Coordinators**: Orchestrate data fetching and management across multiple domains\n3. **UI Components**: React components for rendering the user interface\n4. **Services**: API clients and utilities for external communication\n5. **State Management**: Global state stores using Zustand\n\n## Project Structure\n\n```\nsrc/\n├── domains/           # Domain layer with domain-specific logic\n│   ├── avatars/       # Avatar domain\n│   ├── bots/          # Bot detection domain\n│   ├── events/        # Events domain\n│   ├── profiles/      # Profiles domain\n│   ├── tokens/        # Tokens domain\n│   └── trust/         # Trust relations domain\n├── coordinators/      # Coordinators for orchestrating multiple domains\n├── hooks/             # React hooks for UI components\n├── pages/             # UI pages\n├── shared/            # Shared UI components\n├── stores/            # Global state stores\n├── services/          # API clients and utilities\n├── constants/         # Application constants\n├── utils/             # Utility functions\n└── types/             # Global type definitions\n```\n\n### Domain Layer\n\nEach domain contains:\n\n- `types.ts`: Type definitions for the domain\n- `adapters.ts`: Adapters for transforming data between different formats\n- `repository.ts`: Repository for fetching and managing domain data\n\n### Coordinators Layer\n\nCoordinators orchestrate fetching data from multiple domains and manage the data flow between domains. They are responsible for:\n\n1. Coordinating data fetching from multiple repositories\n2. Managing data dependencies between domains\n3. Providing a unified API for UI components\n\nAvailable coordinators:\n\n- `useProfilesCoordinator`: Coordinates fetching profile data and bot verdicts\n- `useEventsCoordinator`: Coordinates fetching events data and related profiles\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 22.3.0 or higher\n- pnpm (recommended) or npm\n\n### Installation\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/circles/circles-explorer.git\n   cd circles-explorer\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   pnpm install\n   ```\n\n3. Create a `.env` file based on `.env.example`:\n\n   ```bash\n   cp .env.example .env\n   ```\n\n4. Start the development server:\n   ```bash\n   pnpm dev\n   ```\n\nThe application will be available at http://localhost:5173.\n\n## Available Scripts\n\n- `pnpm dev` - Start a development server with hot reload\n- `pnpm build` - Build for production (output to `dist` folder)\n- `pnpm preview` - Locally preview the production build\n- `pnpm test` - Run unit and integration tests related to changed files\n- `pnpm test:ci` - Run all unit and integration tests in CI mode\n- `pnpm test:e2e` - Run all e2e tests with the Cypress Test Runner\n- `pnpm test:e2e:headless` - Run all e2e tests headlessly\n- `pnpm format` - Format all files with Prettier\n- `pnpm lint` - Run TypeScript, ESLint and Stylelint\n- `pnpm validate` - Run `lint`, `test:ci` and `test:e2e:ci`\n\n## Data Flow\n\n1. **UI Components** request data through coordinators\n2. **Coordinators** orchestrate data fetching from multiple domains\n3. **Domain Repositories** fetch data from external services\n4. **Adapters** transform data between external and internal formats\n5. **Coordinators** update the global state with the fetched data\n6. **UI Components** render data from the global state\n\n## Key Technologies\n\n- **React**: UI library\n- **TypeScript**: Type-safe JavaScript\n- **Zustand**: State management\n- **React Query**: Data fetching and caching\n- **Vite**: Build tool\n- **TailwindCSS**: Utility-first CSS framework\n- **NextUI**: UI component library\n- **React Router**: Routing\n- **React Force Graph**: Graph visualization\n- **Viem**: Ethereum interaction library\n- **Circles SDK**: SDK for interacting with the Circles Protocol\n\n## Domain-Driven Design\n\nThe application follows a domain-driven design approach with the following principles:\n\n1. **Bounded Contexts**: Each domain represents a bounded context with its own models and logic\n2. **Repositories**: Each domain has a repository for data access\n3. **Adapters**: Data is transformed between external and internal formats\n4. **Aggregates**: Domain objects are grouped into aggregates\n5. **Value Objects**: Immutable objects that represent concepts in the domain\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/my-feature`\n3. Commit your changes: `git commit -m 'Add my feature'`\n4. Push to the branch: `git push origin feature/my-feature`\n5. Open a pull request\n\n### Development Workflow\n\n1. Make sure all tests pass before submitting a PR\n2. Follow the code style guidelines\n3. Write tests for new features\n4. Update documentation as needed\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Acknowledgements\n\n- [Circles Protocol](https://docs.aboutcircles.com/)\n- [Gnosis Chain](https://www.gnosis.io/)\n- [Metri Wallet](https://metri.xyz/)\n- [Group Management App](https://app.aboutcircles.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faboutcircles%2Fcircles-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faboutcircles%2Fcircles-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faboutcircles%2Fcircles-explorer/lists"}