Skip to content

app-generator/api-server-nodejs

Repository files navigation

Express/Nodejs Starter with JWT Authentication, OAuth (Github), and SQLite persistence - Provided by AppSeed. Authentication Flow uses json web tokens via Passport library - passport-jwt strategy.

πŸ‘‰ Support via Discord & Email provided by AppSeed.


Features

  • πŸš€ Full-stack ready with React Soft Dashboard
  • βœ… Simple, intuitive codebase - can be extended with ease.
  • βœ… TypeScript, Joy for validation
  • βœ… Stack: NodeJS / Express / SQLite / TypeORM
  • βœ… Auth: Passport / passport-jwt strategy
  • πŸ†• OAuth for Github

Tested with:

NodeJS NPM YARN
v18.0.0 βœ… βœ…
v16.10.0 βœ… βœ…
v14.15.0 βœ… βœ…

Nodejs API Server - Open-source Nodejs Starter provided by AppSeed.


✨ Requirements


✨ How to use the code

πŸ‘‰ Step 1 - Clone the project

$ git clone https://github.com/app-generator/api-server-nodejs.git $ cd api-server-nodejs

πŸ‘‰ Step 2 - Install dependencies via Yarn

$ npm i // OR $ yarn

πŸ‘‰ Step 3 - Run the SQLite migration via TypeORM

$ npm run typeorm migration:run // OR $ yarn typeorm migration:run 

πŸ‘‰ Step 4 - Edit the .env using the template .env.sample.

PORT=5000 # API PORT SQLITE_PATH=./database.db # Path to the SQLite database file SECRET="Whatever-STRONG" # Secret for sensitive data hashing  # Same as for React APP GITHUB_OAUTH_CLIENT_ID= ... # Github OAuth secret  GITHUB_OAUTH_CLIENT_SECRET= ... # Github OAuth secret

πŸ‘‰ Step 5 - Start the API server (development mode)

$ npm run dev // OR $ yarn dev

πŸ‘‰ Step 6 - Production Build (files generated in build directory)

$ yarn build

πŸ‘‰ Step 7 - Start the API server for production (files served from build/index.js)

$ yarn start

The API server will start using the PORT specified in .env file (default 5000).


✨ Codebase Structure

< ROOT / src > | |-- config/ | |-- config.ts # Configuration  | |-- passport.ts # Define Passport Strategy  | |-- migration/ | |-- some_migration.ts # database migrations | |-- models/ | |-- activeSession.ts # Sessions Model (Typeorm)  | |-- user.ts # User Model (Typeorm)  | |-- routes/ | |-- users.ts # Define Users API Routes | | |-- index.js # API Entry Point |-- .env # Specify the ENV variables | |-- ************************************************************************

✨ SQLite Path

The SQLite Path is set in .env, as SQLITE_PATH


✨ Database migration

πŸ‘‰ Generate migration:

$ yarn typeorm migration:generate -n your_migration_name

πŸ‘‰ Run migration:

$ yarn typeorm migration:run

✨ API

For a fast set up, use this POSTMAN file: api_sample

πŸ‘‰ Register - api/users/register

POST api/users/register Content-Type: application/json { "username":"test", "password":"pass", "email":"test@appseed.us" } 

πŸ‘‰ Login - api/users/login

POST /api/users/login Content-Type: application/json { "password":"pass", "email":"test@appseed.us" } 

πŸ‘‰ Logout - api/users/logout

POST api/users/logout Content-Type: application/json authorization: JWT_TOKEN (returned by Login request) { "token":"JWT_TOKEN" } 

✨ Update role for existing user

πŸ‘‰ Using npm:

$ npm run update-role [user_id] [role_id (optional)]


πŸ‘‰ Using yarn:

$ yarn update-role [user_id] [role_id (optional)]

  • [user_id] is the id of existing user to update role for.
  • [role_id] is the id of role: 1 for admin & 2 for user. If you don't provide any role_id it would update user to admin role.

✨ Run the Tests (minimal suite)

$ npm run test // OR $ yarn test 

✨ Credits

This software is provided by the core AppSeed team with an inspiration from other great NodeJS starters:



Node JS API Server - provided by AppSeed App Generator