Giter Site home page Giter Site logo

narhakobyan / awesome-nest-boilerplate Goto Github PK

View Code? Open in Web Editor NEW
2.2K 2.2K 422.0 4 MB

Awesome NestJS Boilerplate ๐Ÿ˜, Typescript ๐Ÿ’ช, Postgres ๐ŸŽ‰, TypeORM ๐Ÿฅณ

Home Page: https://narhakobyan.github.io/awesome-nest-boilerplate

License: MIT License

Dockerfile 0.29% JavaScript 11.13% TypeScript 74.13% Shell 0.25% EJS 14.21%

awesome-nest-boilerplate's Introduction

{
  "name": "Narek Hakobyan",
  "skills":["Typescript", "Node.js", "NestJS", "Angular", "Flutter"]
}

awesome-nest-boilerplate's People

Contributors

antennaio avatar bengeois avatar dependabot[bot] avatar edgar-p-yan avatar hamdiwanis avatar handfish avatar mamal72 avatar mrdevx avatar narhakobyan avatar nhutcorp avatar renovate-bot avatar renovate[bot] avatar saadbazaz avatar spotlesscoder avatar tolstenko avatar vicehope avatar x-neuron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-nest-boilerplate's Issues

GetConstructorArgs Type

When i tried to generate migration from Database using this commnad: npm run migration:generate -n Users
i got this issue:
Error during migration generation:

src/providers/utils.provider.ts:12:38 - error TS2304: Cannot find name 'GetConstructorArgs'.
12 model: new (entity: E, options?: GetConstructorArgs[1]) => T,

src/providers/utils.provider.ts:14:15 - error TS2304: Cannot find name 'GetConstructorArgs'.
14 options?: GetConstructorArgs[1],

src/providers/utils.provider.ts:17:38 - error TS2304: Cannot find name 'GetConstructorArgs'.
17 model: new (entity: E, options?: GetConstructorArgs[1]) => T,

src/providers/utils.provider.ts:19:15 - error TS2304: Cannot find name 'GetConstructorArgs'.
19 options?: GetConstructorArgs[1],

src/providers/utils.provider.ts:22:38 - error TS2304: Cannot find name 'GetConstructorArgs'.
22 model: new (entity: E, options?: GetConstructorArgs[1]) => T,

src/providers/utils.provider.ts:24:15 - error TS2304: Cannot find name 'GetConstructorArgs'.
24 options?: GetConstructorArgs[1],

Integrate server side i18n

Sometimes we need to send localized messages directly from back-end (e.g push notifications, emails, etc.), so we need to have i18n also on backend

`yarn eslint` reports 96 problems (65 errors, 31 warnings)

image

  1. When I run yarn eslint, the system will report as image above.

  1. I want to add a new file src/modules/math/math.controller.spec.ts but I could not commit it
โœ– eslint --fix found some errors. Please fix them and try committing again.		
var/www/html/awesome-nest-boilerplate/src/modules/math/math.controller.spec.ts
0:0  error  Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: src/modules/math/math.controller.spec.ts.
The file must be included in at least one of the projects provided
				
โœ– 1 problem (1 error, 0 warnings)
husky > pre-commit hook failed (add --no-verify to bypass)

I see in tsconfig.json, we are excluding **/*.spec.ts files


I am reading and searching more about this but I want to ask: are they issues of this boilerplate?

How to map entities to DTOs and vice-versa

What is the best way to map database entities to DTO's in NestJs and vice-versa ?
what about class-transformer OR, there is a popular automapper package (automapper-ts) ?

You must specify POSTGRES_PASSWORD error message

I pulled the postgress-11-alpine fresh image, where in the new image we should specify Postgres user password.

As the error message is self explainatory:

You must specify POSTGRES_PASSWORD to a non-empty value for the superuser.
For example, "-e POSTGRES_PASSWORD=password" on "docker run".

You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
connections without a password. This is not recommended.

So, this "POSTGRES_PASSWORD environment variable is required for you to use the PostgreSQL image. It must not be empty or undefined. This environment variable sets the superuser password for PostgreSQL. The default superuser is defined by the POSTGRES_USER environment variable." See at https://hub.docker.com/_/postgres

version: '3'
services:
  app:
    env_file:
      - .development.env
    container_name: awesome_nest_boilerplate
    restart: always
    build: .
    ports:
      - '$PORT:$PORT'
    links:
      - postgres
  postgres:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: postgres_pass

Hope this would help anyone.

Example Model with Relations and DTO

I am trying to create a model with a relation with DTO and call the list of users with these relations.

Model User:

...
@Column()
    firstName: string;

@OneToOne(
        type => UserSalaryEntity,
        userSalary => userSalary.user,
        {
            nullable: false,
        },
    )
    userSalary: UserSalaryEntity;
...

User DTO:

export class UserDto extends AbstractDto {
    @ApiProperty()
    firstName: string;

    @ApiProperty({ type: UserSalaryDto })
    userSalary: UserSalaryDto;

    constructor(
        user: UserEntity,
        userSalary: UserSalaryDto,
    ) {
        super(user);
        this.firstName = user.firstName;
        this.userSalary = relations.userSalary;
    }
}

Model UserSalary:

...
@Column('decimal', { precision: 13, scale: 2, default: 0 })
    salary: number;

@OneToOne(
        type => UserEntity,
        user => user.userSalary,
        { nullable: false },
    )
    @JoinColumn({ name: 'user_id' })
    user: UserEntity;
...

UserSalary DTO:

export class UserSalaryDto extends AbstractDto {
    @ApiProperty()
    salary: number;

    @ApiProperty()
    userId: number;

    constructor(userSalary: UserSalaryEntity, user: UserDto) {
        super(userSalary);
        this.salary = userSalary.salary;
        this.userId = user.id;
    }
}

I'm not sure if my dto looks good, that's what I thought.
But now I'm trying to do endpoint GET /users:

async getUsers(
        pageOptionsDto: UsersPageOptionsDto,
    ): Promise<UsersPageDto> {
        const queryBuilder = this.userRepository.createQueryBuilder('user');
        const [users, usersCount] = await queryBuilder
            .leftJoinAndSelect('user.userSalary', 'userSalary')
            .skip(pageOptionsDto.skip)
            .take(pageOptionsDto.take)
            .getManyAndCount();

        const pageMetaDto = new PageMetaDto({
            pageOptionsDto,
            itemCount: usersCount,
        });

        return new UsersPageDto(users.toDtos(), pageMetaDto);
    }

there is a problem with dto.
Could you create an example entity for me according to this boilerplate with relations?

Add field to DTO that's missing entity

My controller returns the class DTO of my entity, but I do it through queryBuilder, because I add one more value (sum) to select. It looks like this and it works when I use .getRawMany():

public async getBills(user: UserEntity, pageOptionsDto: BillsPageOptionsDto): Promise<BillsPageDto | undefined> {
        const queryBuilder = this._billRepository.createQueryBuilder('bills');

        const [bills, billsCount] = await queryBuilder
            .leftJoinAndSelect('bills.currency', 'currency')
            .where('bills.user = :user', { user: user.id })
            .select(
                (subQuery) =>
                    subQuery
                        .select(...),
                'amountMoney',
            )
            .skip(pageOptionsDto.skip)
            .take(pageOptionsDto.take)
            .getManyAndCount();

        const pageMetaDto = new PageMetaDto({
            pageOptionsDto,
            itemCount: billsCount,
        });

        return new BillsPageDto(bills.toDtos(), pageMetaDto);
    }

This value is when I return the query, everything is done correctly. But I can't add this sum to my dto because I don't store (and don't want to) this entity.

Bill.entity.ts:

@Entity({ name: 'bills' })
export class BillEntity extends AbstractEntity<BillDto> {
    @Column({ unique: true, length: 26 })
    accountBillNumber: string;

    @ManyToOne(
        () => CurrencyEntity,
        (currency: CurrencyEntity) => currency.bill,
        {
            nullable: false,
            onDelete: 'CASCADE',
        },
    )
    currency: CurrencyEntity;

    ...

    dtoClass = BillDto;
}

Bill.dto.ts:

export class BillDto extends AbstractDto {
    @ApiProperty()
    readonly accountBillNumber: string;

    /* I need this:
    @ApiProperty()
    readonly accountMoney: number;
    */

    @ApiProperty({ type: CurrencyDto })
    readonly currency: CurrencyDto;

    constructor(bill: BillEntity) {
        super(bill);
        /* i need this: this.accountMoney = ? */
        this.accountBillNumber = bill.accountBillNumber;
        this.currency = bill.currency.toDto();
    }
}

Is there any solution for this? I hope I described it clearly enough :)

Remote repository

Hi, can you point me in the right direction to add remote repository other than typeorm. I want to create an entity and fetch data from another non-nestjs api. I would like to use pageDtos like userEntity.

Thnks

add downloadImage method to aws-s3 service

class AwsS3Service does not include methods to download graphics. Could you implement it?

const downloadFile = (filePath, bucketName, key) => {
  const params = {
    Bucket: bucketName,
    Key: key
  };
  s3.getObject(params, (err, data) => {
    if (err) console.error(err);
    fs.writeFileSync(filePath, data.Body.toString());
    console.log(`${filePath} has been created!`);
  });
};

How to use nanoid instead of uuid for entitiy ids

I know this is not directly related to this boilerplate but for the love of God I cannot find how to do this.

I tried to achieve this using the default attribute:

@PrimaryColumn({ length: 21, default: () => `'${nanoid()}'` })
    id: string;

But this causes issues when using the second has the same duplicate key.

Please at least point where to look before closing this issue.

Thanks

e2e test and error

When I want to check e2e tests, I have this problem:

[Nest] 7345   - 2019-12-19 7:44:15 PM   [ExceptionHandler] Unable to connect to the database. Retrying (1)...
Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)
[Nest] 7345   - 2019-12-19 7:44:18 PM   [ExceptionHandler] Unable to connect to the database. Retrying (2)... +3007ms
Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)

It is true that I have an external postgresql address and not localhost, but this should probably not be a problem?

UUID Validation

Hey! Thanks for the great boilerplate. I'd like to know how do you handle UUID validation on a controller params.

Do you create a new xxxDto file for say, getPostDto?

Filtering data by user

say you have a new entity you want to list.. wich will be the best way of filtering by logged user id? interceptor would be the best choice right?

Swagger build fail dtoclass

I haven't made many changes to the boilerplate.
When I run start the project, the swagger UI can not load with the errors like as image below

Screen Shot 2021-04-18 at 18 21 30

New feature: MongoDB integration

Hello there :)

how do you think about adding mongodb integration with mongoose?

if you ok, I'm going to work on it

also mongo backend coding pattern(interact with dto, controller, service, repository pattern) will be 100% same like postgresql backend

create releases

Hi @NarHakobyan ,

Thanks for this nice starter template , however I'd like to suggest to create releases so the user's of this template can track the used release and upgrade it in case they needed to

No active context found to set property request.user_key

Bump into this error when I try to access protected endpoint.

[Nest] 99681   - 2019-04-17 17:54   [ExceptionsHandler] No active context found to set property request.user_key +637ms
Error: No active context found to set property request.user_key
    at Object.setContext (/Users/darris/Playground/grammes-api/node_modules/request-context/lib/index.js:98:9)
    at Function.set (/Users/darris/Playground/grammes-api/src/providers/context.service.ts:11:24)
    at Function.setAuthUser (/Users/darris/Playground/grammes-api/src/modules/auth/auth.service.ts:54:24)
    at AuthUserInterceptor.intercept (/Users/darris/Playground/grammes-api/src/interceptors/auth-user-interceptor.service.ts:20:21)
    at /Users/darris/Playground/grammes-api/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:21:36
    at Object.handle (/Users/darris/Playground/grammes-api/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:19:56)
    at ClassSerializerInterceptor.intercept (/Users/darris/Playground/grammes-api/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js:34:14)
    at /Users/darris/Playground/grammes-api/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:21:36
    at InterceptorsConsumer.intercept (/Users/darris/Playground/grammes-api/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:23:24)
    at /Users/darris/Playground/grammes-api/node_modules/@nestjs/core/router/router-execution-context.js:41:60
::1 - - [17/Apr/2019:09:54:53 +0000] "GET /auth/me HTTP/1.1" 500 52 "-" "insomnia/6.3.2"

POST request

When i try to write post request for user to insert into database , Its show 401 error how I can fix that issue

Generate modules in the modules folder

I am not really experienced with the nest framework nor boilerplates, yet, I think that, as explained in the docs, modules should be under the modules folder. Currently, generating a module with the nest-cli puts it in the src folder.

Would it be possible to generate these modules in the modules folder directly?

Translation not working

Hi, just clone this template, and run it as describe on doc and when i try to login, theres no validation message showing,

this when i try to send without email & password
{ "statusCode": 400, "message": [ "", "" ], "error": "Bad Request" }

this when i try to send with wrong password
{ "statusCode": 400, "message": [ "" ], "error": "Bad Request" }

great boilerplate and really fit my needs,

README should note that this architecture differs from what is suggested in the documentation

I think this architecture differs from what is implicitly suggested in the NestJS documentation, i don't think this is a bad thing as every architecture has its pros and cons. But i think it should be noted in the README.

For example if you want to work with some feature related with cats, you would have to navigate through several folders (middleware, interfaces, providers, etc...).

In the Nestjs documentation, files are close to their domain, so you have everything you need in one place. For instance, there is Cats Folder, containing everything related to cats.

image
Taken from https://docs.nestjs.com/modules

return a few Dto to response.

I can't understand one thing.
When creating a user, I need to add several fields in different tables in the database.
so I converted my createUser method to user.service.ts:

    async createUser(
        userRegisterDto: UserRegisterDto,
    ): Promise<[UserEntity, UserAuthEntity, UserSalaryEntity]> {
        const user = this.userRepository.create(userRegisterDto);
        await this.userRepository.save(user);

        const userRegisterDtoWithUserEntity = { ...userRegisterDto, user };
        const userAuth = this.userAuthRepository.create(
            userRegisterDtoWithUserEntity,
        );
        const userSalary = this.userSalaryRepository.create(
            userRegisterDtoWithUserEntity,
        );

        await Promise.all([
            this.userAuthRepository.save(userAuth),
            this.userSalaryRepository.save(userSalary),
        ]);

        return [user, userAuth, userSalary];
    }

and at the moment my registration controller looks like this:

    @Post('register')
    @HttpCode(HttpStatus.OK)
    @ApiOkResponse({
        type: [UserDto, UserAuthDto, UserSalaryDto],
        description: 'Successfully Registered',
    })
    async userRegister(
        @Body() userRegisterDto: UserRegisterDto
    ): Promise<[UserDto, UserAuthDto, UserSalaryDto]> {
        const [
            createdUser,
            createdUserAuth,
            createdUserSalary,
        ] = await this.userService.createUser(userRegisterDto);

        return [
            createdUser.toDto(),
            createdUserAuth.toDto(),
            createdUserSalary.toDto(),
        ];
    }

Is this written correctly? Can it be written better? In response, I would like to show data from tables that were created.

Cannot read property 'toDto' of undefined

I get an error when trying to get the list of users. I added a profile relation to the user entity which is referenced by the profile field in the user entity.
Example: the profile field in the user entity

Change default functions to arrow functions

since we are using the latest js standards, can you change the style of function creation to arrows?

async createUser(userRegisterDto: UserRegisterDto): Promise<UserEntity> {...}

change to

createUser = async (userRegisterDto: UserRegisterDto): Promise<UserEntity> => {...}

Docker-compose error TS2688: Cannot find type definition file for 'mocha'

Getting this issue from starting the docker.

โžœ  awesome-nest-boilerplate git:(master) PORT=3000 docker-compose up
Building app
Step 1/17 : FROM node:dubnium AS dist
 ---> 4ae749096a47
Step 2/17 : COPY package.json yarn.lock ./
 ---> Using cache
 ---> 4597ae5a921e
Step 3/17 : RUN yarn install
 ---> Using cache
 ---> e0f3019b2ff5
Step 4/17 : COPY . ./
 ---> Using cache
 ---> e580a77b2ddd
Step 5/17 : RUN yarn build
 ---> Running in 96b4a48944c3
yarn run v1.16.0
$ tsc -p tsconfig.build.json
node_modules/@nestjs/microservices/external/redis.interface.d.ts(2,23): error TS2688: Cannot find type definition file for '
mocha'.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: Service 'app' failed to build: The command '/bin/sh -c yarn build' returned a non-zero code: 2

Incompatibility to convert entity to dto class instance with typeorm@next

After updating typeorm@next (0.3.0-alpha.24) the error below is displayed

TypeError: model is not a constructor
    at Function.toDto (utils.service.ts?:12:16)
    at ClientsEntity.toDto (abstract.entity.ts?:41:45)
    at eval (boilerplate.polyfill.ts?:7:29)
    at arrayMap (/lodash/lodash.js:639:23)
    at Function.map (/lodash/lodash.js:9554:14)
    at interceptor (/lodash/lodash.js:16997:35)
    at thru (/lodash/lodash.js:8795:14)
    at /lodash/lodash.js:4368:28
    at arrayReduce (/lodash/lodash.js:683:21)
    at baseWrapperValue (/lodash/lodash.js:4367:14)

Webpack error i18n path (/i18n/) cannot be found

I try run

npm run webpack
npm run start:prod

Error appear

Error: i18n path (/i18n/) cannot be found
    at I18nJsonParser.parseTranslations (/Volumes/SourceCode/FrameworkTest/nestjs/awesome-nest-boilerplate/node_modules/nestjs-i18n/src/lib/parsers/i18n.json.parser.ts:85:13)
npm ERR! code 1
npm ERR! path /Volumes/SourceCode/FrameworkTest/nestjs/awesome-nest-boilerplate
npm ERR! command failed
npm ERR! command sh -c node dist/main.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/thuongptitdev/.npm/_logs/2020-12-17T11_19_16_951Z-debug.log

Can I use mongodb?

Heelooo,

I am investigating this boilerplate for my project.
I want to use mongodb.
From my understanding, I think I need to install mongodb driver and enjoin it because this boilerplate is using typeorm: npm install mongodb --save https://typeorm.io/#/. Is it correct?

If it is correct, I think we should change env file

POSTGRES_HOST=clound.mongodb.com
POSTGRES_PORT=2710
POSTGRES_USERNAME=root
POSTGRES_PASSWORD=70GlDDVxbHEMllM6
POSTGRES_DATABASE=nestjs

To

DB_HOST=clound.mongodb.com
DB_PORT=2710
DB_USERNAME=root
DB_PASSWORD=70GlDDVxbHEMllM6
DB_DATABASE=nestjs

TypeError: Class constructor ProjectDto cannot be invoked without 'new'

Thank you for this project!

I was trying to add a projects endpoint so I added a project entity and projectCreate entity.

The project creation worked flawlessly but When trying to fetch the project using a query param, I get this error:

SELECT "project"."id" AS "project_id", "project"."created_at" AS "project_created_at", "project"."updated_at" AS "project_updated_at", "project"."name" AS "project_name" FROM "projects" "project" WHERE "project"."id" = $1 -- PARAMETERS: ["1"]
[Nest] 34697   - 08/15/2020, 2:24:58 PM   [ExceptionsHandler] Class constructor ProjectDto cannot be invoked without 'new' +2370ms
TypeError: Class constructor ProjectDto cannot be invoked without 'new'
    at _loop_1 (/Users/geongeorge/Work/PhotoApi/backend/bigleap/src/TransformOperationExecutor.ts:154:47)
    at TransformOperationExecutor.transform (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/class-transformer/TransformOperationExecutor.js:260:17)
    at ClassTransformer.classToPlain (/Users/geongeorge/Work/PhotoApi/backend/bigleap/src/ClassTransformer.ts:21:25)
    at Object.classToPlain (/Users/geongeorge/Work/PhotoApi/backend/bigleap/src/index.ts:17:29)
    at ClassSerializerInterceptor.transformToPlain (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js:40:32)
    at ClassSerializerInterceptor.serialize (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js:36:20)
    at MapSubscriber.project (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js:27:49)
    at MapSubscriber._next (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/rxjs/src/internal/operators/map.ts:84:29)
    at MapSubscriber.Subscriber.next (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/rxjs/src/internal/Subscriber.ts:99:12)
    at MergeMapSubscriber.notifyNext (/Users/geongeorge/Work/PhotoApi/backend/bigleap/node_modules/rxjs/src/internal/operators/mergeMap.ts:166:22)

I haven't made many changes to the boilerplate.

project.entity.ts

import { Column, Entity } from 'typeorm';

import { AbstractEntity } from '../../common/abstract.entity';
import { ProjectDto } from './dto/ProjectDto';

@Entity({ name: 'projects' })
export class ProjectEntity extends AbstractEntity<ProjectDto> {
    @Column({ nullable: true })
    name: string;

    dtoClass = ProjectDto;
}

projectDto.ts

'use strict';
import { ApiProperty } from '@nestjs/swagger';

import { ProjectEntity } from '../project.entity';
import { AbstractDto } from './../../../common/dto/AbstractDto';

export class ProjectDto extends AbstractDto {
    @ApiProperty()
    name: string;

    constructor(project: ProjectEntity) {
        super(project);
        this.name = project.name;
    }
}

project.service.ts

...
findOne(findData: any) {
        return this.projectRepository.findOne(findData);
    }
...

project.repository.ts

import { Repository } from 'typeorm';
import { EntityRepository } from 'typeorm/decorator/EntityRepository';

import { ProjectEntity } from './project.entity';

@EntityRepository(ProjectEntity)
export class ProjectRepository extends Repository<ProjectEntity> {}

I'm not sure why the user to works and why not the project dto.

The Fix

I'm not sure if this is the right way but I saw someone else facing this issue.
This did fix my issue but it adds the @Exclude() decorator to 'dtoClassparam inAbstractEntity`

The fix is: nestjsx/crud#411 (comment)

Download PDF

Hi, what if i want to download a pdf file from a controller ? is there any good example to implement in this boilerplate? Thnks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.