Giter Club home page Giter Club logo

nodejs-web-typescript's Introduction

Express + GraphQL

Build Status dependencies Status

Requitements

  • Node v15.2.1
  • PostgreSQL 13.1

To install:

  • Clone this project
  • Create .env file cp .env.example .env
  • Run yarn install (Installs all the dependencies for your project)
  • Run postgress: postgres -D /usr/local/var/postgres
    • You can also run the database in docker with docker-compose up
  • Run yarn typeorm migration:run (Creates all of the database tables)

Faker Data

To populate the DB with faker data. Using typeorm-seeding

  • yarn seeding seed

Run the server

mutation {
  login(email:"[email protected]", password:"Hola12345") {
    token
  }
}
  • Add the token in HTTP HEADERS tab to run the private queries:
{
  "Authorization": "Bearer ${token}"
}

Contribute

Before to send a PR please do it:

  • Run yarn test to run the test in dev environment.
  • Run yarn build to ensure build is working.
  • Run yarn prod:test to run the test in with the js files.
  • Run yarn eslint --fix to validate the code style.
  • Run yarn ejslint --fix to validate the ejs files.

Email Debug

nodejs-web-typescript's People

Contributors

albertcito avatar ejaramillo avatar molleer avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

molleer

nodejs-web-typescript's Issues

user_token

  • user_token_id
  • user_id
  • name
  • revoked
  • expires_at
  • last_ip
  • last_used_at

Format for Global error

  • API and GraphQL should send the same error format in Validation, Message and Authorization.

Roles

  • Add tables role, and user_role
  • Add mutation CRUD role

Update Token

rename it as user_token

  • Add column user_id as FK
  • Update Entity

Roles rights

  • Mutation to add or remove user_role from a user

User Update Class

  • File src/graphql/public/user/userUpdate.ts rename to userBasicUpdate. Change class name and query name.
  • Create UserBasicUpdate.ts class in folder logic/user
  • Copy from src/graphql/public/user/userUpdate.ts rename it as userBasicUpdate the class and the function.
class UserBasicUpdate {
  constructor(user: User) {
  }
  // Use decorator to validate this function
  save( firstName:string, lastName: string) {
  }
}

Use this class in src/graphql/public/user/userBasicUpdate.ts mutation
For decorator example here: src/util/db/paginate.ts
branch name: feature/37-user-update-class

token

Table

Run yarn typeorm migration:create -n Token. Documentation here: Type ORM
// src/db/migrations

  • token_id
  • token: string
  • type: string
  • used_at: timestamp
  • expired_at: timestamp
  • created_by: integre
  • updated_by: integre
  • created_at: timestamp
  • updated_at: timestamp

Entity

// src/db/entities/Token.ts

  • token_id -> tokenID
  • token
  • type
  • used_at -> usedAt
  • expired_at -> expiredAt

git checkout -b feature/2-token

Translations and Text table and Entities

Table translation

  • translation_id: PK
  • code: varchar

Table text

  • text_id: FK
  • translation_id: FK
  • lang_id: FK
  • text: varchar

See this file /src/db/migrations/1601770752669-OauthAccessToken.ts as example to create FK.

Roles middleware

  • Add middleware for mutations or queries can be used only for super_user

UpdateProfile

  1. mutation profileBasicUpdate(firstName, lastName)
  2. Auth:data().user.userID to get the session user ID (util/session/Auth)
  3. Call function UserBasicUpdate class to update the profile

branch: feature/38-update-profile

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.