Sistem Point of Sale (POS) berbasis web yang dibangun dengan PHP dan MySQL untuk mengelola penjualan dan transaksi produk.

Proyek ini dikembangkan sebagai bagian dari ujian sertifikasi profesi (LSP) di SMK Negeri 1 Wonosobo pada tahun 2025. Tujuannya adalah untuk menunjukkan kemahiran dalam dasar-dasar pengembangan web, manajemen database, dan implementasi logika bisnis dasar untuk lingkungan ritel. Motivasi utamanya adalah untuk membuat sistem fungsional yang dapat menangani operasi penjualan harian secara efisien.
Sistem ini menggunakan PHP untuk logika backend dan scripting sisi server, berinteraksi dengan database MySQL untuk penyimpanan data (produk, pengguna, transaksi). Frontend dibangun menggunakan standar HTML, CSS, dan JavaScript untuk antarmuka pengguna yang responsif. Modul utama meliputi autentikasi pengguna, operasi CRUD produk, manajemen keranjang belanja dinamis, dan alur checkout yang kuat yang memperbarui inventaris dan mencatat transaksi. Proyek ini menekankan praktik terbaik keamanan untuk interaksi database dan sesi pengguna.
Peran Admin dan Kasir dengan akses yang berbeda.
Pengguna Admin dapat menambah, mengedit, dan menghapus produk.
Kasir dapat menambah produk, memperbarui kuantitas, dan menghapus item dari keranjang.
Menangani perhitungan pembayaran, memberikan kembalian, dan membuat faktur.
Melihat transaksi penjualan sebelumnya dengan informasi rinci.
Tampilan ringkasan untuk Admin dan Kasir untuk memantau aktivitas.
Memastikan tingkat stok yang akurat setelah setiap transaksi, terutama dengan operasi bersamaan.
Pembaruan database atomik diimplementasikan selama checkout untuk mengurangi stok, bersama dengan pemeriksaan validasi untuk mencegah penjualan berlebih.
Memisahkan fungsionalitas dan akses dengan jelas untuk peran Admin dan Kasir.
Mengimplementasikan autentikasi berbasis sesi dan pemeriksaan otorisasi di setiap halaman untuk membatasi akses berdasarkan tingkat pengguna.
Mengelola status keranjang dan perhitungan (subtotal, total) saat item ditambahkan, dihapus, atau kuantitas diubah.
Variabel sesi digunakan untuk mempertahankan status keranjang, dengan logika sisi server menghitung ulang total pada setiap pembaruan.





