Api server nodejs
Nodejs API Server - Express / SQLite / TypeORM | AppSeed
[Express/Nodejs Starter](https://appseed.us/product/soft-ui-dashboard/api-server-nodejs/react/) with `JWT Authentication`, OAuth (Github), and **SQLite** persistence - Provided by `AppSeed`. Authentication Flow uses `json web tokens` via Passport library - `passport-jwt` strategy. The project is written primarily in TypeScript, distributed under the Other license, first published in 2019. Key topics include: api-node, api-nodejs, appseed, appseed-sample, node-api.
Nodejs API Server
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.
<br />👉 Support via Discord & Email provided by
AppSeed.
Features
- 🚀
Full-stack readywith React Soft Dashboard - ✅ Simple, intuitive codebase - can be extended with ease.
- ✅
TypeScript,Joyfor validation - ✅ Stack: NodeJS / Express / SQLite / TypeORM
- ✅ Auth: Passport /
passport-jwtstrategy - 🆕
OAuthfor Github
Tested with:
| NodeJS | NPM | YARN |
|---|---|---|
v18.0.0 | ✅ | ✅ |
v16.10.0 | ✅ | ✅ |
v14.15.0 | ✅ | ✅ |

✨ Requirements
<br />✨ How to use the code
👉 Step 1 - Clone the project
<br />bash$ git clone https://github.com/app-generator/api-server-nodejs.git $ cd api-server-nodejs
👉 Step 2 - Install dependencies via
Yarn
<br />bash$ npm i // OR $ yarn
👉 Step 3 - Run the SQLite migration via TypeORM
$ npm run typeorm migration:run
// OR
$ yarn typeorm migration:run
<br />
👉 Step 4 - Edit the
.envusing the template.env.sample.
<br />envPORT=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)
<br />bash$ npm run dev // OR $ yarn dev
👉 Step 6 - Production Build (files generated in
builddirectory)
<br />bash$ yarn build
👉 Step 7 - Start the API server for production (files served from
build/index.js)
bash$ yarn start
The API server will start using the PORT specified in .env file (default 5000).
✨ Codebase Structure
<br />bash< 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:
bash$ yarn typeorm migration:generate -n your_migration_name
👉 Run migration:
<br />bash$ 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"
}
<br />
👉 Login -
api/users/login
POST /api/users/login
Content-Type: application/json
{
"password":"pass",
"email":"test@appseed.us"
}
<br />
👉 Logout -
api/users/logout
POST api/users/logout
Content-Type: application/json
authorization: JWT_TOKEN (returned by Login request)
{
"token":"JWT_TOKEN"
}
<br />
✨ 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
<br />
✨ Credits
This software is provided by the core AppSeed team with an inspiration from other great NodeJS starters:
- Initial verison - coded by Teo Deleanu
- Hackathon Starter - A truly amazing boilerplate for Node.js apps
- Node Server Boilerplate - just another cool starter
- React NodeJS Argon - released by Creative-Tim and ProjectData
Node JS API Server - provided by AppSeed App Generator
Contributors
Showing top 3 contributors by commit count.
