A NEST JS SKELETON BACKEND REST API FOR STARTER KIT PROJECT
This is a starter kit project to quickly setup and start working on a new Nest JS REST API application. This is a boilerplate with common standard features like authentication, roles management, file management, and more.
This project will improve development process instead of build a nest js app from scratch, please read the complete documentation to know basic fundamental of nest framework.
- Nestjs v9.x
- Nestjs platform-fastify v9.x
- Passport Authentication
- passport-local
- passport-jwt
- Postgres
- Type ORM
- Multi Language Using nestjs-i18n
- Joi Validation
- Handlebars (View engine for email templating)
- Node Mailer
- Multer - uploading file
- and more
- Basic Authentication
- Login
- Register
- Forgot Password
- Reset Password
- Email Verification
- Verify Account
- Password Confirmation
- Whoami
- User Management
- CRUD
- Add User Role
- Remove User Role
- Role Management
- CRUD
- File Management
- Upload
- Download
- Preview
- List of User Files
- Modular system and clean architecture
- Secure app HTTP headers using helmet
- Multi storage filesystem (local, ftp)
- Mailer Sender
- Fully coded with Typescript
- Database Migration using typeorm migration
- Database seeders
- Rate limiter
- etc
- Node.JS 16.x
- Postgre SQL
- SMTP Mail Server
git clone https://github.com/indra-yana/nestjs-starter.git
cp .env.example .env
setup .env
create database
npm install
npm run migration:up
npm run seed:up
npm run start // start development server
npm run start:dev // start development server in watch mode
npm run build // build the project
npm run start:prod // start production server
visit localhost:3000
done! npm run entity:create entity-name // Create typeorm entity
npm run seed:create seeder-name // Create seeder file. ex: npm run seed:create Users_Table_Seeder [Title case format]
npm run seed:up // Run seeder file
npm run seed:down // Revert seeder file
npm run seed:show // Show seeder file
npm run migration:create migration-name // Create migration file. ex: npm run seed:create Create_Users_Table [Title case format]
npm run migration:up // Run migration file
npm run migration:down // Revert migration file
npm run build // build the project
npm run start:dev // start development server
npm run start:prod // start development serverhttp://localhost:3000{
"Content-Type": "application/json", // Optional for some route
"Accept": "application/json", // Accept response as json
"Accept-Language": "id", // id|en
"Authorization": "bearer_token" // for authenticated route
} # Query params for pagination
# ex: /api/v1/user/list?page=1&limit=10
page: numeric
limit: numericSuccess Response :
{
"code": 200,
"message": "Success Message",
"data": {
"success_data"
}
}Error Response :
{
"code": 500,
"message": "Error Message",
"error": {
"error_data"
}
}| Name | Method | Path |
|---|---|---|
| Login | POST | /api/v1/auth/login |
| Register | POST | /api/v1/auth/register |
| Password Request | POST | /api/v1/auth/password/email |
| Password Reset | PUT | /api/v1/auth/password/reset |
| Password Confirmation | POST | /api/v1/auth/password/confirm |
| Verify Resend | POST | /api/v1/auth/verify/resend |
| Verify | PUT | /api/v1/auth/verify |
| Whoami | GET | /api/v1/auth/whoami |
| Create User | POST | /api/v1/user/create |
| Update User | PUT | /api/v1/user/update |
| Delete User | DELETE | /api/v1/user/delete |
| Add User Role | POST | /api/v1/user/role/add |
| Remove User Role | DELETE | /api/v1/user/role/remove |
| Show User | GET | /api/v1/user/show |
| List User | GET | /api/v1/user/list |
| Create Role | POST | /api/v1/role/create |
| Update Role | PUT | /api/v1/role/update |
| Delete Role | DELETE | /api/v1/role/delete |
| Show Role | GET | /api/v1/role/show |
| List Role | GET | /api/v1/role/list |
| Upload | POST | /api/v1/file/upload |
| Download | GET | /api/v1/file/download/{file_id} |
| Preview | GET | /api/v1/file/preview/{file_id} |
| User Files | GET | /api/v1/file/user-files |
Licensed under the MIT License - see the LICENSE file for details.