Artem Maltsev

Artem Maltsev

I write open-source TypeScript frameworks for Node.js. They form one stack: small libraries at the bottom, a full application framework and a data-model language on top.

Stacked by dependency — each layer is built on the ones below it.

  1. atscript

    plugs into moost

    Define a data model once in .as files and get TypeScript types, runtime validation, database tables and UI forms from the same source.

    export interface User {
      @meta.label "Full Name"
      @expect.minLength 2
      name: string
    }
  2. moost

    built on wooks and prostojs

    A metadata-driven framework inspired by NestJS: controllers, decorators and dependency injection for HTTP, CLI, WebSocket and workflow apps — without modules, and without Express or Fastify.

    @Controller('api')
    class ApiController {
      @Get('hello/:name')
      greet(@Param('name') name: string) {
        return `Hello, ${name}!`
      }
    }
  3. wooks

    built on prostojs

    An event-processing framework built on composable functions. The same model handles HTTP requests, CLI commands, WebSocket messages and workflow steps.

    const app = createHttpApp()
    
    app.get('/hello/:name', () => {
      const { get } = useRouteParams()
      return `Hello, ${get('name')}!`
    })
  4. prostojs

    the foundation