Simple Node.js mock server with a beautiful GUI for managing API endpoints and responses. Perfect for development, testing, and prototyping.
- 🎨 Beautiful GUI - Intuitive web interface for managing endpoints
- 🚀 Easy Setup - Start mocking APIs in seconds
- 📁 File-based Storage - All data stored in organized JSON files
- 🔄 Real-time Testing - Test endpoints directly from the GUI
- 📊 Status Code Management - Pre-configured dropdown with common HTTP status codes
- 🎯 Path-based Organization - Automatic folder structure based on API paths
- ✨ JSON Validation - Real-time validation with helpful error messages
- 🔒 Reserved Path Protection - Prevents conflicts with internal API routes
- 🌐 Dynamic Paths - Support for variable URL segments like
/users/{id}/posts
npm install -g @draganfilipovic/mockernpm install @draganfilipovic/mocker# Start the server (uses ./mocks directory by default)
mocker
# Or specify a custom directory
MOCKS_DIR=/path/to/your/mocks mocker
# Or set a custom port
PORT=8080 mockerconst mocker = require('@draganfilipovic/mocker');
// Start the server programmatically
mocker.start({
port: 3000,
mocksDir: './custom-mocks'
});mocker [options]
Options:
-p, --port <number> Port to run the server on (default: 3000)
-d, --mocks-dir <path> Directory to store mock data (default: ./mocks)
-h, --help Show help message# Set port and mocks directory
PORT=8080 MOCKS_DIR=./api-mocks mocker# Default settings
mocker
# Custom port
mocker --port 8080
# or
PORT=8080 mocker
# Custom mocks directory
mocker --mocks-dir ./api-mocks
# or
MOCKS_DIR=./api-mocks mocker
# Both custom port and directory
mocker --port 8080 --mocks-dir ./api-mocks
# or
PORT=8080 MOCKS_DIR=./api-mocks mockerThe server automatically creates the following structure:
your-project/
├── mocks/ # Default mocks directory
│ └── endpoints/
│ ├── api/ # Static paths
│ │ └── users/
│ │ ├── get.200.Success.json
│ │ ├── get.404.Error.json
│ │ └── get.selected.json
│ └── users/ # Dynamic paths
│ └── __id__/ # {id} becomes __id__
│ └── posts/
│ ├── get.200.Success.json
│ └── get.selected.json
└── your-other-files...
ALL /your-endpoint-path- Returns the selected mock responseALL /users/{id}/posts- Dynamic paths with variable segments
- Create endpoints with path and HTTP method
- Support for dynamic paths with
{param}syntax - Visual status indicators for each response
- Dynamic path indicators (🔄 icon and "Dynamic" badge)
- One-click endpoint testing
- Delete endpoints with confirmation
- Add custom responses with JSON bodies
- Pre-configured status code dropdown (20 most common codes)
- Real-time JSON validation
- Select active response per endpoint
- Edit and delete responses
- Click endpoint URLs to open in new tab
- Built-in test button with response preview
- Real-time response display
- Dynamic path testing with example URLs
- Cache-busting headers prevent stale responses
Files are named: {method}.{statusCode}.{name}.json
Example: get.200.Success.json
{
"message": "User retrieved successfully",
"data": {
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
}Files are named: {method}.selected.json
Example: get.selected.json
{
"selectedResponseName": "Success"
}Create flexible mock endpoints that handle variable URL segments using {param} syntax.
Basic Dynamic Path:
/users/{id}
Matches: /users/123, /users/456, /users/abc
Multiple Parameters:
/users/{userId}/posts/{postId}
Matches: /users/123/posts/456, /users/john/posts/my-post
Real-world Example:
/users/auth/email-exists/{email}
Matches: /users/auth/email-exists/[email protected]
- Create Dynamic Endpoint: Enter path like
/users/{id}/postsin the GUI - Visual Indicators: Dynamic paths show 🔄 icon and "Dynamic" badge
- File Storage:
{param}becomes__param__in directory structure - Path Matching: Server matches any value for
{param}segments - Same Response: All requests return the same mock response
In the GUI:
- Click "Test" button - automatically uses example values
- View both original pattern and example URL
With curl:
curl http://localhost:3000/users/123/posts
curl http://localhost:3000/users/456/postsWith JavaScript:
const response = await fetch('/users/123/posts');
const data = await response.json();Path: /users/{id}/posts
Files: mocks/endpoints/users/__id__/posts/
- get.200.Success.json
- get.500.Error.json
- get.selected.json
git clone https://github.com/easingthemes/mocker.git
cd mocker
npm install
npm startnpm run buildThis project is licensed under the MIT License - see the LICENSE file for details.
- 🐛 Issues: GitHub Issues
- 🌐 Dynamic Paths - Support for variable URL segments like
/users/{id}/posts - 🔄 Visual Indicators - Dynamic path icons and badges in the GUI
- 🧪 Smart Testing - Automatic test value substitution for dynamic paths
- 🚫 Cache Prevention - No-cache headers prevent stale responses
- 📁 Enhanced File Structure - Automatic
{param}to__param__conversion
- Initial release
- GUI for endpoint management
- File-based storage
- Real-time JSON validation
- Status code dropdown
- Path-based organization
- Reserved path protection
Made with ❤️ for developers who love clean, efficient mock servers.
(Actually made with Cursor AI)
