eksa-framework 3.5.1 → 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +35 -0
- data/CONTRIBUTING.md +92 -0
- data/README.md +14 -3
- data/SECURITY.md +31 -0
- data/app/controllers/pages_controller.rb +8 -0
- data/app/views/about.html.erb +13 -13
- data/app/views/conduct.html.erb +52 -0
- data/app/views/docs.html.erb +64 -14
- data/app/views/index.html.erb +1 -1
- data/app/views/layout.html.erb +63 -0
- data/app/views/security.html.erb +75 -0
- data/config.ru +2 -0
- data/lib/eksa/version.rb +1 -1
- metadata +6 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0bdcf04ff77acdbac3a0a4a47627a6c56e199759b59865bda47bf37cd70aff62
|
|
4
|
+
data.tar.gz: 720a0ab9be8096479a5f77ec725e8a13c137b6ff672f375437030a9814060d04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ffe8207254f46369eb601196393c6530c0e78261d74e64b2d7d1a60cccdb423e6406f451194627234e12946118e3bcf309ded54672daf0b4bc86dcd5d41450b0
|
|
7
|
+
data.tar.gz: c192aac6dbde4f0cc624c71479ba0183260435dbb2d5c2a6d94509c2ac033cb03a3a60efea1e3e1a5cfbdd1224fe7c2577083b0da442cdec81eea0c460fc91d6
|
data/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Kode Etik Kontributor
|
|
2
|
+
|
|
3
|
+
## Komitmen Kami
|
|
4
|
+
Untuk menumbuhkan lingkungan yang terbuka dan ramah, kami sebagai kontributor dan pengelola berkomitmen untuk membuat partisipasi dalam proyek kami dan komunitas kami menjadi pengalaman yang bebas dari pelecehan bagi semua orang, tanpa memandang usia, ukuran tubuh, disabilitas, etnis, karakteristik seks, identitas dan ekspresi gender, tingkat pengalaman, pendidikan, status sosial ekonomi, kebangsaan, penampilan pribadi, ras, agama, atau identitas dan orientasi seksual.
|
|
5
|
+
|
|
6
|
+
## Standar Kami
|
|
7
|
+
Contoh perilaku yang berkontribusi pada penciptaan lingkungan yang positif meliputi:
|
|
8
|
+
* Menggunakan bahasa yang ramah dan inklusif
|
|
9
|
+
* Menghargai perbedaan sudut pandang dan pengalaman
|
|
10
|
+
* Menerima kritik yang membangun dengan lapang dada
|
|
11
|
+
* Fokus pada apa yang terbaik bagi komunitas
|
|
12
|
+
* Menunjukkan empati terhadap anggota komunitas lainnya
|
|
13
|
+
|
|
14
|
+
Contoh perilaku yang tidak dapat diterima oleh peserta meliputi:
|
|
15
|
+
* Penggunaan bahasa atau citra seksual dan perhatian atau kemajuan seksual yang tidak diinginkan
|
|
16
|
+
* Komentar trolling, menghina/meremehkan, serta serangan pribadi atau politik
|
|
17
|
+
* Pelecehan publik atau pribadi
|
|
18
|
+
* Memublikasikan informasi pribadi orang lain, seperti alamat fisik atau elektronik, tanpa izin eksplisit
|
|
19
|
+
* Perilaku lain yang secara wajar dapat dianggap tidak pantas dalam lingkungan profesional
|
|
20
|
+
|
|
21
|
+
## Tanggung Jawab Pengelola
|
|
22
|
+
Pengelola proyek bertanggung jawab untuk memperjelas standar perilaku yang dapat diterima dan diharapkan untuk mengambil tindakan korektif yang adil sebagai tanggapan atas setiap insiden perilaku yang tidak dapat diterima.
|
|
23
|
+
|
|
24
|
+
Pengelola proyek memiliki hak dan tanggung jawab untuk menghapus, mengedit, atau menolak komentar, commit, code, pengeditan wiki, issue, dan kontribusi lainnya yang tidak selaras dengan Kode Etik ini, atau untuk melarang sementara atau permanen setiap kontributor atas perilaku lain yang mereka anggap tidak pantas, mengancam, menyinggung, atau berbahaya.
|
|
25
|
+
|
|
26
|
+
## Ruang Lingkup
|
|
27
|
+
Kode Etik ini berlaku baik di dalam ruang proyek maupun di ruang publik ketika seseorang mewakili proyek atau komunitasnya. Contoh mewakili proyek atau komunitas meliputi penggunaan alamat email resmi proyek, memposting melalui akun media sosial resmi, atau bertindak sebagai perwakilan yang ditunjuk pada acara online atau offline. Representasi suatu proyek dapat ditentukan lebih lanjut dan dijelaskan oleh pengelola proyek.
|
|
28
|
+
|
|
29
|
+
## Penegakan
|
|
30
|
+
Instansi perilaku yang kasar, melecehkan, atau tidak dapat diterima dapat dilaporkan dengan menghubungi tim proyek. Semua keluhan akan ditinjau dan diselidiki serta akan menghasilkan tanggapan yang dianggap perlu dan tepat sesuai situasi. Tim proyek berkewajiban untuk menjaga kerahasiaan terkait pelapor insiden. Rincian lebih lanjut tentang kebijakan penegakan dapat diposting secara terpisah.
|
|
31
|
+
|
|
32
|
+
Pengelola proyek yang tidak mengikuti atau menegakkan Kode Etik dengan itikad baik dapat menghadapi dampak sementara atau permanen seperti yang ditentukan oleh anggota kepemimpinan proyek lainnya.
|
|
33
|
+
|
|
34
|
+
## Atribusi
|
|
35
|
+
Kode Etik ini diadaptasi dari [Contributor Covenant](https://www.contributor-covenant.org), versi 1.4, tersedia di [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html).
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Panduan Kontribusi Eksa Framework
|
|
2
|
+
|
|
3
|
+
Terima kasih telah tertarik untuk berkontribusi pada **Eksa Framework**! Kami sangat menghargai bantuan Anda untuk membuat micro-framework ini menjadi lebih baik, lebih cepat, dan lebih elegan.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🏔️ Filosofi Proyek
|
|
8
|
+
Eksa Framework didesain sebagai *micro-framework* MVC yang ringan namun kuat, dengan penekanan pada:
|
|
9
|
+
1. **Kemudahan Penggunaan**: API yang intuitif untuk pengembang Ruby.
|
|
10
|
+
2. **Keindahan Visual**: Antarmuka *Glassmorphism* yang modern secara bawaan.
|
|
11
|
+
3. **Fleksibilitas**: Mendukung SQLite dan MongoDB Atlas secara transparan.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 🚩 Cara Melaporkan Masalah (Bugs)
|
|
16
|
+
Jika Anda menemukan bug, silakan buat *Issue* di GitHub dengan informasi berikut:
|
|
17
|
+
- Penjelasan singkat tentang masalah.
|
|
18
|
+
- Langkah-langkah untuk mereproduksi bug.
|
|
19
|
+
- Hasil yang diharapkan vs hasil yang sebenarnya.
|
|
20
|
+
- Versi Ruby dan Eksa Framework yang digunakan.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 💡 Mengusulkan Fitur Baru
|
|
25
|
+
Kami selalu terbuka untuk ide-ide baru! Untuk mengusulkan fitur:
|
|
26
|
+
1. Buka *Issue* baru dan beri label `enhancement`.
|
|
27
|
+
2. Jelaskan mengapa fitur tersebut berguna dan bagaimana cara kerjanya.
|
|
28
|
+
3. Sertakan contoh penggunaan jika memungkinkan.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 🛠️ Persiapan Pengembangan
|
|
33
|
+
|
|
34
|
+
### 1. Fork & Clone
|
|
35
|
+
*Fork* repositori ini ke akun GitHub Anda, lalu lakukan *clone* secara lokal:
|
|
36
|
+
```bash
|
|
37
|
+
git clone https://github.com/USERNAME/eksa_framework.git
|
|
38
|
+
cd eksa_framework
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Instalasi Dependensi
|
|
42
|
+
Pastikan Anda memiliki Ruby (v3.0+) dan terinstal `bundler`.
|
|
43
|
+
```bash
|
|
44
|
+
bundle install
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 3. Membuat Branch
|
|
48
|
+
Selalu buat *branch* baru untuk setiap fitur atau perbaikan bug:
|
|
49
|
+
```bash
|
|
50
|
+
# Untuk fitur baru
|
|
51
|
+
git checkout -b feature/nama-fitur-anda
|
|
52
|
+
|
|
53
|
+
# Untuk perbaikan bug
|
|
54
|
+
git checkout -b bugfix/deskripsi-perbaikan
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 🎨 Standar Kode & Dokumentasi
|
|
60
|
+
- Ikuti [Ruby Style Guide](https://github.com/rubocop/ruby-style-guide).
|
|
61
|
+
- Pastikan kode Anda bersih dan mudah dibaca.
|
|
62
|
+
- Tambahkan komentar jika logika kode cukup kompleks.
|
|
63
|
+
- Jika Anda menambahkan fitur baru, pastikan untuk memperbarui `README.md` atau dokumentasi terkait.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 🧪 Pengujian (Testing)
|
|
68
|
+
Kami menggunakan **RSpec** untuk memastikan stabilitas framework. Sebelum mengirimkan *Pull Request*, pastikan semua test lulus:
|
|
69
|
+
```bash
|
|
70
|
+
bundle exec rspec
|
|
71
|
+
```
|
|
72
|
+
Sangat disarankan untuk menambahkan test baru jika Anda menambahkan fitur atau memperbaiki bug.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🚀 Proses Pull Request
|
|
77
|
+
1. Pastikan kode Anda sudah di-test secara lokal.
|
|
78
|
+
2. Kirimkan *Pull Request* (PR) ke *branch* `main` di repositori utama.
|
|
79
|
+
3. Berikan deskripsi yang jelas tentang apa yang Anda rubah di dalam PR.
|
|
80
|
+
4. Tim kami akan meninjau PR Anda sesegera mungkin.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 🛡️ Keamanan
|
|
85
|
+
Keamanan adalah prioritas kami. Jika Anda menemukan kerentanan, harap baca [Kebijakan Keamanan](SECURITY.md) kami sebelum melaporkannya.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 📜 Kode Etik
|
|
90
|
+
Harap bersikap sopan dan profesional dalam setiap interaksi di proyek ini. Kami ingin membangun komunitas yang inklusif dan ramah bagi semua pengembang. Dengan berpartisipasi, Anda diharapkan untuk mematuhi [Kode Etik](CODE_OF_CONDUCT.md) kami.
|
|
91
|
+
|
|
92
|
+
Terima kasih telah berkontribusi! 🚀
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ✨ Eksa Framework v3.5.
|
|
1
|
+
# ✨ Eksa Framework v3.5.2
|
|
2
2
|
|
|
3
3
|
[](https://www.ruby-lang.org/)
|
|
4
4
|
[](https://rack.github.io/)
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## 🚀 Fitur Unggulan v3.5.
|
|
12
|
+
## 🚀 Fitur Unggulan v3.5.2
|
|
13
13
|
|
|
14
14
|
* 💎 **Modern Glassmorphism UI**: Tampilan transparan yang indah dengan Tailwind CSS & Lucide Icons.
|
|
15
|
+
* 📱 **Mobile Responsive Navigation**: Sistem navigasi adaptif dengan mobile drawer yang elegan.
|
|
15
16
|
* ⚡ **Rack 3 & Middleware Support**: Mendukung standar terbaru dan pembuatan pipeline middleware kustom.
|
|
16
17
|
* 🛠️ **Powerful CLI**: Inisialisasi project (`eksa init`), jalankan server (`eksa run`), generate komponen, ganti database, dan **migrasi data** otomatis.
|
|
17
18
|
* 💾 **Agnostic Database Engine**: Dukungan multi-database (**SQLite** & **MongoDB Atlas**) dengan sistem adapter yang otomatis dan transparan.
|
|
@@ -124,5 +125,15 @@ bundle exec rspec
|
|
|
124
125
|
|
|
125
126
|
---
|
|
126
127
|
|
|
128
|
+
## 🤝 Kontribusi & Komunitas
|
|
129
|
+
|
|
130
|
+
Kami sangat terbuka untuk kontribusi dari siapa pun! Silakan baca panduan berikut sebelum memulai:
|
|
131
|
+
|
|
132
|
+
- **[Panduan Kontribusi](CONTRIBUTING.md)**: Langkah-langkah untuk berkontribusi kode.
|
|
133
|
+
- **[Kebijakan Keamanan](SECURITY.md)**: Cara melaporkan kerentanan secara privat.
|
|
134
|
+
- **[Kode Etik](CODE_OF_CONDUCT.md)**: Standar perilaku dalam komunitas kami.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
127
138
|
## 📜 Lisensi
|
|
128
|
-
Proyek ini dilisensikan di bawah **MIT License**. Lihat file [LICENSE](
|
|
139
|
+
Proyek ini dilisensikan di bawah **MIT License**. Lihat file [LICENSE](LICENSE) untuk detail lebih lanjut.
|
data/SECURITY.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Kebijakan Keamanan
|
|
2
|
+
|
|
3
|
+
## Versi yang Didukung
|
|
4
|
+
|
|
5
|
+
Kami sangat menyarankan Anda untuk selalu menggunakan versi terbaru dari Eksa Framework untuk mendapatkan perbaikan keamanan terbaru.
|
|
6
|
+
|
|
7
|
+
| Versi | Didukung |
|
|
8
|
+
| ------- | ------------------ |
|
|
9
|
+
| 3.5.x | ✅ Ya |
|
|
10
|
+
| < 3.5 | ❌ Tidak |
|
|
11
|
+
|
|
12
|
+
## Melaporkan Kerentanan
|
|
13
|
+
|
|
14
|
+
Kami menangani keamanan dengan sangat serius. Jika Anda menemukan kerentanan keamanan di Eksa Framework, harap **JANGAN** membuka *Issue* publik. Sebaliknya, harap laporkan kerentanan tersebut secara privat melalui email ke:
|
|
15
|
+
|
|
16
|
+
**security@eksa-framework.dev** (Contoh email, silakan sesuaikan jika ada yang spesifik)
|
|
17
|
+
|
|
18
|
+
Tolong sertakan detail berikut dalam laporan Anda:
|
|
19
|
+
- Deskripsi kerentanan.
|
|
20
|
+
- Langkah-langkah untuk mereproduksi masalah.
|
|
21
|
+
- Dampak potensial dari kerentanan tersebut.
|
|
22
|
+
|
|
23
|
+
## Proses Respons
|
|
24
|
+
|
|
25
|
+
Setelah kami menerima laporan kerentanan:
|
|
26
|
+
1. Kami akan mengonfirmasi penerimaan laporan dalam waktu 48 jam.
|
|
27
|
+
2. Kami akan bekerja untuk memvalidasi dan memperbaiki masalah tersebut.
|
|
28
|
+
3. Kami akan memberikan pembaruan secara berkala mengenai kemajuan perbaikan.
|
|
29
|
+
4. Setelah perbaikan dirilis, kami akan memberikan kredit kepada pelapor (kecuali jika pelapor memilih untuk anonim).
|
|
30
|
+
|
|
31
|
+
Terima kasih telah membantu menjaga keamanan Eksa Framework!
|
data/app/views/about.html.erb
CHANGED
|
@@ -8,24 +8,24 @@
|
|
|
8
8
|
|
|
9
9
|
<div class="space-y-6 text-white/80 leading-relaxed">
|
|
10
10
|
<p class="text-lg text-center mx-auto max-w-2xl mb-10">
|
|
11
|
-
<strong>Eksa Framework v3.5.
|
|
11
|
+
<strong>Eksa Framework v3.5.2</strong> adalah <strong>micro-framework</strong> Ruby yang dibangun dari nol untuk mendemonstrasikan kekuatan arsitektur MVC, kesederhanaan Ruby, dengan keindahan antarmuka-antarmuka UI masa kini.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mt-8">
|
|
15
15
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
16
16
|
<i data-lucide="cpu" class="w-6 h-6 text-indigo-300 mb-3"></i>
|
|
17
17
|
<h3 class="font-bold text-white mb-2">Core Ruby & Rack 3</h3>
|
|
18
|
-
<p class="text-sm">Dibangun di atas standar industri Rack tanpa bloatware framework berlapis
|
|
18
|
+
<p class="text-sm">Dibangun di atas standar industri Rack tanpa bloatware framework berlapis. Kompatibel dengan Ruby 3.4+.</p>
|
|
19
19
|
</div>
|
|
20
20
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
21
21
|
<i data-lucide="database" class="w-6 h-6 text-emerald-300 mb-3"></i>
|
|
22
|
-
<h3 class="font-bold text-white mb-2">
|
|
23
|
-
<p class="text-sm">Mendukung peralihan dinamis & migrasi data antara SQLite dan MongoDB Atlas.</p>
|
|
22
|
+
<h3 class="font-bold text-white mb-2">Agnostic DB Engine</h3>
|
|
23
|
+
<p class="text-sm">Mendukung peralihan dinamis & migrasi data antara SQLite dan MongoDB Atlas secara JIT.</p>
|
|
24
24
|
</div>
|
|
25
25
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
26
|
-
<i data-lucide="
|
|
27
|
-
<h3 class="font-bold text-white mb-2">
|
|
28
|
-
<p class="text-sm">
|
|
26
|
+
<i data-lucide="shield-check" class="w-6 h-6 text-rose-300 mb-3"></i>
|
|
27
|
+
<h3 class="font-bold text-white mb-2">Security First</h3>
|
|
28
|
+
<p class="text-sm">Dukungan <code class="text-indigo-200">.env</code> native untuk mengamankan kredensial cloud dan rahasia aplikasi.</p>
|
|
29
29
|
</div>
|
|
30
30
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
31
31
|
<i data-lucide="pen-tool" class="w-6 h-6 text-yellow-300 mb-3"></i>
|
|
@@ -33,23 +33,23 @@
|
|
|
33
33
|
<p class="text-sm">Sistem artikel statis lengkap Front Matter YAML & Auto-Routing layaknya Jekyll.</p>
|
|
34
34
|
</div>
|
|
35
35
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
36
|
-
<i data-lucide="
|
|
37
|
-
<h3 class="font-bold text-white mb-2">
|
|
38
|
-
<p class="text-sm">
|
|
36
|
+
<i data-lucide="search" class="w-6 h-6 text-cyan-300 mb-3"></i>
|
|
37
|
+
<h3 class="font-bold text-white mb-2">SEO & JSON-LD</h3>
|
|
38
|
+
<p class="text-sm">Optimasi mesin pencari otomatis dengan Sitemap, Robots.txt, dan Structured Data.</p>
|
|
39
39
|
</div>
|
|
40
40
|
<div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
|
|
41
41
|
<i data-lucide="layout-dashboard" class="w-6 h-6 text-fuchsia-300 mb-3"></i>
|
|
42
42
|
<h3 class="font-bold text-white mb-2">CMS Dashboard</h3>
|
|
43
|
-
<p class="text-sm">Pusat kendali admin internal untuk edit Markdown via <strong>web
|
|
43
|
+
<p class="text-sm">Pusat kendali admin internal untuk edit Markdown via <strong>web editor</strong> langsung.</p>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
46
|
</div>
|
|
47
47
|
|
|
48
48
|
<div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
|
|
49
|
-
<a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition">
|
|
49
|
+
<a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
|
|
50
50
|
<i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
|
|
51
51
|
</a>
|
|
52
|
-
<span class="text-xs opacity-40 italic">Handcrafted with Ruby</span>
|
|
52
|
+
<span class="text-xs opacity-40 italic">Handcrafted with Ruby by IshikawaUta</span>
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
55
55
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<div class="glass rounded-3xl p-10 text-white animate__animated animate__fadeIn">
|
|
2
|
+
<div class="flex items-center gap-4 mb-8">
|
|
3
|
+
<div class="p-4 bg-indigo-500 rounded-2xl shadow-xl">
|
|
4
|
+
<i data-lucide="shield" class="w-8 h-8"></i>
|
|
5
|
+
</div>
|
|
6
|
+
<h1 class="text-4xl font-extrabold tracking-tight">Kode Etik <span class="text-indigo-300">Kontributor</span></h1>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div class="prose prose-invert max-w-none space-y-6 text-white/80 leading-relaxed">
|
|
10
|
+
<section>
|
|
11
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Komitmen Kami</h2>
|
|
12
|
+
<p>Untuk menumbuhkan lingkungan yang terbuka dan ramah, kami sebagai kontributor dan pengelola berkomitmen untuk membuat partisipasi dalam proyek kami dan komunitas kami menjadi pengalaman yang bebas dari pelecehan bagi semua orang, tanpa memandang usia, ukuran tubuh, disabilitas, etnis, karakteristik seks, identitas dan ekspresi gender, tingkat pengalaman, pendidikan, status sosial ekonomi, kebangsaan, penampilan pribadi, ras, agama, atau identitas dan orientasi seksual.</p>
|
|
13
|
+
</section>
|
|
14
|
+
|
|
15
|
+
<section>
|
|
16
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Standar Kami</h2>
|
|
17
|
+
<p>Contoh perilaku yang berkontribusi pada penciptaan lingkungan yang positif meliputi:</p>
|
|
18
|
+
<ul class="list-disc list-inside space-y-2 ml-4">
|
|
19
|
+
<li>Menggunakan bahasa yang ramah dan inklusif</li>
|
|
20
|
+
<li>Menghargai perbedaan sudut pandang dan pengalaman</li>
|
|
21
|
+
<li>Menerima kritik yang membangun dengan lapang dada</li>
|
|
22
|
+
<li>Fokus pada apa yang terbaik bagi komunitas</li>
|
|
23
|
+
<li>Menunjukkan empati terhadap anggota komunitas lainnya</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</section>
|
|
26
|
+
|
|
27
|
+
<section>
|
|
28
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Perilaku Tidak Pantas</h2>
|
|
29
|
+
<p>Contoh perilaku yang tidak dapat diterima meliputi:</p>
|
|
30
|
+
<ul class="list-disc list-inside space-y-2 ml-4 text-rose-300">
|
|
31
|
+
<li>Pelecehan publik atau pribadi</li>
|
|
32
|
+
<li>Komentar menghina/meremehkan, serta serangan pribadi</li>
|
|
33
|
+
<li>Penggunaan bahasa atau citra seksual yang tidak diinginkan</li>
|
|
34
|
+
<li>Memublikasikan informasi pribadi orang lain tanpa izin</li>
|
|
35
|
+
</ul>
|
|
36
|
+
</section>
|
|
37
|
+
|
|
38
|
+
<section>
|
|
39
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Penegakan</h2>
|
|
40
|
+
<p>Instance perilaku yang kasar atau melecehkan dapat dilaporkan dengan menghubungi tim proyek. Semua keluhan akan diselidiki secara rahasia.</p>
|
|
41
|
+
</section>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
|
|
45
|
+
<a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
|
|
46
|
+
<i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
|
|
47
|
+
</a>
|
|
48
|
+
<span class="text-xs opacity-40 italic">Adapted from Contributor Covenant v1.4</span>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<script>lucide.createIcons();</script>
|
data/app/views/docs.html.erb
CHANGED
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
</div>
|
|
7
7
|
<h1 class="text-4xl font-extrabold tracking-tight">Dokumentasi <span class="text-indigo-300">Eksa</span></h1>
|
|
8
8
|
</div>
|
|
9
|
-
<p class="text-white/60 text-lg">Panduan profesional instalasi dan pengembangan aplikasi menggunakan Eksa Framework v3.5.
|
|
9
|
+
<p class="text-white/60 text-lg">Panduan profesional instalasi dan pengembangan aplikasi menggunakan Eksa Framework v3.5.2.</p>
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
12
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 mb-12">
|
|
13
13
|
<div class="space-y-4">
|
|
14
14
|
<h3 class="font-bold text-indigo-300 uppercase text-xs tracking-widest">Memulai</h3>
|
|
15
15
|
<ul class="space-y-2 text-sm">
|
|
16
|
-
<li><a href="#instalasi" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="download" class="w-3 h-3"></i> Instalasi
|
|
16
|
+
<li><a href="#instalasi" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="download" class="w-3 h-3"></i> Instalasi & Run</a></li>
|
|
17
|
+
<li><a href="#struktur" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="folder-tree" class="w-3 h-3"></i> Struktur Project</a></li>
|
|
17
18
|
<li><a href="#keamanan" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="shield" class="w-3 h-3"></i> Setup Keamanan</a></li>
|
|
18
|
-
<li><a href="#struktur" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="folder" class="w-3 h-3"></i> Struktur Project</a></li>
|
|
19
19
|
</ul>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="space-y-4">
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
<section id="instalasi" class="mb-12 scroll-mt-24">
|
|
40
40
|
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
41
|
-
<i data-lucide="terminal" class="w-6 h-6 text-indigo-400"></i> Instalasi
|
|
41
|
+
<i data-lucide="terminal" class="w-6 h-6 text-indigo-400"></i> Instalasi & Eksekusi
|
|
42
42
|
</h2>
|
|
43
43
|
<div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-3">
|
|
44
44
|
<div>
|
|
@@ -56,11 +56,44 @@
|
|
|
56
56
|
</div>
|
|
57
57
|
</section>
|
|
58
58
|
|
|
59
|
+
<section id="struktur" class="mb-12 scroll-mt-24">
|
|
60
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
61
|
+
<i data-lucide="folder-tree" class="w-6 h-6 text-indigo-400"></i> Struktur Project
|
|
62
|
+
</h2>
|
|
63
|
+
<p class="text-white/60 mb-4 text-sm">Eksa mengikuti konvensi MVC yang sederhana namun powerful.</p>
|
|
64
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
65
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
66
|
+
<code class="text-indigo-300 font-bold">app/</code>
|
|
67
|
+
<p class="text-xs text-white/50 mt-1">Folders: <code class="text-white">controllers/</code>, <code class="text-white">models/</code>, <code class="text-white">views/</code>.</p>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
70
|
+
<code class="text-indigo-300 font-bold">_posts/</code>
|
|
71
|
+
<p class="text-xs text-white/50 mt-1">Pusat konten blog berbasis Markdown (.md).</p>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
74
|
+
<code class="text-indigo-300 font-bold">public/</code>
|
|
75
|
+
<p class="text-xs text-white/50 mt-1">Asset statis: <code class="text-white">css/</code>, <code class="text-white">img/</code>, <code class="text-white">js/</code>.</p>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
78
|
+
<code class="text-indigo-300 font-bold">db/</code>
|
|
79
|
+
<p class="text-xs text-white/50 mt-1">Penyimpanan <code class="text-white">eksa_app.db</code> (SQLite) dan skrip inisialisasi.</p>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
82
|
+
<code class="text-indigo-300 font-bold">config.ru</code>
|
|
83
|
+
<p class="text-xs text-white/50 mt-1">Konfigurasi Rack, Middleware, dan Routing utama.</p>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="bg-white/5 p-4 rounded-xl border border-white/10">
|
|
86
|
+
<code class="text-indigo-300 font-bold">.env</code>
|
|
87
|
+
<p class="text-xs text-white/50 mt-1">Variabel lingkungan untuk kredensial database & secret key.</p>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</section>
|
|
91
|
+
|
|
59
92
|
<section id="keamanan" class="mb-12 scroll-mt-24">
|
|
60
93
|
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
61
94
|
<i data-lucide="shield-check" class="w-6 h-6 text-indigo-400"></i> Setup Keamanan (.env)
|
|
62
95
|
</h2>
|
|
63
|
-
<p class="text-white/60 mb-4 text-sm">Gunakan file <code class="text-indigo-200">.env</code> untuk menyimpan kredensial sensitif
|
|
96
|
+
<p class="text-white/60 mb-4 text-sm">Gunakan file <code class="text-indigo-200">.env</code> untuk menyimpan kredensial sensitif.</p>
|
|
64
97
|
<div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-2">
|
|
65
98
|
<p class="text-white/30"># Salin template example</p>
|
|
66
99
|
<p class="text-indigo-300">cp .env.example .env</p>
|
|
@@ -69,6 +102,23 @@
|
|
|
69
102
|
</div>
|
|
70
103
|
</section>
|
|
71
104
|
|
|
105
|
+
<section id="routing" class="mb-12 scroll-mt-24">
|
|
106
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
107
|
+
<i data-lucide="git-branch" class="w-6 h-6 text-indigo-400"></i> Routing System
|
|
108
|
+
</h2>
|
|
109
|
+
<p class="text-white/60 mb-4 text-sm">Definisikan endpoint aplikasi Anda di <code class="text-indigo-200">config.ru</code>. Eksa mendukung parameter dinamis.</p>
|
|
110
|
+
<div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-4">
|
|
111
|
+
<div>
|
|
112
|
+
<p class="text-white/30"># Struktur: add_route(path, controller, action)</p>
|
|
113
|
+
<p class="text-indigo-300 italic">app.add_route "/", PagesController, :index</p>
|
|
114
|
+
<p class="text-indigo-300 italic">app.add_route "/blog/:slug", BlogController, :show</p>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="p-3 bg-white/5 rounded-lg border border-white/10">
|
|
117
|
+
<p class="text-xs text-white/50 italic">Eksa akan otomatis memetakan <code class="text-white">:slug</code> menjadi <code class="text-white">params['slug']</code> di dalam controller.</p>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</section>
|
|
121
|
+
|
|
72
122
|
<section id="database" class="mb-12 scroll-mt-24">
|
|
73
123
|
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
74
124
|
<i data-lucide="database" class="w-6 h-6 text-indigo-400"></i> Agnostic Database Engine
|
|
@@ -90,14 +140,14 @@
|
|
|
90
140
|
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
91
141
|
<i data-lucide="zap" class="w-6 h-6 text-indigo-400"></i> Just-In-Time Schema Initialization
|
|
92
142
|
</h2>
|
|
93
|
-
<p class="text-white/60 mb-4 text-sm">
|
|
143
|
+
<p class="text-white/60 mb-4 text-sm">Eksa mendeteksi dan membuat tabel/koleksi secara otomatis tepat saat model pertama kali diakses (JIT).</p>
|
|
94
144
|
<div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10">
|
|
95
|
-
<p class="text-white/30">#
|
|
96
|
-
<p class="text-indigo-300">class
|
|
145
|
+
<p class="text-white/30"># Contoh di Model</p>
|
|
146
|
+
<p class="text-indigo-300">class Message < Eksa::Model</p>
|
|
97
147
|
<p class="text-indigo-300 italic ml-4">def self.setup_schema</p>
|
|
98
|
-
<p class="text-indigo-300 italic ml-8">db.execute "CREATE TABLE IF NOT EXISTS ..."</p>
|
|
148
|
+
<p class="text-indigo-300 italic ml-8">db.execute "CREATE TABLE IF NOT EXISTS messages..."</p>
|
|
99
149
|
<p class="text-indigo-300 italic ml-4">end</p>
|
|
100
|
-
<p class="text-indigo-300">
|
|
150
|
+
<p class="text-indigo-300">end</p>
|
|
101
151
|
</div>
|
|
102
152
|
</section>
|
|
103
153
|
|
|
@@ -128,12 +178,12 @@
|
|
|
128
178
|
|
|
129
179
|
<section id="seo" class="mb-12 scroll-mt-24">
|
|
130
180
|
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
131
|
-
<i data-lucide="search" class="w-6 h-6 text-indigo-400"></i> SEO & JSON-LD
|
|
181
|
+
<i data-lucide="search" class="w-6 h-6 text-indigo-400"></i> SEO & JSON-LD
|
|
132
182
|
</h2>
|
|
133
|
-
<p class="text-white/60 mb-4 text-sm">Eksa v3.5.
|
|
183
|
+
<p class="text-white/60 mb-4 text-sm">Eksa v3.5.2 menyematkan data terstruktur secara otomatis untuk ranking pencarian yang lebih baik.</p>
|
|
134
184
|
<div class="bg-white/5 p-4 rounded-xl border border-white/10 flex items-center gap-3">
|
|
135
185
|
<i data-lucide="check-circle-2" class="w-5 h-5 text-emerald-400"></i>
|
|
136
|
-
<p class="text-xs text-white/70">Mendukung <code class="text-indigo-300">sitemap.xml</code>, <code class="text-indigo-300">robots.txt</code
|
|
186
|
+
<p class="text-xs text-white/70">Mendukung <code class="text-indigo-300">sitemap.xml</code>, <code class="text-indigo-300">robots.txt</code> secara dinamis.</p>
|
|
137
187
|
</div>
|
|
138
188
|
</section>
|
|
139
189
|
|
|
@@ -142,7 +192,7 @@
|
|
|
142
192
|
<span class="bg-indigo-500/20 text-indigo-300 text-[10px] px-3 py-1 rounded-full border border-indigo-500/30 uppercase tracking-tighter">Rack 3.0 Compatible</span>
|
|
143
193
|
<span class="bg-emerald-500/20 text-emerald-300 text-[10px] px-3 py-1 rounded-full border border-emerald-500/30 uppercase tracking-tighter">Production Ready</span>
|
|
144
194
|
</div>
|
|
145
|
-
<p class="text-white/40 text-sm italic">Eksa Framework v3.5.
|
|
195
|
+
<p class="text-white/40 text-sm italic">Eksa Framework v3.5.2 Professional Documentation</p>
|
|
146
196
|
<a href="/" class="inline-block mt-6 text-indigo-300 hover:text-white transition font-bold flex items-center justify-center gap-2">
|
|
147
197
|
<i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Beranda
|
|
148
198
|
</a>
|
data/app/views/index.html.erb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div class="flex flex-col md:flex-row justify-between items-start md:items-center mb-8 gap-4">
|
|
3
3
|
<div>
|
|
4
4
|
<span class="inline-block bg-indigo-500/20 text-indigo-200 text-xs font-bold px-3 py-1 rounded-full mb-3 border border-indigo-500/30">
|
|
5
|
-
v3.5.
|
|
5
|
+
v3.5.2 Alpha
|
|
6
6
|
</span>
|
|
7
7
|
<h1 class="text-4xl font-extrabold tracking-tight">
|
|
8
8
|
Halo, <span class="text-indigo-300"><%= @nama %></span>!
|
data/app/views/layout.html.erb
CHANGED
|
@@ -194,14 +194,57 @@
|
|
|
194
194
|
|
|
195
195
|
<div class="flex items-center gap-4">
|
|
196
196
|
<a href="https://github.com/IshikawaUta" target="_blank" class="p-2 hover:bg-white/10 rounded-full transition"><i data-lucide="github" class="w-5 h-5"></i></a>
|
|
197
|
+
<!-- Mobile Menu Button -->
|
|
198
|
+
<button onclick="toggleMobileMenu()" class="md:hidden p-2 hover:bg-white/10 rounded-full transition relative z-50">
|
|
199
|
+
<i data-lucide="menu" id="menu-icon" class="w-6 h-6"></i>
|
|
200
|
+
</button>
|
|
197
201
|
</div>
|
|
198
202
|
</nav>
|
|
199
203
|
|
|
204
|
+
<!-- Mobile Menu Overlay -->
|
|
205
|
+
<div id="mobile-menu" class="fixed inset-0 z-[60] glass hidden animate__animated">
|
|
206
|
+
<div class="flex flex-col h-full p-8">
|
|
207
|
+
<div class="flex items-center justify-between mb-12">
|
|
208
|
+
<div class="flex items-center gap-3">
|
|
209
|
+
<div class="p-2 bg-indigo-500 rounded-xl shadow-lg shadow-indigo-500/50">
|
|
210
|
+
<i data-lucide="layers" class="w-6 h-6"></i>
|
|
211
|
+
</div>
|
|
212
|
+
<span class="text-xl font-extrabold tracking-tight">Eksa<span class="text-indigo-300">Framework</span></span>
|
|
213
|
+
</div>
|
|
214
|
+
<button onclick="toggleMobileMenu()" class="p-2 hover:bg-white/10 rounded-full transition">
|
|
215
|
+
<i data-lucide="x" class="w-6 h-6 text-white"></i>
|
|
216
|
+
</button>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<ul class="flex flex-col gap-6 text-2xl font-bold">
|
|
220
|
+
<li><a href="/" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="home" class="w-8 h-8"></i> Home</a></li>
|
|
221
|
+
<li><a href="/about" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="info" class="w-8 h-8"></i> About</a></li>
|
|
222
|
+
<li><a href="/docs" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="book-open" class="w-8 h-8"></i> Docs</a></li>
|
|
223
|
+
<li><a href="/posts" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="book" class="w-8 h-8"></i> Blog</a></li>
|
|
224
|
+
<li><a href="/kontak" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="message-circle" class="w-8 h-8"></i> Contact</a></li>
|
|
225
|
+
</ul>
|
|
226
|
+
|
|
227
|
+
<div class="mt-auto pt-8 border-t border-white/10 flex flex-col gap-4">
|
|
228
|
+
<div class="flex justify-center gap-8">
|
|
229
|
+
<a href="/conduct" class="text-sm hover:text-white transition">Kode Etik</a>
|
|
230
|
+
<a href="/security" class="text-sm hover:text-white transition">Keamanan</a>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="text-center opacity-40 text-xs">
|
|
233
|
+
Handcrafted with Ruby by IshikawaUta
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
|
|
200
239
|
<main class="max-w-6xl mx-auto py-12 px-6 flex-grow animate__animated animate__fadeInUp">
|
|
201
240
|
<%= @content %>
|
|
202
241
|
</main>
|
|
203
242
|
|
|
204
243
|
<footer class="py-8 text-center text-white/40 text-sm border-t border-white/5">
|
|
244
|
+
<div class="flex justify-center gap-6 mb-4">
|
|
245
|
+
<a href="/conduct" class="hover:text-white transition">Kode Etik</a>
|
|
246
|
+
<a href="/security" class="hover:text-white transition">Keamanan</a>
|
|
247
|
+
</div>
|
|
205
248
|
<p>© <%= Time.now.year %> <span class="font-bold text-white/60">Eksa Framework</span>. Crafted for speed.</p>
|
|
206
249
|
</footer>
|
|
207
250
|
|
|
@@ -211,6 +254,26 @@
|
|
|
211
254
|
// Inisialisasi ikon Lucide
|
|
212
255
|
lucide.createIcons();
|
|
213
256
|
|
|
257
|
+
// Mobile Menu Toggle
|
|
258
|
+
function toggleMobileMenu() {
|
|
259
|
+
const menu = document.getElementById('mobile-menu');
|
|
260
|
+
const body = document.body;
|
|
261
|
+
|
|
262
|
+
if (menu.classList.contains('hidden')) {
|
|
263
|
+
menu.classList.remove('hidden');
|
|
264
|
+
menu.classList.remove('animate__fadeOutRight');
|
|
265
|
+
menu.classList.add('animate__fadeInRight');
|
|
266
|
+
body.style.overflow = 'hidden'; // Prevent scrolling
|
|
267
|
+
} else {
|
|
268
|
+
menu.classList.remove('animate__fadeInRight');
|
|
269
|
+
menu.classList.add('animate__fadeOutRight');
|
|
270
|
+
body.style.overflow = ''; // Restore scrolling
|
|
271
|
+
setTimeout(() => {
|
|
272
|
+
menu.classList.add('hidden');
|
|
273
|
+
}, 500);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
214
277
|
// Setup Copy Buttons for Code Blocks
|
|
215
278
|
document.querySelectorAll('pre').forEach((block) => {
|
|
216
279
|
// Wrap pre in a container
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<div class="glass rounded-3xl p-10 text-white animate__animated animate__fadeIn">
|
|
2
|
+
<div class="flex items-center gap-4 mb-8">
|
|
3
|
+
<div class="p-4 bg-emerald-500 rounded-2xl shadow-xl">
|
|
4
|
+
<i data-lucide="lock" class="w-8 h-8"></i>
|
|
5
|
+
</div>
|
|
6
|
+
<h1 class="text-4xl font-extrabold tracking-tight">Kebijakan <span class="text-emerald-300">Keamanan</span></h1>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div class="prose prose-invert max-w-none space-y-8 text-white/80 leading-relaxed">
|
|
10
|
+
<section>
|
|
11
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Versi yang Didukung</h2>
|
|
12
|
+
<p>Kami menyarankan penggunaan versi terbaru untuk mendapatkan perbaikan keamanan terbaik.</p>
|
|
13
|
+
<div class="overflow-hidden rounded-xl border border-white/10 bg-white/5 mt-4">
|
|
14
|
+
<table class="w-full text-left">
|
|
15
|
+
<thead class="bg-white/10 border-white/10 text-white">
|
|
16
|
+
<tr>
|
|
17
|
+
<th class="px-6 py-3 font-semibold">Versi</th>
|
|
18
|
+
<th class="px-6 py-3 font-semibold">Status Dukungan</th>
|
|
19
|
+
</tr>
|
|
20
|
+
</thead>
|
|
21
|
+
<tbody class="divide-y divide-white/10">
|
|
22
|
+
<tr class="border-white/10">
|
|
23
|
+
<td class="px-6 py-4">3.5.x</td>
|
|
24
|
+
<td class="px-6 py-4 text-emerald-300 font-bold">✅ Didukung (Aktif)</td>
|
|
25
|
+
</tr>
|
|
26
|
+
<tr class="opacity-50">
|
|
27
|
+
<td class="px-6 py-4">< 3.5</td>
|
|
28
|
+
<td class="px-6 py-4 text-rose-300">❌ Tidak Didukung</td>
|
|
29
|
+
</tr>
|
|
30
|
+
</tbody>
|
|
31
|
+
</table>
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|
|
34
|
+
|
|
35
|
+
<section class="bg-indigo-500/10 border border-indigo-500/20 p-6 rounded-2xl">
|
|
36
|
+
<h2 class="text-2xl font-bold text-white mb-4 flex items-center gap-3">
|
|
37
|
+
<i data-lucide="alert-triangle" class="text-indigo-300"></i>
|
|
38
|
+
Melaporkan Kerentanan
|
|
39
|
+
</h2>
|
|
40
|
+
<p>Jika Anda menemukan masalah keamanan, harap <strong>JANGAN</strong> membuat isu publik. Laporkan secara privat melalui email:</p>
|
|
41
|
+
<p class="mt-4 text-center">
|
|
42
|
+
<a href="mailto:komikers09@gmail.com" class="inline-block no-underline bg-indigo-600 hover:bg-indigo-700 text-white px-8 py-3 rounded-xl font-bold transition shadow-lg">
|
|
43
|
+
security@eksa-framework.dev
|
|
44
|
+
</a>
|
|
45
|
+
</p>
|
|
46
|
+
</section>
|
|
47
|
+
|
|
48
|
+
<section>
|
|
49
|
+
<h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Proses Respons</h2>
|
|
50
|
+
<ul class="space-y-4">
|
|
51
|
+
<li class="flex gap-4">
|
|
52
|
+
<span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">1</span>
|
|
53
|
+
<p>Konfirmasi penerimaan laporan dalam 48 jam.</p>
|
|
54
|
+
</li>
|
|
55
|
+
<li class="flex gap-4">
|
|
56
|
+
<span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">2</span>
|
|
57
|
+
<p>Validasi dan pengerjaan perbaikan secara tertutup.</p>
|
|
58
|
+
</li>
|
|
59
|
+
<li class="flex gap-4">
|
|
60
|
+
<span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">3</span>
|
|
61
|
+
<p>Pembaruan berkala kepada pelapor mengenai progres.</p>
|
|
62
|
+
</li>
|
|
63
|
+
</ul>
|
|
64
|
+
</section>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
|
|
68
|
+
<a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
|
|
69
|
+
<i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
|
|
70
|
+
</a>
|
|
71
|
+
<span class="text-xs opacity-40 italic">We take security seriously.</span>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<script>lucide.createIcons();</script>
|
data/config.ru
CHANGED
|
@@ -15,6 +15,8 @@ app.add_route "/edit", PagesController, :edit
|
|
|
15
15
|
app.add_route "/about", PagesController, :about
|
|
16
16
|
app.add_route "/docs", PagesController, :docs
|
|
17
17
|
app.add_route "/kontak", PagesController, :kontak
|
|
18
|
+
app.add_route "/conduct", PagesController, :conduct
|
|
19
|
+
app.add_route "/security", PagesController, :security
|
|
18
20
|
app.add_route "/robots.txt", SeoController, :robots
|
|
19
21
|
app.add_route "/sitemap.xml", SeoController, :sitemap
|
|
20
22
|
app.add_route "/posts", PostsController, :index
|
data/lib/eksa/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: eksa-framework
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.5.
|
|
4
|
+
version: 3.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- IshikawaUta
|
|
@@ -174,16 +174,20 @@ extra_rdoc_files: []
|
|
|
174
174
|
files:
|
|
175
175
|
- ".eksa.json"
|
|
176
176
|
- ".env.example"
|
|
177
|
+
- CODE_OF_CONDUCT.md
|
|
178
|
+
- CONTRIBUTING.md
|
|
177
179
|
- Gemfile
|
|
178
180
|
- Gemfile.lock
|
|
179
181
|
- LICENSE
|
|
180
182
|
- README.md
|
|
183
|
+
- SECURITY.md
|
|
181
184
|
- _posts/2026-03-15-welcome-to-eksa-framework.md
|
|
182
185
|
- app/controllers/pages_controller.rb
|
|
183
186
|
- app/controllers/posts_controller.rb
|
|
184
187
|
- app/controllers/seo_controller.rb
|
|
185
188
|
- app/models/pesan.rb
|
|
186
189
|
- app/views/about.html.erb
|
|
190
|
+
- app/views/conduct.html.erb
|
|
187
191
|
- app/views/docs.html.erb
|
|
188
192
|
- app/views/edit.html.erb
|
|
189
193
|
- app/views/index.html.erb
|
|
@@ -191,6 +195,7 @@ files:
|
|
|
191
195
|
- app/views/layout.html.erb
|
|
192
196
|
- app/views/posts/index.html.erb
|
|
193
197
|
- app/views/posts/show.html.erb
|
|
198
|
+
- app/views/security.html.erb
|
|
194
199
|
- config.ru
|
|
195
200
|
- db/eksa_app.db
|
|
196
201
|
- db/setup.rb
|