Giter Club home page Giter Club logo

print-solution's Introduction

Logo

Print Solution System

Print Solution System - Hệ thống quản lý đặt in ấn online hiệu quả, tiết kiệm.

ℹ️ Thông tin nhóm

  • 1612564 - Nguyễn Công Sơn
  • 1712149 - Trần Minh Tân
  • 18120410 - Phạm Quốc Khánh
  • 18120475 - Trần Đức Năng
  • 18120488 - Trần Phúc Nguyên
  • 18120622 - Lê Văn Trung (Nhóm trưởng)
  • 18120634 - Nguyễn Lê Anh Tuấn
  • 18120644 - Nguyễn Cát Tường

🔥 Prerequisites

  • Nodejs >= 16.8.0
  • npm >= 8.0 or yarn >= 1.0
  • Docker, docker compose v2, Linux or WSL (Nếu dùng Docker để chạy)

🚀 Run via Docker

  # Copy .env
  cd scripts
  sh ./copy-env.sh
  # Nếu lệnh trên chạy lỗi thì chạy lệnh dưới
  chmod +x ./copy-env.sh
  ./copy-env.sh
  # Chạy môi trường dev
  docker compose -p print-solution-dev -f ./docker-compose.dev.yml build --no-cache
  docker compose -p print-solution-dev -f ./docker-compose.dev.yml up -d

  # Generate graphql.tsx sau khi khởi tạo frontend
  cd frontend
  yarn graphql-codegen

  # Shorthand
  docker compose -p print-solution-dev down && cd scripts && sh ./copy-env.sh && cd .. && docker compose -p print-solution-dev -f ./docker-compose.dev.yml build --no-cache && docker compose -p print-solution-dev -f ./docker-compose.dev.yml up -d && cd frontend && yarn graphql-codegen && cd ..

  # Chạy môi trường production
  docker compose -p print-solution-prod build --no-cache
  docker compose -p print-solution-prod up -d

Một vài lệnh hữu ích trong docker

  # Xem log
  docker logs [service-name] --follow
  # Delete all containers
  docker compose -p print-solution-[dev|prod] down
  # Stop all containers
  docker compose -p print-solution-[dev|prod] stop
  # Export all keycloak realms
  docker exec -u root -it keycloak-dev bash -c "/opt/keycloak/bin/kc.sh export --file /opt/keycloak/data/import/realms.json --users same_file"
  # Export a mongodb collection
  docker exec -it mongodb-dev mongoexport --db <database_name> --collection <collection_name> --out /mongo-export/<filename.json>

📃 Auto run via Shell Script

🐧 Bắt buộc dùng qua terminal của Linux, Unix, WSL

  cd scripts
  # Chạy lệnh bên dưới nếu chưa install (re-install) package
  chmod +x ./auto-run.sh
  ./auto-run.sh

  # Hoặc nếu đã install
  chmod +x ./pm2-start.sh
  ./pm2-start.sh
  • Sau khi đã start các server, sử dụng pm2 để quản lý trạng thái.
  pm2 list # Hiển thị danh sách các services
  pm2 kill # Xóa tất cả services
  pm2 stop all # Dừng tất cả service đang chạy
  pm2 reset all # Reset tất cả
  pm2 restart all # Restart all service sau khi stop
  pm2 logs # Xem log tất cả services
  pm2 [option] [service-name] # Áp dụng cho từng service

⚙️ Manually Run

💫 Frontend

Run

  cd frontend
  cp .env.example .env # Thay đỗi value cần thiết (nếu có)
  yarn install
  yarn dev

Open http://localhost:8080

Dependencies

    // React core
    "react": "^18.2.0",
    "react-dom": "^18.2.0",

    // Kết nối graphQL, Apollo server
    "@apollo/client": "^3.7.10",
    "graphql": "^16.6.0",
    "@graphql-codegen/cli": "^3.2.2",

    // Kết nối REST API
    "axios": "^1.3.4",

    // UI Library components
    "@mui/material": "^5.11.13",
    "@emotion/react": "^11.10.6",
    "@emotion/styled": "^11.10.6",
    "@cads-ui/core": "^1.12.11",

    // Icon packs
    "@iconify/react": "^4.1.0",
    "@mui/icons-material": "^5.11.11",

    // State management redux, RTK query for caching REST API
    "@reduxjs/toolkit": "^1.9.3",
    "react-redux": "^8.0.5",
    "recoil": "^0.7.7",

    // Form management & validation
    "@hookform/resolvers": "^3.0.1",
    "react-hook-form": "^7.43.9",
    "react-hook-form": "^7.43.9",

    // Content editor
    "react-quill": "^2.0.0",

    // Format thời gian
    "moment": "^2.29.4",

    // SEO, tùy chỉnh head tag
    "react-helmet": "^6.1.0",

    // Async await wrapper for easy error handling
    "await-to-js": "^3.0.0",

    // Bundle tool
    "vite": "^4.1.0"

🔐 Backend Services

Run

  cd services/[service-name]
  cp .env.example .env # Thay đỗi value cần thiết (nếu có)
  yarn install
  yarn dev

Dependencies

  // Core framework for REST API
  "express": "^4.18.2",
  // Read cookie from client
  "cookie-parser": "^1.4.6",
  // Setup CORS
  "cors": "^2.8.5",
  // Read .env
  "dotenv": "^16.0.3",
  // Alias import path from ../../.. to ~/
  "module-alias": "^2.2.2",
  // Logger
  "morgan": "^1.10.0",
  // Apollo server for GraphQL server
  "@apollo/server": "^4.5.0",
  "graphql": "^16.6.0",
  // Websocket for subscription graphql
  "ws": "^8.8.0",
  "graphql-ws": "^5.9.0",
  // GraphQL with Typescript
  "type-graphql": "^2.0.0-beta.1",
  "@graphql-tools/schema": "^9.0.17",
  "class-validator": "^0.14.0",
  "reflect-metadata": "^0.1.13",
  // Async await wrapper for easy error handling
  "await-to-js": "^3.0.0",
  // Format thời gian
  "moment": "^2.29.4",
  // Auto reload dev server
  "nodemon": "^2.0.21",
  "ts-node-dev": "^2.0.0",
  "tsc-alias": "^1.8.3",
  "tsconfig-paths": "^4.1.2"

print-solution's People

Contributors

dynonguyen avatar lamnv05200 avatar tantran1012 avatar letrung02082000 avatar nguyencattuong avatar tdnang251 avatar khanhpham-29 avatar nguyengalaxy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.