Coder Social home page Coder Social logo

mucahitnezir / express-starter Goto Github PK

View Code? Open in Web Editor NEW
107.0 3.0 41.0 518 KB

๐Ÿš€ A boilerplate for Node.js api projects with Express.js, Sequelize, PostgreSQL and ES6+

Home Page: https://express-starter.mucahitnezir.com/docs

License: MIT License

JavaScript 98.56% Dockerfile 1.44%
express-app express-api sequelize-orm es6-modules awesome-nodejs express-boilerplate boilerplate swagger sequelize

express-starter's Introduction

Node.js CI

Express Starter

This project was created to be a template when starting a new express.js project.

Run on Google Cloud

Features

  1. ES6+ features with babel (including es6 import/export feature).
  2. SQL database implementation with Sequelize v6 for postgres dialect (you can change postgresql anytime).
  3. Compatible with 12 factor app.
  4. Including authentication system with rest api endpoints.
  5. Linting with eslint (airbnb config).
  6. Implemented nodemailer. If you are in development or test mode, you use test smtp account. In production mode, you use real smtp server. For more info, browse src/helpers/mail.js file.
  7. Production ready Dockerfile.
  8. Test cases written with mocha and chai.
  9. Implemented sentry error tracking.
  10. Api documentation with swagger.
  11. Records are never deleted from the database. They are marked as deleted.
  12. Cache management with redis.
  13. One click deploy to Google Cloud Run.

Api Documentation

Api documentation of this project was created with swagger.
You can access the swagger configuration file from this link.
You can also discover the interactive documentation by going to /docs when you run the application.

Database Selection

This project is compatible with sql-based databases. You can change default dialect (postgres) in anytime. To do this, firstly select your database from the table below. Modify dialect property in src/config/sequelize.js and install required npm package(s) for this database.

For more info, visit sequelize docs

Note: The default and active database is postgresql. If you want to use postgresql in your project, you don't need to make any changes.

Database Dialect Required npm Package(s)
MySQL mysql yarn add mysql2
MariaDB mariadb yarn add mariadb
PostgreSQL postgres yarn add pg pg-hstore
SQLite sqlite yarn add sqlite3
Microsoft SQL Server mssql yarn add tedious

Usage of sequelize-cli

With sequelize-cli package, you can manage model, migration and seed files. You can find more information with document.

Installation

  1. Firstly, you have to install npm packages with yarn install command.
  2. Create empty postgres database.
  3. Create .env file by copying .env.sample file in root directory.
  4. Modify .env file.
  5. Use yarn run db:migrate command to create database tables.
  6. Finally, your app will run successfully with yarn run start:dev command.

Authentication Endpoints

Route HTTP Verb Request Body Description
/auth/register POST {"firstName": "John", "lastName": "Doe", "email": "[email protected]", "password": "123456"} Create new user.
/auth/login POST {"email": "[email protected]", "password": "123456"} Login endpoint.
/auth/me GET Empty Fetch current user.
/auth/me PUT {"firstName": "John", "lastName": "Doe", "email": "[email protected]"} Update current user.
/auth/me DELETE Empty Delete current user.
/auth/me/password PUT {"current": "current-password", "password": "new-password"} Update password of current user.

Contribution

Anyone interested in the project can contribute to this repository. To do this, first fork the repository. Then make the changes in your repository. Finally, send a pull request to this repository.

License

Express Starter is licensed under the MIT license.

express-starter's People

Contributors

dependabot[bot] avatar maximelafarie avatar mucahitnezir 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

express-starter's Issues

Initialization failed while creating first user

Firstly thank you so much for creating a such starter. I'm preparing some stuff around it that may result in a future PR ๐Ÿ˜‰.

The issue is that even if the Postgres starts well, when I want to make an API call to create the first user /auth/register (c.f. documentation about routes), I got the following error :

postgres         | 2021-06-16 08:33:37.651 UTC [50] ERROR:  relation "users" does not exist at character 13
postgres         | 2021-06-16 08:33:37.651 UTC [50] STATEMENT:  INSERT INTO "users" ("firstName","lastName","email","password","updatedAt","createdAt") VALUES ($1,$2,$3,$4,$5,$6) RETURNING *;
node-api    | Executing (default): INSERT INTO "users" ("firstName","lastName","email","password","updatedAt","createdAt") VALUES ($1,$2,$3,$4,$5,$6) RETURNING *;
node-api    | POST /auth/register 500 97.217 ms - 1339

So maybe could you push into the repo a "starting init" SQL file to run with the Postgres at starting because the database is empty at first start and btw it throws errors.

Cheers ๐Ÿ––

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.