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
This diff is collapsed.
config/commitlint.config.js
0 → 100644
config/lint-staged.config.js
0 → 100644
docker-compose.yml
0 → 100644
This diff is collapsed.
lib/build/index.cjs
0 → 100644
lib/generator/api/index.js
0 → 100644
This diff is collapsed.
This diff is collapsed.
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 diff is collapsed.
sql/auth-schema.sql
0 → 100644
This diff is collapsed.
src/constants/index.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/index.ts
0 → 100644
This diff is collapsed.
src/interfaces/IApi.ts
0 → 100644
This diff is collapsed.
src/interfaces/IEnv.ts
0 → 100644
This diff is collapsed.
src/interfaces/IProvider.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/middlewares/auth.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/middlewares/response.ts
0 → 100644
This diff is collapsed.
src/middlewares/validator.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/models/ActiveUser.ts
0 → 100644
This diff is collapsed.
src/models/Permission.ts
0 → 100644
This diff is collapsed.
src/models/Role.ts
0 → 100644
This diff is collapsed.
src/models/RolePermission.ts
0 → 100644
This diff is collapsed.
src/models/User.ts
0 → 100644
This diff is collapsed.
src/models/UserAuth.ts
0 → 100644
This diff is collapsed.
src/models/UserRole.ts
0 → 100644
This diff is collapsed.
src/models/UserRoleDetail.ts
0 → 100644
This diff is collapsed.
src/models/UserSession.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
src/models/init-models.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/root.ts
0 → 100644
This diff is collapsed.
src/server.ts
0 → 100644
This diff is collapsed.
src/services/authService.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/services/mailService.ts
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/utils/authUtils.ts
0 → 100644
This diff is collapsed.
tsconfig.json
0 → 100644
This diff is collapsed.
Please register or sign in to comment