{"id":16181100,"url":"https://github.com/omkargade04/rate-limiting","last_synced_at":"2026-02-04T11:42:13.769Z","repository":{"id":248002991,"uuid":"827477381","full_name":"omkargade04/rate-limiting","owner":"omkargade04","description":"This a backend server build using spring boot. It contains API endpoints . Main objective of this project is to implement rate limiting feature on APIs using Redis","archived":false,"fork":false,"pushed_at":"2024-07-12T03:40:18.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-07T05:39:21.442Z","etag":null,"topics":["docker","java","postgresql","redis","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/omkargade04.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-07-11T18:11:22.000Z","updated_at":"2024-07-12T03:40:21.000Z","dependencies_parsed_at":"2024-07-11T21:10:30.147Z","dependency_job_id":"f5aedb01-5611-45d9-81aa-0899d40cd29e","html_url":"https://github.com/omkargade04/rate-limiting","commit_stats":null,"previous_names":["omkargade04/rate-limiting"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omkargade04/rate-limiting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omkargade04%2Frate-limiting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omkargade04%2Frate-limiting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omkargade04%2Frate-limiting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omkargade04%2Frate-limiting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omkargade04","download_url":"https://codeload.github.com/omkargade04/rate-limiting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omkargade04%2Frate-limiting/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264507138,"owners_count":23619148,"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":["docker","java","postgresql","redis","springboot"],"created_at":"2024-10-10T06:11:59.006Z","updated_at":"2026-02-04T11:42:13.715Z","avatar_url":"https://github.com/omkargade04.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RATE LIMITER WITH REDIS\n\n\u003cul style=\"list-style-type:disc\"\u003e\n  \u003cli\u003eThis application is a \u003cb\u003eSpring Boot application\u003c/b\u003e demonstrating rate limiting with Redis for user management operations.\u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eExplanation:\u003c/b\u003e\n    \u003cul\u003e\n      \u003cli\u003e\u003cb\u003eUserController:\u003c/b\u003e The API endpoint for managing user information. It includes methods to handle creating, retrieving, updating, and deleting user data. This controller interacts with the UserService to perform these operations.\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eUserService:\u003c/b\u003e Contains the business logic for user management. It performs CRUD operations on the User entity and interacts with the RateLimiterService to apply rate limiting rules.\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eRateLimiterService:\u003c/b\u003e Utilizes Redis to track and enforce rate limiting rules. It ensures that the number of requests made by a user does not exceed the specified limit within a given time window.\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eUserRepository:\u003c/b\u003e Extends Spring Data JPA's JpaRepository, providing methods for performing database operations on user entities. This layer abstracts the data access operations, making it easier to manage user data.\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eRedis Configuration:\u003c/b\u003e Redis is configured to support rate limiting functionality. The configuration includes setting up a RedisTemplate for efficient data access and operations. This template handles the interactions with Redis, such as incrementing request counts and setting expiration times for keys, ensuring accurate rate limiting.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\n### Explore Rest APIs\n\n\u003ctable style=\"width:100%\"\u003e\n  \u003ctr\u003e\n      \u003cth\u003eMethod\u003c/th\u003e\n      \u003cth\u003eUrl\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n      \u003cth\u003eRequest Body\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003ePOST\u003c/td\u003e\n      \u003ctd\u003e/api/v1/users\u003c/td\u003e\n      \u003ctd\u003eCreate a new user\u003c/td\u003e\n      \u003ctd\u003ecreate user vody\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eGET\u003c/td\u003e\n      \u003ctd\u003e/api/v1/users\u003c/td\u003e\n      \u003ctd\u003eRetrieve all users\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003eGET\u003c/td\u003e\n      \u003ctd\u003e/api/v1/users/{userId}\u003c/td\u003e\n      \u003ctd\u003eRetrieve a user by ID\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003ePUT\u003c/td\u003e\n      \u003ctd\u003e/api/v1/users/{userId}\u003c/td\u003e\n      \u003ctd\u003eUpdate an existing user\u003c/td\u003e\n      \u003ctd\u003eupdate user body\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd\u003eDELETE\u003c/td\u003e\n      \u003ctd\u003e/api/v1/users/{userId}\u003c/td\u003e\n      \u003ctd\u003eDelete a user by ID\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\nDocker\n---\n\n\n### Docker Run\nThe application can be built and run by the `Docker` engine. The `Dockerfile` has multistage build, so you do not need to build and run separately.\n\nPlease follow directions shown below in order to build and run the application with Docker Compose file;\n\n```sh\n$ cd rate-limiting\n$ docker-compose up -d\n```\n\nIf you change anything in the project and run it on Docker, you can also use this command shown below\n\n```sh\n$ cd rate-limiting\n$ docker-compose up --build\n```\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomkargade04%2Frate-limiting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomkargade04%2Frate-limiting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomkargade04%2Frate-limiting/lists"}