尚未检测到更新。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.