← Semua karya

2026 · Full-stack Developer

Fastvest

Pelacak portofolio lokal-first — buka aplikasi, langsung lihat nilai portofolio dan P&L, segarkan harga pasar — tanpa akun dan tanpa basis data portofolio di server.

Stack
Nuxt 4 · Vue 3 · TypeScript · Nitro · Tailwind CSS · shadcn-vue · Yahoo Finance · PWA · Vitest · Playwright
Kategori
Open Source · FinTech · Privasi
Kunjungi proyek

Yang terkirim

  • Model portofolio lokal-first — portofolio tersimpan di localStorage browser dan tidak pernah disimpan server-side, dicatat, atau dikirim ke analytics.
  • Gateway data pasar server-side (API route Nitro yang membungkus Yahoo Finance) dengan caching, penanganan timeout, dan normalisasi error.
  • Quote ter-cache stale-while-refresh plus application shell PWA yang bekerja offline.
  • Skema Zod dibagikan antara klien dan server, dengan unit test Vitest dan end-to-end test Playwright.

Fastvest adalah pelacak portofolio yang lokal-first. Buka aplikasi, nilai portofolio dan P&L belum terealisasi langsung tampil, dan Anda bisa menyegarkan harga pasar tanpa membuat akun — dan tanpa mengirim portofolio Anda ke mana pun. Ini adalah aplikasi pemantauan untuk portofolio sendiri, bukan nasihat keuangan.

Model privasi

Konfigurasi portofolio hanya ada di localStorage browser. Tidak pernah disimpan di server, tidak dicatat, dan tidak dikirim ke analytics. Menghapus penyimpanan browser menghapus portofolio lokal Anda kecuali backup sudah diekspor. Satu-satunya hal yang dikirim adalah permintaan data pasar; server berperan sebagai gateway data, bukan penyimpan portofolio.

Cara kerjanya

Holding dimasukkan dan diedit di sisi klien — jumlah posisi dan cost basis per simbol, tanpa biaya untuk mencatat — dan data portofolio serta harga bisa diimpor dan diekspor sebagai JSON. Antarmuka menampilkan total nilai, cost basis, P&L belum terealisasi, P&L hari ini, tampilan alokasi, dan tabel holding yang bisa diurutkan. Siklus penyegaran 60 detik menjalankan quote melalui strategi stale-while-refresh: harga ter-cache tampil seketika sementara data basi divalidasi ulang di latar belakang, bukan memblokir layar.

Data pasar mengalir melalui route API Nitro (/api/quotes, /api/search, /api/chart), yang membungkus Yahoo Finance dengan penanganan timeout, caching, dan normalisasi error. Karena browser tidak pernah berkomunikasi langsung dengan penyedia data, quote tetap tangguh terhadap kendala endpoint pihak ketiga.

Keputusan engineering

  • Memisahkan kepemilikan dari pengambilan. Data portofolio dan data pasar adalah domain kepercayaan berbeda; menyimpan satu di sisi klien dan satu lagi di sisi server membuat setiap batasan kecil dan bisa diuji.
  • Validasi bersama. Skema Zod didefinisikan sekali dan dipakai di kedua sisi, sehingga klien dan server tidak mungkin melenceng tentang bentuk quote atau hasil pencarian.
  • Offline sebagai perilaku bawaan. Caching application shell PWA membuat shell aplikasi bisa dimuat offline dan harga ter-cache sebelumnya tetap terlihat.
  • Menguji permukaan. Unit test mencakup kalkulasi dan format keuangan; Playwright mencakup alur yang penting — membuka aplikasi, menambah holding, menyegarkan quote.