A full-stack API development platform for creating, organizing, executing, and managing API requests within shared workspaces.
The platform provides functionality similar to API development tools such as Postman, while adding workspace-based collaboration, environment management, execution history, activity tracking, and real-time updates.
- JWT-based authentication
- Secure password hashing using BCrypt
- Protected API endpoints
- Workspace-level authorization
- Backend-side authorization checks
- CORS configuration
- Environment-based secret management
- Create and manage workspaces
- Add and manage workspace members
- Workspace-level role-based access
- In-app workspace invitations
- Accept or reject invitations
- Workspace activity tracking
-
Organize requests using collections
-
Create API requests
-
View all requests
-
View individual request details
-
Update requests
-
Delete requests
-
Duplicate requests
-
Configure:
- HTTP methods
- URLs
- Headers
- Query parameters
- Request bodies
- Execute HTTP requests directly from the workspace
- Dynamic request execution using Spring WebClient
- Backend-based request execution
- View API responses and execution details
-
Manage reusable environment variables
-
Support configuration such as:
- Base URLs
- API keys
- Authentication tokens
- Request parameters
-
Reuse variables across API requests
- Maintain a history of executed API requests
- View previous request configurations
- Store API responses
- Track execution details
Track important workspace activities, including:
- Workspace changes
- Member-related actions
- Request-related actions
- Other workspace activities
- Real-time workspace updates
- Spring WebSocket
- STOMP messaging
- SockJS support
- Workspace-specific topics
- Responsive web interface
- Modern React-based UI
- Tailwind CSS styling
https://api-workspace-frontend.vercel.app
┌─────────────────────────────────────┐
│ React Frontend │
│ │
│ TypeScript + Vite + Tailwind CSS │
│ Axios + STOMP.js + SockJS │
└──────────────────┬──────────────────┘
│
REST API / WebSocket
│
▼
┌─────────────────────────────────────┐
│ Spring Boot API │
│ │
│ Authentication │
│ Workspaces │
│ Collections │
│ API Requests │
│ Environment Variables │
│ Execution History │
│ Activity Logs │
│ WebSocket Collaboration │
└──────────────────┬──────────────────┘
│
JPA / JDBC
│
▼
┌─────────────────────────────────────┐
│ PostgreSQL Database │
│ Supabase │
└─────────────────────────────────────┘
| Technology | Purpose |
|---|---|
| React | UI development |
| TypeScript | Type-safe frontend development |
| Vite | Frontend build tooling |
| Tailwind CSS | Styling and responsive UI |
| Axios | HTTP communication |
| STOMP.js | WebSocket messaging |
| SockJS | WebSocket fallback support |
| Technology | Purpose |
|---|---|
| Java 21 | Backend development |
| Spring Boot | Backend framework |
| Spring Security | Authentication and authorization |
| Spring Data JPA | Database access |
| JWT | Stateless authentication |
| BCrypt | Password hashing |
| Spring WebClient | Dynamic API execution |
| WebSocket | Real-time communication |
| STOMP | WebSocket messaging protocol |
| Maven | Dependency management and build |
| Technology | Purpose |
|---|---|
| PostgreSQL | Relational database |
| Supabase | Hosted PostgreSQL |
| Docker | Backend containerization |
| Component | Platform |
|---|---|
| Frontend | Vercel |
| Backend | Render |
| Database | Supabase |
| Containerization | Docker |
API_Workspace/
│
├── backend/
│ └── api-workspace/
│ ├── src/
│ ├── pom.xml
│ ├── mvnw
│ ├── mvnw.cmd
│ └── Dockerfile
│
├── frontend/
│ └── api-workspace-ui/
│ ├── src/
│ ├── package.json
│ └── vite.config.ts
│
└── README.md
The application uses JWT-based authentication combined with BCrypt password hashing.
┌──────────────────────┐
│ User Registration │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Password Hashing │
│ BCrypt │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ User Login │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ JWT Generated │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ JWT Sent with │
│ API Requests │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ JWT Authentication │
│ Filter │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Protected Resources │
└──────────────────────┘
Passwords are never stored in plain text.
Users can create workspaces and collaborate with other users.
- 🏢 Workspace creation
- 👤 Member management
- 🛡️ Workspace-level authorization
- 📩 Member invitations
- ✅ Accept invitations
- ❌ Reject invitations
- 📋 Activity tracking
┌─────────────────────────────┐
│ Workspace Owner/Admin │
└──────────────┬──────────────┘
│
▼
┌───────────────┐
│ Invite Member │
└───────┬───────┘
│
▼
┌────────────────┐
│ Enter User │
│ Email │
└───────┬────────┘
│
▼
┌────────────────┐
│ Create │
│ Invitation │
└───────┬────────┘
│
▼
┌────────────────┐
│ Invited User │
│ Receives Invite│
└───────┬────────┘
│
┌────┴────┐
▼ ▼
┌───────┐ ┌────────┐
│Accept │ │ Reject │
└───┬───┘ └────────┘
│
▼
┌─────────────────────────────┐
│ Workspace Member Added │
└─────────────────────────────┘
Real-time collaboration is implemented using Spring WebSocket with STOMP and SockJS.
┌──────────────────┐
│ React Client │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ STOMP / SockJS │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Spring WebSocket │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Workspace Topic │
└────────┬─────────┘
│
▼
┌──────────────────────────┐
│ Connected Workspace │
│ Members │
└──────────────────────────┘
This allows workspace-related updates to be communicated to connected members in real time without requiring continuous manual refreshes.
API requests are organized into collections, allowing users to structure and manage related APIs within a workspace.
Each API request can contain:
- 🌐 HTTP method
- 🔗 URL
- 📋 Headers
- 🔍 Query parameters
- 📝 Request body
| Operation | Supported |
|---|---|
| Create Request | ✅ |
| View Requests | ✅ |
| View Request by ID | ✅ |
| Update Request | ✅ |
| Delete Request | ✅ |
| Duplicate Request | ✅ |
| Execute Request | ✅ |
The backend uses Spring WebClient to dynamically execute configured HTTP requests.
┌──────────────────────┐
│ Frontend User │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Request Configuration│
│ │
│ Method │
│ URL │
│ Headers │
│ Query Params │
│ Body │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Spring Boot │
│ Backend │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Spring WebClient │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Target API │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Response │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ React Frontend │
└──────────────────────┘
External API requests are executed through the backend, rather than directly from the browser.
This provides a centralized execution layer and avoids relying on browser-side cross-origin behavior for target APIs.
The platform supports reusable environment variables for API configuration.
BASE_URL
API_KEY
AUTH_TOKEN
USER_ID
REQUEST_PARAMETER
For example:
{{BASE_URL}}/users/{{USER_ID}}
This makes it possible to reuse the same request configuration across different environments.
- ♻️ Reusable configuration
- 🔄 Easy environment switching
- 🔐 Avoid hardcoding sensitive values
- ⚙️ Simplified API configuration
The system maintains execution history for previously executed API requests.
Execution history provides visibility into:
- 📌 Executed requests
- 🌐 Request configuration
- 📥 API responses
- ⏱️ Execution details
- 📊 Previous API executions
This allows users to review and inspect previous API interactions.
Workspace activity logs provide visibility into important actions performed within a workspace.
Examples include:
- 🏢 Workspace changes
- 👥 Member-related actions
- 📁 Collection changes
- 🔗 API request actions
- ⚙️ Other workspace activities
This provides an audit trail of important workspace operations.
The application implements multiple security mechanisms.
- JWT-based authentication
- BCrypt password hashing
- Protected API endpoints
- Workspace-level authorization
- Backend authorization checks
- Member access validation
- CORS configuration
- Environment-based secrets
- No hardcoded credentials
- Sensitive configuration excluded from source control
Sensitive credentials such as database passwords and JWT secrets are stored using environment variables and are not committed to GitHub.
Make sure the following are installed:
- Java 21+
- Node.js
- Git
- Maven
- PostgreSQL (if running a local database)
git clone <repository-url>
cd API_WorkspaceNavigate to the backend directory:
cd backend/api-workspaceConfigure the required environment variables:
DATABASE_URL=
DATABASE_USER=
DATABASE_PASSWORD=
JWT_SECRET=./mvnw spring-boot:run.\mvnw.cmd spring-boot:runThe backend will run on:
http://localhost:8080
Navigate to the frontend:
cd frontend/api-workspace-uiCreate a .env file:
VITE_API_BASE_URL=http://localhost:8080npm installnpm run devThe frontend will be available at:
http://localhost:5173
The application is deployed using a cloud-based architecture.
┌──────────────────────┐
│ React App │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Vercel │
│ Frontend │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Render │
│ Spring Boot API │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Supabase │
│ PostgreSQL │
└──────────────────────┘
| Component | Platform |
|---|---|
| Frontend | Vercel |
| Backend | Render |
| Database | Supabase |
| Containerization | Docker |
Production configuration is managed using environment variables instead of hardcoded credentials.
VITE_API_BASE_URL=<backend-url>DATABASE_URL=<database-url>
DATABASE_USER=<database-user>
DATABASE_PASSWORD=<database-password>
JWT_SECRET=<jwt-secret>
⚠️ Never commit secrets, database credentials, JWT secrets, or production environment files to GitHub.
The backend includes a Dockerfile for containerized deployment.
backend/
└── api-workspace/
└── Dockerfile
Docker provides a consistent runtime environment for deploying the Spring Boot backend.
The following features can be added in future versions:
- 📥 API collection import/export
- 📤 API collection sharing
- 📖 OpenAPI / Swagger integration
- 🔍 Advanced request comparison
- 🛡️ More granular workspace permissions
- 📨 Email-based workspace invitations
- 🧪 Enhanced API testing and automation
- 🤖 Automated API test suites
- 📊 Advanced execution analytics
- 🔄 Request versioning
- 🤝 Enhanced real-time collaboration
- 📨 Scalable message broker for large-scale collaboration
- ⚡ Improved distributed execution architecture
This project demonstrates practical experience with:
- Full-stack application development
- REST API design
- JWT authentication
- Spring Security
- Role/workspace-based authorization
- Relational database design
- API request execution
- WebSocket-based real-time communication
- STOMP messaging
- Environment configuration
- Docker containerization
- Cloud deployment
- React + TypeScript frontend development
Gahana D.
Built as a full-stack project to explore API development platforms, backend architecture, authentication, authorization, API execution, and real-time collaboration.