CyaniTalk is a diversified, cross-platform social client built with Flutter. It bridges the gap between Misskey (decentralized micro-blogging) and Flarum (structured community forums), offering a unified experience for both casual social interaction and deep technical discussions.
Designed with a Responsive Shell, CyaniTalk adapts seamlessly between mobile (iOS/Android) and desktop (Windows/macOS/Linux) environments, providing native-tier features like real-time streaming and advanced administrative tools.
CyaniTalk decouples the navigation logic from the content to provide an ergonomic experience on any device:
- Mobile: Classic Bottom Navigation Bar for one-handed use.
- Desktop: Vertical Navigation Rail for wide screens, utilizing a Master-Detail view for efficient browsing.
- Unified Sections: Access Misskey, Forum, Drive, Messages, and Profile seamlessly.
- Real-time Streaming: Connects to the Misskey WebSocket (
streaming) to deliver notes, notifications, and messaging instantly. - Rich Interaction: Supports posting notes, reactions (Emoji), and basic MFM (Misskey Flavored Markdown) rendering.
- Misskey Drive: A dedicated visual interface for managing cloud files and images.
- AiScript & API: Support for running basic AiScript interactions and an embedded API Console.
- Structured Discussions: Browse tags, discussions, and posts with a clean reading experience.
- Community interaction: Create discussions, reply to posts, and manage your forum identity.
- Authentication: Seamless JSON:API based login and token management.
- Unified Dashboard: Detects admin privileges to reveal hidden control panels.
- Misskey Control Panel: View instance health, stats, and moderate users.
- Flarum Management: Basic moderation tools and backend management.
- API Console: A built-in developer tool to test endpoints and inspect JSON responses directly within the app.
- Framework: Flutter (Dart)
- Core Logic & Networking: Rust (High-performance backend logic)
reqwest(REST API calls in Rust).serde(Compile-time JSON serialization).flutter_rust_bridge(Seamless Dart-Rust FFI).
- State Management: Riverpod (Handling multi-account states).
- Networking (Legacy/UI):
dio(Being ported to Rust).web_socket_channel(Misskey Streaming).
- UI Components:
flutter_adaptive_scaffold(or custom LayoutBuilder implementation),flutter_markdown. - Storage:
flutter_secure_storagefor credentials,shared_preferencesfor settings.
CyaniTalk uses Rust for its network and business logic layer to ensure maximum performance and type safety.
- Install Rust: rustup.rs
- Install Codegen Tool:
cargo install flutter_rust_bridge_codegen
- Generate Bindings:
Whenever you modify Rust code in
rust/src/api/, run:cd rust cargo build cd .. flutter_rust_bridge_codegen generate
- Initialize Flutter project.
- Implement the Responsive Shell (Bottom Nav vs. Nav Rail).
- Create skeleton pages for the 5 main tabs.
- Implement MiAuth flow for Misskey.
- Implement Token retrieval for Flarum.
- Create the Unified Login Manager.
- Establish WebSocket connections for Misskey.
- Implement global event distribution (Notifications/New Notes).
- Build the "Messages" tab aggregation.
- Misskey: Timeline rendering and Posting interface.
- Flarum: Discussion list and Thread view.
- Drive: File grid view and upload functionality.
- Build the API Console.
- Implement Admin-only route protection.
- Desktop-specific optimizations (keyboard shortcuts, window management).
Prerequisites: Flutter SDK installed.
-
Clone the repository:
git clone https://github.com/CyaniAgent/CyaniTalk.git cd CyaniTalk -
Install dependencies:
flutter pub get
-
Run the app:
# For Mobile๏ผYou need Android Platform Tools, and use 'adb devices' to list your mobile's device code.๏ผ flutter run -d {your-android-device-code} # For Desktop (macOS/Windows/Linux) flutter run -d windows # or macos/linux
This project is currently in the Greenfield stage. Contributions, especially regarding MFM parsing and Flarum JSON:API handling, are welcome!