GitHub - pnrt/social-scheduler-cpp

Logo

Version Qt C++ QML CMake

A modern, cross-platform desktop application for scheduling and automating social media posts

FeaturesScreenshotsTech StackGetting StartedDocumentation


📖 Overview

Social Scheduler is a powerful desktop application built with Qt 6 and QML that helps you manage, schedule, and automate posts across multiple social media platforms from a single, beautiful interface.

Whether you're a content creator, marketer, or business owner, Social Scheduler streamlines your workflow by providing:

  • 🗓️ Smart Scheduling - Plan posts for optimal times
  • 🤖 Auto-Posting - Automatically publish when the time comes
  • 📊 Analytics Dashboard - Track performance at a glance
  • 🎨 Modern UI - Built with Qt Quick Controls 2 and Material Design principles

✨ Features

Core Functionality

  • Multi-Platform Support - Connect and manage credentials for Twitter, Facebook, LinkedIn, and Instagram
  • Post Scheduling - Create posts with text, images, and videos scheduled for future publishing
  • Auto-Post Mode - Enable automatic posting at scheduled times
  • Media Management - Upload and manage images and video content
  • Credential Storage - Securely store API keys, tokens, and OAuth credentials

User Interface

  • Dashboard - Real-time statistics and overview of your social activity
  • Calendar View - Visual calendar showing scheduled posts
  • Dark/Light Themes - Toggle between theme modes for comfortable viewing
  • Responsive Design - Smooth animations and modern Material Design aesthetic
  • System Tray Integration - Minimize to tray with quick access controls

Advanced Features

  • AI-Powered Content - Integrated AI assistance for generating post content (Google AI API)
  • Search & Filter - Quickly find posts by text, tag, or platform
  • Progress Tracking - Real-time upload progress indicators
  • Application Logging - Detailed logs for debugging and monitoring
  • Native Notifications - System notifications for post status and errors

🖼️ Screenshots

Dashboard Screen Compose Screen Calendar Screen Settings Screen
Dashboard Compose Calendar Settings

🛠️ Tech Stack

Category Technology
Framework Qt 6.8 (Quick, QuickControls2, QuickDialogs2)
Language C++20, QML
Build System CMake 3.16+
Database SQLite (Qt SQL)
Network Qt Network (REST APIs, OAuth)
UI Components Qt Quick, Qt Quick Effects, Qt SVG
Multimedia Qt Multimedia
Concurrency Qt Concurrent

Key Qt Modules

Qt6::Quick
Qt6::QuickControls2
Qt6::QuickDialogs2
Qt6::Network
Qt6::Sql
Qt6::Multimedia
Qt6::Concurrent
Qt6::Svg
Qt6::QuickEffects

📁 Project Structure

SocialScheduler/
├── main.cpp                 # Application entry point, system tray setup
├── Main.qml                 # Main QML window and navigation
├── SocialViewModel.h/.cpp   # Central ViewModel (MVVM pattern)
├── CMakeLists.txt           # Build configuration
│
├── data/                    # Data layer
│   ├── DatabaseManager.h/.cpp   # SQLite database operations
│   └── ...
│
├── model/                   # Data models
│   ├── PostModel.h/.cpp         # Post data model
│   ├── CredentialModel.h/.cpp   # Platform credentials
│   └── SocialPlatform.h         # Platform definitions
│
├── ui/                      # QML UI components
│   ├── DashboardScreen.qml
│   ├── CalendarScreen.qml
│   ├── SettingsScreen.qml
│   ├── CredentialsPage.qml
│   ├── PostsPage.qml
│   └── ... (custom controls)
│
├── scheduler/               # Background scheduling service
│   ├── SchedulerService.h/.cpp
│
├── utils/                   # Utility classes
│   ├── OAuthHelper.h        # OAuth authentication
│   └── DataHelper.h         # Data transformation helpers
│
└── assets/                  # Icons and resources
    ├── logo.svg
    ├── dashboard.svg
    └── ... (platform icons)

🚀 Getting Started

Prerequisites

  • Qt 6.8 or later
  • CMake 3.16 or later
  • C++20 compatible compiler (GCC 11+, Clang 14+, MSVC 2019+)
  • Qt Modules: Quick, QuickControls2, Network, Sql, Multimedia, Concurrent

Installation

  1. Clone the repository

    git clone https://github.com/pnrt/social-scheduler-cpp.git
    cd social-scheduler-cpp
  2. Create build directory

  3. Configure with CMake

    cmake .. -DCMAKE_BUILD_TYPE=Release
  4. Build the application

    cmake --build . --config Release
  5. Run the application

    ./appSocialScheduler    # Linux/macOS
    appSocialScheduler.exe  # Windows

Qt Creator Setup

  1. Open CMakeLists.txt in Qt Creator
  2. Let Qt Creator configure the CMake project
  3. Select your kit (Desktop Qt 6.8+)
  4. Click Run (▶️)

📖 Documentation

Architecture

Social Scheduler follows the MVVM (Model-View-ViewModel) pattern:

  • Model (model/) - Data structures and business logic
  • View (ui/) - QML components for UI
  • ViewModel (SocialViewModel) - Bridge between Model and View

Key Components

SocialViewModel

The central ViewModel exposing data and actions to QML:

  • PostModel* - Manage posts
  • CredentialModel* - Manage platform credentials
  • Platform selection & filtering
  • AI integration
  • Analytics & statistics

SchedulerService

Background service that:

  • Monitors scheduled posts
  • Triggers auto-posts at designated times
  • Sends system notifications

DatabaseManager

SQLite database layer for persistent storage:

  • Posts and media references
  • Platform credentials
  • User preferences
  • AI configurations

QML Integration

All C++ properties are exposed to QML via Q_PROPERTY:

// Access in QML
Text {
    text: viewModel.selectedPlatformsText
}

Button {
    onClicked: viewModel.add_post(content, time, tag, imagePath, autoPost)
}

🔌 Supported Platforms

Platform Status Features
Twitter/X ✅ Ready Text, Images, Videos
Facebook ✅ Ready Text, Images
LinkedIn ✅ Ready Text, Images, Articles
Instagram 🚧 Coming Soon Images, Stories

⚙️ Configuration

Database

The application uses SQLite for local data storage. Database is auto-created on first run.

API Credentials

Configure your social media API credentials in the Settings → Credentials page:

  • Twitter API Key & Secret
  • Facebook Access Token
  • LinkedIn API Key & Secret

AI Configuration

Set up Google AI API key in Settings → AI for content generation assistance.


🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow the existing MVVM architecture
  • Add Q_PROPERTY for new ViewModel properties
  • Use Q_INVOKABLE || public slots: for callable functions from QML
  • Emit signals after property changes (emit propertyNameChanged())
  • Keep QML components modular and reusable

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments


📧 Contact


Made with ❤️ using Qt & C++

⬆ Back to Top