Upload files to "/"
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
.git
|
||||
.gitignore
|
||||
README_DEPLOY.md
|
||||
@@ -0,0 +1,9 @@
|
||||
FROM php:8.2-apache
|
||||
|
||||
RUN docker-php-ext-install mysqli pdo pdo_mysql
|
||||
|
||||
COPY . /var/www/html/
|
||||
|
||||
RUN chown -R www-data:www-data /var/www/html
|
||||
|
||||
EXPOSE 80
|
||||
@@ -0,0 +1,109 @@
|
||||
# Tugas SIG WebGIS Gabungan
|
||||
|
||||
Project ini adalah gabungan dari Tugas01 sampai Tugas04 SIG dalam satu aplikasi.
|
||||
Root `index.html` menjadi landing page, sedangkan tiap tugas berada dalam subfolder.
|
||||
|
||||
## Struktur Folder
|
||||
|
||||
```text
|
||||
Tugas_SIG_gabungan/
|
||||
├── index.html
|
||||
├── tugas01/
|
||||
├── tugas02/
|
||||
├── tugas03/
|
||||
├── tugas04/
|
||||
├── database/
|
||||
│ ├── tugas_sig.sql
|
||||
│ ├── tugas_sig_xampp.sql
|
||||
│ ├── tugas01_original.sql
|
||||
│ ├── tugas02_original.sql
|
||||
│ └── tugas03_original.sql
|
||||
├── database.sql
|
||||
└── Dockerfile
|
||||
```
|
||||
|
||||
## Link Setelah Deploy
|
||||
|
||||
Jika domain deploy kamu adalah:
|
||||
|
||||
```text
|
||||
https://domain-coolify-kamu
|
||||
```
|
||||
|
||||
Maka link tugasnya:
|
||||
|
||||
```text
|
||||
https://domain-coolify-kamu/
|
||||
https://domain-coolify-kamu/tugas01/
|
||||
https://domain-coolify-kamu/tugas02/
|
||||
https://domain-coolify-kamu/tugas03/
|
||||
https://domain-coolify-kamu/tugas04/
|
||||
```
|
||||
|
||||
## Database
|
||||
|
||||
Project ini dibuat agar cukup memakai 1 database:
|
||||
|
||||
```text
|
||||
webgis_tugas_sig
|
||||
```
|
||||
|
||||
Tabel yang digunakan:
|
||||
|
||||
```text
|
||||
tugas01_spbu
|
||||
tugas02_data_spasial
|
||||
tugas03_spbu
|
||||
```
|
||||
|
||||
Tugas04 tidak memakai database karena menggunakan file `Kecamatan.json`.
|
||||
|
||||
## Cara Pakai di XAMPP
|
||||
|
||||
1. Copy folder project ini ke:
|
||||
|
||||
```text
|
||||
C:/xampp/htdocs/Tugas_SIG_gabungan/
|
||||
```
|
||||
|
||||
2. Jalankan Apache dan MySQL.
|
||||
3. Buka phpMyAdmin.
|
||||
4. Import file:
|
||||
|
||||
```text
|
||||
database.sql
|
||||
```
|
||||
|
||||
5. Buka browser:
|
||||
|
||||
```text
|
||||
http://localhost/Tugas_SIG_gabungan/
|
||||
```
|
||||
|
||||
## Cara Deploy di Coolify
|
||||
|
||||
1. Upload/push semua isi folder ini ke repo `Tugas_SIG`.
|
||||
2. Di Coolify, buat project baru.
|
||||
3. Tambahkan resource Application dari repo `Tugas_SIG`.
|
||||
4. Pilih build pack Dockerfile.
|
||||
5. Port aplikasi: `80`.
|
||||
6. Tambahkan 1 database MySQL/MariaDB.
|
||||
7. Import file `database/tugas_sig.sql` ke database yang dibuat di Coolify.
|
||||
8. Tambahkan environment variable aplikasi:
|
||||
|
||||
```env
|
||||
DB_HOST=nama_service_database
|
||||
DB_PORT=3306
|
||||
DB_NAME=webgis_tugas_sig
|
||||
DB_USER=user_database
|
||||
DB_PASS=password_database
|
||||
```
|
||||
|
||||
9. Deploy aplikasi.
|
||||
|
||||
## Catatan
|
||||
|
||||
- UAS SIG tidak dimasukkan ke landing page ini.
|
||||
- UAS tetap dideploy terpisah dari repo `UAS_SIG`.
|
||||
- File `database/tugas_sig.sql` tidak membuat database baru, cocok untuk import ke database yang sudah dibuat Coolify.
|
||||
- File `database.sql` dan `database/tugas_sig_xampp.sql` cocok untuk XAMPP/phpMyAdmin lokal.
|
||||
@@ -0,0 +1,52 @@
|
||||
CREATE DATABASE IF NOT EXISTS webgis_tugas_sig CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE webgis_tugas_sig;
|
||||
|
||||
DROP TABLE IF EXISTS tugas01_spbu;
|
||||
CREATE TABLE tugas01_spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(150) NOT NULL,
|
||||
alamat TEXT NULL,
|
||||
status_24_jam ENUM('Ya', 'Tidak') NOT NULL DEFAULT 'Tidak',
|
||||
kontak VARCHAR(50) NULL,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO tugas01_spbu (nama_spbu, alamat, status_24_jam, kontak, geojson) VALUES
|
||||
('SPBU Ahmad Yani', 'Jl. Ahmad Yani, Pontianak', 'Ya', '081234567890', '{"type":"Point","coordinates":[109.3425,-0.0442]}'),
|
||||
('SPBU Gajah Mada', 'Jl. Gajah Mada, Pontianak', 'Tidak', '081234567891', '{"type":"Point","coordinates":[109.3338,-0.0271]}');
|
||||
|
||||
DROP TABLE IF EXISTS tugas02_data_spasial;
|
||||
CREATE TABLE tugas02_data_spasial (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
jenis_objek ENUM('Jalan', 'Tanah') NOT NULL,
|
||||
status VARCHAR(100) NOT NULL,
|
||||
ukuran DOUBLE NOT NULL DEFAULT 0,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO tugas02_data_spasial (nama, jenis_objek, status, ukuran, geojson) VALUES
|
||||
('Contoh Jalan Ahmad Yani', 'Jalan', 'Jalan Nasional', 1250.00, '{"type":"LineString","coordinates":[[109.334,-0.055],[109.342,-0.047],[109.351,-0.043]]}'),
|
||||
('Contoh Tanah Kavling A', 'Tanah', 'SHM', 8500.00, '{"type":"Polygon","coordinates":[[[109.337,-0.032],[109.342,-0.032],[109.342,-0.028],[109.337,-0.028],[109.337,-0.032]]]}');
|
||||
|
||||
DROP TABLE IF EXISTS tugas03_spbu;
|
||||
CREATE TABLE tugas03_spbu (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(150) NOT NULL,
|
||||
alamat TEXT NULL,
|
||||
status_24_jam ENUM('Ya', 'Tidak') NOT NULL DEFAULT 'Tidak',
|
||||
kontak VARCHAR(50) NULL,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO tugas03_spbu (nama_spbu, alamat, status_24_jam, kontak, geojson) VALUES
|
||||
('SPBU Ahmad Yani', 'Jl. Ahmad Yani, Pontianak', 'Ya', '081234567890', '{"type":"Point","coordinates":[109.3425,-0.0442]}'),
|
||||
('SPBU Gajah Mada', 'Jl. Gajah Mada, Pontianak', 'Tidak', '081234567891', '{"type":"Point","coordinates":[109.3338,-0.0271]}'),
|
||||
('SPBU Imam Bonjol', 'Jl. Imam Bonjol, Pontianak', 'Ya', '081234567892', '{"type":"Point","coordinates":[109.3448,-0.0316]}'),
|
||||
('SPBU Tanjung Raya', 'Jl. Tanjung Raya II, Pontianak', 'Tidak', '081234567893', '{"type":"Point","coordinates":[109.3741,-0.0292]}');
|
||||
+206
@@ -0,0 +1,206 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Landing Page Tugas SIG - Kris Natalis</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg: #f6f8fc;
|
||||
--card: #ffffff;
|
||||
--text: #172033;
|
||||
--muted: #667085;
|
||||
--line: #e5e7eb;
|
||||
--primary: #2563eb;
|
||||
--primary-dark: #1d4ed8;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background: radial-gradient(circle at top left, #dbeafe 0, transparent 32%), var(--bg);
|
||||
color: var(--text);
|
||||
}
|
||||
.wrapper {
|
||||
width: min(1100px, calc(100% - 32px));
|
||||
margin: 0 auto;
|
||||
padding: 42px 0;
|
||||
}
|
||||
.hero {
|
||||
display: grid;
|
||||
grid-template-columns: 1.4fr .8fr;
|
||||
gap: 24px;
|
||||
align-items: stretch;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.panel, .card {
|
||||
background: rgba(255,255,255,.92);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 22px;
|
||||
box-shadow: 0 12px 32px rgba(15,23,42,.08);
|
||||
}
|
||||
.panel { padding: 32px; }
|
||||
.badge {
|
||||
display: inline-flex;
|
||||
padding: 8px 12px;
|
||||
border-radius: 999px;
|
||||
background: #eff6ff;
|
||||
color: #1d4ed8;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(30px, 5vw, 52px);
|
||||
letter-spacing: -1.4px;
|
||||
line-height: 1.04;
|
||||
}
|
||||
.subtitle {
|
||||
margin: 16px 0 0;
|
||||
font-size: 16px;
|
||||
color: var(--muted);
|
||||
line-height: 1.7;
|
||||
max-width: 720px;
|
||||
}
|
||||
.info {
|
||||
padding: 26px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.info-row {
|
||||
padding: 12px 0;
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.info-row:last-child { border-bottom: 0; }
|
||||
.label {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.value { font-weight: 700; }
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
}
|
||||
.card {
|
||||
padding: 22px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 260px;
|
||||
}
|
||||
.number {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 14px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: #eff6ff;
|
||||
color: var(--primary);
|
||||
font-weight: 800;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.card h2 {
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.card p {
|
||||
color: var(--muted);
|
||||
line-height: 1.6;
|
||||
font-size: 14px;
|
||||
flex: 1;
|
||||
}
|
||||
.button {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
background: var(--primary);
|
||||
color: white;
|
||||
padding: 11px 14px;
|
||||
border-radius: 12px;
|
||||
font-weight: 700;
|
||||
transition: .2s;
|
||||
}
|
||||
.button:hover { background: var(--primary-dark); transform: translateY(-1px); }
|
||||
footer {
|
||||
margin-top: 22px;
|
||||
color: var(--muted);
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
}
|
||||
@media (max-width: 900px) {
|
||||
.hero { grid-template-columns: 1fr; }
|
||||
.grid { grid-template-columns: repeat(2, 1fr); }
|
||||
}
|
||||
@media (max-width: 560px) {
|
||||
.wrapper { width: min(100% - 22px, 1100px); padding: 22px 0; }
|
||||
.panel, .info, .card { border-radius: 16px; }
|
||||
.panel { padding: 24px; }
|
||||
.grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main class="wrapper">
|
||||
<section class="hero">
|
||||
<div class="panel">
|
||||
<span class="badge">Mata Kuliah Sistem Informasi Geografis</span>
|
||||
<h1>Landing Page Tugas WebGIS</h1>
|
||||
<p class="subtitle">
|
||||
Halaman ini berisi kumpulan tugas WebGIS yang digabung dalam satu aplikasi,
|
||||
sehingga cukup dideploy satu kali di Coolify dan setiap tugas dapat dibuka melalui subfolder.
|
||||
</p>
|
||||
</div>
|
||||
<aside class="info panel">
|
||||
<div class="info-row">
|
||||
<span class="label">Nama</span>
|
||||
<span class="value">Kris Natalis</span>
|
||||
</div>
|
||||
<div class="info-row">
|
||||
<span class="label">Project</span>
|
||||
<span class="value">Tugas SIG WebGIS</span>
|
||||
</div>
|
||||
<div class="info-row">
|
||||
<span class="label">Jumlah Tugas</span>
|
||||
<span class="value">4 Project</span>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<article class="card">
|
||||
<div class="number">01</div>
|
||||
<h2>WebGIS Pemetaan SPBU</h2>
|
||||
<p>Menampilkan dan mengelola titik lokasi SPBU menggunakan marker Leaflet dan database.</p>
|
||||
<a class="button" href="tugas01/">Buka Tugas 01</a>
|
||||
</article>
|
||||
<article class="card">
|
||||
<div class="number">02</div>
|
||||
<h2>Manajemen Jalan dan Tanah</h2>
|
||||
<p>Mengelola data jalan berbentuk polyline dan data tanah berbentuk polygon.</p>
|
||||
<a class="button" href="tugas02/">Buka Tugas 02</a>
|
||||
</article>
|
||||
<article class="card">
|
||||
<div class="number">03</div>
|
||||
<h2>Layer Groups & Control</h2>
|
||||
<p>Menampilkan layer SPBU berdasarkan kategori buka 24 jam dan tidak 24 jam.</p>
|
||||
<a class="button" href="tugas03/">Buka Tugas 03</a>
|
||||
</article>
|
||||
<article class="card">
|
||||
<div class="number">04</div>
|
||||
<h2>GeoJSON Kecamatan Pontianak</h2>
|
||||
<p>Menampilkan batas kecamatan, nama kecamatan, dan jumlah populasi dari file GeoJSON.</p>
|
||||
<a class="button" href="tugas04/">Buka Tugas 04</a>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
UAS SIG dideploy terpisah dan tidak dimasukkan ke landing page tugas.
|
||||
</footer>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user