{"id":30929326,"url":"https://github.com/onekeyhq/e2ee-server","last_synced_at":"2025-09-10T09:36:02.695Z","repository":{"id":309829790,"uuid":"1021201567","full_name":"OneKeyHQ/e2ee-server","owner":"OneKeyHQ","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-14T03:00:41.000Z","size":164,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-14T03:26:24.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/OneKeyHQ.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}},"created_at":"2025-07-17T03:50:43.000Z","updated_at":"2025-08-13T09:08:50.000Z","dependencies_parsed_at":"2025-08-14T03:36:33.206Z","dependency_job_id":null,"html_url":"https://github.com/OneKeyHQ/e2ee-server","commit_stats":null,"previous_names":["onekeyhq/e2ee-server"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/OneKeyHQ/e2ee-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneKeyHQ%2Fe2ee-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneKeyHQ%2Fe2ee-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneKeyHQ%2Fe2ee-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneKeyHQ%2Fe2ee-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OneKeyHQ","download_url":"https://codeload.github.com/OneKeyHQ/e2ee-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneKeyHQ%2Fe2ee-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274440662,"owners_count":25285735,"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","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"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":[],"created_at":"2025-09-10T09:35:58.881Z","updated_at":"2025-09-10T09:36:02.681Z","avatar_url":"https://github.com/OneKeyHQ.png","language":"TypeScript","readme":"# OneKey Server Infrastructure\n\nA monorepo containing OneKey's server infrastructure components, including end-to-end encryption server and cloud synchronization services.\n\n## 🏗 Architecture\n\nThis monorepo uses Yarn workspaces to manage multiple packages:\n\n```\ne2ee-server/\n├── packages/\n│   ├── transfer-server/      # E2EE real-time communication server\n│   └── cloud-sync-server/    # Cloud synchronization component\n└── examples/\n    └── mock-app/             # Mock application for testing\n```\n\n## 📦 Packages\n\n### [@onekeyhq/transfer-server](./packages/transfer-server/)\n**End-to-End Encryption Server** - A high-performance, secure real-time communication server built with Socket.IO and TypeScript.\n\n- Real-time bidirectional communication\n- Room-based message routing\n- End-to-end encryption support\n- WebSocket with Socket.IO\n- Production-ready with health checks\n\n### [@onekeyhq/cloud-sync-server](./packages/cloud-sync-server/)\n**Cloud Sync Component** - A Midway.js-based component for OneKey Prime synchronization functionality.\n\n- Midway.js component architecture\n- MongoDB and Kafka adapter support\n- Dependency injection patterns\n- Extensible sync service implementation\n\n### [@onekeyhq/mock-app](./examples/mock-app/)\n**Mock Application** - Testing and development application for integration testing.\n\n- Midway.js application framework\n- Integration test examples\n- API endpoint testing\n- Development environment setup\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js \u003e= 24\n- Yarn package manager\n- MongoDB (for cloud-sync-server)\n- Kafka (optional, for cloud-sync-server)\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone \u003crepository-url\u003e\ncd e2ee-server\n\n# Install all dependencies\nyarn install\n\n# Build all packages\nyarn build\n```\n\n### Development\n\n```bash\n# Start transfer-server in development mode\nyarn dev\n\n# Start cloud-sync-server in watch mode\nyarn dev:sync\n\n# Start mock application\nyarn dev:mock\n```\n\n### Production\n\n```bash\n# Build all packages\nyarn build\n\n# Start transfer-server\nyarn start\n\n# Start mock application\nyarn start:mock\n```\n\n## 📋 Available Scripts\n\n### Root Level Commands\n\n| Command | Description |\n|---------|-------------|\n| `yarn install` | Install all dependencies for all packages |\n| `yarn build` | Build all packages |\n| `yarn build:sync` | Build cloud-sync-server only |\n| `yarn build:mock` | Build mock-app only |\n| `yarn dev` | Start transfer-server in development mode |\n| `yarn dev:sync` | Start cloud-sync-server in watch mode |\n| `yarn dev:mock` | Start mock-app in development mode |\n| `yarn start` | Start transfer-server in production |\n| `yarn start:mock` | Start mock-app in production |\n| `yarn test` | Run tests for all packages |\n| `yarn test:sync` | Run tests for cloud-sync-server |\n| `yarn test:mock` | Run tests for mock-app |\n| `yarn lint` | Run ESLint for all packages |\n| `yarn lint:sync` | Run ESLint for cloud-sync-server |\n| `yarn clean` | Clean build artifacts for all packages |\n\n### Package-Specific Commands\n\nEach package has its own set of scripts. Navigate to the package directory or use yarn workspace commands:\n\n```bash\n# Run command for specific package\nyarn workspace @onekeyhq/transfer-server \u003ccommand\u003e\nyarn workspace @onekeyhq/cloud-sync-server \u003ccommand\u003e\nyarn workspace @onekeyhq/mock-app \u003ccommand\u003e\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n\nEach package can be configured using environment variables. Create `.env` files in package directories:\n\n#### transfer-server\n```env\nPORT=3868\nCORS_ORIGINS=http://localhost:3000\nMAX_USERS_PER_ROOM=2\nROOM_TIMEOUT=3600000\nMAX_MESSAGE_SIZE=10485760\n```\n\n#### cloud-sync-server\nConfigure through Midway.js configuration files in `src/config/`.\n\n## 🏛 Project Structure\n\n```\ne2ee-server/\n├── packages/\n│   ├── transfer-server/           # E2EE Server\n│   │   ├── src/\n│   │   │   ├── server.ts         # Main server entry\n│   │   │   ├── roomManager.ts    # Room management\n│   │   │   ├── e2eeServerApi.ts  # API interfaces\n│   │   │   └── utils/            # Utility functions\n│   │   ├── package.json\n│   │   └── tsconfig.json\n│   │\n│   └── cloud-sync-server/         # Sync Component\n│       ├── src/\n│       │   ├── configuration.ts   # Midway configuration\n│       │   ├── service/          # Service implementations\n│       │   ├── dto/              # Data transfer objects\n│       │   └── adapter/          # External adapters\n│       ├── package.json\n│       └── tsconfig.json\n│\n├── examples/\n│   └── mock-app/                  # Mock Application\n│       ├── src/\n│       │   ├── configuration.ts\n│       │   ├── controller/\n│       │   └── service/\n│       └── package.json\n│\n├── package.json                   # Root package.json\n├── yarn.lock                      # Yarn lock file\n├── CLAUDE.md                      # AI assistant instructions\n└── README.md                      # This file\n```\n\n## 🧪 Testing\n\n```bash\n# Run all tests\nyarn test\n\n# Run tests for specific package\nyarn test:sync        # Cloud sync server tests\nyarn test:mock        # Mock app tests\n\n# Run tests with coverage\nyarn workspace @onekeyhq/cloud-sync-server test:cov\n\n# Run tests in watch mode\nyarn workspace @onekeyhq/cloud-sync-server test:watch\n```\n\n## 🔍 Code Quality\n\n```bash\n# Run linting for all packages\nyarn lint\n\n# Run linting for specific package\nyarn lint:sync\n\n# Auto-fix linting issues\nyarn workspace @onekeyhq/cloud-sync-server lint:fix\n```\n\n## 🐳 Docker Support\n\n### Building Docker Images\n\n```bash\n# Build transfer-server image\ndocker build -f packages/transfer-server/Dockerfile -t onekey/transfer-server .\n\n# Build cloud-sync-server image\ndocker build -f packages/cloud-sync-server/Dockerfile -t onekey/cloud-sync-server .\n```\n\n### Docker Compose\n\n```yaml\nversion: '3.8'\nservices:\n  transfer-server:\n    image: onekey/transfer-server\n    ports:\n      - \"3868:3868\"\n    environment:\n      - NODE_ENV=production\n      - PORT=3868\n\n  cloud-sync-server:\n    image: onekey/cloud-sync-server\n    ports:\n      - \"7001:7001\"\n    environment:\n      - NODE_ENV=production\n    depends_on:\n      - mongodb\n      - kafka\n\n  mongodb:\n    image: mongo:latest\n    ports:\n      - \"27017:27017\"\n\n  kafka:\n    image: confluentinc/cp-kafka:latest\n    ports:\n      - \"9092:9092\"\n```\n\n## 📊 Monitoring\n\n### Health Checks\n\n- Transfer Server: `http://localhost:3868/health`\n- Mock App: `http://localhost:7001/health`\n\n### Server Statistics\n\n- Transfer Server: `http://localhost:3868/stats`\n\n## 🛠 Development Guidelines\n\n### Git Workflow\n\n1. Create feature branch from `main`\n2. Make changes and commit with conventional commits\n3. Run tests and linting\n4. Create pull request\n5. Merge after review\n\n### Commit Convention\n\n```\nfeat: Add new feature\nfix: Fix bug\ndocs: Update documentation\nstyle: Format code\nrefactor: Refactor code\ntest: Add tests\nchore: Update dependencies\n```\n\n### Adding New Packages\n\n1. Create new directory under `packages/`\n2. Initialize package with `package.json`\n3. Add to workspaces in root `package.json`\n4. Run `yarn install` from root\n\n## 🔒 Security\n\n- All sensitive configuration should use environment variables\n- Never commit `.env` files\n- Use HTTPS in production\n- Configure CORS appropriately\n- Implement rate limiting\n- Regular dependency updates\n\n## 📝 License\n\nThis project is part of the OneKey ecosystem.\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'feat: Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📞 Support\n\nFor issues and questions:\n- Open an issue on GitHub\n- Contact the OneKey development team\n\n## 🔗 Related Links\n\n- [OneKey Website](https://onekey.so)\n- [Documentation](./docs/)\n- [API Reference](./docs/api/)\n- [Migration Guide](./docs/migration.md)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonekeyhq%2Fe2ee-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonekeyhq%2Fe2ee-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonekeyhq%2Fe2ee-server/lists"}