Aegis is a simple, fast and easy to use web development framework. It includes almost everything you’ll need to design your webpage or web application and make it functional and secure.
One framework, many tools
Aegis gives you easy access to common functions across the whole stack — from DOM manipulation to backend routing. A complete, versatile family of libraries that work beautifully together.
ArtemisJavaScript LibraryA lightweight JavaScript/TypeScript toolkit: DOM manipulation, storage wrappers, HTTP requests and platform detection — the utilities you reach for every day.
PandoraWeb ComponentsA lightweight web-components library with a decorator-first API, automatic microtask-batched rendering and built-in lit-html for efficient DOM updates.
KayrosCSS LibraryA simple CSS and components library — sensible variables, a flexible grid and ready-made components so you can design fast and stay consistent.
OreganoFront-end TemplateA front-end-only starter template with the cutting edge of HTML5, CSS3 and JS — mobile- and social-friendly, and a progressive web app out of the box.
IkarosPHP FrameworkThe PHP flavor: a lightweight microframework with routing, templating, a database ORM, authentication and encryption.
NymphBun / TypeScript FrameworkThe Bun/TypeScript flavor — a minimal but full-featured microframework ported from Ikaros, with idiomatic TypeScript patterns.
MMelanServerless ToolkitA minified Aegis built for serverless functions: user authorization & authentication, plus KMS-encrypted secrets pulled from the environment.
How simple is it? Look at its syntax
Real, current code from each library — pick a flavor.
import { $_, $_ready, Request, Platform } from '@aegis-framework/artemis';
$_ready(async () => {
// Adapt to the environment
if (Platform.darkMode) {
$_('body').addClass('dark');
}
// Fetch JSON with query params
const users = await Request.json('https://api.example.com/users', { page: 1, limit: 10 });
$_('#count').text(`${users.length} users`);
// Chainable DOM, with a POST on click
$_('button').click(async () => {
const user = await Request.postJson('https://api.example.com/users', { name: 'John' });
$_('ul').append(`<li>${user.name}</li>`);
});
});import { Component, Register, State, Listen, html } from '@aegis-framework/pandora';
@Register('my-counter')
class MyCounter extends Component {
@State() count = 0;
@Listen('click')
increment() {
this.count++; // reactive — re-renders automatically
}
render() {
return html`<button>Count: ${this.count}</button>`;
}
}<div class="card">
<div class="card__header">
<h2>My Card</h2>
</div>
<div class="card__body">
<p style="color: var(--color-subtext)">My content</p>
</div>
<div class="card__footer">
<p><small>My Details</small></p>
</div>
</div><?php
require 'vendor/autoload.php';
use Ikaros\Ikaros;
use Ikaros\Router;
$app = new Ikaros();
$router = $app->container()->get(Router::class);
// Routes return data straight from the Schema ORM
$router->get('/users/{id}', function (string $id) {
return UserSchema::get($id);
});
$router->get('/users', function () {
return UserSchema::all();
});
$router->listen();import { Nymph, Router } from '@aegis-framework/nymph';
const nymph = new Nymph();
const router = nymph.container().get<Router>('Router');
// The same elegant API as Ikaros, in idiomatic TypeScript
router.get('/users/{id}', async (id: string) => {
return await User.get(id);
});
router.post('/users', async () => {
return await User.create({ name: 'Jane', email: '[email protected]' });
});
router.port(3000);
router.listen();const { Router } = require('@aegis-framework/melan');
const Secrets = require('@aegis-framework/melan/lib/secrets');
exports.handler = async (event, context, callback) => {
const router = new Router(event, context, callback);
router.allow('*');
return router.serve(async function () {
// Reject unless the request carries a valid JWT (TTL in seconds)
const { payload } = await router.authorize(1296000);
// Pull KMS-encrypted credentials from the environment
const [user, password] = await Secrets.decrypt('DB_USER', 'DB_PASSWORD');
return { success: true, user: payload.user };
});
};Why Aegis?
Aegis was created for a simple purpose: to be an alternative for web developers — as simple as it could be, yet as complete and advanced as it could be. Easy to use for both new and experienced developers, and a way to help others understand how a framework is built from scratch. It takes advantage of the newest technologies and best practices: Aegis is bleeding edge, and that means it moves fast.
We all want awesome webs, with cool functionality and design. Awesomeness needs time — so why spend it on generic stuff when you could spend it building the future?
Free and open source
Aegis is released under the MIT License — use it for anything, commercial or not, completely free.
Learn. Design. Create.