A modern, Postman-like API testing platform built with Angular 17 and Spring Boot.
- β Multi-Tab Interface - Work on multiple requests simultaneously
- β
Request Builder - Full-featured HTTP request configuration
- URL bar with method selector (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
- Query parameters editor
- Headers editor
- Request body (JSON, XML, Form Data, Raw)
- Authentication (Bearer Token, Basic Auth, API Key)
- β Response Viewer - View response body, headers, status, timing
- β Environment Support - Switch between environments (Dev, Staging, Prod)
- β Dark Theme - Modern dark UI design
- β Collapsible Sidebar - Maximize workspace
- π Collections management
- π Request history
- π Environment variables editor
- π Import/Export (Postman format)
- π Monaco Editor integration
| Technology | Version | Purpose |
|---|---|---|
| Angular | 17.x | Framework |
| TypeScript | 5.4 | Language |
| RxJS | 7.8 | Reactive programming |
| Angular Signals | - | State management |
| SCSS | - | Styling |
| Technology | Version | Purpose |
|---|---|---|
| Spring Boot | 3.5.7 | Framework |
| Java | 21 | Language |
| PostgreSQL | 16 | Database |
| Apache HttpClient 5 | 5.3 | HTTP requests |
src/app/
βββ core/ # Core functionality
β βββ enums/
β β βββ HttpMethod.ts # GET, POST, PUT, DELETE, etc.
β β βββ BodyType.ts # JSON, XML, FORM_DATA, RAW
β β βββ AuthType.ts # NONE, BEARER_TOKEN, BASIC_AUTH, API_KEY
β βββ models/
β β βββ ExecuteRequest.ts # Request payload model
β β βββ ApiResponse.ts # Response model
β β βββ RequestTab.ts # Tab state model
β β βββ Environment.ts # Environment model
β β βββ Collection.ts # Collection model
β β βββ ...
β βββ services/
β β βββ state.service.ts # Signal-based state management
β β βββ api-executor.service.ts # Execute HTTP requests
β β βββ collection.service.ts # Collections CRUD
β β βββ environment.service.ts # Environments CRUD
β β βββ request.service.ts # Saved requests CRUD
β βββ interceptors/
β βββ http-error.interceptor.ts
βββ shared/ # Shared components
β βββ components/
β βββ key-value-editor/ # Reusable key-value editor
βββ features/ # Feature modules
β βββ request-builder/ # Main request builder
β βββ collections/ # Collections management (placeholder)
β βββ environments/ # Environments management (placeholder)
β βββ history/ # Request history (placeholder)
βββ app.component.ts # Root component with sidebar
βββ app.config.ts # Application configuration
βββ app.routes.ts # Routing configuration
- Node.js 18+
- npm 9+
- Angular CLI 17 (
npm install -g @angular/cli)
# Clone the repository
git clone https://github.com/AkashBhuiyan/embedqa-ui.git
cd embedqa-ui
# Install dependencies
npm install
# Start development server
npm startThe app will be available at http://localhost:4200
The frontend expects the backend API at http://localhost:8085/api/v1. See the backend repository for setup instructions.
API requests are proxied to the backend via proxy.conf.json:
{
"/api": {
"target": "http://localhost:8085",
"secure": false,
"changeOrigin": true
}
}// src/environments/environment.ts (Development)
export const environment = {
production: false,
apiUrl: '/api/v1'
};
// src/environments/environment.prod.ts (Production)
export const environment = {
production: true,
apiUrl: '/api/v1'
};- Click the + button in the tab bar to create a new tab
- Select the HTTP method from the dropdown
- Enter the request URL
- Configure parameters, headers, body, or authentication as needed
- Click Send
- Click the Params tab
- Add key-value pairs
- Toggle the checkbox to enable/disable individual parameters
- Parameters are automatically appended to the URL
- Click the Headers tab
- Add header name-value pairs
- Common headers like
Content-Typeare auto-set based on body type
- Click the Body tab
- Select body type: JSON, XML, Form Data, or Raw
- Enter the body content in the text area
- Click the Auth tab
- Select auth type:
- Bearer Token: Enter your JWT or access token
- Basic Auth: Enter username and password
- API Key: Enter key and header name (default: X-API-Key)
- Click the environment dropdown in the header
- Select an environment (Dev, Staging, Prod)
- Environment variables like
{{baseUrl}}will be substituted
The app uses CSS custom properties for theming. Variables are defined in src/styles.scss:
:root {
--bg-primary: #1e1e1e;
--bg-secondary: #252526;
--bg-tertiary: #2d2d2d;
--text-primary: #e0e0e0;
--text-secondary: #a0a0a0;
--accent-primary: #4fc3f7;
--status-success: #98c379;
--status-danger: #e06c75;
// ...
}# Start development server
npm start
# Build for production
npm run build
# Run tests
npm test
# Lint code
npm run lint- Use Angular standalone components
- Use signals for state management
- Use
@core/,@shared/,@features/,@env/path aliases - Follow Angular style guide
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
