pyxify

0.0.1-beta • Public • Published

Pyxify

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.

Features

  • 🚀 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

Installation

npm install pyxify

Quick Start

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');
});

Routing

Basic Routes

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
});

Route Parameters

router.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.json({ message: `Fetching user ${userId}` });
});

Using Routers

// 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);

Middleware

Creating Middleware

function loggerMiddleware(req, res, next) {
  console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
  next();
}

app.use(loggerMiddleware);

Route-Specific Middleware

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' });
});

View Engines

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

// 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);

Error Handling

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);

Static Files

app.static('/public', './public');

Project Structure

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

Configuration

app.set('maxJsonSize', 1024 * 1024); // Set max JSON size to 1MB

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

  • ! Dᴇᴠɪʟɪѕʜ cʜʀᴏɴɪᴄʟᴇѕ

Support

<<<<<<< HEAD If you have any questions or need help, please open an issue on GitHub.

Package Sidebar

Install

npm i pyxify

Weekly Downloads

48

Version

0.0.1-beta

License

MIT

Unpacked Size

17.5 kB

Total Files

10

Last publish

Collaborators

  • ratulefad12