ARCE is intentionally focused. Contributions should improve reliability, clarity, or operator usability without turning the project into a generic API gateway.
- Install Node.js
>=20. - Install dependencies:
npm install- Start Redis:
docker compose up- Start the server:
npm run devNote on Authentication: If you set
API_KEYin your.envfile, you must passx-api-keyin your request headers when testing locally. LeavingAPI_KEYempty disables authentication for easier development.
- Optional smoke check:
npm run smokenpm run build
npm run typecheck
npm run lint
npm run test
npm run format
npm run format:check- Keep the core system focused on rate limiting, adaptive control, and abuse detection.
- Prefer small composable modules over large framework-style abstractions.
- Treat Redis operations as concurrency-sensitive code paths. Atomicity claims should be explicit and justified.
- Do not add speculative infrastructure features.
- Keep public APIs and config changes documented in
README.mdanddocs/.
- Open an issue first for large changes or behavioral changes.
- Keep PRs scoped. Separate refactors from behavioral changes when possible.
- Add or update tests for code that changes behavior.
- Include a short note on risk: what changed, what could regress, and how you verified it.
- Run
npm run build,npm run lint, andnpm run testbefore submitting.
If you change:
- API behavior: update
README.md - system design: update
docs/architecture.mdordocs/design-decisions.md - configuration: update
.env.exampleand the configuration section inREADME.md