Skip to content

LearnWithSuryaa/analyzer-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Javanese Krama Syntax Analyzer

Aplikasi web untuk menganalisis sintaksis dan validasi Unggah-Ungguh (tingkat kesopanan) dalam bahasa Jawa Krama.

npm version Deploy with Vercel TypeScript Next.js Tailwind CSS License: MIT

Demo Live β€’ Dokumentasi β€’ Kontribusi


πŸš€ Quick Start

Opsi 1: Install Package (Untuk Library Usage)

Install core analyzer sebagai dependency di project Anda:

npm install javanese-analyzer-core
import { analyze } from "javanese-analyzer-core";

const result = analyze("Kula nedha sekul");
console.log(result);

Opsi 2: CLI Tool (Recommended - Full App)

Cara tercepat untuk membuat aplikasi lengkap:

npx create-javanese-analyzer my-app
cd my-app
npm run dev

Aplikasi akan berjalan di http://localhost:3000

Opsi 3: Template Repository

Gunakan template tanpa clone history:

npx degit LearnWithSuryaa/analyzer-app my-app
cd my-app
npm install
npm run dev

Opsi 4: Clone Repository (Untuk Development)

Clone dengan full git history:

git clone https://github.com/LearnWithSuryaa/analyzer-app.git
cd analyzer-app
npm install
npm run dev

Build Production

# Build semua workspace
npm run build

# Start production server
npm run start --workspace=web

πŸ“¦ Struktur Monorepo

analyzer-app/
β”œβ”€β”€ packages/
β”‚   └── core/                    # @javanese-ai/core
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ analyzer.ts      # Parser & Tokenizer
β”‚       β”‚   β”œβ”€β”€ types.ts         # Type Definitions
β”‚       β”‚   β”œβ”€β”€ index.ts         # Public API
β”‚       β”‚   └── data/
β”‚       β”‚       └── kamus_jawa.json  # Kamus 1000+ kata
β”‚       β”œβ”€β”€ package.json
β”‚       └── tsconfig.json
β”‚
└── web/                         # Next.js Application
    β”œβ”€β”€ app/                     # App Router
    β”‚   β”œβ”€β”€ page.tsx             # Landing Page
    β”‚   β”œβ”€β”€ analyze/             # Analyzer Page
    β”‚   β”œβ”€β”€ docs/                # Documentation
    β”‚   └── globals.css
    β”œβ”€β”€ components/              # React Components
    β”‚   β”œβ”€β”€ ChatInput.tsx
    β”‚   β”œβ”€β”€ ResultSection.tsx
    β”‚   └── visualizations/
    β”œβ”€β”€ package.json
    └── tailwind.config.js

πŸ› οΈ Tech Stack

Layer Technology
Core Logic TypeScript, Custom CFG Parser
Frontend Next.js 16, React 19
Styling Tailwind CSS v3
Animations Framer Motion
Icons Lucide React
Deployment Vercel

πŸ“š Fitur Utama

βœ… Analisis Sintaksis (S-P-O-K)

  • Tokenisasi kata Jawa Krama/Ngoko
  • Parsing berbasis Context-Free Grammar (CFG)
  • Support kalimat tunggal & majemuk
  • Deteksi subjek implisit

βœ… Validasi Unggah-Ungguh

  • Validasi tingkat kesopanan (politeness level)
  • Deteksi kesalahan penggunaan Krama Inggil/Lugu
  • Saran koreksi otomatis

βœ… Visualisasi Interaktif

  • Parse Tree: Visualisasi hierarki sintaksis dengan mode fullscreen
  • Derivation Trace: Step-by-step leftmost derivation
  • Token Analysis: Breakdown kata per kata dengan keterangan

βœ… Fuzzy Matching

  • Koreksi typo otomatis menggunakan Levenshtein Distance
  • Threshold adaptif berdasarkan panjang kata

🌐 Deployment ke Vercel

Opsi 1: Deploy via Dashboard

  1. Import repository ke Vercel
  2. Root Directory: web
  3. Framework akan auto-detect sebagai Next.js
  4. Deploy!

Opsi 2: Deploy via CLI

npm install -g vercel
vercel

Konfigurasi (Opsional)

File vercel.json sudah dikonfigurasi:

{
  "framework": "nextjs",
  "buildCommand": "npm run build --workspace=web",
  "installCommand": "npm install",
  "outputDirectory": ".next"
}

Catatan: Set Root Directory = web di Vercel Dashboard.


πŸ“– Dokumentasi API

Import Package

import { analyze } from "javanese-analyzer-core";

const result = analyze("Kula nedha sekul");
console.log(result);

Response Structure

{
  tokens: [
    { token: "kula", label: "SUBJEK", keterangan: "pronomina diri sendiri" },
    { token: "nedha", label: "PREDIKAT", keterangan: "verba krama lugu" },
    { token: "sekul", label: "OBJEK_NOUN", keterangan: "tempat / nomina" }
  ],
  analisis: {
    jenis_kalimat: "kalimat tunggal",
    validitas_sintaksis: "VALID",
    validitas_unggah_ungguh: "SESUAI",
    jenis_kesalahan: []
  },
  structure: { /* Parse Tree */ },
  derivations: [ /* Leftmost Derivation Steps */ ]
}

Dokumentasi lengkap tersedia di /docs setelah aplikasi berjalan.


🀝 Kontribusi

Kontribusi sangat diterima! Berikut cara berkontribusi:

  1. Fork repository ini
  2. Buat branch fitur (git checkout -b feature/AmazingFeature)
  3. Commit perubahan (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

Development Guidelines

  • Gunakan TypeScript untuk type safety
  • Follow existing code style
  • Tambahkan test untuk fitur baru
  • Update dokumentasi jika diperlukan

πŸ“„ Lisensi

Distributed under the MIT License. See LICENSE for more information.


πŸ‘¨β€πŸ’» Author

Surya


⭐ Star this repo if you find it helpful!

Made with ❀️ for preserving Javanese language and culture

About

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published