A BackStage Api for Shopping System.
- System Requirement
- Steps of installation
- Available Scripts
- Docker Deployment
- Folder Definition
- Folder Structure
- Database
- SQLite:v3.40.0
- Dependencies
- node.js:v20.9.0
- npm:v10.2.2
- fastify:v4.24.3
- prisma:v5.2.0
- @prisma/client:v5.2.0
- Test
- DevOps
- Docker:v20.10.18
Reference the file .env.example
and add .env
into the root of project.
Create tables in the database.
In the project directory, you can run:
Open http://${process.env.IP_ADDRESS}:${process.env.PORT}
to view it in the browser.
ex:http://127.0.0.1:3000
ex:npm run migration:generate Init
\
According to the script for volume mount -v /var/log/fastify_shopping_api:/src/logs
. The following are steps for creation.
docker run -d --name fastify_shopping_api -p 3000:3000 --restart=always -v /var/log/fastify_shopping_api:/src/logs -v /home/mis/fastify_shopping_api/.env:/src/.env fastify_shopping_api:1.0.0
-
config
- Config files for casbin
-
logs
- Logger files for info and error
-
prisma/schema.prisma
- Table schema provided by prisma
-
prisma/migrations
- Migrations for create data table
-
src/api
- Usage of api for project
-
src/base
- Modular code placement for project calls
-
src/casbin
- Permission config for ABAC/RBAC
-
src/modules
- API for all modules, include controller and service and validator
-
src/ormService
- Client service for prisma
-
src/plugin
- Plugin for framework Fastify
-
src/routes
- API routes
-
src/utils
- Contains utility modules that can be used across project
-
test
- Unit tests for api and plugin
│ .dockerignore
│ .env
│ .env.example
│ .eslintrc.json
│ .gitignore
│ .prettierignore
│ .prettierrc.json
│ app.js
│ dockerfile
│ jest.config.js
│ package-lock.json
│ package.json
│ README.md
│ sqlite.db
│
├─config
│ casbinConfig.js
│
├─logs
│ ├─error
│ │
│ └─info
│
├─prisma
│ └─ schema.prisma
│
├─src
│ ├─api
│ │ dateTimeApi.js
│ │
│ ├─base
│ │ base.controller.js
│ │ base.response.js
│ │ base.result.js
│ │
│ ├─casbin
│ │ ├─abac
│ │ │ abac_model.conf
│ │ │ abac_policy.csv
│ │ │
│ │ └─rbac
│ │ rbac_model.conf
│ │ rbac_policy.csv
│ │
│ ├─modules
│ │ └─public
│ │ ├─basic
│ │ │ ├─controller
│ │ │ │ loginController.js
│ │ │ │ logoutController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ logoutService.js
│ │ │ │ verificationService.js
│ │ │ │
│ │ │ └─validator
│ │ │ login.js
│ │ │ logout.js
│ │ │ verifyJWT.js
│ │ │
│ │ ├─customer
│ │ │ ├─controller
│ │ │ │ customerController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ customerService.js
│ │ │ │
│ │ │ └─validator
│ │ │ customer.js
│ │ │ deleteCustomer.js
│ │ │ findAllCustomer.js
│ │ │ findOneCustomer.js
│ │ │
│ │ ├─order
│ │ │ ├─controller
│ │ │ │ orderController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ orderService.js
│ │ │ │
│ │ │ └─validator
│ │ │ order.js
│ │ │ deleteOrder.js
│ │ │ findAllOrder.js
│ │ │ findOneOrder.js
│ │ │
│ │ ├─orderItem
│ │ │ ├─controller
│ │ │ │ orderItemController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ orderItemService.js
│ │ │ │
│ │ │ └─validator
│ │ │ orderItem.js
│ │ │ deleteOrderItem.js
│ │ │ findAllOrderItem.js
│ │ │ findOneOrderItem.js
│ │ │
│ │ ├─permissions
│ │ │ ├─controller
│ │ │ │ permissionsController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ permissionsService.js
│ │ │ │
│ │ │ └─validator
│ │ │ addPermissionForUser.js
│ │ │ addRoleForUser.js
│ │ │ deletePermissionForUser.js
│ │ │ deleteRoleForUser.js
│ │ │ getPermissionsForUser.js
│ │ │ getUsersForRole.js
│ │ │
│ │ ├─product
│ │ │ ├─controller
│ │ │ │ productController.js
│ │ │ │
│ │ │ ├─service
│ │ │ │ productService.js
│ │ │ │
│ │ │ └─validator
│ │ │ product.js
│ │ │ deleteProduct.js
│ │ │ findAllProduct.js
│ │ │ findOneProduct.js
│ │ │
│ │ └─user
│ │ ├─controller
│ │ │ userController.js
│ │ │
│ │ ├─service
│ │ │ userService.js
│ │ │
│ │ └─validator
│ │ user.js
│ │ deleteUser.js
│ │ findAllUser.js
│ │ findOneUser.js
│ │ updateOneUser.js
│ │
│ ├─ormService
│ │ prismaClientService.js
│ │
│ ├─plugin
│ │ casbin.js
│ │ cors.js
│ │ enforcer.js
│ │ env.js
│ │ jwt.js
│ │ logger.js
│ │ router.js
│ │
│ ├─routes
│ │ │ root.js
│ │ │
│ │ └─api
│ │ │
│ │ └─admin
│ │ ├─basic
│ │ │ basic.js
│ │ │
│ │ ├─customer
│ │ │ customer.js
│ │ │
│ │ ├─order
│ │ │ order.js
│ │ │
│ │ ├─orderItem
│ │ │ orderItem.js
│ │ │
│ │ ├─permissions
│ │ │ permissions.js
│ │ │
│ │ ├─product
│ │ │ product.js
│ │ │
│ │ └─user
│ │ user.js
│ │
│ ├─utils
│ │ errorInfo.js
│ │ sharedObject.js
│ └─ url.js
│
└─test
│ config.js
│ root.test.js
│
└─unit
│
└─api
│
└─api
dateTimeApi.test.js