Skip to content

Qznad/DevWorkSpace

Repository files navigation

DevWorkspace - Workspace Member Management

Java Spring Boot License

DevWorkspace is a Spring Boot application for managing workspaces and their members.
It allows workspace owners to add/remove members, assign roles, and view workspace member lists.


Features

  • Create and manage workspaces
  • Add members to a workspace (owner-only permission)
  • Remove members from a workspace (owner-only permission)
  • List all members in a workspace
  • Clean JSON responses using DTOs
  • Role-based checks to ensure only owners can modify members

Technology Stack

  • Backend: Java 17, Spring Boot 3
  • Database: H2 (in-memory for testing) / PostgreSQL or MySQL (optional for production)
  • ORM: Spring Data JPA (Hibernate)
  • Build Tool: Maven
  • API: RESTful endpoints

Database Schema

Tables:

  • users: stores user accounts
  • workspaces: stores workspace info, links to owner
  • workspace_members: maps users to workspaces with roles (owner or member)

Relationships:

  • WorkspaceUser (owner) → One-to-One
  • WorkspaceMemberUser & Workspace → Many-to-One
  • Unique constraint on (user_id, workspace_id) in workspace_members

Getting Started

  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

Method Endpoint Description
GET /workspace-members/workspace/{id}/members List all members of a workspace
POST /workspace-members?requesterId={id} Add a member (owner-only)
DELETE /workspace-members/workspace/{workspaceId}/member/{userId}?requesterId={id} Remove a member (owner-only)
GET /workspace-members List all workspace members

Example Requests Add Member (POST)

POST /workspace-members?requesterId=1
Content-Type: application/json

{
  "user": {
    "id": 3,
    "name": "Yassine",
    "email": "yassine@test.com"
  },
  "workspace": {
    "id": 1
  },
  "role": "member"
}

Expected Response (if requester is owner)

"New member added to workspace"

Expected Response (if requester is not owner)

{
  "error": "Only owner can add members"
}

Remove Member (DELETE)

DELETE /workspace-members/workspace/1/member/3?requesterId=1

Expected Response

"Member removed successfully"

List Members (GET)

GET /workspace-members/workspace/1/members

Response:

[
  {
    "userName": "Alice",
    "userEmail": "alice@example.com",
    "role": "owner",
    "workspaceName": "Team Alpha"
  },
  {
    "userName": "Yassine",
    "userEmail": "yassine@test.com",
    "role": "member",
    "workspaceName": "Team Alpha"
  }
]
  1. Testing You can test all endpoints using:
  • Postman or Insomnia
  • Automated JUnit + Spring Boot tests

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages