Fokus isi proyek: App Kasir mobile + API service, App Rental PS
All checks were successful
Deploy Portfolio to Production / deploy (push) Successful in 9s
All checks were successful
Deploy Portfolio to Production / deploy (push) Successful in 9s
This commit is contained in:
113
index.html
113
index.html
@@ -3,108 +3,93 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>gosambi - Web Developer</title>
|
<title>gosambi - Proyek</title>
|
||||||
<meta name="description" content="Portofolio gosambi - Web Developer: aplikasi kasir mobile + API, sistem rental PlayStation, dan homelab self-hosted.">
|
<meta name="description" content="Proyek gosambi: App Kasir mobile + API service, dan sistem Rental PS.">
|
||||||
<style>
|
<style>
|
||||||
:root{--bg:#0d1117;--card:#161b22;--txt:#e6edf3;--mut:#8b949e;--acc:#58a6ff;--acc2:#3fb950}
|
:root{--bg:#0d1117;--card:#161b22;--txt:#e6edf3;--mut:#8b949e;--acc:#58a6ff;--acc2:#3fb950}
|
||||||
*{box-sizing:border-box;margin:0;padding:0}
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
body{background:var(--bg);color:var(--txt);font-family:'Segoe UI',system-ui,sans-serif;line-height:1.6}
|
body{background:var(--bg);color:var(--txt);font-family:'Segoe UI',system-ui,sans-serif;line-height:1.6}
|
||||||
.wrap{max-width:900px;margin:0 auto;padding:24px 20px 64px}
|
.wrap{max-width:900px;margin:0 auto;padding:24px 20px 64px}
|
||||||
.hero{text-align:center;padding:72px 16px 48px}
|
.hero{text-align:center;padding:64px 16px 40px}
|
||||||
.hero h1{font-size:2.6rem;letter-spacing:.5px}
|
.hero h1{font-size:2.4rem}
|
||||||
.hero h1 span{color:var(--acc)}
|
.hero h1 span{color:var(--acc)}
|
||||||
.hero p.sub{color:var(--mut);margin-top:8px;font-size:1.1rem}
|
.hero p.sub{color:var(--mut);margin-top:8px;font-size:1.05rem}
|
||||||
.badges{margin-top:18px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
|
section{margin-top:36px}
|
||||||
.badges a,.btn{display:inline-block;padding:10px 22px;border-radius:999px;text-decoration:none;font-weight:600}
|
|
||||||
.btn{background:var(--acc);color:#04121f}
|
|
||||||
.btn.ghost{background:transparent;border:1px solid var(--acc);color:var(--acc)}
|
|
||||||
section{margin-top:44px}
|
|
||||||
h2{font-size:1.4rem;margin-bottom:14px;border-left:4px solid var(--acc);padding-left:10px}
|
h2{font-size:1.4rem;margin-bottom:14px;border-left:4px solid var(--acc);padding-left:10px}
|
||||||
.card{background:var(--card);border:1px solid #30363d;border-radius:14px;padding:18px;margin-bottom:14px}
|
.card{background:var(--card);border:1px solid #30363d;border-radius:14px;padding:18px;margin-bottom:16px}
|
||||||
.card h3{margin-bottom:4px}
|
.card h3{margin-bottom:4px}
|
||||||
.card .tag{font-size:.8rem;color:var(--acc2)}
|
.card .tag{font-size:.8rem;color:var(--acc2)}
|
||||||
.card p{color:#c9d1d9;font-size:.95rem;margin-top:6px}
|
.card p{color:#c9d1d9;font-size:.95rem;margin-top:6px}
|
||||||
|
.card ul{color:#c9d1d9;font-size:.92rem;margin-top:8px;padding-left:20px}
|
||||||
|
.card li{margin-bottom:4px}
|
||||||
.stack{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
|
.stack{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
|
||||||
.stack span{background:#21262d;border:1px solid #30363d;border-radius:6px;padding:3px 10px;font-size:.78rem;color:var(--mut)}
|
.stack span{background:#21262d;border:1px solid #30363d;border-radius:6px;padding:3px 10px;font-size:.78rem;color:var(--mut)}
|
||||||
.skills{display:flex;flex-wrap:wrap;gap:8px}
|
|
||||||
.skills span{background:#21262d;border:1px solid #30363d;border-radius:8px;padding:6px 12px;font-size:.85rem}
|
|
||||||
.links{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
|
.links{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
|
||||||
.links a{color:var(--acc);text-decoration:none;border:1px solid #30363d;border-radius:8px;padding:8px 14px;font-size:.9rem}
|
.links a{color:var(--acc);text-decoration:none;border:1px solid #30363d;border-radius:8px;padding:8px 14px;font-size:.9rem}
|
||||||
.links a:hover{border-color:var(--acc)}
|
.links a:hover{border-color:var(--acc)}
|
||||||
footer{text-align:center;color:var(--mut);margin-top:56px;font-size:.85rem}
|
footer{text-align:center;color:var(--mut);margin-top:56px;font-size:.85rem}
|
||||||
|
footer a{color:var(--acc);text-decoration:none}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<div class="hero">
|
<div class="hero">
|
||||||
<h1>Halo, saya <span>gosambi</span></h1>
|
<h1>Proyek <span>gosambi</span></h1>
|
||||||
<p class="sub">Web Developer - aplikasi mobile, REST API & sistem operasional (kasir, rental PS) + homelab enthusiast</p>
|
<p class="sub">Aplikasi mobile, REST API & sistem operasional yang saya bangun sendiri</p>
|
||||||
<div class="badges">
|
|
||||||
<a class="btn" href="#proyek">Lihat Proyek</a>
|
|
||||||
<a class="btn ghost" href="https://link.gosambi.uk">Semua Link Saya</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<section id="tentang">
|
|
||||||
<h2>Tentang</h2>
|
|
||||||
<div class="card">
|
|
||||||
<p>Saya membangun sistem operasional end-to-end: aplikasi kasir mobile (Expo/React Native),
|
|
||||||
REST API (Express + Prisma + PostgreSQL), sampai dashboard web (EJS) untuk operasional harian.
|
|
||||||
Semua service saya jalankan di <b>home server sendiri (CasaOS + Docker + Cloudflare Tunnel)</b> -
|
|
||||||
dari API kasir, Gitea, Nextcloud, sampai monitoring.</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="skills">
|
|
||||||
<h2>Keahlian</h2>
|
|
||||||
<div class="skills">
|
|
||||||
<span>React Native / Expo</span><span>JavaScript / TypeScript</span><span>Node.js / Express</span>
|
|
||||||
<span>Prisma ORM</span><span>PostgreSQL</span><span>EJS / Web Dashboard</span>
|
|
||||||
<span>Docker</span><span>Linux / CasaOS</span><span>Cloudflare Tunnel</span><span>Gitea + CI/CD</span>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="proyek">
|
<section id="proyek">
|
||||||
<h2>Proyek</h2>
|
<h2>Proyek</h2>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>App Kasir (Mobile) <span class="tag">- mobile</span></h3>
|
<h3>App Kasir - Aplikasi Mobile <span class="tag">- mobile</span></h3>
|
||||||
<p>Aplikasi kasir mobile untuk transaksi harian - kasir, produk, laporan. Dibangun dengan Expo,
|
<p>Aplikasi kasir berbasis mobile untuk transaksi harian: kasir, produk, dan laporan.
|
||||||
terhubung ke API kasir di home server.</p>
|
Dibangun dengan Expo (React Native), siap build APK via EAS, terhubung ke service API Kasir
|
||||||
<div class="stack"><span>Expo</span><span>React Native</span><span>JavaScript</span><span>REST API</span></div>
|
yang saya hosting sendiri.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Transaksi kasir harian + laporan penjualan</li>
|
||||||
|
<li>Build Android via EAS / local Gradle</li>
|
||||||
|
<li>Terhubung ke API Kasir (service di bawah)</li>
|
||||||
|
</ul>
|
||||||
|
<div class="stack"><span>Expo</span><span>React Native</span><span>JavaScript</span></div>
|
||||||
<div class="links"><a href="https://git.gosambi.uk/onie/app-kasir">Source (Gitea)</a></div>
|
<div class="links"><a href="https://git.gosambi.uk/onie/app-kasir">Source (Gitea)</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>API Kasir (Service) <span class="tag">- live</span></h3>
|
<h3>API Kasir - Service Backend <span class="tag">- live</span></h3>
|
||||||
<p>REST API backend untuk aplikasi kasir mobile: autentikasi, produk, transaksi, laporan.
|
<p>Service REST API yang menjadi tulang punggung App Kasir mobile: autentikasi, produk,
|
||||||
Live 24/7 di home server dengan Docker + auto-deploy dari Gitea.</p>
|
transaksi, dan laporan. Berjalan 24/7 di home server (Docker + PostgreSQL) dengan dokumentasi
|
||||||
|
Swagger otomatis dan CI/CD auto-deploy dari Gitea.</p>
|
||||||
|
<ul>
|
||||||
|
<li>REST API (Express + Prisma + PostgreSQL)</li>
|
||||||
|
<li>Dokumentasi Swagger di endpoint API</li>
|
||||||
|
<li>Docker + auto-deploy via Gitea Actions</li>
|
||||||
|
</ul>
|
||||||
<div class="stack"><span>Express</span><span>Prisma</span><span>PostgreSQL</span><span>Docker</span><span>Swagger</span></div>
|
<div class="stack"><span>Express</span><span>Prisma</span><span>PostgreSQL</span><span>Docker</span><span>Swagger</span></div>
|
||||||
<div class="links"><a href="https://api.gosambi.uk">Live API</a><a href="https://git.gosambi.uk/onie/api-kasir">Source (Gitea)</a></div>
|
<div class="links"><a href="https://api.gosambi.uk">Live API</a><a href="https://git.gosambi.uk/onie/api-kasir">Source (Gitea)</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>Rental PS (Web + API) <span class="tag">- live (lokal)</span></h3>
|
<h3>App Rental PS - Web + API <span class="tag">- live (lokal)</span></h3>
|
||||||
<p>Sistem manajemen rental PlayStation: unit PS, timer rental, menu makanan/minuman,
|
<p>Sistem manajemen rental PlayStation untuk operasional harian, dari reservasi unit sampai
|
||||||
order transaksi, dashboard pemasukan + dokumentasi Swagger di <b>/api-docs</b>.</p>
|
kasir harian. Terdiri dari web dashboard (EJS) + REST API dengan dokumentasi Swagger di
|
||||||
|
<b>/api-docs</b>, database PostgreSQL via Prisma.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Manajemen unit PS: kategori, status, harga per jam</li>
|
||||||
|
<li>Sewa + timer otomatis, order makanan/minuman dalam satu transaksi</li>
|
||||||
|
<li>Dashboard pemasukan harian + laporan</li>
|
||||||
|
<li>Autentikasi user (admin/staff) + JWT</li>
|
||||||
|
</ul>
|
||||||
<div class="stack"><span>Express</span><span>EJS</span><span>Prisma</span><span>PostgreSQL</span><span>Docker</span></div>
|
<div class="stack"><span>Express</span><span>EJS</span><span>Prisma</span><span>PostgreSQL</span><span>Docker</span></div>
|
||||||
<div class="links"><a href="https://git.gosambi.uk/onie/app-rental-ps">Source (Gitea)</a></div>
|
<div class="links"><a href="https://git.gosambi.uk/onie/app-rental-ps">Source (Gitea)</a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
|
||||||
<h3>Homelab gosambi.uk <span class="tag">- infra</span></h3>
|
|
||||||
<p>Infrastruktur self-hosted di CasaOS: Gitea + runner CI/CD, Nextcloud, n8n, Uptime Kuma,
|
|
||||||
portofolio ini, dan halaman link - semua lewat satu Cloudflare Tunnel tanpa buka port.</p>
|
|
||||||
<div class="stack"><span>CasaOS</span><span>Docker</span><span>Cloudflare Tunnel</span><span>nginx</span></div>
|
|
||||||
<div class="links"><a href="https://link.gosambi.uk">link.gosambi.uk</a><a href="https://git.gosambi.uk">git.gosambi.uk</a></div>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="kontak">
|
<footer>
|
||||||
<h2>Kontak</h2>
|
2026 gosambi - self-hosted di HomeLabs (CasaOS) - gosambi.uk
|
||||||
<div class="card">
|
| <a href="https://link.gosambi.uk">link.gosambi.uk</a>
|
||||||
<p>Punya proyek atau sekadar ngobrol? Hubungi saya lewat halaman link:</p>
|
| <a href="https://git.gosambi.uk/onie">Gitea</a>
|
||||||
<div class="links"><a href="https://link.gosambi.uk">link.gosambi.uk</a><a href="https://git.gosambi.uk/onie">Gitea saya</a></div>
|
</footer>
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<footer>- 2026 gosambi - self-hosted di HomeLabs (CasaOS) - gosambi.uk</footer>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user