npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@alumna/backend

v1.0.4

Published

Alumna Backend: Real-time backend without runtime dependencies

Downloads

6

Readme

Alumna Backend: Towards a software architecture that is easier, technology agnostic and future-proof

npm npm

Alumna Backend is a NodeJS/Bun back-end framework which is the first implementation of a new software architecture concept, which provides abstraction of all layers involved, including protocols.

It is the first experiment based on a variation of continuous passing style, present on many frameworks like Express, but heavily inspired by FeathersJS, but recreating the internals from scratch as well as leaving the call stack linear, implementing a "linear continuous passing style" concept.

Install and basic usage

Step 1

Install it using your prefered package manager. The command below considers npm:

npm install @alumna/backend

Step 2

Import the library and create the endpoints:

// import the library
import Alumna from '@alumna/backend';

// import services types, e.g.
import MysqlService from './services/MysqlService.js'
import MemoryService from './services/MemoryService.js'

// import hooks (application and business rules), e.g.
import UserHooks from './hooks/UserHooks'

//
// create a instance for your backend
const backend = new Alumna();

// create as many services as you want
backend.use( 'users', new MysqlService() )
backend.use( 'tasks', new MysqlService() )
backend.use( 'messages', new MemoryService() )

// apply as many hooks as you want
backend.service( 'users' ).hooks( UserHooks )

//
// start listening for requests
backend.listen()

Service API

You can implement just the methods you want

class ExampleService {
	
	constructor() {}

	async find () {}

	async get( id, params ) {}

	async create ( data ) {}

	async update( id, data ) {}
	
	async patch( id, data ) {}
	
	async remove( id ) {}

	async setup ( app, path ) {}

}

export default ExampleService;

Hook API

Hooks are created to apply application or business rules to one or more services (or even the whole application, when its the case)

import exampleHook from './hooks/example.js'
import anotherHook from './hooks/another.js'
import errorHook from './hooks/error.js'

export default {
	before: {
		all: [],
		find: [ exampleHook ],
		get: [ anotherHook, exampleHook ],
		create: [],
		update: [],
		patch: [],
		remove: []
	},

	after: {
		all: [],
		find: [],
		get: [],
		create: [],
		update: [],
		patch: [],
		remove: []
	},

	error: {
		all: [ errorHook ],
		find: [],
		get: [],
		create: [],
		update: [],
		patch: [],
		remove: []
	}
};

Roadmap

Site and documentation

  • [x] Create basic documentation on README
  • [ ] Create website
  • [ ] Create complete documentation on website