Nuxt module for @jfungus/ratelimit - rate limiting with Nuxt's useStorage
npm install @jfungus/ratelimit-nuxt


Rate limiting module for Nuxt 3. Automatically integrates with Nuxt's useStorage() for distributed deployments.
``bash`
npm install @jfungus/ratelimit-nuxt
`ts`
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@jfungus/ratelimit-nuxt"],
rateLimit: {
limit: 100, // 100 requests
windowMs: 60 * 1000, // 1 minute
},
});
That's it! Rate limiting is automatically applied to all server routes.
`ts
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@jfungus/ratelimit-nuxt"],
rateLimit: {
// Enable/disable the module
enabled: true,
// Max requests per window
limit: 100,
// Window size in milliseconds
windowMs: 60 * 1000, // 1 minute
// Rate limiting algorithm
algorithm: "sliding-window", // or "fixed-window"
// Routes to apply rate limiting (default: all API routes)
routes: ["/api/**"],
// Storage key prefix
storageKey: "ratelimit",
// Response status code when rate limited
statusCode: 429,
// Response message when rate limited
message: "Too Many Requests",
},
});
`
This module:
1. Registers a Nitro plugin that adds rate limiting middleware
2. Uses Nuxt's built-in useStorage() for storing rate limit data
3. Automatically works with any storage driver configured in your Nuxt app
Nuxt's useStorage() supports multiple backends. Configure your preferred storage in nuxt.config.ts:
`ts`
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@jfungus/ratelimit-nuxt"],
rateLimit: {
limit: 100,
windowMs: 60 * 1000, // 1 minute
},
nitro: {
storage: {
ratelimit: {
driver: "redis",
url: "redis://localhost:6379",
},
},
},
});
`ts`
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@jfungus/ratelimit-nuxt"],
rateLimit: {
limit: 100,
windowMs: 60 * 1000, // 1 minute
},
nitro: {
storage: {
ratelimit: {
driver: "vercelKV",
},
},
},
});
`ts``
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@jfungus/ratelimit-nuxt"],
rateLimit: {
limit: 100,
windowMs: 60 * 1000, // 1 minute
},
nitro: {
storage: {
ratelimit: {
driver: "cloudflareKVBinding",
binding: "RATELIMIT_KV",
},
},
},
});
MIT