A lightweight and fast web framework for Node.js. Pyxify provides an intuitive API for building web applications and RESTful APIs with features like routing, middleware support, view engine integration, and more.
- 🚀 Lightweight and fast
- 🛣️ Intuitive routing system with parameter support
- 🔄 Middleware support
- 🎨 Multiple view engine support (Nunjucks, EJS, Pug)
- 🎮 Controller system
- 📦 Built-in caching
- 🔒 Error handling
- 🗂️ Static file serving
npm install pyxify
const pyxify = require('pyxify');
const app = pyxify();
app.get('/', (req, res) => {
res.json({ message: 'Hello, Pyxify!' });
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
const pyxify = require('pyxify');
const Router = pyxify.Router;
const router = new Router();
router.get('/', (req, res) => {
res.json({ message: 'Hello, World!' });
});
router.post('/users', (req, res) => {
// Handle user creation
});
router.get('/users/:id', (req, res) => {
const userId = req.params.id;
res.json({ message: `Fetching user ${userId}` });
});
// routes/users.js
const pyxify = require('pyxify');
const Router = pyxify.Router;
const router = new Router();
router.get('/', (req, res) => {
res.json({ users: ['Alice', 'Bob'] });
});
module.exports = router;
// app.js
const usersRouter = require('./routes/users');
app.use('/api/users', usersRouter);
function loggerMiddleware(req, res, next) {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
}
app.use(loggerMiddleware);
function authMiddleware(req, res, next) {
if (req.headers.authorization) {
next();
} else {
res.statusCode = 401;
res.json({ error: 'Unauthorized' });
}
}
router.get('/protected', authMiddleware, (req, res) => {
res.json({ message: 'Protected route' });
});
Pyxify supports multiple view engines including Nunjucks, EJS, and Pug.
app.set('viewsFolder', './views');
app.setViewEngine('nunjucks', { autoescape: true });
app.get('/', (req, res) => {
res.render('index.html', {
title: 'Welcome',
message: 'Hello from Pyxify!'
});
});
// controllers/userController.js
class UserController {
static getAllUsers(req, res) {
res.json({ users: ['Alice', 'Bob'] });
}
static getUserById(req, res) {
const userId = req.params.id;
res.json({ userId });
}
}
module.exports = UserController;
// routes/users.js
const UserController = require('../controllers/userController');
router.get('/', UserController.getAllUsers);
router.get('/:id', UserController.getUserById);
function errorHandler(err, req, res, next) {
console.error(err);
res.statusCode = err.statusCode || 500;
res.json({
error: err.message || 'Internal Server Error'
});
}
app.use(errorHandler);
app.static('/public', './public');
Recommended project structure:
my-app/
├── controllers/
│ └── userController.js
├── middleware/
│ ├── auth.js
│ └── errorHandler.js
├── routes/
│ ├── index.js
│ └── users.js
├── views/
│ └── index.html
├── public/
│ ├── css/
│ └── js/
├── app.js
└── package.json
app.set('maxJsonSize', 1024 * 1024); // Set max JSON size to 1MB
Contributions are welcome! Please feel free to submit a Pull Request.
- ! Dᴇᴠɪʟɪѕʜ cʜʀᴏɴɪᴄʟᴇѕ
<<<<<<< HEAD If you have any questions or need help, please open an issue on GitHub.