A modern, cross-platform desktop application for scheduling and automating social media posts
Features • Screenshots • Tech Stack • Getting Started • Documentation
📖 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 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
🛠️ 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
-
Clone the repository
git clone https://github.com/pnrt/social-scheduler-cpp.git cd social-scheduler-cpp -
Create build directory
-
Configure with CMake
cmake .. -DCMAKE_BUILD_TYPE=Release
-
Build the application
cmake --build . --config Release -
Run the application
./appSocialScheduler # Linux/macOS appSocialScheduler.exe # Windows
Qt Creator Setup
- Open
CMakeLists.txtin Qt Creator - Let Qt Creator configure the CMake project
- Select your kit (Desktop Qt 6.8+)
- 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 postsCredentialModel*- 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 |
| ✅ Ready | Text, Images | |
| ✅ Ready | Text, Images, Articles | |
| 🚧 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:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow the existing MVVM architecture
- Add
Q_PROPERTYfor 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
- Built with Qt Framework
- Icons from Material Design Icons
- Inspired by modern social media management tools
📧 Contact
Made with ❤️ using Qt & C++



