A lightweight Postman-inspired API testing tool built with React, TypeScript, and Axios. It allows users to send HTTP requests, inspect responses, manage request history, save collections, and use environment variables.
- Enter API URL
- Select HTTP Method
- GET
- POST
- PUT
- PATCH
- DELETE
- HEAD
- OPTIONS
- Dynamic Headers Editor
- JSON Request Body Editor
- Send API Requests
- Display Response
- Status Code
- Headers
- Response Body
- Loading State
- Error Handling
- Request History (Persistent using LocalStorage)
- Save & Load Collections
- Delete Collections
- Environment Variables
- Responsive Design
- Accessible Components
- Unit Tests with Vitest
- React 19
- TypeScript
- Vite
- Axios
- Vitest
- React Testing Library
- CSS
src
│
├── api
│ └── apiClient.ts
│
├── components
│ ├── BodyEditor
│ ├── Button
│ ├── CollectionsPanel
│ ├── EnvironmentPanel
│ ├── HeaderEditor
│ ├── HistoryPanel
│ ├── Input
│ ├── ResponseViewer
│ └── Select
│
├── hooks
│ └── useApiRequest.ts
│
├── pages
│ ├── ApiExplorer.tsx
│ └── ApiExplorer.css
│
├── styles
│ └── global.css
│
├── types
│ └── api.ts
│
├── utils
│ ├── environment.ts
│ └── localStorage.ts
│
├── App.tsx
└── main.tsx
Clone the repository
git clone https://github.com/<your-username>/project_13_api-explorer.gitNavigate to the project
cd project_13_api-explorerInstall dependencies
npm installStart development server
npm run devRun tests
npm testBuild for production
npm run buildMethod
GET
URL
https://jsonplaceholder.typicode.com/posts/1
Click Send Request
Method
POST
URL
https://jsonplaceholder.typicode.com/posts
Body
{
"title": "API Explorer",
"body": "Hello World",
"userId": 1
}Variable
BASE_URL
Value
https://jsonplaceholder.typicode.com
Request URL
{{BASE_URL}}/posts/1
Automatically becomes
https://jsonplaceholder.typicode.com/posts/1
- Modular component-based architecture
- Reusable UI components
- Custom hook for API requests
- TypeScript interfaces for strong typing
- LocalStorage for persistence
- Separation of UI, utilities, hooks, and API logic
- Responsive layout using CSS Grid and Flexbox
- Semantic HTML
- Labels for form controls
- Keyboard-friendly navigation
- Focus states
- ARIA labels on interactive elements
- JSON request bodies are entered manually.
- Collections and history are stored locally in the browser.
- Environment variables apply only to the request URL.
- Authentication mechanisms such as OAuth and Bearer Token management are not included.
Unit tests were written using:
- Vitest
- React Testing Library
Covered components include:
- Button
- Input
- ResponseViewer
- Authentication support
- Import/Export Collections
- Request Tabs
- Dark Mode
- Syntax Highlighting
- GraphQL Support
- WebSocket Support
- Response Time Charts
Arosree Satapathy
React + TypeScript Internship Project
Project 13 – API Explorer