Fake APIs. Real endpoints. Mock REST APIs in seconds, no login, no config.
See the codeApeeye is a zero-bullshit mock API tool. Create fake REST endpoints in seconds. No setup. No login. No database.
/users or /posts and get a live REST URL instantlyhttps://github.com/user-attachments/assets/ae0cd397-2b0e-42dd-8d49-7a1640828459
Your browser mints a random, unguessable workspace ID on first visit and stores all your collections and records in IndexedDB. A tiny stateless relay server makes them reachable at a real URL:
https://<host>/mock/<workspace>/users
When anything calls that URL, the relay forwards the request over a WebSocket to your open tab, the tab answers from IndexedDB, and the relay returns the response. Nothing is ever written on the server.
The one trade-off: endpoints answer only while a tab with your workspace is
open. Close it and callers get a clear 503. Reopen it and everything is back.
git clone https://github.com/ibr0r0/apeeye.git
cd apeeye
npm install
Option A — the way production runs:
npm run build:web # builds the frontend into dist/
npm run relay # wrangler dev: serves dist/ and the /mock endpoints
Open http://localhost:8787.
Option B — hot-reloading frontend during development:
# terminal 1
npm run relay
# terminal 2
npm run web # Expo dev server on :8081, talks to the relay on :8787
The frontend finds the relay automatically when served by it. When running Expo
separately, it defaults to http://localhost:8787; override with
EXPO_PUBLIC_RELAY_URL (see .env.example).
users). It is a live endpoint immediately.POST to the URL.https://<host>/mock/<workspace>/users and fetch.const res = await fetch("https://<host>/mock/<workspace>/users");
const users = await res.json();
Endpoint reference, examples and limits are in the in-app Docs tab.
There are no accounts. The workspace ID (10 chars, base62, CSPRNG) is a capability: anyone with the URL can read and write that workspace. Reset rotates it.
The relay is hardened for public exposure:
set-cookie, CSP, HSTS…)This is a mocking tool. Do not put real user data in it.
npm test
Unit tests for the shared mock engine, wire chunking, response hygiene,
workspace ID and import validation, plus integration tests that boot the real
Worker under wrangler dev and drive it with a fake tab over WebSocket. Uses
Node's built-in runner.
Contributions are welcome. Open an issue or a PR for anything on the list.
npm test and make sure the app still works locally.Thanks for helping improve Apeeye 🙌
For support, suggestions, or general inquiries, please reach out via X at @ibr0r.
20 commits
JavaScript
100.0%
Fake APIs. Real endpoints. Mock REST APIs in seconds, no login, no config.
See the codeApeeye is a zero-bullshit mock API tool. Create fake REST endpoints in seconds. No setup. No login. No database.
/users or /posts and get a live REST URL instantlyhttps://github.com/user-attachments/assets/ae0cd397-2b0e-42dd-8d49-7a1640828459
Your browser mints a random, unguessable workspace ID on first visit and stores all your collections and records in IndexedDB. A tiny stateless relay server makes them reachable at a real URL:
https://<host>/mock/<workspace>/users
When anything calls that URL, the relay forwards the request over a WebSocket to your open tab, the tab answers from IndexedDB, and the relay returns the response. Nothing is ever written on the server.
The one trade-off: endpoints answer only while a tab with your workspace is
open. Close it and callers get a clear 503. Reopen it and everything is back.
git clone https://github.com/ibr0r0/apeeye.git
cd apeeye
npm install
Option A — the way production runs:
npm run build:web # builds the frontend into dist/
npm run relay # wrangler dev: serves dist/ and the /mock endpoints
Open http://localhost:8787.
Option B — hot-reloading frontend during development:
# terminal 1
npm run relay
# terminal 2
npm run web # Expo dev server on :8081, talks to the relay on :8787
The frontend finds the relay automatically when served by it. When running Expo
separately, it defaults to http://localhost:8787; override with
EXPO_PUBLIC_RELAY_URL (see .env.example).
users). It is a live endpoint immediately.POST to the URL.https://<host>/mock/<workspace>/users and fetch.const res = await fetch("https://<host>/mock/<workspace>/users");
const users = await res.json();
Endpoint reference, examples and limits are in the in-app Docs tab.
There are no accounts. The workspace ID (10 chars, base62, CSPRNG) is a capability: anyone with the URL can read and write that workspace. Reset rotates it.
The relay is hardened for public exposure:
set-cookie, CSP, HSTS…)This is a mocking tool. Do not put real user data in it.
npm test
Unit tests for the shared mock engine, wire chunking, response hygiene,
workspace ID and import validation, plus integration tests that boot the real
Worker under wrangler dev and drive it with a fake tab over WebSocket. Uses
Node's built-in runner.
Contributions are welcome. Open an issue or a PR for anything on the list.
npm test and make sure the app still works locally.Thanks for helping improve Apeeye 🙌
For support, suggestions, or general inquiries, please reach out via X at @ibr0r.
20 commits
JavaScript
100.0%