Project Description | Objective | Core Features | Tech Stack | Project Structure | Installation Guide | General Usage Guide | Example API Flow | System Workflow Overview | Author
ACOFF is an integrated Business Management Information System
designed to support end‑to‑end operational processes in a coffee shop
environment.
The system enables owners and managers to monitor sales, inventory,
purchasing, employee attendance, payroll, and financial performance in
real‑time.
The platform emphasizes data consistency, process automation, and decision support analytics to improve operational efficiency and profitability.
The primary objectives of this system are:
- Provide real‑time operational visibility
- Automate daily and monthly financial closing
- Improve inventory accuracy using ledger tracking
- Support decision making using analytics dashboards
- Standardize business workflow using role‑based access
- Reduce manual calculation errors
- Enable scalable architecture for multi‑branch expansion
- Secure login system
- Password hashing using bcrypt
- Role‑based access control (Owner, Manager, Employee)
- Record transactions
- Transaction details tracking
- Sales summary dashboard
- Raw material stock tracking
- Inventory Ledger (stock movement history)
- Automatic stock deduction based on recipe usage
- Supplier database
- Purchase request workflow
- Approval system
- Automatic stock updates after goods received
- Daily Closing
- Monthly Closing
- Automatic Profit & Loss calculation
- Financial report archive
- Attendance tracking
- Payroll calculation
- Payroll configuration per role
- Menu performance analytics
- Profit trend analytics
- Purchase analytics
- Inventory usage analytics
- Automated purchase suggestion
- Forecasting raw material demand
- Multi-branch support (future)
- Backup & restore system
- Node.js
- Express.js
- MySQL
- JWT Authentication
- Bcrypt
- MySQL relational schema
- Transaction-safe queries
- Ledger-based inventory design
- Postman (API Testing)
- GitHub (Version Control)
- VS Code (Development IDE)
project-root/
│
├── backend/
│ ├── config/
│ │ └── db.js
│ │
│ ├── controllers/
│ │ ├── analyticsController.js
│ │ ├── authController.js
│ │ ├── closingController.js
│ │ ├── dashboardController.js
│ │ ├── inventoryController.js
│ │ ├── laporanController.js
│ │ ├── monthlyClosingController.js
│ │ ├── payrollController.js
│ │ ├── pembelianController.js
│ │ ├── reportExportController.js
│ │ └── transaksiController.js
│ │
│ ├── middleware/
│ │ ├── authMiddleware.js
│ │ ├── closingMiddleware.js
│ │ └── roleMiddleware.js
│ │
│ ├── routes/
│ │ ├── analyticsRoutes.js
│ │ ├── authRoutes.js
│ │ ├── closingRoutes.js
│ │ ├── dashboardRoutes.js
│ │ ├── inventoryRoutes.js
│ │ ├── laporanRoutes.js
│ │ ├── monthlyClosingRoutes.js
│ │ ├── payrollRoutes.js
│ │ ├── pembelianRoutes.js
│ │ ├── reportRoutes.js
│ │ └── transaksiRoutes.js
│ │
│ ├── utils/
│ │ ├── auditService.js
│ │ ├── hashPassword.js
│ │ ├── inventoryLedgerService.js
│ │ ├── payrollService.js
│ │ └── stockService.js
│ │
│ ├── .env
│ ├── hash.js
│ ├── package.json
│ ├── package-lock.json
│ ├── server.js
│ └── node_modules/
│
├── frontend/
│ ├── css/
│ │ ├── absensi.css
│ │ ├── approval_laporan.css
│ │ ├── approval_payroll.css
│ │ ├── approval_pembelian.css
│ │ ├── audit_log.css
│ │ ├── bahanbaku.css
│ │ ├── dashboard.css
│ │ ├── laporan.css
│ │ ├── laporan_view.css
│ │ ├── menu.css
│ │ ├── paycheck.css
│ │ ├── payroll.css
│ │ ├── pembelian.css
│ │ ├── resep.css
│ │ ├── style.css
│ │ ├── supplier.css
│ │ └── transaksi.css
│ │
│ ├── js/
│ │ ├── absensi.js
│ │ ├── approval_laporan.js
│ │ ├── approval_payroll.js
│ │ ├── approval_pembelian.js
│ │ ├── audit_log.js
│ │ ├── auth.js
│ │ ├── bahanbaku.js
│ │ ├── dashboard.js
│ │ ├── export.js
│ │ ├── laporan.js
│ │ ├── laporan_view.js
│ │ ├── login.js
│ │ ├── menu.js
│ │ ├── paycheck.js
│ │ ├── payroll.js
│ │ ├── pembelian.js
│ │ ├── resep.js
│ │ ├── supplier.js
│ │ └── transaksi.js
│ │
│ └── pages/
│ ├── absensi.html
│ ├── approval_laporan.html
│ ├── approval_payroll.html
│ ├── approval_pembelian.html
│ ├── audit_log.html
│ ├── bahanbaku.html
│ ├── dashboard.html
│ ├── export.html
│ ├── index.html
│ ├── laporan.html
│ ├── laporan_view.html
│ ├── menu.html
│ ├── paycheck.html
│ ├── payroll.html
│ ├── pembelian.html
│ ├── resep.html
│ ├── supplier.html
│ └── transaksi.html
│
└── README.md
git clone https://github.com/yourusername/coffee-street.git
cd coffee-street
npm install
Create database in MySQL:
CREATE DATABASE coffe_street;
Import schema:
mysql -u root -p coffe_street < database/schema.sql
Create .env file:
DB_HOST=localhost
DB_USER=root
DB_PASS=yourpassword
DB_NAME=coffe_street
JWT_SECRET=secretkey
PORT=3000
node server.js
Server will run at:
http://localhost:3000
Use registered user credentials.
Roles: - Owner - Manager - Employee
Password is stored using bcrypt hashing.
Add:
- Menu
- Raw Materials
- Supplier
- Recipe (menu → bahan baku)
Record transactions:
POST /transaksi
System will: - store sales - reduce inventory automatically
Create purchase order:
POST /pembelian
Workflow:
Draft → Approved → Received
When status = Received: - stock updated - ledger recorded
Execute daily closing:
POST /closing/daily
System will: - calculate daily profit - store snapshot
POST /closing/monthly
System will: - aggregate daily snapshots - generate monthly P&L - lock period
Owner can monitor:
- best selling menu
- profit trends
- stock usage
- purchase efficiency
Login:
POST /auth/login
Create Transaction:
POST /transaksi
Update Purchase Status:
PATCH /pembelian/:id/status
Daily Closing:
POST /closing/daily
Monthly PNL:
GET /laporan/pnl
Login
→ Master Data Setup
→ Sales Transaction
→ Inventory Update
→ Purchase Management
→ Daily Closing
→ Monthly Closing
→ Profit & Loss Report
→ Analytics Dashboard
Sepi Ananda Information Systems Student UPN "Veteran" Yogyakarta