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.

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.