尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Nunnn-Stock-Analyzer adalah platform finansial modern, profesional, dan premium yang dirancang khusus untuk mempermudah investor serta trader saham di Bursa Efek Indonesia (BEI / IDX) dalam melakukan analisis fundamental, teknikal, analisis sentimen pasar berbasis AI (Artificial Intelligence), serta mengoptimalkan alokasi strategi investasi melalui kalkulator finansial presisi tinggi dan pelacakan portofolio real-time.
Platform ini mengintegrasikan data harga real-time dari Yahoo Finance API, agregasi berita keuangan Google News RSS, decoding redirection protocol otomatis, serta teknologi analisis bahasa alami (Natural Language Processing) mutakhir dari Google Gemini AI SDK (dengan arsitektur Multi-Model Fallback Chain otomatis) untuk menyajikan ringkasan sentimen pasar terstruktur dan obyektif.
Antarmuka dirancang menggunakan filosofi Card-in-Card Design System yang ultra-konsisten, responsif di seluruh resolusi layar (dari seluler, tablet, hingga layar monitor full-screen ultra-wide), serta dilengkapi animasi mikro dinamis berbasis Framer Motion.
0.15% / Jual 0.25%0.15% / Jual 0.25%0.19% / Jual 0.29%DividendTab)0% Tax-Free: Insentif dividen dalam negeri yang diinvestasikan kembali (UU HPP).10% Final Tax: PPh Final dividen WPOPS standar.Custom Tax Rate: Penyesuaian persentase pajak kustom..xlsx) via SheetJS serta fitur salin teks laporan terformat.batchexecute protocol) guna mengambil teks berita orisinal.rounded-2xl bg-white/[0.03] border border-white/10 dengan tata letak grid responsif (grid-cols-1 md:grid-cols-2 2xl:grid-cols-4 items-stretch) yang mencegah elemen terpotong saat layar di-fullscreen.lib/language-context.tsx).globals.css), dan Ikonografi Lucide React.xlsx) untuk ekspor spreadsheet Excel.Nunnn-Stock-Analyzer/
├── src/
│ ├── app/ # Next.js App Router Pages & API Endpoints
│ │ ├── api/
│ │ │ ├── analysis/ # API Analisis Saham BEI (Fundamental, Technical, News)
│ │ │ │ ├── fundamentals/ # GET: Metrik keuangan & valuasi emiten
│ │ │ │ ├── news/ # GET: Analisis sentimen berita agregatif
│ │ │ │ └── technical/ # GET: Data historis harga chart TradingView
│ │ │ ├── dividend/ # API Dividen Saham
│ │ │ │ └── route.ts # GET: Data historis & proyeksi dividen emiten BEI
│ │ │ ├── news/ # API Management Feed Berita
│ │ │ │ ├── route.ts # GET: Fetch berita Google News RSS
│ │ │ │ └── summary/ # POST: Scraping teks asli & AI Summary Gemini
│ │ │ └── ticker/
│ │ │ └── route.ts # GET: Pencarian emiten & harga real-time Yahoo Finance
│ │ ├── favicon.ico # Aset Ikon Aplikasi
│ │ ├── globals.css # Styling Global & Variabel CSS Tailwind v4
│ │ ├── layout.tsx # Root Layout, Providers (Theme & Language)
│ │ └── page.tsx # Dasbor Utama (Tab Switcher & Layout Container)
│ ├── components/ # Modul Komponen Antarmuka (UI Components)
│ │ ├── admin-panel-tab.tsx # Tab Admin: Whitelist pengguna & Audit Logs
│ │ ├── analysis-tab.tsx # Tab Analisis: TradingView Technical & Custom SVG Fundamental Cards
│ │ ├── auth-modal.tsx # Modal Login, Signup, & Google OAuth
│ │ ├── calculator-form.tsx # Form Kalkulator Average Down (Card-in-Card Design)
│ │ ├── compounding-tab.tsx # Tab Compounding: Standard & Scalping Trading Mode
│ │ ├── confirm-modal.tsx # Modal Dialog Konfirmasi Aksi
│ │ ├── dividend-tab.tsx # Tab Dividen: Proyeksi, Opsi Pajak & Simulasi DRIP
│ │ ├── history-table.tsx # Tabel Riwayat Rencana Average Down
│ │ ├── ipo-tab.tsx # Tab E-IPO: Kalkulator Allotment Golongan I-V
│ │ ├── news-tab.tsx # Tab Feed Berita & AI Summary Gemini Modal
│ │ ├── portfolio-tab.tsx # Tab Portofolio: Tracker Asset, PnL & RDN Cash
│ │ ├── results-display.tsx # Output Visualisasi Hasil Kalkulasi Average Down
│ │ ├── sidebar.tsx # Sidebar Navigasi Utama (Expand/Collapse)
│ │ └── theme-provider.tsx # Provider Tema Next-Themes
│ └── lib/ # Modul Logika Finansial, Helper & Utilities
│ ├── calculator.ts # Algoritma matematika Average Down & BEP
│ ├── compounding.ts # Algoritma bunga majemuk standard & daily trading
│ ├── e-ipo.ts # Logika estimasi alokasi penjatahan E-IPO IDX
│ ├── language-context.tsx # Context Provider sistem multi-bahasa (ID/EN)
│ ├── polyfills.ts # Polyfill ketahanan API & penanganan error
│ ├── supabase.ts # Inisialisasi Klien Supabase & status check
│ ├── translations.ts # Kamus terjemahan Bahasa Indonesia & English
│ └── utils.ts # Helper pembersihan nama emiten & formatting angka
├── supabase/ # Schema Migrasi Database Supabase PostgreSQL
│ └── migrations/ # Migrasi SQL PostgreSQL & RLS Policies
│ ├── 20260531000000_create_calculations.sql # Tabel avg_down_plans
│ ├── 20260531000001_create_portfolio.sql # Tabel portfolio_holdings & cash
│ ├── 20260612000002_create_compounding_plans.sql # Tabel compounding_plans
│ └── 20260613000003_create_ipo_plans.sql # Tabel ipo_plans
├── package.json # Package Manifest & Scripts
├── next.config.ts # Konfigurasi Next.js
├── tsconfig.json # Konfigurasi Compiler TypeScript
└── README.md # Dokumentasi Utama Proyek
Seluruh tabel dilindungi dengan Row Level Security (RLS) untuk menjamin keamanan data antar pengguna berdasarkan user_id.
-- 1. Tabel avg_down_plans
create table public.avg_down_plans (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
ticker varchar(10) not null,
company_name varchar(100),
lot_awal integer not null check (lot_awal > 0),
avg_price_awal numeric not null check (avg_price_awal > 0),
current_price numeric not null check (current_price > 0),
lot_baru integer not null check (lot_baru > 0),
harga_beli_baru numeric not null check (harga_beli_baru > 0),
fee_beli numeric default 0.15 check (fee_beli >= 0 and fee_beli <= 100),
fee_jual numeric default 0.25 check (fee_jual >= 0 and fee_jual <= 100),
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null
);
-- 2. Tabel portfolio_holdings
create table public.portfolio_holdings (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
ticker varchar(10) not null,
company_name varchar(100),
lot integer not null check (lot >= 0),
avg_price numeric not null check (avg_price >= 0),
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null,
unique (user_id, ticker)
);
-- 3. Tabel portfolio_cash
create table public.portfolio_cash (
user_id uuid references auth.users(id) on delete cascade primary key,
cash_balance numeric default 0 not null check (cash_balance >= 0),
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null
);
-- 4. Tabel compounding_plans
create table public.compounding_plans (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
title varchar(100) not null,
initial_amount numeric not null check (initial_amount >= 0),
contribution_amount numeric default 0 check (contribution_amount >= 0),
contribution_frequency varchar(20) default 'monthly',
annual_return_rate numeric not null check (annual_return_rate >= 0),
compounding_frequency varchar(20) default 'monthly',
duration_years numeric default 0 check (duration_years >= 0),
duration_months numeric default 0 check (duration_months >= 0),
inflation_rate numeric default 0 check (inflation_rate >= 0),
tax_rate numeric default 0 check (tax_rate >= 0),
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null
);
-- 5. Tabel ipo_plans
create table public.ipo_plans (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
ticker varchar(10) not null,
company_name varchar(100) not null,
price numeric not null check (price > 0),
total_lots numeric not null check (total_lots > 0),
oversubscription numeric not null check (oversubscription >= 1),
total_subscribers numeric not null check (total_subscribers > 0),
retail_ratio numeric not null check (retail_ratio >= 0 and retail_ratio <= 100),
personal_order_lots numeric default 0 check (personal_order_lots >= 0),
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null
);
-- 6. Tabel user_approvals
create table public.user_approvals (
id uuid default gen_random_uuid() primary key,
email varchar(255) unique not null,
approved boolean default false not null,
created_at timestamptz default now() not null,
updated_at timestamptz default now() not null
);
/api/tickerGETq=[Keyword] atau symbol=[Ticker] (contoh: /api/ticker?symbol=BBCA)./api/dividendGETsymbol=[Ticker] (contoh: /api/dividend?symbol=BBRI)./api/newsGETq=[Topic/Ticker] & category=[saham|domestik|foreign|global|politik]./api/news/summaryPOST/api/analysis/fundamentalsGET/api/analysis/technicalGET/api/analysis/newsGETgit clone https://github.com/alfitranurr/Nunnn-Stock-Analyzer.git
cd Nunnn-Stock-Analyzer
npm install
.env.local)Buat file .env.local pada direktori root:
# Supabase Configuration (opsional - jika dikosongkan, web otomatis menggunakan fallback Local Storage browser)
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
# Google OAuth Credentials
GOOGLE_CLIENT_ID=your-google-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-google-client-secret
# Google Gemini API Key (wajib untuk analisis AI Summary & sentimen)
GEMINI_API_KEY=your-gemini-api-key
# Email Administrator Utama (untuk Whitelist System)
[email protected]
npm run dev
Buka browser Anda di http://localhost:3000.
Kontribusi dari komunitas sangat diterima! Silakan buka Issue atau kirimkan Pull Request (PR) untuk penyempurnaan fitur finansial, rendering grafik, atau lokalisasi terjemahan.
Proyek ini terlisensi di bawah MIT License. Hak Cipta © 2026 alfitranurr.