rexprs is a blazing-fast, Express-like web framework for Node.js developers, powered by Rust.
It offers the same familiar Express API but with the speed and safety of Rust β no need to install Rust on your machine!
- β Same API as Express.js β Drop-in replacement with familiar syntax
- β‘ Rust performance β Native speed without the complexity
- π§ Zero learning curve β If you know Express, you know rexprs
- π¦ Easy installation β Just
npm install, works with Node.js and Bun - π N-API powered β Seamless Rust-JavaScript integration
- π‘οΈ Memory safe β Rust's safety guarantees in your web apps
- π§ TypeScript ready β Full TypeScript support out of the box
npm install rexprsOr with other package managers:
# Using yarn yarn add rexprs # Using pnpm pnpm add rexprs # Using bun bun add rexprsCreate your first rexprs server:
const { Rexprs } = require('rexprs'); const app = new Rexprs(); app.get('/', (req, res) => { res.json({ message: 'Hello from rexprs!' }); }); app.listen(3000, () => { console.log('Server running on http://localhost:3000'); });Want more examples? Check out our comprehensive examples.md file for detailed usage patterns, REST APIs, middleware, and production setups.
rexprs provides an Express.js-compatible API:
| Method | Description | Example |
|---|---|---|
app.get(path, handler) | Handle GET requests | app.get('/', handler) |
app.post(path, handler) | Handle POST requests | app.post('/users', handler) |
app.put(path, handler) | Handle PUT requests | app.put('/users/:id', handler) |
app.delete(path, handler) | Handle DELETE requests | app.delete('/users/:id', handler) |
app.use(middleware) | Add middleware | app.use(corsMiddleware) |
app.static(path, dir) | Serve static files | app.static('/public', './public') |
app.listen(port, callback) | Start server | app.listen(3000, callback) |
req.method- HTTP methodreq.url- Full URLreq.path- URL pathreq.params- Route parametersreq.query- Query parametersreq.headers- Request headersreq.body- Request body
res.json(obj)- Send JSON responseres.send(data)- Send responseres.status(code)- Set status coderes.setHeader(name, value)- Set headerres.redirect(url)- Redirect request
π For detailed examples and advanced usage, see examples.md
- Node.js 18+ or Bun
- Rust (for development only)
- pnpm (recommended)
# Clone the repository git clone https://github.com/bitsbyritik/rexprs.git cd rexprs # Install dependencies pnpm install # Build the project pnpm build # Run tests pnpm testcrates/rexprs-core/- Core Rust librarycrates/rexprs-js/- N-API bindings for Node.jscli/- CLI tools and utilitiesexamples.md- Comprehensive usage examples
rexprs leverages Rust's performance characteristics to deliver exceptional speed:
- Zero-cost abstractions β Pay only for what you use
- Memory safety β No garbage collection overhead
- Async runtime β Powered by Tokio for high concurrency
- Native compilation β Direct machine code execution
| Framework | Requests/sec | Latency (ms) |
|---|---|---|
| Express.js | ~15,000 | 6.7 |
| rexprs | ~45,000 | 2.2 |
| Fastify | ~25,000 | 4.0 |
Benchmarks run on MacBook Pro M2, Node.js 20.x
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
pnpm test - Run linting:
pnpm lint - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Inspired by Express.js and the Node.js ecosystem
- Built with N-API and napi-rs
- Powered by Tokio and Hyper
- π Report bugs
- π‘ Request features
- π§ Email support
- π¦ Follow on Twitter
Made with β€οΈ and π¦ by Ritik Singh