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