
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Aureolin is a simple, fast, and powerful MVC framework for Node.js with a focus on simplicity and performance. Built With Koa
npm install aureolin
To get started with Aureolin, you need to create a config file named aureolin.config.js in the root of your project.
/** @filename aureolin.config.js */
const { join } = require('path')
/** @type {import('aureolin').Config} */
module.exports = {
root: join(process.cwd(), process.env.NODE_ENV === 'production' ? 'dist' : 'src')
port: 4000,
public: {
path: '/public',
dir: './public',
index: 'index.html'
},
views: {
path: 'views',
extension: 'hbs',
map: {
hbs: 'handlebars'
}
}
}
Then, use the create function to create the app.
/** @filename src/main.ts */
import { create } from 'aureolin'
// import create from 'aureolin'
// const { create } from require('aureolin')
const main = async () => {
const app = await create()
}
To create a controller you need to import the Controller decorator from Aureolin.
Decorators for all Http methods are provided
The return value of the methods prefixed with an Http Decorator in a controller are sent as the response Response can be a string, number, object, array, or even a JSX Element (YES! JSX See Here)
Use the provided Parameter Decorators to let Aureolin to know what parameters pass to the to the controller methods.
/** @filename src/controllers/hello.tsx */
import { Controller, Context, Get, Ctx, Param } from 'aureolin'
@Controller('/hello')
export class HelloController {
@Get('/')
async hello() {
return (
<div>
<h1>Hello World!</h1>
<p>This is a simple example of Aureolin</p>
</div>
)
}
@Get('/:name')
async helloName(@Ctx() { params: { name } }: Context) {
return `Hello ${name}!`
}
@Get('/:name/:age')
async helloNameAge(@Param('name') name: string, @Param('age') age: string) {
return `Hello ${name}! You are Probably ${age} years old.`
}
}
Providers are a way to inject dependencies into your controllers.
Use the provider decorator to decalre a class as a provider.
Use the inject decorator to inject provider into your controllers.
@Provider(provide: string)
/** @filename src/providers/time.ts */
import { Provider } from 'aureolin'
@Provider('time')
export default class TimeProvider {
async getTime() {
return new Date().toLocaleTimeString()
}
}
@Inject(provide: string)
/** @filename src/controllers/time.ts */
import { Controller, Context, Get, Inject } from 'aureolin'
import type TimeProvider from 'providers/time.ts'
@Controller('/time')
export class TimeController {
constructor(@Inject('time') private timeProvider: TimeProvider) {}
@Get('/')
async getTime() {
return timeProvider.getTime()
}
}
Use the @Middleware and @ControllerMiddleware Decorator factories
import { Middleware, Controller, ControllerMiddleware, Context, Get, Ctx, Param, NextFunction } from 'aureolin'
@Contoller('cakes')
@ContollerMiddleware([
(ctx: Context, next: Next) => {
console.log('Controller Middleware 1')
return next()
}
])
export default class CakesController {
@Get('/cheesecake')
@Middleware([cheesecakemiddleware])
public cheesecake() {
return {
name: 'Cheesecake',
ingredients: ['cheese', 'flour', 'sugar']
}
}
@Get('/redvelvet')
@Middleware([redvelvetmiddleware])
public redvelvel() {
return {
name: 'Red Velvet',
ingredients: ['cheese', 'flour', 'sugar', 'red stuff']
}
}
}
Aureolin takes care of error handling for you.
Use the exported Exception or Prebuilt classes to throw error dircetly in your code and aureolin will handle it.
/** @filename src/controllers/error.ts */
import { Controller, Context, Get, Exception, BadRequestException } from 'aureolin'
@Controller('/error')
export class ErrorController {
@Get('/')
async error(): never {
throw new Exception('Something went wrong!', 500)
}
@Get('/:name')
async errorName(@Ctx() { params: { name } }: Context): never {
if (!name) throw new BadRequestException(`${name} is not a valid name!`)
}
}
And finally you can call create() to start your app.
/** @filename src/main.ts */
import { create } from 'aureolin'
const main = async () => {
const app = await create()
}
main()
After you have created the application, Visit http://localhost:3000/hello to see the output of the hello controller.
Check out the Docs Folder for more information.
Thank you for using Aureolin!
FAQs
Rest API Framework
We found that aureolin demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.