A modern desktop platform for workforce administration, project tracking, and resource allocation. Built with C++ and Qt, backed by Microsoft SQL Server.
- Overview
- Features
- Screenshots
- Tech stack
- Architecture
- Getting started
- Configuration
- Usage
- Project structure
- Roadmap
- Contributing
- License
WorkSphere is a lightweight management tool for small teams. It keeps employees, projects and the assignments between them in one place, with a live dashboard that summarizes headcount, active projects and total payroll.
The interface is a modern, fully themed Qt Widgets UI with a dark and a light mode, a card-based form layout and in-table search.
Dashboard
- Animated circular widgets for employee count, project count and total payroll
- Live search over employees (ID or name) and projects (name or assigned employee)
- Context-aware action bar: select an employee or project to reveal Edit / Delete
Employees
- Two employee types: Worker (with a position) and Manager (with a bonus)
- Create employees through a validated form
- Edit employees in a dedicated dialog with full input validation (the employee type is locked)
- Delete employees, with their project assignments cleaned up automatically
Projects
- Create projects with a name and a deadline
- Automatic Active / Inactive status derived from the deadline, color-coded in the table
- Edit and delete projects through dialogs
- Each project row lists the employees currently assigned to it
Assignments
- Assign any employee to any project, several people in a row
- Live "current team" panel for the selected project
- Duplicate assignments are detected and rejected with clear feedback
Settings
- Currency: EUR, USD, RSD, BAM (salaries are stored in USD and converted for display)
- Date format:
dd.MM.yyyy,yyyy-MM-dd,MM/dd/yyyy - Dark / Light theme, applied instantly and remembered between sessions
| Dashboard (dark) | Dashboard (light) |
|---|---|
![]() |
![]() |
| Edit employee | Assignments |
|---|---|
![]() |
![]() |
| Add employee | Add project |
|---|---|
![]() |
![]() |
| Layer | Technology |
|---|---|
| Language | C++17 & TSQL |
| UI | Qt Widgets (QMainWindow, QStackedWidget, QTableWidget, custom QSS theming) |
| Database access | Qt SQL (QSqlQuery) via ODBC |
| Database | Microsoft SQL Server (Express) |
| Settings | QSettings |
WorkSphere follows a simple layered structure:
- Domain model (
models/): anEmployeebase class withWorkerandManagersubclasses. Polymorphism (dynamic_cast) decides how each type is displayed, edited and counted in payroll. - Persistence: a database layer exposing
loadEmployees,addWorker,addManager,updateEmployeeandremoveEmployee. Projects and assignments use parameterizedQSqlQuerystatements directly. - UI (
WorkSphereWindow): a single main window with a sidebar and a stacked page per section. Forms are built in code and rebuilt on demand so lists always reflect the database. - Theming: one palette struct and one stylesheet template with
%token%placeholders, so the entire look of the app (including dialogs) switches from a single function.
- Windows 10 or 11
- Qt 6 (Qt 5.15 also works) with Qt Creator or CMake
- A C++17 compiler (MSVC 2019+ or MinGW)
- SQL Server Express
- ODBC Driver 17 for SQL Server
git clone https://github.com/MIhajloS07/WorkSphere.git
cd WorkSphereWith Qt Creator: open the project file, pick a kit and press Run.
With CMake:
cmake -S . -B build -DCMAKE_PREFIX_PATH="<path-to-Qt>"
cmake --build build --config ReleaseThe connection string is defined in the WorkSphereWindow constructor:
DRIVER={ODBC Driver 17 for SQL Server};
SERVER=LOCALHOST\SQLEXPRESS;
DATABASE=WorkSphere;
Trusted_Connection=yes;
Encrypt=yes;
TrustServerCertificate=yes;
Change SERVER to match your instance. The app uses Windows authentication by default; to use a
SQL login, replace Trusted_Connection=yes with UID=...;PWD=...; (and keep credentials out of
version control).
User preferences (currency, date format, theme) are stored with QSettings under the
organization WorkSphere and application WorkSphereApp.
- Dashboard: review the totals, search, and select a row to edit or delete it.
- Employees: add a worker or a manager. The last field switches between Position and Bonus.
- Projects: create a project with a name and deadline; its status is calculated automatically.
- Assignments: pick a project, then an employee, and press Assign employee.
- Settings: switch theme, currency and date format.
To edit an employee, select the row on the dashboard and click Edit employee. A dialog opens with the current values; invalid input keeps the dialog open and explains what to fix.
WorkSphere/
├── models/ # Employee, Worker, Manager, Project data models
├── widgetmodels/ # CircularProgressWidget
├── workspherewindow.h # header file for worshperewindow
├── workspherewindow.cpp # Main window: UI, theming, handlers
├── workspherewindow.ui # Qt Designer layout
├── logo.svg # Application logo
├── CMakeLists.txt
├── .gitignore
├── .qtcreator
├── build
├── main.cpp # Main class for call Application instance
└── database/ # SQL schema and model(recommended)
| Db Schema |
|---|
![]() |
- Real-time currency exchange rates
- Role-based login
- Export employees and projects to CSV / PDF
- Remove employees from a single project
- Unit tests for the domain model
- Linux and macOS support
Contributions are welcome.
- Fork the repository
- Create a branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m "Add my feature" - Push the branch:
git push origin feature/my-feature - Open a pull request
Distributed under the MIT License. See LICENSE for details.






