OpenChart
Free Desktop charting with Claude or Codex. Describe alerts, research chart moves, and choose your data providers.
Simulasikan rencana pembelian saham Average Down (pembelian bertahap) secara presisi dengan kalkulasi broker fee (pajak transaksi, levy, PPh) khusus pasar saham Indonesia (BEI/IDX).
Translation pending
FinanceTypeScript · HTMLGitHub @alfitranurrOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.