Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DevWorkspace

JavaSpring BootReactElectronLicense

A modern, full-stack workspace collaboration platform that enables teams to communicate, collaborate, and manage projects in real-time. Built with Spring Boot backend, React frontend, and packaged as a desktop application with Electron.

Features

Authentication & User Management

  • User registration and login
  • Secure session management with JWT tokens
  • User profiles and account management

Workspace Management

  • Create and manage multiple workspaces
  • Role-based access control (Owner/Member)
  • Invite and manage workspace members
  • Workspace-specific permissions

Real-Time Communication

  • Channels: Organize conversations by topic
  • Messages: Send and receive messages in real-time
  • WebSocket Integration: Instant message delivery using STOMP protocol
  • Message history and threading

Announcements

  • Create workspace-wide announcements
  • Real-time announcement broadcasting
  • Announcement history and management

Task Management

  • Create and assign tasks/assignments
  • Set due dates and descriptions
  • Track assignment progress
  • Assignment notifications

File Management

  • Upload and share files
  • Associate files with messages or assignments
  • File metadata tracking

Desktop Application

  • Cross-platform desktop app built with Electron
  • Native desktop experience
  • Offline-ready interface

Architecture

Backend (Spring Boot)

  • Framework: Spring Boot 4.0.3
  • Language: Java 17
  • Database: PostgreSQL (with H2 for testing)
  • ORM: Spring Data JPA with Hibernate
  • Real-Time: Spring WebSocket with STOMP
  • Build Tool: Gradle
  • API: RESTful endpoints with DTOs

Frontend (React)

  • Framework: React 19.2.4
  • Routing: React Router DOM
  • HTTP Client: Axios
  • WebSocket: STOMP.js and SockJS
  • Build Tool: Create React App
  • Styling: CSS Modules

Desktop (Electron)

  • Framework: Electron 41.1.1
  • Packaging: Electron Builder
  • Main Process: Custom Electron main script

Database Schema

Core Tables

  • users - User accounts and profiles
  • workspaces - Workspace containers with ownership
  • workspace_members - User-workspace relationships with roles
  • channels - Communication channels within workspaces
  • messages - Channel messages with real-time delivery
  • announcements - Workspace announcements
  • assignments - Tasks and assignments
  • files - File attachments and metadata

Getting Started

Prerequisites

  • Java 17 or higher
  • Node.js 16+ and npm
  • PostgreSQL (or H2 for development)
  • Gradle (or use included wrapper)

Backend Setup

  1. Clone the repository

    git clone <repository-url>cd devworkspace
  2. Configure Database

    • Update src/main/resources/application.properties with your PostgreSQL credentials
    • Or use H2 (in-memory) for development
  3. Run the Backend

    # Using Gradle wrapper
    ./gradlew bootRun

    The API will be available at http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory

    cd frontend
  2. Install dependencies

    npm install
  3. Start development server

    npm start

    The React app will run at http://localhost:3000

Desktop Application

  1. Build the React app

    cd frontend
    npm run build
  2. Run Electron app

    npm run electron
  3. Package for distribution

    npm run electron-pack

API Endpoints

Authentication

  • POST /api/users/register - User registration
  • POST /api/users/login - User login

Workspaces

  • GET /workspaces - List all workspaces
  • POST /workspaces - Create workspace
  • GET /workspaces/{id} - Get workspace details
  • DELETE /workspaces/{id} - Delete workspace (owner only)

Channels

  • GET /channels/workspace/{workspaceId} - List workspace channels
  • POST /channels/workspace/{workspaceId} - Create channel (owner only)

Messages

  • GET /messages/channel/{channelId} - Get channel messages
  • POST /messages/channel/{channelId} - Send message

And more... (see full API documentation)

Real-Time Features

The application uses WebSocket connections for real-time updates:

  • Message Broadcasting: New messages appear instantly
  • Channel Updates: Real-time channel creation/deletion
  • Member Changes: Live member list updates
  • Announcements: Instant announcement delivery
  • Assignment Updates: Real-time task notifications

Development

Project Structure

devworkspace/
├── src/main/java/com/example/devworkspace/ # Backend source
│ ├── controller/ # REST API endpoints
│ ├── service/ # Business logic
│ ├── entity/ # JPA entities
│ ├── repository/ # Data access
│ ├── dto/ # Data transfer objects
│ └── configuration/ # Spring configuration
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main app component
│ ├── public/ # Static assets
│ └── main.js # Electron main process
├── sql scripts/ # Database schema
└── build.gradle # Build configuration

Available Scripts

Backend:

  • ./gradlew build - Build the application
  • ./gradlew bootRun - Run development server
  • ./gradlew test - Run tests

Frontend:

  • npm start - Start React development server
  • npm run build - Create production build
  • npm run electron - Run Electron app
  • npm run electron-pack - Package for distribution

Contributing

  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

Support

For questions or support, please open an issue in the GitHub repository.


DevWorkspace - Bringing teams together with modern collaboration tools.

  1. Clone the repository
git clone https://github.com/<your-username>/devworkspace.git
cd devworkspace
  1. Build and run the project
mvn spring-boot:run
  1. Access the API
Base URL: http://localhost:8080

API Endpoints

ResourceMethodEndpointRequest Params / BodyPermissions / Notes
UsersPOST/api/users/registerBody: { "name", "email", "password" }Anyone
POST/api/users/loginBody: { "email", "password" }Anyone
GET/api/users-Admin / All users (optional)
WorkspacesPOST/workspacesBody: { "name" }Only logged-in user; becomes owner
GET/workspaces-All logged-in users
GET/workspaces/{id}/members-Only workspace members
POST/workspaces/{id}/members?requesterId={userId}Body: { "userId", "role" }Only owner
DELETE/workspaces/{id}/members/{memberId}?requesterId={userId}-Only owner
ChannelsPOST/channels/workspace/{workspaceId}?requesterId={userId}&name={name}-Only workspace owner
GET/channels/workspace/{workspaceId}-Workspace members
DELETE/channels/{channelId}?requesterId={userId}-Only workspace owner
MessagesPOST/messages/channel/{channelId}?senderId={userId}&content={text}-Workspace members
GET/messages/channel/{channelId}-Workspace members
DELETE/messages/{messageId}?requesterId={userId}-Only sender can delete

Example API Endpoints

Users

POST /api/users/register POST /api/users/login GET /api/users

Workspaces

POST /workspaces # create workspace GET /workspaces # list workspaces GET /workspaces/{id}/members # list workspace members POST /workspaces/{id}/members # add member DELETE /workspaces/{id}/members/{memberId} # remove member

Channels

POST /channels/workspace/{workspaceId}?requesterId=1&name=general GET /channels/workspace/{workspaceId} DELETE /channels/{channelId}?requesterId=1

Messages

POST /messages/channel/{channelId}?senderId=2&content=Hello GET /messages/channel/{channelId} DELETE /messages/{messageId}?requesterId=2 # delete own message

How to Run

  1. Clone the repository
  2. Configure application.properties for your database
  3. Run the Spring Boot application
  4. Use Postman or frontend to interact with APIs

Notes

  • Only workspace owners can create channels or manage members
  • Members can send messages and delete their own messages
  • Deleting a workspace or channel cascades to delete associated members, channels, and messages

License

This project is licensed under the MIT License.

About

A space where developpers can work together share , discuss and communicate as a team .

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages