{"id":25149280,"url":"https://github.com/jawherkl/api-design","last_synced_at":"2025-04-28T14:48:58.008Z","repository":{"id":267935725,"uuid":"866453030","full_name":"JawherKl/api-design","owner":"JawherKl","description":"Welcome to the API Design Study Repository! This project is a hands-on exploration of API-design, covering REST API, GraphQL, and gRPC.","archived":false,"fork":false,"pushed_at":"2025-03-15T13:53:00.000Z","size":11967,"stargazers_count":29,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T10:41:31.856Z","etag":null,"topics":["api-design","graphql","grpc","javascript","rest-api","soap","webhook","websocket"],"latest_commit_sha":null,"homepage":"https://medium.com/@jawherkl/api-design-mastery-build-scalable-apis-like-a-pro-open-source-guide-e0a55861a068","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JawherKl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-10-02T09:37:38.000Z","updated_at":"2025-03-29T13:41:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"b4db65c7-e991-4979-95a1-246b5d0f1daa","html_url":"https://github.com/JawherKl/api-design","commit_stats":null,"previous_names":["jawherkl/api-design"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JawherKl%2Fapi-design","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JawherKl%2Fapi-design/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JawherKl%2Fapi-design/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JawherKl%2Fapi-design/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JawherKl","download_url":"https://codeload.github.com/JawherKl/api-design/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251334182,"owners_count":21572963,"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","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-design","graphql","grpc","javascript","rest-api","soap","webhook","websocket"],"created_at":"2025-02-08T21:20:19.586Z","updated_at":"2025-04-28T14:48:58.002Z","avatar_url":"https://github.com/JawherKl.png","language":"JavaScript","readme":"# API Design Study Repository 🚀\n\n![Repository Size](https://img.shields.io/github/repo-size/JawherKl/api-design)\n![Last Commit](https://img.shields.io/github/last-commit/JawherKl/api-design)\n![Issues](https://img.shields.io/github/issues-raw/JawherKl/api-design)\n![Forks](https://img.shields.io/github/forks/JawherKl/api-design)\n![Stars](https://img.shields.io/github/stars/JawherKl/api-design)\n\n![api-design](https://github.com/JawherKl/api-design/blob/main/docs/images/api-design.gif)\n\nWelcome to the **API Design Study Repository**! This project is a hands-on exploration of API design patterns, covering **REST API**, **GraphQL**, **gRPC**, **SOAP**, **Webhook** and **Websocket** implementations across four popular frameworks: **Node.js**, **Golang**, **Symfony**, and **Spring Boot**. \n\n---\n\n## 📂 Project Structure\n\n```\napi-design-study/\n│── docs/\n│   ├── images/\n│   |── framework-comparison.md\n│   ├── GraphQL.md\n│   ├── gRPC.md\n│   ├── REST-API.md\n|   ├── SOAP.md\n│   ├── Webhook.md\n│   └── Websocket.md\n├── graphql/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n├── grpc/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n├── rest-api/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n├── soap/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n├── webhook/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n├── websocket/\n│   ├── golang/\n│   ├── nodejs/\n│   |── spring-boot/\n│   └── symfony/\n└── README.md\n```\n\n---\n\n## ✨ Features\n\n- **REST API**: Comprehensive study of HTTP methods, request/response handling, and best practices.\n- **GraphQL**: Efficient data retrieval with GraphQL schemas, resolvers, and queries.\n- **gRPC**: Implementation of Protobuf-based gRPC server-client communication.\n- **Webhook**: Automated HTTP callbacks for real-time event notifications.\n- **WebSocket**: Full-duplex communication channels for real-time data exchange over a single TCP connection.\n\n---\n\n## 🌐 Frameworks Covered\n\n- **Node.js**: JavaScript runtime for building scalable APIs.\n- **Golang**: Lightweight and fast language for robust API services.\n- **Symfony**: PHP framework with structured components and rich tools.\n- **Spring Boot**: Java-based framework tailored for microservices and enterprise APIs.\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nEnsure you have the following installed:\n- **Node.js**\n- **Go**\n- **PHP**\n- **Java** (with Maven)\n- **Docker** (for optional containerized services)\n\n### Setup\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/JawherKl/api-design-study.git\n   ```\n\n2. Navigate to a specific API type and framework:\n   ```bash\n   cd api-design-study/rest-api/nodejs\n   ```\n\n3. Install dependencies and start the server:\n   ```bash\n   npm install\n   npm start\n   ```\n\n---\n\n## 📚 Documentation\n\n- [REST API Design](docs/REST-API.md)\n- [GraphQL API Design](docs/GraphQL.md)\n- [gRPC API Design](docs/gRPC.md)\n- [SOAP API Design](docs/SOAP.md)\n- [webhook API Design](docs/Webhook.md)\n- [websocket API Design](docs/Websocket.md)\n- [Framework Comparisons](docs/framework-comparisons.md)\n\n---\n\n## 🤝 Contribution\n\nWe welcome contributions! Feel free to:\n- Fork this repository\n- Raise issues\n- Submit pull requests to enhance the repository\n\n---\n\n## Stargazers over time 🌟\n\n[![Stargazers over time](https://starchart.cc/JawherKl/api-design.svg?variant=adaptive)](https://starchart.cc/JawherKl/api-design)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjawherkl%2Fapi-design","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjawherkl%2Fapi-design","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjawherkl%2Fapi-design/lists"}