{"id":31328145,"url":"https://github.com/m1thrandir225/meridian","last_synced_at":"2026-04-18T11:04:39.738Z","repository":{"id":316050032,"uuid":"979269701","full_name":"m1thrandir225/meridian","owner":"m1thrandir225","description":"A real-time messaging platform ","archived":false,"fork":false,"pushed_at":"2025-09-22T10:36:52.000Z","size":2675,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-22T12:15:51.071Z","etag":null,"topics":["chat","ddd-architecture","event-driven","golang","grpc","kafka","microservices","redis"],"latest_commit_sha":null,"homepage":"https://meridian.sebastijanzindl.me","language":"Go","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/m1thrandir225.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":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":"2025-05-07T08:54:38.000Z","updated_at":"2025-09-22T10:36:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"c497dca4-f6f3-4008-8750-25de3beb25f9","html_url":"https://github.com/m1thrandir225/meridian","commit_stats":null,"previous_names":["m1thrandir225/meridian"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/m1thrandir225/meridian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m1thrandir225%2Fmeridian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m1thrandir225%2Fmeridian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m1thrandir225%2Fmeridian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m1thrandir225%2Fmeridian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m1thrandir225","download_url":"https://codeload.github.com/m1thrandir225/meridian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m1thrandir225%2Fmeridian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31966218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chat","ddd-architecture","event-driven","golang","grpc","kafka","microservices","redis"],"created_at":"2025-09-25T23:59:48.530Z","updated_at":"2026-04-18T11:04:39.704Z","avatar_url":"https://github.com/m1thrandir225.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./.github/images/logo.png\" width=\"200\" /\u003e\n\u003cbr/\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eMeridian\u003c/strong\u003e is a modern, real-time communication platform built with Domain Driven Design (DDD) microservices architecture. Experience a seamless chat with enterprise-grade security, real-time messaging, and powerful integration capabilities.\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"#quick-start\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Quick%20Start-Get%20Started-6366f1?style=for-the-badge\" alt=\"Quick Start\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"docs/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Documentation-Read%20More-06b6d4?style=for-the-badge\" alt=\"Documentation\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#license\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-10b981?style=for-the-badge\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.24+-00ADD8?style=flat-square\u0026logo=go\u0026logoColor=white\" alt=\"Go Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vue.js-3.0-4FC08D?style=flat-square\u0026logo=vue.js\u0026logoColor=white\" alt=\"Vue.js\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-Compose-2496ED?style=flat-square\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-Database-336791?style=flat-square\u0026logo=postgresql\u0026logoColor=white\" alt=\"PostgreSQL\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Apache%20Kafka-Event%20Streaming-231F20?style=flat-square\u0026logo=apache-kafka\u0026logoColor=white\" alt=\"Kafka\"\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n---\n\n## 🌟 Features\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003ch3\u003e🚀 Real-time Messaging\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eWebSocket-powered instant messaging\u003c/li\u003e\n        \u003cli\u003eChannel-based communication\u003c/li\u003e\n        \u003cli\u003eMessage threading and reactions\u003c/li\u003e\n        \u003cli\u003eTyping indicators and presence\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003ch3\u003e🔐 Enterprise Security\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003ePASETO token authentication\u003c/li\u003e\n        \u003cli\u003eRole-based access control\u003c/li\u003e\n        \u003cli\u003eSecure API token management\u003c/li\u003e\n        \u003cli\u003eEncrypted data transmission\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003ch3\u003e🤖 Bot \u0026 Webhook Integration\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eREST API and gRPC interfaces\u003c/li\u003e\n        \u003cli\u003eCustom webhook endpoints\u003c/li\u003e\n        \u003cli\u003eThird-party platform bridges\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003ch3\u003e📊 Analytics \u0026 Insights\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eReal-time usage analytics\u003c/li\u003e\n        \u003cli\u003eUser engagement metrics\u003c/li\u003e\n        \u003cli\u003eChannel activity tracking\u003c/li\u003e\n        \u003cli\u003eCustom dashboard views\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## 🏗️ Architecture\n\nMeridian follows **Domain Driven Design** principles with a clean microservices architecture:\n\n\u003cdiv align=\"center\"\u003e\n\n```mermaid\ngraph TB\n    subgraph \"Frontend Layer\"\n        A[Vue.js Frontend]\n        B[Landing Page]\n    end\n\n    subgraph \"API Gateway\"\n        C[Traefik Proxy]\n    end\n\n    subgraph \"Microservices\"\n        D[Identity Service\u003cbr/\u003e:8080]\n        E[Messaging Service\u003cbr/\u003e:8081]\n        F[Integration Service\u003cbr/\u003e:8082]\n        G[Analytics Service\u003cbr/\u003e:8083]\n    end\n\n    subgraph \"Data Layer\"\n        H[(PostgreSQL\u003cbr/\u003eDatabases)]\n        I[(Redis\u003cbr/\u003eCache)]\n    end\n\n    subgraph \"Event Streaming\"\n        J[Apache Kafka\u003cbr/\u003e:9092]\n        K[Zookeeper\u003cbr/\u003e:2181]\n    end\n\n    A --\u003e C\n    B --\u003e C\n    C --\u003e D\n    C --\u003e E\n    C --\u003e F\n    C --\u003e G\n\n    D --\u003e H\n    E --\u003e H\n    F --\u003e H\n    G --\u003e H\n\n    D --\u003e I\n    E --\u003e I\n    F --\u003e I\n\n    D --\u003e J\n    E --\u003e J\n    F --\u003e J\n    G --\u003e J\n\n    J --\u003e K\n```\n\n\u003c/div\u003e\n\n### 🎯 Core Services\n\n| Service                                         | Port    | Purpose                          | Technology                          |\n| ----------------------------------------------- | ------- | -------------------------------- | ----------------------------------- |\n| **[Identity](docs/services/identity.md)**       | `:8080` | User authentication \u0026 management | Go + PostgreSQL + Redis             |\n| **[Messaging](docs/services/messaging.md)**     | `:8081` | Real-time chat \u0026 channels        | Go + PostgreSQL + Redis + WebSocket |\n| **[Integration](docs/services/integration.md)** | `:8082` | Webhooks \u0026 bot integrations      | Go + PostgreSQL + Redis             |\n| **[Analytics](docs/services/analytics.md)**     | `:8083` | Usage analytics \u0026 insights       | Go + PostgreSQL + Kafka             |\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Docker** \u0026 **Docker Compose** v2+\n- **Go** 1.24+ (for development)\n- **8GB+ RAM** recommended\n\n### Quick Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-org/meridian.git\ncd meridian\n\n# Setup environment and start services\nmake setup\nmake docker-build\nmake docker-up\n```\n\n**Note**: Go is required for initial setup as you need to run the script to generate PASETO Asymmetric keys, if you just want to purely run it with docker, altough not recommended, here are placeholder Paseto Keys:\n\n```bash\n#PRIVATE KEY (64 bytes / 128 hex chars):\nde62c9983573159bc401db26eaad66f57f58127dfa74b409fc47721cf1c37d41acd1c1d9208c09f6990d84d19bfbee24e9f26ed8613819aa9ecbcf082cf24919\n\n#PUBLIC KEY (32 bytes / 64 hex chars):\nacd1c1d9208c09f6990d84d19bfbee24e9f26ed8613819aa9ecbcf082cf24919\n```\n\nReplace the keys in your `deployments/.env` file.\n\n### Verify Installation\n\n```bash\n# Check service health\ncurl http://localhost:8080/health  # ✅ Identity Service\ncurl http://localhost:8081/health  # ✅ Messaging Service\ncurl http://localhost:8082/health  # ✅ Integration Service\ncurl http://localhost:8083/health  # ✅ Analytics Service\n```\n\n### Access the Platform\n\n- **Frontend Application**: http://chat.localhost\n- **Landing Page**: http://localhost\n- **API**: http://api.localhost\n- **API Documentation**: [docs/api/](docs/api/)\n\n## 📖 Documentation\n\nThe comprehensive documentation covers everything you need:\n\n\u003cdiv align=\"center\"\u003e\n\n|   📚 **Category**    | 🔗 **Links**                                                                                  | 📝 **Description**                  |\n| :------------------: | :-------------------------------------------------------------------------------------------- | :---------------------------------- |\n| **🏗️ Architecture**  | [Overview](docs/architecture/overview.md) • [Domain Model](docs/architecture/domain-model.md) | System design and DDD patterns      |\n| **📡 API Reference** | [REST](docs/api/rest-api.md)                                                                  | Complete API documentation          |\n|  **🚢 Deployment**   | [Docker](docs/deployment/docker.md)                                                           | Deployment guide and best practices |\n\n\u003c/div\u003e\n\n## 🛠️ Development\n\n### Development Commands\n\n```bash\n# Setup and deployment\nmake setup                  # Generate keys and env file\nmake docker-build                  # Build all service binaries\nmake docker-up              # Start all services\nmake docker-down            # Stop and remove containers\n\n# Development workflow\nmake test                   # Run tests\nmake lint                   # Run linters\nmake fmt                    # Format code\nmake tidy                   # Tidy Go modules\n\n# Database operations\nmake migrate-up service=\u003cname\u003e    # Apply migrations\nmake migrate-down service=\u003cname\u003e  # Rollback migrations\nmake migrate-status service=\u003cname\u003e # Check migration status\n\n# Service-specific operations\nmake build-one service=\u003cname\u003e     # Build specific service\nmake docker-logs service=\u003cname\u003e   # View service logs\n```\n\n### Project Structure\n\n```\nmeridian/\n├── cmd/                    # Service entry points\n│   ├── identity/           # Identity service main\n│   ├── messaging/          # Messaging service main\n│   ├── integration/        # Integration service main\n│   └── analytics/          # Analytics service main\n├── internal/               # Service implementations\n│   ├── identity/          # Identity domain, app, infra\n│   ├── messaging/         # Messaging domain, app, infra\n│   ├── integration/       # Integration domain, app,\n├── pkg/                   # Shared libraries\n│   ├── auth/              # Authentication utilities\n│   ├── kafka/             # Event streaming\n│   ├── logging/           # Structured logging\n│   └── cache/             # Caching utilities\n├── deployments/           # Docker and deployment configs\n├── docs/                  # Documentation\n└── examples/              # Integration examples (TODO)\n```\n\n### Code Quality\n\n- **Domain Driven Design** principles\n- **Clean Architecture** with clear boundaries\n- **Structured logging** throughout\n\n## 📄 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ by the Sebastijan Zindl**\n\n⭐ **Star us on GitHub** if you find this project interesting!\n\n[📖 Documentation](docs/) • [🐛 Report Bug](https://github.com/m1thrandir225/meridian/issues) • [💡 Request Feature](https://github.com/m1thrandir225/meridian/issues/new?template=feature_request.md)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm1thrandir225%2Fmeridian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm1thrandir225%2Fmeridian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm1thrandir225%2Fmeridian/lists"}