Nama Aplikasi: Cinema App
Platform: Website
Deskripsi singkat: Cinema App adalah sebuah platform sederhana untuk mengelola data pengguna, jadwal film, dan transaksi tiket. Aplikasi ini memungkinkan pengguna untuk memesan tiket dan memilih kursi yang tersedia dengan algoritma penjadwalan kursi.
Tujuan: Memenuhi tugas praktik demonstrasi uji kompetensi skema analis program batch 3 2024.
-
Manajemen Pengguna
CRUD data pengguna (Admin, User). -
Manajemen Jadwal Film
CRUD data jadwal film (judul, waktu tayang, harga tiket, durasi). -
Transaksi Tiket
Pemesanan tiket dengan algoritma penjadwalan kursi. -
Validasi Kursi
Kursi yang sudah dipesan tidak dapat dipilih kembali oleh pengguna lain.
- Backend: Laravel versi 11.34.2
- Frontend: Blade dan Tailwind CSS
- Database: MySQL
- Framework Otentikasi: Laravel Jetstream
- Bahasa Pemrograman: PHP versi 8.2.0
- Server Lokal: Laragon versi 6.0
- Editor Kode: Visual Studio Code versi 1.95.2
- Pengujian API: Postman versi 11.19
Rancangan basis data untuk aplikasi ini telah diimplementasikan menggunakan migration Laravel. Detail migrasi database di direktori berikut:
database/migrations/
Berikut adalah deskripsi singkat mengenai tabel-tabel dalam basis data:
- Tujuan: Menyimpan data pengguna (Admin dan User).
- Atribut:
id
,name
,email
,password
,role
,timestamps
- Relasi:
- Relasi 1:M dengan tabel
transactions
melaluiuser_id
.
- Relasi 1:M dengan tabel
- Tujuan: Menyimpan data film.
- Atribut:
id
,title
,description
,duration
,genre
,timestamps
- Relasi:
- Relasi 1:M dengan tabel
schedules
melaluimovie_id
.
- Relasi 1:M dengan tabel
- Tujuan: Menyimpan jadwal penayangan film.
- Atribut:
id
,movie_id
,date
,time
,price
,timestamps
- Relasi:
- Relasi 1:M dengan tabel
seats
melaluischedule_id
. - Relasi 1:M dengan tabel
transactions
melaluischedule_id
.
- Relasi 1:M dengan tabel
- Tujuan: Menyimpan data kursi untuk setiap jadwal film.
- Atribut:
id
,schedule_id
,seat_number
,is_booked
,timestamps
- Relasi:
- Relasi 1:1 dengan tabel
transactions
melaluiseat_id
.
- Relasi 1:1 dengan tabel
- Tujuan: Menyimpan data transaksi tiket.
- Atribut:
id
,user_id
,schedule_id
,seat_id
,total_price
,status
,timestamps
- Relasi:
- Relasi dengan tabel
users
,schedules
, danseats
.
- Relasi dengan tabel
cinema-app/
├── app/
│ ├── Http/Controllers/ # Controller aplikasi (logika permintaan dan respon)
│ ├── Models/ # Model untuk interaksi dengan database
│ ├── Providers/ # Penyedia layanan untuk konfigurasi aplikasi
│ ├── View/Components # Komponen Blade untuk UI
├── database/
│ ├── factories/ # Factory untuk data dummy pengujian
│ ├── migrations/ # Skrip migrasi untuk tabel database
│ ├── seeders/ # Seeder untuk data dummy
├── public/
│ ├── images/ # Gambar untuk aplikasi
├── resources/
│ ├── js/ # Script frontend (Vue.js, JS)
│ ├── views/ # Template Blade untuk UI
│ ├── views/movies # Folder Template Blade film
│ ├── views/schedules # Folder Template Blade jadwal
│ ├── views/seats # Folder Template Blade kursi
│ ├── views/transactions # Folder Template Blade transaksi
│ ├── views/users # Folder Template Blade pengguna
├── routes/
│ ├── api.php # Routing API
│ ├── web.php # Routing web
├── tests/
│ ├── Unit # Unit testing aplikasi
└── .env # Konfigurasi aplikasi
└── .env.testing # Konfigurasi pengujian
- Clone repository ini:
git clone https://github.com/aurelizzety/cinema-app.git
- Masuk ke direktori aplikasi:
cd cinema-app
- Instal dependensi aplikasi:
composer install
- Buat file .env:
cp .env.example .env
- Jalankan perintah untuk melakukan generate key:
php artisan key:generate
- Migrasi database:
php artisan migrate
- Install npm dependency:
npm install
- Jalankan server:
php artisan serve
Aplikasi akan berjalan pada http://localhost:8000
.
- Pengujian Unit:
php artisan test tests/Unit