Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

184 Commits

Repository files navigation

CommDesk

CommDesk Logo

An evolving desktop platform foundation to manage communities, events, hackathons, teams, and day-to-day operations.

LicenseIssuesPull RequestsStars


Table of Contents

Nexus Spring of Code

About

CommDesk is built for developer communities, student organizations, tech clubs, event organizers, and open-source teams.

It provides one desktop workspace for:

  • Event planning and tracking
  • Hackathon operations
  • Member and team management
  • Daily community coordination

Implementation Status and Scope

CommDesk documentation includes both:

  • target-state architecture docs (what the full platform should become)
  • implementation status docs (what is currently built in this repository)

Before planning or estimating work, check:

If there is a mismatch between product-spec docs and current code in this repository, treat the implementation status matrix as source of truth for shipped scope.


Product Architecture

Current Repository Architecture (Implemented)

This reflects what is actively present in this repository today.

flowchart LR
U[Community Ops User] --> A[CommDesk Desktop App\nTauri Shell]
A --> B[React + TypeScript Frontend]
A --> C[Rust Core\nsrc-tauri]
B --> D[Feature Modules\nDashboard, Member, Add Member, Events, Contact]
B --> E[Tauri Plugin Layer\nUpdater, Process, Opener]
E --> F[GitHub Releases\nlatest.json + signed assets]
C --> G[OS Capabilities\nWindowing, Native Process, Packaging]
Loading

Target Platform Architecture (Roadmap)

This reflects the broader target-state described in system docs.

flowchart LR
V[Visitors and Participants] --> W[Website Frontend]
O[Community Ops Team] --> D[Desktop Ops Frontend]
W --> API[CommDesk Backend API]
D --> API
API --> DB[(Primary Database)]
API --> OBJ[(Object Storage)]
API --> Q[Queue / Jobs]
Q --> N[Notification Services]
Q --> I[Integrations and Webhooks]
API --> T[Trust and Analytics Layer]
Loading

Documentation Index (Important)

Use these docs depending on your objective:


Current Desktop Route Map

These are the currently mounted app routes in the desktop frontend shell.

RouteScreenPurpose
/DashboardDefault landing screen
/dashboardDashboardOperations overview
/memberMembersMember listing and search
/add-memberAdd MemberMember onboarding form
/eventsEventsEvent listing and quick actions
/create-eventCreate EventEvent authoring UI
/contactContact and SupportInternal support submissions

Quick Start (Desktop in 60 seconds)

git clone https://github.com/NexGenStudioDev/CommDesk.git
cd CommDesk
pnpm install
pnpm tauri dev

For production desktop bundles:

pnpm tauri build

Core Features

Community Management

  • Member onboarding and role assignment
  • Team structure and responsibility mapping
  • Volunteer coordination

Event Management

  • Event creation and updates
  • Registration and participant tracking
  • Scheduling support

Hackathon Management

  • Hackathon setup and lifecycle management
  • Team formation and project flow
  • Submission and judging workflow

Operations Dashboard

  • Community activity overview
  • Progress and task tracking

Roles

RoleDescription
VisitorView public information
MemberParticipate in events and hackathons
VolunteerAssist with community operations
OrganizerManage events and programs
AdminFull platform control

Tech Stack

LayerTechnologies
Desktop AppTauri v2, React, TypeScript, Vite
UITailwind CSS
RuntimeRust + Tauri
Auto UpdatesGitHub Releases + Tauri updater plugin
PackagingTauri bundles + Flatpak (Linux)

Repository Structure

CommDesk/
├── .github/
│ └── workflows/ # CI/CD pipelines
├── docs/ # project and operational docs
├── public/ # static frontend assets
├── scripts/ # build/release helper scripts
├── snap/ # snap packaging assets
├── src/ # React frontend
│ ├── Component/ # shared UI components
│ ├── config/ # frontend configuration
│ ├── features/ # feature modules (Members, Events, etc.)
│ ├── system/ # app system integrations (updater, etc.)
│ └── utils/ # utility helpers
├── src-tauri/ # Tauri Rust app
│ ├── src/ # Rust source
│ ├── capabilities/ # Tauri capability files
│ ├── icons/ # app icons
│ └── tauri.conf.json # Tauri runtime config
├── org.commdesk.CommDesk.json # Flatpak manifest
├── package.json # JS scripts/dependencies
├── pnpm-lock.yaml # lockfile
├── CODE_OF_CONDUCT.md # community behavior guidelines
├── LICENSE # project license
└── README.md

Prerequisites

  • Node.js >= 20
  • pnpm >= 10
  • Rust stable (rustup, cargo)
  • OS-specific Tauri dependencies:
    • Linux: WebKitGTK/GTK packages
    • macOS: Xcode Command Line Tools
    • Windows: MSVC build tools

Official guide: Tauri Prerequisites


Installation

git clone https://github.com/NexGenStudioDev/CommDesk.git
cd CommDesk
pnpm install

Important Scripts

ScriptCommandPurpose
devpnpm devStart Vite dev server
buildpnpm buildType-check + production frontend build
previewpnpm previewPreview built frontend
tauripnpm tauriRun Tauri CLI commands
tauri:keys:generatepnpm tauri:keys:generateGenerate updater signing keys
tauri:build:signedpnpm tauri:build:signedBuild signed updater artifacts
lintpnpm lintRun ESLint
lint:fixpnpm lint:fixAuto-fix lint issues
formatpnpm formatFormat all files with Prettier
format:checkpnpm format:checkValidate formatting

Most used commands:

# Run desktop app (dev)
pnpm tauri dev
# Build frontend only
pnpm build
# Build desktop bundles for current OS
pnpm tauri build

Critical Maintainer Commands

# Install dependencies
pnpm install
# Run app in development mode
pnpm tauri dev
# Build production desktop bundles (current OS, unsigned/local)
pnpm tauri build
pnpm tauri signer generate
# Generate updater signing keys (IMPORTANT)
pnpm tauri:keys:generate
# Direct equivalent (important: do not add an extra `--` before `-w`)
pnpm tauri signer generate -w ~/.tauri/commdesk.key
# Build signed updater artifacts (uses ~/.tauri/commdesk.key by default)
pnpm tauri:build:signed
# Release version
git add .
git commit -m "release: v0.1.1"
git tag v0.1.1
git push origin master --tags
# Linux Flatpak build
flatpak-builder --force-clean flatpak-build org.commdesk.CommDesk.json

Build & Packaging

Tauri Bundles (current OS)

pnpm tauri build

Use pnpm tauri:build:signed when you need updater artifacts/signatures.

Artifacts are generated in:

  • src-tauri/target/release/
  • src-tauri/target/release/bundle/

Linux usually outputs:

  • .deb
  • .rpm
  • .AppImage

Flatpak Build (Linux)

Manifest:

  • org.commdesk.CommDesk.json

Build command:

flatpak-builder --force-clean flatpak-build org.commdesk.CommDesk.json

Auto-Update Setup (Production)

Configured in:

  • src-tauri/tauri.conf.json
  • src/system/updater/autoUpdater.ts
  • .github/workflows/tauri-all-platforms.yml

1) Generate updater signing keys

pnpm tauri:keys:generate

Direct command equivalent:

pnpm tauri signer generate -w ~/.tauri/commdesk.key

This creates:

  • Private key (secret, never commit)
  • Public key (store in src-tauri/tauri.conf.json under plugins.updater.pubkey)

2) Local signed build environment

pnpm tauri:build:signed

The signed build script resolves key path in this order:

  1. TAURI_SIGNING_PRIVATE_KEY (if already set)
  2. TAURI_SIGNING_PRIVATE_KEY_PATH (custom key file path)
  3. ~/.tauri/commdesk.key (default)

3) GitHub Actions secrets

Set in repository secrets:

  • TAURI_SIGNING_PRIVATE_KEY
  • TAURI_SIGNING_PRIVATE_KEY_PASSWORD

4) Release workflow

Workflow file:

  • .github/workflows/tauri-all-platforms.yml

This workflow:

  • Builds Linux, Windows, macOS bundles
  • Signs update artifacts
  • Uploads bundles, .sig files, and latest.json

Release Delivery Flow (Signed Updater)

sequenceDiagram
participant Dev as Maintainer
participant CI as GitHub Actions
participant GH as GitHub Releases
participant App as CommDesk Desktop App
Dev->>Dev: Update version + changelog
Dev->>GH: Push tag (vX.Y.Z)
GH->>CI: Trigger tauri-all-platforms workflow
CI->>CI: Build + sign bundles per platform
CI->>GH: Upload bundles + signatures + latest.json
App->>GH: Check latest.json via updater endpoint
GH-->>App: Return update metadata
App->>App: Download, verify, install, relaunch
Loading

Release Steps

# 1) ensure code is ready
pnpm lint
pnpm build
# 2) commit release changes
git add .
git commit -m "release: v0.1.1"# 3) tag and push
git tag v0.1.1
git push origin master --tags

Or run release workflow manually with workflow_dispatch and set tag_name.


Update Manifest (latest.json)

Minimal example structure:

{
"version": "v0.1.1",
"notes": "Release notes summary",
"pub_date": "2026-03-18T00:00:00Z",
"platforms": {
"linux-x86_64": {
"signature": "<signature>",
"url": "https://github.com/NexGenStudioDev/CommDesk/releases/download/v0.1.1/commdesk_0.1.1_amd64.AppImage"
}
}
}

If you keep an internal template file, use docs/latest.json.example.

Runtime endpoint currently configured in app:

https://github.com/NexGenStudioDev/CommDesk/releases/latest/download/latest.json

Project Paths

  • Frontend app entry: src/App.tsx
  • Auto updater logic: src/system/updater/autoUpdater.ts
  • Tauri app config: src-tauri/tauri.conf.json
  • Rust dependencies and metadata: src-tauri/Cargo.toml
  • Flatpak manifest: org.commdesk.CommDesk.json
  • CI release workflow: .github/workflows/tauri-all-platforms.yml
  • Updater production guide (recommended internal doc): docs/Tauri_Auto_Update_Production_Guide.md

Troubleshooting

Build fails on Linux due to missing WebKit/GTK packages

Install prerequisites from the Tauri guide and re-run:

pnpm install
pnpm tauri build

Updater does not detect new release

Verify all of the following:

  1. Tag was pushed (vX.Y.Z).
  2. Workflow uploaded latest.json and signature files.
  3. plugins.updater.pubkey in src-tauri/tauri.conf.json matches signing key.
  4. Release assets are publicly accessible.

Signed build fails locally

Check environment variables and key path resolution order:

  1. TAURI_SIGNING_PRIVATE_KEY
  2. TAURI_SIGNING_PRIVATE_KEY_PATH
  3. ~/.tauri/commdesk.key

Recommended Checklist

Before every release:

  1. pnpm lint
  2. pnpm build
  3. Confirm updater public key in src-tauri/tauri.conf.json
  4. Confirm signing secrets exist in GitHub
  5. Tag + push
  6. Verify release assets and updater files

Contributing

  1. Fork repository
  2. Create branch
  3. Commit changes
  4. Open pull request

Contribution permission note: You may contribute through issues and pull requests, but the project source code remains proprietary and all rights are reserved unless explicit written permission is granted by the copyright holder.

git checkout -b feat/amazing-feature

Community

  • Issues: bug reports and feature requests
  • Pull Requests: code contributions
  • Discussions: ideas and technical questions

Code of Conduct

This project is committed to a respectful and harassment-free community.


License

This project is proprietary and all rights are reserved.

Without explicit prior written permission, this software and source code may not be copied, modified, distributed, or used.


Built with ❤️ for communities.

About

CommDesk is a modern desktop platform built for communities, clubs, and organizations to manage their activities in one place.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages