aevoraokok
Nyvora Framework
Nyvora is a lightweight, secure, and developer-friendly Node.js framework designed for building fast APIs and web applications. It brings PHP-like simplicity (like global sessions, direct request/response access) to the modern, non-blocking Node.js ecosystem.
Features at a Glance
- PHP-Style Global Access: Access Request, Response, and Session globally without passing
reqorreseverywhere! - Built-in Session Management: Secure, file-based sessions with easy PHP-style helpers.
- Robust Security: Built-in
TokenVault(AES-256-GCM),IpTracker, and basic protection Guard. - Data Validation: Laravel-style data validator (
required|email|min:3). - Database Ready: Quick setup for MySQL connection.
1. Getting Started
Initialize Framework
Before starting the server, initialize the framework. This sets up required folders like .Nyvora.
import Nyvora from "./Nexor.js";
// Optional: Enable basic security protections
Nyvora.protect();
Database Connection
Nyvora can connect to a MySQL database using the connection URL stored in .Nyvora/config.
const connectionUrl = Nyvora.config.get("MYSQL_DB_URL");
const db = await Nyvora.connect(connectionUrl);
Starting the Server
Nyvora uses a very simple routing mechanism built directly on top of the native HTTP module.
Nyvora.Server(async (req, res) => {
if (req.method === "GET" && req.path === "/") {
return Nyvora.Response.success({ message: "Welcome to Nyvora!" });
}
}).listen(3000, () => {
console.log("🚀 Server is running at http://localhost:3000");
});
2. Global Request Helper (Nyvora.Request)
Nyvora parses JSON and Form Data automatically. You can access the incoming request data from anywhere in your code using Nyvora.Request.
// Get all input data (Body + Query parameters combined)
const allData = Nyvora.Request.all();
// Get a specific input value (Fallback to default if not found)
const name = Nyvora.Request.input('name', 'Anonymous');
// Check if a key exists
const hasEmail = Nyvora.Request.has('email');
// Get the user's real IP address (Supports Cloudflare)
const userIp = Nyvora.Request.ip();
// Get request path
const path = Nyvora.Request.path();
3. Global Response Helper (Nyvora.Response)
Standardize your API responses effortlessly.
// Success Response (HTTP 200)
return Nyvora.Response.success(
{ user_id: 1, name: "Satyam" },
"User logged in successfully"
);
// Error Response
return Nyvora.Response.error("Invalid API Key", 401);
4. Session Management (Nyvora.ss)
Nyvora handles sessions beautifully without you needing to manually pass cookies around. The session lifetime is managed in .Nyvora/config via SESSION_LIFETIME (default: 3600s).
// 1. Set Session Data
Nyvora.ss.set('username', 'Satyam');
// 2. Get Session Data
const username = Nyvora.ss.get('username');
// 3. Regenerate Session ID (Very important for login security!)
Nyvora.ss.regenerate();
// 4. Get Session Info (Remaining time, creation date, etc.)
const info = Nyvora.ss.info();
console.log(`Session expires in ${info.expiresInSeconds} seconds`);
// 5. Delete specific key
Nyvora.ss.unset('username');
// 6. Clear entire session
Nyvora.ss.reset();
5. Input Validation (Nyvora.Validator)
Validate incoming data using a clean, Laravel-style syntax.
const input = Nyvora.Request.all();
const rules = {
name: 'required|string|min:3',
age: 'required|integer|min:18',
email: 'required|email'
};
const validator = Nyvora.Validator.make(input, rules);
if (validator.fails()) {
// Return all validation errors
return Nyvora.Response.error('Validation Failed', 422, validator.getErrors());
}
6. Secure Tokens (Nyvora.TokenVault)
Need to issue secure tokens (e.g., Email Verification, Password Reset, Custom JWTs)? TokenVault uses military-grade AES-256-GCM encryption and strictly validates expiration and audience.
// 1. Configure the Vault (Run this once globally)
Nyvora.TokenVault.configure({
'v1': 'YourVeryStrongMasterKey123456789'
}, 'MyIssuer', 'MyAudience');
// 2. Create (Seal) a Secure Token
const payload = { user_id: 1001, role: 'admin' };
const uKey = 'user-secret-key';
const seal = Nyvora.TokenVault.seal(
payload,
uKey,
'24H', // Expiry (e.g., '1H', '30D', 'MO')
'verify_email', // Purpose
0, // Not-before offset
true, // Bind to current Session ID!
true, // Bind to current IP Address!
true // Bind to current Device (User-Agent)!
);
const tokenString = seal.token;
// 3. Decrypt & Verify (Unseal) a Token
const verify = Nyvora.TokenVault.unseal(
tokenString,
uKey,
'verify_email' // Must match the original purpose
);
if (verify.status) {
console.log("Verified Data:", verify.data);
} else {
console.log("Error:", verify.error);
}
7. IP Tracking (Nyvora.IpTracker)
Track unique visitors and hits efficiently. This is safe to use even with heavy concurrent traffic.
// Record a visit (Pass `true` to ignore localhost/127.0.0.1)
await Nyvora.IpTracker.recordVisit(true);
// Get total unique IP addresses today
const unique = Nyvora.IpTracker.getUniqueVisitors();
// Get total number of visits/clicks today
const totalVisits = Nyvora.IpTracker.getTotalVisits();
// Get raw JSON tracking data
const rawData = Nyvora.IpTracker.getData();
Thank you for using Nyvora! Happy Coding!