{"id":30492436,"url":"https://github.com/shakhbozmn/feathers-board","last_synced_at":"2026-04-11T09:42:16.092Z","repository":{"id":311296364,"uuid":"1043444611","full_name":"shakhbozmn/feathers-board","owner":"shakhbozmn","description":"Interactive API playground and testing environment for FeathersJS v5. Explore services, test endpoints, and visualize schemas with embedded or standalone modes. Built with Next.js, TypeScript, and modern UI components.","archived":false,"fork":false,"pushed_at":"2025-08-24T00:45:32.000Z","size":212,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T03:29:21.094Z","etag":null,"topics":["api","api-playground","api-testing","developer-tools","express","feathers","feathersjs","nextjs","nodejs","postman","react","rest-api","service","swagger","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/feathers-playground","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shakhbozmn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T21:41:43.000Z","updated_at":"2025-08-24T00:50:39.000Z","dependencies_parsed_at":"2025-08-24T04:08:52.338Z","dependency_job_id":"cb82765d-a059-473d-9a5d-727d2b69dda7","html_url":"https://github.com/shakhbozmn/feathers-board","commit_stats":null,"previous_names":["shakhbozmn/feathers-board"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/shakhbozmn/feathers-board","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakhbozmn%2Ffeathers-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakhbozmn%2Ffeathers-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakhbozmn%2Ffeathers-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakhbozmn%2Ffeathers-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shakhbozmn","download_url":"https://codeload.github.com/shakhbozmn/feathers-board/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakhbozmn%2Ffeathers-board/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271839604,"owners_count":24831778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-playground","api-testing","developer-tools","express","feathers","feathersjs","nextjs","nodejs","postman","react","rest-api","service","swagger","typescript"],"created_at":"2025-08-24T20:02:58.439Z","updated_at":"2026-04-11T09:42:16.085Z","avatar_url":"https://github.com/shakhbozmn.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feathers Playground 🪶✨\n\nA **Interactive API playground and testing environment for FeathersJS v5 applications**. This tool allows developers to:\n\n- Visualize Feathers services \u0026 schemas\n- Test API requests directly from the browser\n- Use in **embedded mode** (inside their Feathers app) or **standalone mode**\n\n## 🎯 Features\n\n### Service Discovery\n\n- Backend exposes `/services` endpoint listing:\n  - Service name and path\n  - Supported methods (find, get, create, patch, remove)\n  - JSON schema (if available)\n\n### Request Playground\n\n- **Sidebar**: List all services with method indicators\n- **Schema viewer**: Shows JSON schema for selected service\n- **Request builder**: Dynamic form for query/body, headers, auth token\n- **Response viewer**: Pretty JSON with syntax highlighting\n\n### Modes\n\n- **Embedded**: `app.configure(playground({ path: '/playground' }))` mounts UI inside Feathers app\n- **Standalone**: Run Next.js app separately, point it to any Feathers API URL\n\n## 📦 Tech Stack\n\n- **Backend** (`apps/backend`)\n  - Feathers v5 + Express + TypeScript\n  - Zod validation\n  - In-memory data stores (users, messages)\n\n- **Frontend** (`apps/frontend`)\n  - Next.js 15 (App Router) + TypeScript\n  - TailwindCSS + shadcn/ui components\n  - React Query for API state management\n  - react-json-view for response display\n\n- **Monorepo**\n  - pnpm workspaces + Turborepo\n  - Shared types in `packages/types`\n  - Core integration logic in `packages/core`\n\n## 📦 NPM Packages\n\nFeathers Playground is available as NPM packages for easy integration:\n\n- **`feathers-playground`** - Core integration package\n- **`@feathers-playground/types`** - TypeScript types (optional)\n\n## 🚀 Quick Start\n\n### Option 1: Add to Existing Feathers App (Recommended)\n\n```bash\n# Install feathers-playground and its peer dependencies\nnpm install feathers-playground @feathersjs/feathers @feathersjs/express\n```\n\n```typescript\nimport { playground } from 'feathers-playground';\n\n// Add to your Feathers app\napp.configure(\n  playground({\n    path: '/playground',\n    title: 'My API Playground',\n  })\n);\n```\n\nVisit `http://localhost:3030/playground` to access the playground.\n\n### Option 2: Development Setup (Contributors)\n\n```bash\n# Clone the repository\ngit clone https://github.com/shakhbozmn/feathers-board.git\ncd feathers-playground\n\n# Install dependencies\npnpm install\n\n# Build packages\npnpm build\n\n# Start development servers\npnpm dev\n```\n\nThe backend will be available at `http://localhost:3030` and the frontend at `http://localhost:3000`.\n\n## 🛠 Usage Examples\n\n### Basic Integration\n\n```typescript\nimport { feathers } from '@feathersjs/feathers';\nimport express, { rest, json, cors } from '@feathersjs/express';\nimport { playground } from 'feathers-playground';\n\nconst app = express(feathers());\n\napp.use(cors());\napp.use(json());\napp.configure(rest());\n\n// Your services\napp.use('/users', new UsersService());\napp.use('/posts', new PostsService());\n\n// Add playground\napp.configure(\n  playground({\n    path: '/api-playground',\n    title: 'My Blog API',\n    description: 'Test the blog API endpoints',\n    exposeSchemas: true,\n  })\n);\n\napp.listen(3030);\n```\n\n### Production Setup\n\n```typescript\n// Only enable in development\nif (process.env.NODE_ENV === 'development') {\n  app.configure(\n    playground({\n      path: '/playground',\n      title: 'Development API Playground',\n    })\n  );\n}\n```\n\n### Standalone Mode\n\nFor testing external APIs or when you can't modify the Feathers app:\n\n```bash\ngit clone https://github.com/shakhbozmn/feathers-board.git\ncd feathers-playground\npnpm install \u0026\u0026 pnpm build\n\n# Point to your API\nexport NEXT_PUBLIC_API_URL=http://your-api-url:3030\npnpm --filter @feathers-playground/frontend dev\n```\n\n📖 **See [USAGE.md](./USAGE.md) for detailed examples and configuration options.**\n\n## 📁 Project Structure\n\n```\nfeathers-playground/\n├── apps/\n│   ├── backend/          # Feathers v5 API server\n│   │   ├── src/\n│   │   │   ├── app.ts    # Main application\n│   │   │   ├── services/ # Example services\n│   │   │   └── channels.ts\n│   │   └── package.json\n│   └── frontend/         # Next.js playground UI\n│       ├── src/\n│       │   ├── app/      # App Router pages\n│       │   ├── components/ # UI components\n│       │   ├── hooks/    # React hooks\n│       │   └── lib/      # Utilities\n│       └── package.json\n├── packages/\n│   ├── types/            # Shared TypeScript types\n│   └── core/             # Playground integration\n├── .github/workflows/    # CI/CD\n└── package.json\n```\n\n## 🔧 API Reference\n\n### Service Discovery Endpoint\n\n`GET /services` returns an array of service information:\n\n```json\n[\n  {\n    \"name\": \"users\",\n    \"path\": \"/users\",\n    \"methods\": [\"find\", \"get\", \"create\", \"patch\", \"remove\"],\n    \"schema\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"email\": { \"type\": \"string\", \"format\": \"email\" },\n        \"name\": { \"type\": \"string\" }\n      }\n    },\n    \"description\": \"User management service\"\n  }\n]\n```\n\n### Configuration Options\n\n```typescript\ninterface PlaygroundConfig {\n  path?: string; // Mount path (default: '/playground')\n  exposeSchemas?: boolean; // Include schemas in discovery (default: true)\n  title?: string; // Playground title\n  description?: string; // Playground description\n  cors?: boolean; // Enable CORS (default: true)\n}\n```\n\n## 🧪 Testing\n\n```bash\n# Run all tests\npnpm test\n\n# Run tests for specific package\npnpm --filter @feathers-playground/backend test\n```\n\n## 🤝 Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines.\n\n## 📄 License\n\nMIT License - see [LICENSE](./LICENSE) file for details.\n\n## 🎁 Roadmap\n\n- [ ] Auto-generate forms from JSON schemas\n- [ ] Export/import request collections (Postman-like)\n- [ ] Dark/light mode toggle\n- [ ] Plugin system for auth strategies\n- [ ] WebSocket support for real-time testing\n- [ ] Request history and favorites\n- [ ] API documentation generation\n\n## 🐛 Issues \u0026 Support\n\nPlease report issues on the [GitHub Issues](https://github.com/shakhbozmn/feathers-board/issues) page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshakhbozmn%2Ffeathers-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshakhbozmn%2Ffeathers-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshakhbozmn%2Ffeathers-board/lists"}