Skip to content

qichenya/CyaniTalk

 
 

Repository files navigation

CyaniTalk

中文 | English


Flutter Dart Misskey Flarum Status

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.


🌟 Key Features

🎨 Adaptive UI/UX

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.

🪐 Misskey Integration (The "Dynamic" Layer)

  • Real-time Streaming: Connects to the Misskey WebSocket (streaming) to deliver notes, notifications, and messaging instantly.
  • MFM Renderer: Full Markup Language For Misskey rendering support including emoji, search, links, and more syntax elements.
  • 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.

💬 Flarum Integration (The "Static" Layer)

  • 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 Services

  • Global Search: Unified search across Misskey and Flarum platforms.
  • Notification System: Unified management system supporting multiple notification types.
  • Cache Management: Integrated note and image cache management for improved performance.
  • Audio Engine: Audio playback powered by audioplayers.

🛡️ Admin & Power Tools (Admin Only)

  • 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.

🛠 Tech Stack

  • Framework: Flutter (Dart)
  • State Management: Riverpod (with @riverpod annotations for type-safety).
  • Networking:
    • dio (REST API calls).
    • web_socket_channel (Misskey Streaming).
  • Routing: go_router with support for Master-Detail views on Desktop.
  • Audio: audioplayers for high-quality audio playback.
  • UI Components: flutter_adaptive_scaffold, custom Material Design 3 theme system.
  • Data Models: freezed & json_serializable.
  • Storage: flutter_secure_storage for credentials, shared_preferences for settings.

🗺️ Development Roadmap

Phase 1: The Responsive Foundation 🚧

  • Initialize Flutter project.
  • Implement the Responsive Shell (Bottom Nav vs. Nav Rail).
  • Create skeleton pages for the 5 main tabs.

Phase 2: Authentication & Core Connectivity

  • Implement MiAuth flow for Misskey.
  • Implement Token retrieval for Flarum.
  • Create the Unified Login Manager.

Phase 3: The Real-time Engine ✅

  • Establish WebSocket connections for Misskey.
  • Implement global event distribution (Notifications/New Notes).
  • Build the "Messages" tab aggregation.

Phase 4: Content & Creation 🚧

  • Misskey: Timeline rendering and Posting interface.
  • MFM Renderer: Full syntax support.
  • Flarum: Discussion list and Thread view.
  • Drive: File grid view and upload functionality.
  • Advanced drafting and rich media uploads.

Phase 5: Admin Tools & Polish 🚧

  • Build the API Console.
  • Implement Global Search Service.
  • Audio Engine integration.
  • Implement Admin-only route protection.
  • Desktop-specific optimizations (keyboard shortcuts, window management).

🚀 Getting Started

Prerequisites: Flutter SDK installed.

  1. Clone the repository:

    git clone https://github.com/CyaniAgent/CyaniTalk.git
    cd CyaniTalk
  2. Install dependencies:

    flutter pub get
  3. Code Generation:

    dart run build_runner build --delete-conflicting-outputs
  4. Run the app:

    # For Mobile
    flutter run
    
    # For Desktop (macOS/Windows/Linux)
    flutter run -d windows # or macos/linux

Note: After changing dependencies, you need to run "dart run dart_pubspec_licenses:generate" to update the open-source license file.


🤝 Contributing

This project is moving towards its first stable release. Contributions, especially regarding UI refinement and Flarum JSON:API edge cases, are welcome!

📄 License

MIT License

About

A comprehensive, multi-functional social application built with Flutter, connecting Misskey and Flarum, and belonging to CyaniAgent.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Dart 97.4%
  • C++ 1.4%
  • CMake 1.0%
  • Swift 0.1%
  • C 0.1%
  • Kotlin 0.0%