cell is a free, open source build & deployment project written in TypeScript and released under MIT. It has 746 GitHub stars, 66 forks and 23 open issues, and was last pushed 11 months ago. On this registry it ranks #53 of 59 tracked projects in Build & Deployment, with 5 head-to-head comparisons available.

What is cell?

What it is

Cell is TypeScript serverless-first application framework. It lives in npm/TypeScript ecosystem. It targets serverless functions, microservices, BFF, full-stack apps. It also connects Aliyun, AWS, Tencent Cloud. It is component-based and platform-independent.

Cell solves setup burden for TypeScript serverless apps. It reduces configuration complexity. It gives component model, dependency injection, AOP, ORM, auth, state management. It lets one codebase serve REST and RPC. It lets deploy to SCF, FC, Lambda. It supports plugin-based command line tools.

Key capabilities

  • Serverless-first project model supports cell deploy -m scf, -m fc, -m lambda, and keeps platform choices inside command line.
  • TypeScript core provides strong typing, progressive component architecture, and dependency injection for component wiring.
  • Aspect-oriented programming implements modularization of cross-cutting concerns across components.
  • Integrated ORM uses decorators for database operations and transaction management.
  • OIDC authentication and OAuth2 authorization support protected APIs and account flows.
  • rxjs state management supports reactive application state; full-stack support integrates front and back-end and supports REST and RPC interfaces.
  • AI support provides basic abstraction and multi-vendor model service interface adaptation.

Who uses it and how

  • Backend teams build APIs with controllers, ORM, auth, then deploy as cloud functions on SCF, FC, or Lambda.
  • Full-stack teams combine React or Vue frontends with shared TypeScript backend components and compatible front-end frameworks.
  • Platform teams build BFF, microservice, or microapp layers using REST and RPC interfaces.
  • Developers create scheduled tasks from schedule sample and deploy to serverless targets.
  • Teams prototype account services using accounts sample and OIDC/OAuth2 flows.

Getting started

Install CLI with npm install -g @celljs/cli, initialize project with cell init -o project-name, and run locally with cell serve. Deploy with cell deploy -m scf, -m fc, or -m lambda.

When to use it — and when not to

Use Cell when one TypeScript codebase must target Tencent Cloud Functions, Alibaba Cloud Function Compute, or AWS Lambda with serverless-first components. Avoid Cell when project needs Docker image names, hosted deployment, or broad contributor evidence; README shows no Docker image names, no hosted option, and contributors are not listed, while open issues are 23. Self-hosting still requires operating database access for ORM and cloud function permissions for deployment. Adoption signals are modest: 746 stars, 66 forks, and no contributor count in facts.

project readme (upstream, from github) — read inline

English | 简体中文

Cell Logo

Cell

GitHub License npm Version npm Downloads Build Status Stars star

Cell is a Serverless First, Component-based, and Platform-independent progressive application framework based on TypeScript.

Features

  • Zero Configuration: Out of the box, reduces configuration complexity.
  • Based on TypeScript: Provides strong type support, enhancing development efficiency.
  • AI Support: Provides AI basic abstraction and multi-vendor model service interface adaptation.
  • Serverless First: Optimizes Serverless application development.
  • Cross-Platform: Platform agnostic, flexible deployment.
  • Full-Stack Support: Front and back-end integration, compatible with various front-end frameworks.
  • Microservices Architecture: Supports building and managing microservices.
  • Component-based: Modular design, easy to extend and maintain.
  • Plugin-based Tools: Command line tools support plugins, enhancing functionality.
  • Dependency Injection: Simplifies dependency management between components.
  • Aspect-Oriented Programming (AOP): Implements modularization of cross-cutting concerns.
  • Integrated ORM: Uses decorators for transaction management, simplifying database operations.
  • Authentication and Authorization: Supports OIDC authentication and OAuth2 authorization.
  • State Management: Uses rxjs for managing application state.
  • Multiple Interface Styles: Supports both REST and RPC interfaces.

Quick Start

# Install command line tool
npm install -g @celljs/cli

# Initialize project
cell init -o project-name
cd project-name            # Enter project root directory

# Run project
cell serve

# Deploy project
cell deploy -m scf      # Deploy to Tencent Cloud Functions (SCF)
cell deploy -m fc       # Deploy to Alibaba Cloud Function Compute (FC)
cell deploy -m lambda   # Deploy to AWS Lambda

Quick Start

Samples

Documentation

Dependency injection

// Class object injection
@Component()
export class A {

}

@Component()
export class B {
    @Autowired()
    protected a: A;
}

// Configuration property injection
@Component()
export class C {
    @Value('foo') // Support EL expression syntax, such as @Value('obj.xxx'), @Value('arr[1]') etc.
    protected foo: string;
}

Database operations

import { Controller, Get, Param, Delete, Put, Post, Body } from '@celljs/mvc/lib/node';
import { Transactional, OrmContext } from '@celljs/typeorm/lib/node';
import { User } from './entity';
@Controller('users')
export class UserController {
    
    @Get()
    @Transactional({ readOnly: true })
    list(): Promise<User[]> {
        const repo = OrmContext.getRepository(User);
        return repo.find();
    }
    @Get(':id')
    @Transactional({ readOnly: true })
    get(@Param('id') id: number): Promise<User | undefined> {
        const repo = OrmContext.getRepository(User);
        return repo.findOne(id);
    }
    @Delete(':id')
    @Transactional()
    async remove(@Param('id') id: number): Promise<void> {
        const repo = OrmContext.getRepository(User);
        await repo.delete(id);
    }
    @Put()
    @Transactional()
    async modify(@Body() user: User): Promise<void> {
        const repo = OrmContext.getRepository(User);
        await repo.update(user.id, user);
    }
    @Post()
    @Transactional()
    create(@Body() user: User): Promise<User> {
        const repo = OrmContext.getRepository(User);
        return repo.save(user);
    }
}

Discuss group

群二维码.png

Status

Alt

Frequently asked questions

Is cell free to use?

cell is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does cell do?

Cell is a Serverless First, componentized, platform-independent progressive application framework based on TypeScript. Cell 是基于 TypeScript 的 Serverless First、组件

What is cell written in?

cell is primarily written in TypeScript. Its source is publicly available at https://github.com/cellbang/cell, and it has 746 GitHub stars.