/spektakuler

Kolaborasi tugas mata kuliah Sistem Informasi IF40-04 Telkom University

Primary LanguagePHPMIT LicenseMIT

Spektakuler

Kolaborasi tugas mata kuliah Sistem Informasi IF40-04 Telkom University.

Spesifikasi

  • PHP ~= 7.2.17
  • MySQL ~= 5.7
  • Composer ~= 1.8.5
  • Lumen ~= 5.8

Panduan Pemasangan

  • Pasang web server (contohnya Apache)
  • Pasang MySQL
  • Pasang Lumen
  • Kalau sudah pasang Lumen, harusnya Composer juga udah dipasang. Kalau belum, pasang Composer terlebih dahulu.
  • Jalankan perintah composer install
  • Salin .env.example jadi .env kemudian ubah informasi database di sana
  • Jalankan server dengan perintah php -S localhost:8000 -t public
  • Buka localhost:8000
  • Happy coding!

Catatan: Kamu bisa menggunakan XAMPP untuk paket Apache, MySQL, dan PHP.

PERINGATAN: Jangan push kode kamu ke master branch!

Struktur Proyek

Routes

routes
├── api
│   ├── v1
│   │   ├── alumni.php
│   │   ├── asrama.php
│   │   ├── helpdesk.php
│   │   ├── hr.php
│   │   ├── lac.php
│   │   ├── logistik.php
│   │   ├── openlib.php
│   │   ├── ppm.php
│   │   └── sm.php
│   └── v1.php
├── api.php
└── web.php

Sunting routes sesuai dengan modul yang sedang kamu kerjakan. Jangan sentuh routes lain selain bagian modul kamu! Apabila kamu mengerjakan bagian modul asrama, kamu hanya boleh mengubah berkas routes/api/v1/asrama.php saja.

Controllers

app/Http/Controllers
├── Api
│   ├── Controller.php
│   └── V1
│       ├── Alumni
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── Asrama
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── Controller.php
│       ├── Helpdesk
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── HumanResource
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── LanguageCenter
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── Logistik
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── OpenLibrary
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       ├── Ppm
│       │   ├── Controller.php
│       │   └── ExampleController.php
│       └── StudentManagement
│           ├── Controller.php
│           └── ExampleController.php
└── Controller.php

Masing-masing modul sudah dibuatkan direktori untuk membuat controller yang dibutuhkan. Jangan sentuh controller modul lain! Kamu boleh menghapus berkas ExampleController.php yang ada di direktori modul kamu. Hal tersebut sangat disarankan!

Migrations

database/migrations
├── 2019_05_02_004038_<nama migration>_table.php
└── 2019_05_02_005541_create_cache_table.php

Migration ini digunakan untuk membuat/menghapus table secara otomatis. Untuk membuat migration baru, kamu hanya perlu menjalankan perintah php artisan make:migration create_<nama migration kamu>_table.php. Sebagai contoh, apabila kamu mengerjakan modul asrama dan ingin membuat table untuk daftar gedung, kamu bisa menjalankan perintah php artisan make:migration create_asrama_gedung_table. Selanjutnya, periksa isi dari migration yang telah dibuat.

Kamu bisa melihat dari contoh yang sudah ada atau baca saja dokumentasinya.

Models

app/Models
├── Asrama
│   ├── Gedung.php
│   └── Kamar.php
├── Helpdesk
│   ├── Complain.php
│   └── User.php
└── HumanResource
    ├── Dosen.php
    └── Fakultas.php

Model disesuaikan dengan table yang kamu buat. Apabila kamu mengerjakan modul asrama dan telah membuat table gedung, kamu dapat membuat direktori baru yaitu app/Models/Asrama kemudian membuat berkas baru dengan nama app/Models/Asrama/Gedung.php. Isinya dapat kamu lihat dari contoh yang sudah tersedia atau baca saja dokumentasinya. Catatan: Dokumentasi Laravel perlu penyesuaian dengan Lumen jadi kamu tidak dapat mengikuti contohnya begitu saja.

Seeding

database/seeds
├── DatabaseSeeder.php
├── HrDosenSeeder.php
└── HrFakultasSeeder.php

Seeding adalah proses dimana kita menambahkan record ke database secara langsung tanpa melalui program yang kita bangun. Sebut saja predefined record yang sudah kita masukkan dan siap untuk digunakan.

Cara membuatnya cukup jalankan perintah php artisan make:seeder <nama modul><nama table>Seeder.php. Sebagai contoh, kalau kamu mengerjakan bagian asrama dan akan melakukan seeding untuk table gedung, kamu bisa menjalankan php artisan make:seeder AsramaGedungSeeder. Selanjutnya kamu bisa buka berkas tersebut di database/seeds/AsramaGedungSeeder.php. Kamu akan melihat kode seperti di bawah.

<?php

use Illuminate\Database\Seeder;

class AsramaGedungSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

Untuk bisa melakukan seeding, pastikan kamu sudah membuat model (dalam hal ini) yaitu app/Models/Asrama/Gedung.php. Panggil model tersebut ke seeder. Kode kamu akan terlihat seperti berikut.

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Models\Asrama\Gedung;

class AsramaGedungSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // Gedung::firstOrCreate([...]);
    }
}

Selanjutnya, buka berkas database/seeds/DatabaseSeeder.php. Tambahkan AsramaGedungSeeder di sana. Kemudian jalankan perintah composer dump-autload. Setelah selesai, kamu sudah dapat melakukan seeding dengan perintah php artisan db:seed.

Branches

  master
  modul-alumni
  modul-asrama
  modul-helpdesk
  modul-hr
  modul-lac
  modul-logistik
  modul-openlib
  modul-ppm
  modul-sm
  staging
Nama Branch Digunakan oleh Kelompok Owner
modul-alumni Kelompok 9 (Alumni) @badrus123
modul-asrama Kelompok 2 (Asrama) @wisn
modul-helpdesk Kelompok 7 (Helpdesk) @bintangperyoga
modul-hr Kelompok 5 (Human Resource) @ghinadya
modul-lac Kelompok 8 (Language Center) @Ghalistan
modul-logistik Kelompok 3 (Logistik) @riskach
modul-openlib Kelompok 6 (Open Library) @aupnurzaman
modul-ppm Kelompok 1 (PPM) @rizkiar00
modul-sm Kelompok 4 (Student Management) @Mozarella

Branches Khusus

Master

Branch master digunakan sebagai pusat pengembangan. Apabila di bagian branch masing-masing modul telah siap untuk beberapa fiturnya, kodenya sudah dapat di-merge ke master.

Staging

Branch ini dikhususkan sebagai pusat deployment menuju server staging yang telah disediakan yaitu di Heroku. Sumber kode yang akan digunakan oleh branch staging adalah dari branch master.

Panduan Mengerjakan

Sebelum melakukan apapun, pastikan kamu pindah ke branch yang telah disediakan. Apabila kamu mengerjakan modul asrama, pindahkan working directory kamu ke branch modul-asrama dengan perintah git checkout modul-asrama. Ganti asrama dengan nama modul kamu yang telah diberitahukan di bagian branches di atas.

Kemudian, pastikan untuk melakukan git pull origin master terlebih dahulu agar nantinya tidak terjadi konflik dengan branch kamu.

Demonstrasi API

Kamu dapat mengunjungi spektakuler-staging.herokuapp.com untuk melihat demonya. Untuk mengakses endpoint tertentu, gunakan URL spektakuler-staging.herokuapp.com/api/v1/<nama modul>/<endpoint>.

License

Lisensi menggunakan The MIT License.