{"id":34723730,"url":"https://github.com/timilehinn/softchatjs","last_synced_at":"2025-12-25T02:12:51.212Z","repository":{"id":265030614,"uuid":"874891934","full_name":"Timilehinn/softchatjs","owner":"Timilehinn","description":" Build scalable chat apps with Javascript, React and React Native using ready-to-use components for real-time messaging.","archived":false,"fork":false,"pushed_at":"2025-04-05T20:24:26.000Z","size":2645,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T17:11:57.561Z","etag":null,"topics":["chat","expo","javascript","messaging","react","react-native","sdk","websockets"],"latest_commit_sha":null,"homepage":"https://www.softchatjs.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/Timilehinn.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-10-18T16:47:51.000Z","updated_at":"2025-04-05T20:24:29.000Z","dependencies_parsed_at":"2025-04-05T09:34:52.613Z","dependency_job_id":null,"html_url":"https://github.com/Timilehinn/softchatjs","commit_stats":null,"previous_names":["timilehinn/softchatjs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Timilehinn/softchatjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timilehinn%2Fsoftchatjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timilehinn%2Fsoftchatjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timilehinn%2Fsoftchatjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timilehinn%2Fsoftchatjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Timilehinn","download_url":"https://codeload.github.com/Timilehinn/softchatjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timilehinn%2Fsoftchatjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28017188,"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-12-25T02:00:05.988Z","response_time":58,"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","expo","javascript","messaging","react","react-native","sdk","websockets"],"created_at":"2025-12-25T02:12:47.247Z","updated_at":"2025-12-25T02:12:51.203Z","avatar_url":"https://github.com/Timilehinn.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SoftchatJS\n\nSoftchatJS is a flexible, full-featured text/voice messaging platform designed for businesses and developers. It enables real-time chat experiences across web and mobile platforms, with customizable UIs and a backend-agnostic architecture.\n\nThis monorepo contains all the packages and demo apps that make up the SoftchatJS ecosystem.\n\n---\n\n## 🗂 Monorepo Structure\n\n```bash\nsoftchatjs/\n├── apps/\n│   ├── expo-app-demo           # React Native + Expo demo for mobile\n│   └── react-app-demo          # Web app demo using softchatjs-react\n└── packages/\n    ├── softchatjs-core         # Core JS SDK: event system, client logic\n    ├── softchatjs-react        # React bindings and components\n    └── softchatjs-react-native # React Native bindings and components\n```\n\n---\n\n## 🚀 Getting Started\n\n### 1. Install Dependencies\n\nFrom the root of the monorepo:\n\n```bash\nnpm install\n```\n\n\u003e You can also use yarn or npm, but pnpm is recommended for workspace support.\n\n### 2. Start Demo Apps\n\nTo run the web demo:\n\n```bash\ncd apps/react-app-demo \u0026\u0026 npm run dev\n```\n\nTo run the Expo mobile demo:\n\n```bash\ncd apps/expo-app-demo \u0026\u0026 npm run dev\n```\n\n\u003e Make sure you have Expo CLI installed globally:\n\u003e \n\u003e ```bash\n\u003e npm install -g expo-cli\n\u003e ```\n\n---\n\n## ✨ Features\n\n- 💬 Real-time messaging\n- ✍️ Typing indicators (with debounced start/stop events)\n- 👁️ Read receipts\n- 😍 Emoji reactions\n- 🔉 Voice messaging\n- 🧵 Conversation threading (coming soon)\n- 📂 File and media attachments\n- 🛎️ Push notifications via FCM (Android) \u0026 APNs (iOS)\n- 🧠 AI-assisted message summarization (planned)\n- 🧪 Fully customizable UI via components and hooks\n- 💡 Platform-agnostic logic for React and React Native\n- 🧩 Broadcast lists\n\n---\n\n## 🧩 How the Chat Works\n\nSoftchatJS is designed to be backend-agnostic and event-driven. Here's how the pieces fit together:\n\n- 🔧 `softchatjs-core`  \n  Contains the core logic: ChatClient, MessageClient, event system, and utilities for sending/receiving messages, typing indicators, and presence.\n\n- 🌐 `softchatjs-react`  \n  A package of React UI components (like `MessageList`, `Voice messages`, `ChatBubble`, `InputBox`) and hooks (like `useChatClient`) to help build chat interfaces on the web.\n\n- 📱 `softchatjs-react-native`  \n  The React Native counterpart to `softchatjs-react`. It provides mobile-ready components and hooks tailored for native environments via Expo.\n\n\u003e A a prebuild mobile/web app coming soon.\n\n---\n\n## 🏗 Architecture Overview\n\n- 🔄 Event-driven architecture (pub/sub)\n- 🔌 Pluggable transport layer (WebSocket, polling, etc.)\n- 💡 Platform-agnostic core (logic shared across web and mobile)\n- 📦 Modular design for scalability and flexibility\n- ☁️ Backend-agnostic and designed for easy integration with custom infrastructures\n- 📲 Push notifications supported via FCM (Firebase Cloud Messaging) and APNs (Apple Push Notification Service)\n\n\n---\n\n## 📦 Package Overview\n\n| Package                      | Description                                                  |\n|-----------------------------|--------------------------------------------------------------|\n| `softchatjs-core`           | Core chat logic, clients, and event system                   |\n| `softchatjs-react`          | React-specific components and hooks                          |\n| `softchatjs-react-native`   | React Native (Expo-compatible) components and mobile hooks   |\n\n---\n\n## 🧪 Development Tips\n\n- Use pnpm workspaces for local development.\n- You can directly modify packages and see updates reflected in the demo apps.\n- Prefer using the workspace protocol (e.g. \"workspace:*\") when linking internal packages.\n\n---\n\n## 📚 Future Plans\n\n- 🌐 Chat widget\n- 🧠 AI features (summarization, sentiment)\n- 💬 Mentions, polls, video/audio calls\n- 🔌 Backend SDKs for Node and Python\n\n---\n\n## 🤝 Contributing\n\nWe’d love to have your help! Whether it's improving docs, fixing bugs, or building new features—contributions are welcome.\n\n1. Fork the repo\n2. Create your feature branch\n3. Submit a pull request\n\n---\n\n## 📬 Questions?\n\nFeel free to open an issue or start a discussion. We're happy to help!\n\n---\n\nMade with ❤️ by the SoftchatJS team.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimilehinn%2Fsoftchatjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimilehinn%2Fsoftchatjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimilehinn%2Fsoftchatjs/lists"}