GithubHelp home page GithubHelp logo

duongdev / ctg-canteen Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 0.0 1.53 MB

CTG Canteen management system. Made with :heart: (for 💵, 🤷🏻‍♂️) by an ex-student.

Home Page: https://ctg-canteen.netlify.com

HTML 1.29% TypeScript 97.44% CSS 0.62% JavaScript 0.37% Shell 0.28%

ctg-canteen's Introduction

CTG Canteen management system

Netlify Status TypeScript Coverage Status

ctg-canteen's People

Contributors

dependabot[bot] avatar duongdev avatar nguyenthienthanh avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ctg-canteen's Issues

As an admin, I want to create a new meal registration

Purpose

  • Admin sẽ tạo một đợt đăng ký ăn cho phép học sinh đăng ký trước các buổi ăn và món ăn trong khoảng thời gian cho phép.
  • Admin có thể quản lý các đợt đăng ký đã tạo, các buổi ăn có trong đợt đăng ký, thời gian bắt đầu và thời gian kết thúc của mỗi đợt ăn.
  • Admin lên được thực đơn cho mỗi buổi ăn có trong đợt đăng ký.
  • Admin có thể hủy đăng ký ăn cho một hoặc nhiều học sinh hoặc toàn trường theo từng buổi ăn và có thể được nhập từ excel.
  • Admin có thể nhập danh sách học sinh đã ăn bằng excel.
  • Admin có thể Approve/Reject yêu cầu huỷ ăn của học sinh, nếu yêu cầu được tạo bởi admin hoặc trước X ngày hoặc ngày nghỉ có phép thì sẽ được tự động Approve.
  • Học sinh có thể đăng ký ăn và gửi yêu cầu hủy ăn.
  • Yêu cầu hủy ăn của học sinh sẽ được tự động tạo dựa theo ngày nghỉ có phép của học sinh.

As an admin, I want to mark any user as PAY FREE so that user don't have to pay for his meals

Pay free, a.k.a Miễn thu tiền. When a user is marked as pay free, he will be able to register for meal registration as usual. But his registration will be marked as Paid automaticially. He won't need to pay anything.

In his meal registration, need to have some information to let the admins know that is a PAY FREE registration so he won't be confused about the final reports.

Danh sách chức năng

Chức năng chính

  • Quản lý học sinh.
  • Quản lý món ăn.
  • Quản lý thực đơn.
  • Quản lý đăng ký ăn.
  • Quản lý danh sách học sinh đăng ký ăn.

Đối tượng người dùng (users)

  • Admin
  • Học sinh
  • Guest

Quản lý người dùng

Admin

  • #71 Tìm kiếm học sinh theo tên, lớp.
  • #73 Lọc danh sách học sinh.
  • #74 Khoá tài khoản người dùng bất kì.
  • #75 Khoá cùng lúc nhiều tài khoản người dùng theo bộ lọc.
  • #70 Import danh sách học sinh từ file excel theo mẫu sẵn có.
  • #76 Reset mật khẩu của người dùng bất kì.
  • #77 Export danh sách tất cả học sinh.
  • #78 Export danh sách học sinh theo bộ lọc.
  • #79 Đánh dấu học sinh miễn thu: Không thu tiền.

Học sinh

  • #80 Dùng tên đăng nhập + mật khẩu được tạo sẵn để đăng nhập hệ thống.
  • #81 Thay đổi mật khẩu.

Ghi chú

  • Không thể xoá 1 người dùng ra khỏi database. Người dùng chỉ có thể bị vô hiệu hoá. Khi bị vô hiệu hoá, người dùng không thể truy cập ứng dụng nữa. Các dữ liệu khác của người dùng vẫn giữ nguyên.
  • ID người dùng sẽ được tạo tự động bởi hệ thống để đảm bảo 2 người dùng bất kì không có cùng 1 ID (unique).
  • Có thể có 1 hoặc nhiều admin, các admin này đều có quyền hạn như nhau.

Quản lý món ăn

Admin

  • #83 Tạo món ăn mới.
  • #84 Cập nhật thông tin món ăn.
  • #88 Vô hiệu hoá (ngừng kinh doanh) 1 món ăn.
  • #85 Tìm kiếm món ăn theo tên.
  • #86 Thống kê món ăn theo số lần xuất hiện trong thực đơn, số lượt đăng ký ăn.
  • #87 Xem đánh giá, góp ý về món ăn.

Học sinh

  • #89 Đánh giá chất lượng món ăn sau khi ăn.

Ghi chú

  • Không cần xoá món ăn, chỉ cần không đưa vào thực đơn.
  • Món ăn gồm các thông tin: Tên món, hình ảnh, giá.
  • Học sinh gồm Nội trú, bán trú, ngoại trú.

Quản lý đợt ăn, đăng ký ăn

Admin

Đăng ký ăn

  • #91 Tạo đơn đăng ký mới: Ngày bắt đầu/kết thúc đăng ký; Ngày bắt đầu, kết thúc đợt ăn; Tên đợt ăn, mặc định là ngày bắt đầu đợt ăn.
  • #91 Lên thực đơn theo đợt ăn: 3 buổi.
  • #92 Huỷ đăng ký ăn cho 1 buổi của 1 học sinh.
  • #93 Huỷ đăng ký ăn cho nhiều học sinh theo bộ lọc (theo buổi ăn).
  • #94 Huỷ đăng ký ăn cho nhiều học sinh theo file excel.
  • #95 Huỷ đăng ký ăn cho toàn trường (theo buổi ăn).
  • #96 Approve/Reject yêu cầu huỷ ăn của học sinh.
  • #97 Nhập danh sách đã ăn bằng file excel.
  • #98 Tự động Approve yêu cầu huỷ ăn nếu yêu cầu được tạo bởi admin.
  • #99 Tự động Approve yêu cầu huỷ ăn nếu yêu cầu được tạo trước buổi ăn tối thiểu X ngày hoặc nghỉ học có phép.

Báo cáo

  • #100 Xem báo cáo danh sách huỷ ăn theo đợt (toàn bộ học sinh).
  • #101 Xuất báo cáo danh sách huỷ ăn theo đợt ra excel.
  • #102 Xuất báo cáo danh sách đăng ký ăn theo buổi ăn và món ăn (cho bếp) ra excel.
  • #103 Xuất báo cáo thu tiền theo từng học sinh trong 1 đợt đăng ký.
  • #104 Xuất báo cáo hoàn tiền theo từng học sinh trong 1 đợt đăng ký.
  • #105 Xuất báo cáo danh sách bỏ ăn.
  • Gửi báo cáo tự động qua email.

Học sinh

  • #106 Đăng ký ăn theo buổi ăn cho từng đợt đăng ký.
  • #107 Sửa đăng ký trong khi đợt đăng ký vẫn còn mở (chưa chốt).
  • #108 Gửi yêu cầu huỷ ăn theo buổi (kèm lý do, giải thích).
  • #109 Xem lại danh sách các đợt ăn đã đăng ký/đã huỷ/đã ăn để đối chiếu.
  • Cho phép học sinh đăng ký trễ hoặc sửa đăng ký không quá X phút sau khi đóng đăng ký.
  • #110 Đánh giá chất lượng món ăn, buổi ăn.
  • #111 Đăng ký ăn tự động cho học sinh bán trú và nội trú quên đăng ký sau khi đóng đợt đăng ký.

Nhà ăn

Admin

  • #112 Tạo, sửa, xoá thông báo.
  • #113 Ghim thông báo lên trên cùng.
  • #114 Bài viết: Giới thiệu nhà ăn, quy trình, ...
  • #115 Xem góp ý của học sinh

Học sinh

  • #116 Gửi góp ý cho nhà ăn.

Các chức năng được đánh dấu sẽ được làm trong giai đoạn 1.

As an admin, I want to add a new dish

Model: Dish

Fields: name, images, price

Hình ảnh tải lên server với giới hạn dung lượng <500KB có định dạng jpg hoặc png.
Sau khi tải lên thành công, tất cả hình ảnh sẽ được lưu vào thư mục public với path có thể config trong env.

  • images là danh sách subpath + name của hình ảnh.
  • subpath là thư mục con trong public nếu có.

As an admin, I want to import users from excel files

A student has these information:

  • Student ID: Unique for everyone. Synced with school management system.
  • Full name: Đỗ Cao Thượng Dương for example.
  • Checker ID: aka mã máy chấm công.
  • Date of birth.
  • Home town: aka Quê quán.
  • Sex.
  • Class: Math, Biology, ...
  • School year.
  • Type: Boarding, semi-boarding, outpatient (Nội trú, bán trú, ngoại trú).
  • Room: For boarding and semi-boarding students in the dorm.

As a user, I want to update my password

In the first time signing in or after his password being reset by admin, the user is forced to update his password.

After that, if the user wants to update his password, I will be asked for the current password first, then enter the new password with verification (verify password).

After updating password successfully, don't need the sign in again. Just keep using the app.

As an admin, I want to lock (ban) any user

A user who has been banned won't be able to sign in anymore. When he signs in, a message will appear:

Tài khoản của bạn đã bị khoá. Vui lòng liên hệ quản trị viên để được trợ giúp.

As an admin, I want to create a new user

For user info, see #70

The "Create user" should contain:

  • Name
  • Username
  • Password (with "generate from username" button)
  • Checker ID
  • Birthdate
  • Hometown
  • Sex
  • Class
  • School year
  • Group
  • Room

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.