Welcome to the Arcjet Security Challenges repository! This project contains skeleton apps for four popular web frameworks, each designed to help you learn about implementing rate limiting with Arcjet.
This repository includes challenges for the following frameworks:
Your mission is to implement rate limiting using Arcjet in one (or more!) of these skeleton apps.
git clone https://github.com/arcjet/arcjet-challenges.git
All four example directories contain a working, idiomatic skeleton application written in TypeScript for you to build upon.
Follow the specific instructions in the README.md
file within each framework's directory:
- Sign up for a free Arcjet account,
- Find the file in your chosen skeleton app that contains the text
// Arcjet code goes here
, - Implemnent Arcjet rate-limiting to set the value of
rateLimited
value totrue
when the user has been rate limited.
Use our documentation to help you get started, in particular, the Rate limiting section for your chosen framework.
💡 Tip: Select a low threshold to easily trigger rate-limiting. For example:
- Fixed window with a
window
of60s
and amax
of5
requests- Sliding window with an
interval
of60s
and amax
of5
requests- Token bucket with a
capacity
of10
, aninterval
of60s
, and arefillRate
of10
🗂️ The file you're looking for is:
- Next.js:
src/pages/arcjet-challenge-accepted/index.tsx
- Node.js + Express:
src/pages/arcjet-challenge-accepted/index.ts
- Bun:
src/pages/arcjet-challenge-accepted.ts
- SvelteKit:
src/routes/arcjet-challenge-accepted/+page.server.ts
We value your insights! 📣 Help shape the future of Arcjet:
📋 Take our quick survey to share your challenge experience, product feedback, and potentially become an Arcjet ambassador. Your input directly influences our roadmap and community initiatives.
📥 Want to give us general feedback? We'd love to hear your suggestions! Fill in our general fee3back form.vhpb4myy84APztte8
If you run into issues or have questions:
- Check the Arcjet documentation
- Join our Discord community for support
- Open an issue in this repository for potential bugs in the skeleton apps
We're excited to see your implementations. Happy coding!