Skip to content

The web application interface for the management department of small shops and supermarkets is used to manage inventory and circulating goods within the store.

Notifications You must be signed in to change notification settings

luuconghoangnam/web-MarkerManagermentSystem

Repository files navigation

🛒 POS Application - Hệ thống Quản lý Bán hàng

Node.js Express.js MongoDB EJS Bootstrap License

Hệ thống quản lý bán hàng (Point of Sale) hiện đại được xây dựng bằng Node.js, Express.js và MongoDB. Ứng dụng cung cấp đầy đủ tính năng quản lý sản phẩm, bán hàng, nhà cung cấp và báo cáo doanh thu cho các cửa hàng và siêu thị quy mô nhỏ.

📋 Mục lục

🚀 Giới thiệu

Ứng dụng web POS (Point of Sale) được thiết kế để quản lý và vận hành một cửa hàng/siêu thị quy mô nhỏ, với các tính năng tiện lợi cho việc bán hàng, quản lý kho, theo dõi lịch sử giao dịch, báo cáo doanh thu, và quản lý người dùng.

✨ Tính năng chính

🏪 Quản lý Cửa hàng

  • Dashboard tổng quan: Hiển thị doanh thu, sản phẩm bán chạy, thống kê tổng quan
  • Quản lý sản phẩm: Thêm, sửa, xóa sản phẩm với upload hình ảnh
  • Quản lý danh mục: Phân loại sản phẩm theo danh mục
  • Quản lý kho hàng: Theo dõi số lượng tồn kho, cảnh báo hết hàng

💰 Hệ thống Bán hàng

  • Giao diện bán hàng: Thêm sản phẩm vào giỏ hàng dễ dàng
  • Thanh toán đa dạng: Hỗ trợ tiền mặt, chuyển khoản
  • In hóa đơn: Xuất hóa đơn bán hàng chi tiết
  • Tính toán tự động: Tổng tiền, thuế, giảm giá

📊 Báo cáo & Thống kê

  • Báo cáo doanh thu: Theo ngày, tháng, năm với biểu đồ trực quan
  • Sản phẩm bán chạy: Thống kê sản phẩm theo doanh số
  • Lịch sử giao dịch: Tra cứu và tìm kiếm giao dịch
  • Biểu đồ: Visualization dữ liệu bằng Chart.js

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

  • Đăng ký/Đăng nhập: Xác thực an toàn với JWT
  • Phân quyền: Admin, Quản lý kho, Nhân viên bán hàng
  • Quên mật khẩu: Khôi phục mật khẩu qua email
  • Quản lý thông tin: Cập nhật thông tin cá nhân và cửa hàng

🏭 Quản lý Nhà cung cấp

  • Danh sách nhà cung cấp: Quản lý thông tin liên hệ
  • Theo dõi giao dịch: Lịch sử nhập hàng từ nhà cung cấp

🔐 Bảo mật & Hiệu suất

  • HTTPS: Hỗ trợ SSL/TLS encryption
  • Session Management: Quản lý phiên đăng nhập an toàn
  • Password Hashing: Mã hóa mật khẩu với bcryptjs
  • File Upload: Xử lý upload ảnh sản phẩm, QR code

🎥 Demo & Screenshots

🏠 Giao diện chính

Trang chủ

Trang chủ

Trang chủ 2

Trang chào mừng sau đăng nhập

Giao diện chào mừng

🔐 Xác thực & Bảo mật

Đăng nhập

Trang đăng nhập

Đăng ký tài khoản

Trang đăng ký

Kiểm tra trạng thái đăng nhập

Kiểm tra trạng thái đăng nhập

Quên mật khẩu

Trang quên mật khẩu

Đổi mật khẩu

Đổi mật khẩu

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

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

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

Cập nhật thông tin người dùng

Cập nhật thông tin người dùng

🛒 Hệ thống bán hàng

Trang bán hàng

Trang bán hàng

Lịch sử bán hàng

Lịch sử bán hàng

📊 Quản lý & Thống kê

Thống kê cửa hàng

Thống kê cửa hàng

Quản lý kho hàng

Quản lý kho

🛠️ Công nghệ sử dụng

Backend

  • Node.js - Runtime environment
  • Express.js 4.21.0 - Web application framework
  • MongoDB - NoSQL database
  • Mongoose 8.6.3 - MongoDB ODM
  • EJS 3.1.10 - Template engine

Frontend

  • Bootstrap 5 - CSS framework responsive
  • jQuery - JavaScript library
  • Chart.js - Data visualization và biểu đồ
  • SweetAlert2 - Beautiful alerts và notifications
  • Flatpickr - Date picker
  • Swiper - Touch slider

Security & Authentication

  • bcryptjs 2.4.3 - Password hashing
  • jsonwebtoken 9.0.2 - JWT tokens
  • express-session 1.18.0 - Session management
  • connect-mongo 5.1.0 - MongoDB session store

File & Email Handling

  • multer 1.4.5 - File upload handling
  • nodemailer 6.9.15 - Email sending
  • xlsx 0.18.5 - Excel file processing

Development Tools

  • nodemon 3.1.6 - Development auto-restart
  • dotenv 16.4.5 - Environment variables
  • PM2 - Process manager for production

📦 Cài đặt

Yêu cầu hệ thống

  • Node.js 16.x hoặc cao hơn
  • MongoDB 6.0+
  • npm hoặc yarn
  • Git

Các bước cài đặt

1. Clone repository

git clone https://github.com/yourusername/pos-application.git
cd pos-application

2. Cài đặt dependencies

npm install

3. Cấu hình môi trường

Tạo file .env trong thư mục gốc và cấu hình:

# Database Configuration
MONGO_URI=mongodb://localhost:27017/ProductsManager

# Server Configuration  
PORT=3000
NODE_ENV=development

# JWT Secret
JWT_SECRET=your_super_secret_jwt_key_here

# Email Configuration (Gmail)
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password

# Session Secret
SESSION_SECRET=your_session_secret_key

# Upload Configuration
MAX_FILE_SIZE=5242880
ALLOWED_FILE_TYPES=jpg,jpeg,png,gif

4. Khởi động MongoDB

Đảm bảo MongoDB đang chạy trên hệ thống:

# Windows
net start MongoDB

# macOS/Linux
sudo systemctl start mongod

5. Import dữ liệu mẫu (tuỳ chọn)

# Import dữ liệu từ thư mục dbExport
mongoimport --db ProductsManager --collection products --file dbExport/ProductsManager.products.json --jsonArray
mongoimport --db ProductsManager --collection categories --file dbExport/ProductsManager.categories.json --jsonArray

🚀 Chạy ứng dụng

Development Mode

npm run dev

Production Mode

npm start

Production với PM2

npm run pm2

Dừng PM2

npm run stoppm2

Ứng dụng sẽ chạy tại:

  • Development: http://localhost:3000
  • Production: https://localhost:3000 (với SSL)

Lưu ý: Trong production, ứng dụng sử dụng HTTPS với SSL certificates từ thư mục ssl/

� Cấu trúc dự án

POS-app/
├── 📁 config/              # Cấu hình ứng dụng
│   ├── db.js              # Kết nối MongoDB
│   └── multer.js          # Cấu hình upload file
├── 📁 middlewares/         # Middleware functions
│   ├── auth.js            # Xác thực JWT
│   ├── authMiddleware.js  # Middleware xác thực
│   ├── layout.js          # Layout middleware
│   └── redirectIfLoggedIn.js # Redirect đã đăng nhập
├── 📁 models/             # Mongoose models (Database schemas)
│   ├── Category.js        # Model danh mục sản phẩm
│   ├── product.js         # Model sản phẩm
│   ├── User.js           # Model người dùng
│   ├── Revenue.js        # Model doanh thu
│   ├── supplier.js       # Model nhà cung cấp
│   ├── customer.js       # Model khách hàng
│   ├── history.js        # Model lịch sử giao dịch
│   ├── Store.js          # Model cửa hàng
│   ├── ExportHistory.js  # Model lịch sử xuất kho
│   └── VerificationCode.js # Model mã xác thực
├── 📁 routes/             # Express route handlers
│   ├── dashboard.js       # Routes dashboard và thống kê
│   ├── shopRoutes.js      # Routes bán hàng
│   ├── staffRoutes.js     # Routes quản lý nhân viên
│   ├── supplierRoutes.js  # Routes nhà cung cấp
│   └── userRoutes.js      # Routes người dùng
├── 📁 views/              # EJS template files
│   ├── dashboard.ejs      # Trang dashboard
│   ├── sales.ejs         # Trang bán hàng
│   ├── products.ejs      # Quản lý sản phẩm
│   ├── login.ejs         # Trang đăng nhập
│   ├── register.ejs      # Trang đăng ký
│   ├── report.ejs        # Báo cáo doanh thu
│   ├── history.ejs       # Lịch sử giao dịch
│   ├── shop.ejs          # Trang cửa hàng
│   ├── users.ejs         # Quản lý người dùng
│   └── partials/         # Template partials
│       ├── header.ejs    # Header component
│       └── footer.ejs    # Footer component
├── 📁 public/             # Static assets
│   ├── 📁 css/           # Custom stylesheets
│   │   ├── style.css     # Main stylesheet
│   │   ├── index.css     # Homepage styles
│   │   ├── sale.css      # Sales page styles
│   │   └── stats.css     # Statistics styles
│   ├── 📁 js/            # Client-side JavaScript
│   │   ├── index.js      # Homepage scripts
│   │   ├── product.js    # Product management
│   │   ├── sales.js      # Sales functionality
│   │   └── report.js     # Report generation
│   ├── 📁 assets/        # Third-party libraries
│   │   ├── bs5/          # Bootstrap 5
│   │   ├── jquery/       # jQuery library
│   │   ├── chartJS/      # Chart.js
│   │   ├── swal2/        # SweetAlert2
│   │   ├── flatpickr/    # Date picker
│   │   └── swiper/       # Touch slider
│   ├── 📁 images/        # Images và graphics
│   │   ├── bg.jpg        # Background image
│   │   └── default.svg   # Default placeholder
│   ├── 📁 icons/         # SVG icons
│   └── 📁 templates/     # File templates
│       └── product-sample.xlsx # Excel template
├── 📁 uploads/            # User uploaded files
├── 📁 ssl/               # SSL certificates (production)
│   ├── privkey.pem       # Private key
│   └── fullchain.pem     # Certificate chain
├── 📁 dbExport/          # Database backup/export files
│   ├── ProductsManager.products.json
│   ├── ProductsManager.categories.json
│   ├── ProductsManager.users.json
│   ├── ProductsManager.revenues.json
│   └── ...
├── server.js             # Main application entry point
├── updateProducts.js     # Product update utility
├── package.json          # Project dependencies
├── .env                  # Environment variables
└── README.md            # Project documentation

🛤 API Routes

Authentication Routes

  • GET / - Trang chủ và redirect
  • GET /login - Trang đăng nhập
  • POST /login - Xử lý đăng nhập
  • GET /register - Trang đăng ký
  • POST /register - Xử lý đăng ký
  • GET /logout - Đăng xuất
  • POST /forgot-password - Quên mật khẩu
  • POST /reset-password - Đặt lại mật khẩu

Dashboard & Management

  • GET /dashboard - Dashboard chính với thống kê
  • GET /products - Quản lý sản phẩm
  • GET /report - Báo cáo doanh thu
  • GET /history - Lịch sử giao dịch
  • GET /users - Quản lý người dùng

Product Management

  • GET /products - Danh sách sản phẩm
  • POST /products/add - Thêm sản phẩm mới
  • PUT /products/edit/:id - Cập nhật sản phẩm
  • DELETE /products/delete/:id - Xóa sản phẩm
  • POST /products/upload - Upload hình ảnh sản phẩm

Sales & Transactions

  • GET /sales - Giao diện bán hàng
  • POST /sales/checkout - Xử lý thanh toán
  • GET /sales/history - Lịch sử bán hàng
  • GET /sales/invoice/:id - Xem/in hóa đơn

Supplier Management

  • GET /api/suppliers - Danh sách nhà cung cấp
  • POST /api/suppliers - Thêm nhà cung cấp
  • PUT /api/suppliers/:id - Cập nhật nhà cung cấp
  • DELETE /api/suppliers/:id - Xóa nhà cung cấp

Reports & Analytics

  • GET /report/revenue - Báo cáo doanh thu
  • GET /report/products - Thống kê sản phẩm
  • GET /report/export - Xuất báo cáo Excel

🔐 Quyền truy cập

Hệ thống phân quyền 3 cấp

👨‍💼 Admin (Quản trị viên)

  • Toàn quyền: Quản lý toàn bộ hệ thống
  • Quản lý người dùng: Tạo, sửa, xóa tài khoản và phân quyền
  • Cấu hình hệ thống: Thay đổi thông tin cửa hàng, cài đặt
  • Xem tất cả báo cáo: Truy cập mọi thống kê và báo cáo
  • Backup & Restore: Sao lưu và khôi phục dữ liệu

📦 Quản lý kho (Inventory Manager)

  • Quản lý sản phẩm: Thêm, sửa, xóa sản phẩm và danh mục
  • Quản lý nhà cung cấp: Thông tin và giao dịch với nhà cung cấp
  • Báo cáo kho: Xem báo cáo tồn kho, nhập xuất
  • Lịch sử giao dịch: Theo dõi các giao dịch đã thực hiện
  • Thống kê sản phẩm: Sản phẩm bán chạy, hết hàng

🛒 Nhân viên bán hàng (Sales Staff)

  • Bán hàng: Sử dụng giao diện POS để bán hàng
  • Thanh toán: Xử lý các giao dịch thanh toán
  • In hóa đơn: Xuất hóa đơn cho khách hàng
  • Xem lịch sử: Lịch sử giao dịch của bản thân

Bảo mật

  • JWT Authentication: Token-based authentication
  • Session Management: Quản lý phiên đăng nhập an toàn
  • Password Encryption: Mã hóa mật khẩu với bcrypt
  • Role-based Access: Kiểm soát truy cập theo vai trò
  • HTTPS Support: Hỗ trợ SSL/TLS encryption

🎨 Giao diện người dùng

📱 Responsive Design

  • Mobile-first: Tối ưu cho thiết bị di động
  • Bootstrap 5: Framework CSS hiện đại
  • Dark/Light Mode: Chế độ sáng/tối (có thể mở rộng)

💫 User Experience

  • SweetAlert2: Thông báo đẹp và thân thiện
  • Loading States: Hiển thị trạng thái loading
  • Form Validation: Validate dữ liệu real-time
  • Smooth Animations: Hiệu ứng mượt mà

📊 Data Visualization

  • Chart.js: Biểu đồ doanh thu trực quan
  • Tables: Danh sách dữ liệu có phân trang
  • Cards: Hiển thị thống kê dạng card
  • Progress Bars: Thanh tiến trình cho các metric

🤝 Đóng góp

Chúng tôi hoan nghênh mọi đóng góp từ cộng đồng!

Cách đóng góp

  1. Fork repository
git fork https://github.com/yourusername/pos-application.git
  1. Tạo feature branch
git checkout -b feature/amazing-feature
  1. Commit changes
git commit -m "Add: Amazing new feature"
  1. Push to branch
git push origin feature/amazing-feature
  1. Tạo Pull Request

Quy tắc đóng góp

  • Code Style: Tuân thủ ESLint rules
  • Commit Convention: Sử dụng conventional commits
  • Testing: Viết test cho các tính năng mới
  • Documentation: Cập nhật docs cho các thay đổi

Báo lỗi (Bug Reports)

Khi báo lỗi, vui lòng bao gồm:

  • Mô tả chi tiết: Bug xảy ra như thế nào
  • Các bước tái tạo: Steps to reproduce
  • Screenshots: Hình ảnh minh họa (nếu có)
  • Environment: Thông tin môi trường (OS, browser, etc.)

Đề xuất tính năng (Feature Requests)

  • Mô tả rõ ràng: Tính năng cần thiết và lý do
  • Use cases: Các trường hợp sử dụng cụ thể
  • Mockups: Thiết kế giao diện (nếu có)

📞 Hỗ trợ & Liên hệ

👥 Nhóm phát triển

🔗 Links hữu ích

💬 Community

📄 License

Dự án này được phát hành dưới giấy phép ISC License.

Copyright (c) 2024 POS Application Team

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

🎯 Roadmap

🚧 Đang phát triển

  • Real-time Updates: WebSocket cho cập nhật real-time
  • Mobile App: Ứng dụng mobile React Native
  • Advanced Reports: Báo cáo nâng cao với AI insights

🔮 Tương lai

  • Multi-store Support: Hỗ trợ nhiều cửa hàng
  • Inventory Management: Quản lý kho nâng cao
  • Barcode Scanner: Tích hợp quét mã vạch
  • Payment Gateway: Tích hợp cổng thanh toán online
  • Customer Loyalty: Chương trình khách hàng thân thiết
  • Analytics Dashboard: Dashboard phân tích nâng cao
  • API Documentation: Swagger/OpenAPI docs
  • Docker Support: Containerization với Docker

🙏 Cảm ơn

Cảm ơn tất cả những người đã đóng góp cho dự án này:

  • Contributors: Các developer đã contribute code
  • Testers: Những người đã test và báo lỗi
  • Community: Cộng đồng đã ủng hộ và feedback

🏆 Công cụ & Thư viện

Dự án này sử dụng các công cụ và thư viện mã nguồn mở tuyệt vời:


⭐ Nếu dự án hữu ích, hãy cho chúng tôi một star trên GitHub! ⭐

Được phát triển với ❤️ bởi POS Application Team

⬆️ Về đầu trang

About

The web application interface for the management department of small shops and supermarkets is used to manage inventory and circulating goods within the store.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •