Skip to content

JefferyHus/tanpo

Repository files navigation

Tanpo Boilerplate Logo

API

Introducing "Tanpo" Boilerplate: The Bedrock of Secure and Stable Development

The "Tanpo" boilerplate, inspired by the Japanese word 担保 (Tanpo) meaning security and collateral, is engineered to offer a robust foundation for building reliable applications.

Additional Documentation

For more detailed information on specific aspects of the "Tanpo" boilerplate, refer to the following documentation:

  • CLI: Detailed instructions on using the command-line interface scripts.
  • Controller: Guidelines and best practices for controller implementation.
  • Error Handling: Guidelines and best practices for error handling.
  • SCRIPTS: Detailed information on the scripts available in the package.json file.
  • UTILS: Detailed information on the utility functions available in the utils folder.

Stack

  • TypeScript
  • Node.js
  • Prisma 2
  • PostgreSQL
  • Express

Installation

Ensure the following software is installed on your PC:

  • Docker (>= 20.*)
  • Node.js (>= 16.*)
  • NPM (>= 8..)

First, copy .env.example to .env and update values. Set DEBUG_MODE in .env to:

- 'sentry'
- 'server'
- '*'

Then, run npm install. To build the project for Docker, use:

-> ~ npm run build
-> ~ npm run watch  # Builds and watches edits

Make the script ./bin/init.sh executable:

-> ~ chmod +x ./bin/init.sh

Run ./bin/init.sh to complete the setup.

Init (Options)

./bin/init.sh can run migrations:

-> ~ ./bin/init.sh MIGRATE=true MIGRATE_NAME=init PORT=3000

Script Options

  • NODE_ENV: Application environment (default: development)
  • MIGRATE: Boolean for running migrations (default: false)
  • MIGRATE_NAME: Migration file name for Prisma
  • PORT: Application port (default: 3000)

Development

Work mainly in /modules/ with the following files:

  • [module_name].module.ts
  • [module_name].repository.ts
  • [module_name].service.ts
  • [module_name].controller.ts

For detailed guidelines on module development, refer to the CONTROLLER documentation.

Syntax

[module_name].module.ts

@Injector({
  dependencies: ['Services'],
  controllers: ['Controllers'],
})
export class YourModule {}

[module_name].repository.ts

@Service()
export class YourRepository extends Repository<YourEntity> {
  constructor(prisma: PrismaClient) {
    super(prisma, 'table_name');
  }
}

[module_name].service.ts

@Service()
export class YourService {
  constructor(private readonly your: YourRepository) {}
}

[module_name].controller.ts

@Service()
@Controller('/path')
export class YourController {
  constructor(private readonly yourService: Your Service) {}
}

To-Do List

Documentation

  • Add documentation for the core features (classes, decorators, and types)
  • Add service documentation
  • Add repository documentation
  • Add seeding scripts documentation
  • Add job scheduler documentation

Implementation

  • Implement the interceptor logic
  • Implement WebSocket logic
  • Implement RPC logic
  • Implement testing logic (add a few examples)

Maintenance

  • Clean the core folder

About

Tanpo: the ultimate boilerplate for all your development needs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published