pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/app-generator/api-server-nodejs

"all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-0b53c3bf3393e2ed.css" /> GitHub - app-generator/api-server-nodejs: Nodejs API Server - Express / SQLite / TypeORM | AppSeed
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

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy