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.
- ! ๏ผคแดแด ษชสษชัส ๏ฝสสแดษดษชแดสแดั
<<<<<<< HEAD If you have any questions or need help, please open an issue on GitHub.