{"id":15159691,"url":"https://github.com/dev-mohitbeniwal/echo","last_synced_at":"2025-04-12T23:49:36.473Z","repository":{"id":247150502,"uuid":"825073306","full_name":"dev-mohitbeniwal/echo","owner":"dev-mohitbeniwal","description":"Echo is an open-source attribute-based access control (ABAC) system in Go. It offers fine-grained access control, high-performance policy evaluation with Neo4j, real-time updates, comprehensive auditing, caching, event-driven architecture, and a RESTful API. Docker support included.","archived":false,"fork":false,"pushed_at":"2024-08-07T20:41:34.000Z","size":16238,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T23:49:32.378Z","etag":null,"topics":["abac","access-control","attribute-based-access-control","auditing","authorization","caching","golang","neo4j","open-source","security"],"latest_commit_sha":null,"homepage":"","language":"Go","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/dev-mohitbeniwal.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}},"created_at":"2024-07-06T17:33:55.000Z","updated_at":"2024-08-07T20:41:37.000Z","dependencies_parsed_at":"2024-07-27T13:43:10.041Z","dependency_job_id":"cc129405-d5e3-430e-bc3b-e9ad074c7b70","html_url":"https://github.com/dev-mohitbeniwal/echo","commit_stats":{"total_commits":14,"total_committers":2,"mean_commits":7.0,"dds":0.0714285714285714,"last_synced_commit":"b8a13f971ca10d259c0f198fc4eba002d29f8dca"},"previous_names":["dev-mohitbeniwal/echo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mohitbeniwal%2Fecho","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mohitbeniwal%2Fecho/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mohitbeniwal%2Fecho/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mohitbeniwal%2Fecho/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-mohitbeniwal","download_url":"https://codeload.github.com/dev-mohitbeniwal/echo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248647258,"owners_count":21139081,"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":["abac","access-control","attribute-based-access-control","auditing","authorization","caching","golang","neo4j","open-source","security"],"created_at":"2024-09-26T21:41:30.455Z","updated_at":"2025-04-12T23:49:36.449Z","avatar_url":"https://github.com/dev-mohitbeniwal.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Echo - Attribute-Based Access Control (ABAC) System\n\nEcho is a robust, scalable Attribute-Based Access Control (ABAC) system designed to provide fine-grained access control for modern applications. It offers a flexible policy management system, high-performance policy evaluation, and comprehensive auditing capabilities.\n\n## Features\n\n- **Fine-grained Access Control**: Implement complex access control policies based on user attributes, resource attributes, and environmental conditions.\n- **High-Performance Policy Evaluation**: Utilizes Neo4j for efficient policy storage and evaluation.\n- **Scalable Architecture**: Built with Go and designed to handle high loads.\n- **Real-time Policy Updates**: Policies can be updated in real-time without system downtime.\n- **Comprehensive Auditing**: All access decisions are logged and can be analyzed for security and compliance purposes.\n- **Caching**: Redis-based caching for improved performance.\n- **Event-Driven Architecture**: Utilizes an event bus for asynchronous processing of policy changes and notifications.\n- **RESTful API**: Easy integration with existing systems through a well-defined API.\n- **Containerized Deployment**: Docker and Docker Compose support for easy deployment and scaling.\n\n## Technology Stack\n\n- **Backend**: Go (Gin web framework)\n- **Database**: Neo4j (for policy storage and evaluation)\n- **Cache**: Redis\n- **Search and Audit Log**: Elasticsearch\n- **Frontend**: React with Next.js (work in progress)\n- **Containerization**: Docker and Docker Compose\n\n## Project Structure\n\n```bash\n.\n├── README.md\n├── api/                  # Backend Go application\n│   ├── audit/            # Audit logging functionality\n│   ├── config/           # Configuration management\n│   ├── controller/       # HTTP request handlers\n│   ├── dao/              # Data Access Objects\n│   ├── db/               # Database connection management\n│   ├── logging/          # Logging utilities\n│   ├── middleware/       # HTTP middleware\n│   ├── model/            # Data models\n│   ├── service/          # Business logic\n│   └── util/             # Utility functions and services\n├── client/               # Frontend React application (WIP)\n├── deploy/               # Deployment configurations\n├── neo4j/                # Neo4j database migrations and seeds\n├── redis/                # Redis setup scripts\n└── scripts/              # Utility scripts for development and deployment\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Docker and Docker Compose\n- Go 1.16 or later (for local development)\n- Node.js and npm (for frontend development)\n\n### Running the Application\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/yourusername/echo.git\n   cd echo\n   ```\n\n2. Start the application using Docker Compose:\n\n   ```bash\n   cd deploy\n   docker-compose up --build\n   ```\n\n3. The API will be available at `http://localhost:8080`\n\n### Development Setup\n\n1. Set up the Go environment:\n\n   ```bash\n   cd api\n   go mod download\n   ```\n\n2. Set up the frontend environment (when ready):\n\n   ```bash\n   cd client\n   npm install\n   ```\n\n3. Run the backend locally:\n\n   ```bash\n   cd api\n   go run main.go\n   ```\n\n4. Run the frontend locally (when ready):\n\n   ```bash\n   cd client\n   npm run dev\n   ```\n\n## API Documentation\n\n[API documentation will be provided here, possibly using Swagger]\n\n## Configuration\n\nConfiguration is managed through environment variables and the `config.yaml` file. Key configuration options include:\n\n- `NEO4J_URI`: URI for the Neo4j database\n- `REDIS_ADDR`: Address of the Redis server\n- `ELASTICSEARCH_URL`: URL of the Elasticsearch instance\n- `LOG_LEVEL`: Logging level (e.g., debug, info, warn, error)\n\nFor a complete list of configuration options, see `api/config/config.yaml`.\n\n## Contributing\n\nWe welcome contributions to Echo! Please see our [Contributing Guide](CONTRIBUTING.md) for more details.\n\n## Testing (WIP)\n\nTo run the test suite:\n\n```bash\ncd api\ngo test ./...\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-mohitbeniwal%2Fecho","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-mohitbeniwal%2Fecho","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-mohitbeniwal%2Fecho/lists"}