Home
Softono

Cell

Open source MIT TypeScript
749
Stars
66
Forks
23
Issues
18
Watchers
9 months
Last Commit

 About Cell

Cell is a Serverless First, componentized, platform-independent progressive application framework based on TypeScript. Cell 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架。

Platforms

Web Self-hosted Cloud

Languages

TypeScript

Need Help Installing Cell?

We provide expert installation service for this software. Our team will install, configure, and secure Cell on your server. plans start at just $30.

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