Skip to content

WesleyEdwards/simply-served

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simply Served

npm latest package
A lightweight framework accelerate your Node.js server development.


Overview

Simply Served is a lightweight Node.js server framework designed to simplify server development while maintaining flexibility and extensibility.

The framework focuses on enabling developers to:

  • Access and manipulate data effortlessly.
  • Enforce permissions and maintain data integrity.
  • Auto-generate REST endpoints with basic CRUD operations based on models and permissions.

Whether you're building a simple application or a complex API, Simply Served provides the tools you need to speed up development.

Key Features

  • Auto-generated Endpoints: Define your models and permissions, and let the framework handle the REST endpoints.
  • Built-in Validation: Ensure data integrity with Zod, a powerful and extensible schema validation library.
  • Express.js Backbone: Leverage the flexibility and performance of Express.js under the hood.
  • Database-agnostic: Use any database by implementing a simple, abstracted interface.
  • Provided MongoDB Adapter: Use server condition and query system for the Mongo Driver

Documentation

Example

Get started with an example server in the example package.

type Db = { user: DbMethods<User> };
type ServerCtx = { db: Db; auth: User };

const app = express();

app.use(bearerTokenMiddleware("super-secret-encryption-key"));
app.use(
  addContext<ServerCtx>({
    db: persistentDb({
      user: [{ _id: "1", name: "John Doe" }],
    }),
  })
);

addController<ServerCtx>(app, {
  path: "/user",
  routes: modelRestEndpoints({
    validator: z.object({
      _id: z.uuid(),
      name: z.string(),
    }),
    collection: (db) => db.user,
    permissions: {
      create: { type: "publicAccess" },
      read: { type: "publicAccess" },
      modify: {
        type: "modelAuth",
        check: async ({ auth }) => ({ _id: { Equal: auth._id } }),
      },
      delete: { type: "notAllowed" },
    },
  }),
});

app.listen(8080, () => {
  console.log("Listening on port 8080");
});

About

A simple node server framework

Resources

Stars

Watchers

Forks

Packages

No packages published