init
parents
Showing
.dockerignore
0 → 100644
.env.example
0 → 100644
.eslintrc.js
0 → 100644
.gitignore
0 → 100644
.husky/commit-msg
0 → 100644
.husky/pre-commit
0 → 100644
.prettierrc
0 → 100644
Dockerfile
0 → 100644
README.md
0 → 100644
config/commitlint.config.js
0 → 100644
config/lint-staged.config.js
0 → 100644
docker-compose.yml
0 → 100644
lib/build/index.cjs
0 → 100644
lib/generator/api/index.js
0 → 100644
nodemon.json
0 → 100644
package.json
0 → 100644
| { | |||
| "name": "backend-template", | |||
| "version": "1.0.0", | |||
| "description": "A flexible and modular backend template built with TypeScript, Node.js, and Express.js for rapid API development", | |||
| "main": "dist/index.js", | |||
| "engines": { | |||
| "node": ">=20.1.0", | |||
| "npm": ">=10.7.0" | |||
| }, | |||
| "scripts": { | |||
| "-----------------DEVELOPMENT------------------": "", | |||
| "dev": "cross-env NODE_ENV=development nodemon", | |||
| "start:dev": "cross-env NODE_ENV=development nodemon", | |||
| "-----------------BUILDING------------------": "", | |||
| "build": "node lib/build/index.cjs", | |||
| "build:dev": "cross-env NODE_ENV=development npm run build", | |||
| "build:staging": "cross-env NODE_ENV=staging npm run build", | |||
| "build:prod": "cross-env NODE_ENV=production npm run build", | |||
| "clean": "rimraf dist && rimraf storage\\logs\\*.log", | |||
| "clean-install": "rimraf node_modules pnpm-lock.yaml && pnpm install", | |||
| "-----------------PRODUCTION------------------": "", | |||
| "start": "cross-env NODE_ENV=production node dist/index.js", | |||
| "start:staging": "cross-env NODE_ENV=staging node dist/index.js", | |||
| "start:prod": "cross-env NODE_ENV=production node dist/index.js", | |||
| "-----------------TESTING------------------": "", | |||
| "test": "node --test --require ts-node/register tests/*.test.ts", | |||
| "test:watch": "node --test --watch --require ts-node/register tests/*.test.ts", | |||
| "-----------------CODE QUALITY------------------": "", | |||
| "lint": "eslint src/**/*.ts", | |||
| "lint:fix": "eslint src/**/*.ts --fix", | |||
| "format": "prettier . --write", | |||
| "prettier:fix": "prettier . --write", | |||
| "type-check": "tsc --noEmit", | |||
| "lint-staged": "lint-staged -c ./config/lint-staged.config.js -v", | |||
| "-----------------GENERATOR------------------": "", | |||
| "gen-api": "cross-env NODE_ENV=development node lib/generator/api --crud", | |||
| "gen-api-bulk": "cross-env NODE_ENV=development node lib/generator/api --bulk", | |||
| "gen-providers": "cross-env NODE_ENV=development node lib/generator/sequelize-auto/index.js mode=providers-from-template", | |||
| "gen-providers:force": "cross-env NODE_ENV=development node lib/generator/sequelize-auto/index.js mode=providers-from-template --force", | |||
| "gen-db": "cross-env NODE_ENV=development node lib/generator/sequelize-auto/index.js mode=full", | |||
| "gen-db:force": "cross-env NODE_ENV=development node lib/generator/sequelize-auto/index.js mode=full --force", | |||
| "gen-db:clean": "rimraf src/models src/providers && npm run gen-db", | |||
| "gen-routes": "cross-env NODE_ENV=development node lib/generator/routes", | |||
| "-----------------DATABASE------------------": "", | |||
| "db:create": "npx sequelize-cli db:create", | |||
| "db:drop": "npx sequelize-cli db:drop", | |||
| "db:migrate": "npx sequelize-cli db:migrate", | |||
| "db:migrate:undo": "npx sequelize-cli db:migrate:undo", | |||
| "db:seed": "npx sequelize-cli db:seed:all", | |||
| "db:seed:undo": "npx sequelize-cli db:seed:undo:all", | |||
| "db:reset": "npm run db:drop && npm run db:create && npm run db:migrate && npm run db:seed", | |||
| "-----------------DOCKER------------------": "", | |||
| "docker:build": "docker build -t backend-template .", | |||
| "docker:build:dev": "docker build --target development -t backend-template:dev .", | |||
| "docker:build:prod": "docker build --target production -t backend-template:prod .", | |||
| "docker:run": "docker run -p 3000:3000 --env-file .env backend-template", | |||
| "docker:dev": "NODE_ENV=development docker-compose up --build", | |||
| "docker:dev:detach": "NODE_ENV=development docker-compose up --build -d", | |||
| "docker:prod": "NODE_ENV=production docker-compose up --build -d", | |||
| "docker:stop": "docker-compose down", | |||
| "docker:logs": "docker-compose logs -f app", | |||
| "docker:clean": "docker-compose down -v --remove-orphans && docker system prune -f", | |||
| "-----------------UTILITIES------------------": "", | |||
| "swagger:generate": "node -e \"const swaggerJSDoc = require('swagger-jsdoc'); const fs = require('fs'); const config = require('./src/templates/swagger/config'); const specs = swaggerJSDoc(config); fs.writeFileSync('./storage/swagger/swagger-output.json', JSON.stringify(specs, null, 2)); console.log('Swagger documentation generated at ./storage/swagger/swagger-output.json');\"", | |||
| "copyEnv": "node -e \"require('fs').copyFileSync('.env', 'dist/.env')\"", | |||
| "copyTemplates": "node -e \"require('fs').cpSync('./src/templates', './dist/templates', {recursive: true})\"", | |||
| "copyConfig": "node -e \"require('fs').cpSync('./src/config', './dist/config', {recursive: true})\"", | |||
| "copyAssets": "npm run copyConfig" | |||
| }, | |||
| "keywords": [ | |||
| "typescript", | |||
| "nodejs", | |||
| "express", | |||
| "api", | |||
| "template", | |||
| "backend", | |||
| "rest" | |||
| ], | |||
| "author": "MeU Team", | |||
| "license": "ISC", | |||
| "dependencies": { | |||
| "@types/joi": "^17.2.3", | |||
| "bcryptjs": "^3.0.3", | |||
| "cli-color": "^2.0.4", | |||
| "compression": "^1.8.1", | |||
| "cookie-parser": "^1.4.7", | |||
| "cors": "^2.8.5", | |||
| "dayjs": "^1.11.19", | |||
| "dotenv": "^17.2.3", | |||
| "express": "^4.22.1", | |||
| "express-automatic-routes": "^1.1.0", | |||
| "express-validator": "^7.3.1", | |||
| "joi": "^18.0.2", | |||
| "jsonwebtoken": "^9.0.3", | |||
| "module-alias": "^2.2.3", | |||
| "multer": "^2.0.2", | |||
| "mustache": "^4.2.0", | |||
| "mv": "^2.1.1", | |||
| "nconf": "^0.13.0", | |||
| "node-schedule": "^2.1.1", | |||
| "nodemailer": "^6.10.1", | |||
| "pg": "^8.16.3", | |||
| "sequelize": "^6.37.7", | |||
| "sharp": "^0.34.5", | |||
| "swagger-jsdoc": "^6.2.8", | |||
| "swagger-ui-express": "^5.0.1", | |||
| "ts-import": "5.0.0-beta.1" | |||
| }, | |||
| "optionalDependencies": { | |||
| "sequelize-auto": "^0.8.8" | |||
| }, | |||
| "devDependencies": { | |||
| "@commitlint/cli": "^20.2.0", | |||
| "@commitlint/config-conventional": "^20.2.0", | |||
| "@types/bcrypt": "^6.0.0", | |||
| "@types/bcryptjs": "^2.4.6", | |||
| "@types/cli-color": "^2.0.6", | |||
| "@types/compression": "^1.8.1", | |||
| "@types/cookie-parser": "^1.4.10", | |||
| "@types/cors": "^2.8.19", | |||
| "@types/express": "^5.0.6", | |||
| "@types/jsonwebtoken": "^9.0.10", | |||
| "@types/module-alias": "^2.0.4", | |||
| "@types/multer": "^2.0.0", | |||
| "@types/mustache": "^4.2.6", | |||
| "@types/mv": "^2.1.4", | |||
| "@types/nconf": "^0.10.7", | |||
| "@types/node": "^24.10.1", | |||
| "@types/node-schedule": "^2.1.8", | |||
| "@types/nodemailer": "^7.0.4", | |||
| "@types/sharp": "^0.32.0", | |||
| "@types/swagger-jsdoc": "^6.0.4", | |||
| "@types/swagger-ui-express": "^4.1.8", | |||
| "@typescript-eslint/eslint-plugin": "^8.48.1", | |||
| "@typescript-eslint/parser": "^8.48.1", | |||
| "chalk": "^5.6.2", | |||
| "cross-env": "^10.1.0", | |||
| "esbuild": "^0.27.1", | |||
| "eslint": "^9.39.1", | |||
| "husky": "^9.1.7", | |||
| "jsonminify": "^0.4.2", | |||
| "lint-staged": "^16.2.7", | |||
| "nodemon": "^3.1.11", | |||
| "prettier": "^3.7.4", | |||
| "rimraf": "^6.1.2", | |||
| "ts-node": "^10.9.2", | |||
| "typescript": "^5.9.3" | |||
| }, | |||
| "pnpm": { | |||
| "overrides": { | |||
| "multer": "^2.0.0", | |||
| "glob": "^10.0.0", | |||
| "inflight": "^1.0.6", | |||
| "lodash.get": "^4.4.2", | |||
| "lodash.isequal": "^4.5.0" | |||
| } | |||
| } | |||
| } |
pnpm-lock.yaml
0 → 100644
This source diff could not be displayed because it is too large. You can view the blob instead.
sql/auth-schema.sql
0 → 100644
src/constants/index.ts
0 → 100644
src/index.ts
0 → 100644
src/interfaces/IApi.ts
0 → 100644
src/interfaces/IEnv.ts
0 → 100644
src/interfaces/IProvider.ts
0 → 100644
src/middlewares/auth.ts
0 → 100644
src/middlewares/response.ts
0 → 100644
src/middlewares/validator.ts
0 → 100644
src/models/ActiveUser.ts
0 → 100644
src/models/Permission.ts
0 → 100644
src/models/Role.ts
0 → 100644
src/models/RolePermission.ts
0 → 100644
src/models/User.ts
0 → 100644
src/models/UserAuth.ts
0 → 100644
src/models/UserRole.ts
0 → 100644
src/models/UserRoleDetail.ts
0 → 100644
src/models/UserSession.ts
0 → 100644
src/models/init-models.ts
0 → 100644
src/root.ts
0 → 100644
src/server.ts
0 → 100644
src/services/authService.ts
0 → 100644
src/services/mailService.ts
0 → 100644
src/utils/authUtils.ts
0 → 100644
tsconfig.json
0 → 100644
Please register or sign in to comment