Skip to content

Latest commit

 

History

History
200 lines (147 loc) · 5.45 KB

File metadata and controls

200 lines (147 loc) · 5.45 KB

MySaly

Cek gaji bulanan kamu setelah potong pajak dan iuran BPJS dengan kalkulator gaji. Gampang banget, cuma butuh sebentar!

Hitung disini →

About MySaly

MySaly is an Indonesian salary calculator that helps you estimate your monthly take-home pay after deductions. It calculates tax (PPh 21) and BPJS (Health and Employment) contributions based on current Indonesian regulations.

The calculator provides a detailed breakdown of:

  • Monthly and annual tax calculations
  • BPJS Health contributions (employee and employer portions)
  • BPJS Employment contributions (employee and employer portions)
  • Final take-home salary after all deductions

Technologies Used

  • React 18 - UI library for building the interface
  • TypeScript - Type-safe JavaScript for better code quality
  • Vite - Fast build tool and development server
  • Tailwind CSS - Utility-first CSS framework for styling
  • Headless UI - Unstyled, accessible UI components

Project Structure

The project follows a feature-based organization pattern:

src/
├── components/           # Reusable UI components
│   ├── ui/              # Base UI components
│   ├── footer.tsx       # Footer component
│   ├── info.tsx         # Information/FAQ section
│   └── layout/          # Layout components
├── features/            # Feature-specific modules
│   └── salary-calculator/
│       ├── components/  # Salary calculator components
│       ├── hooks/       # Custom hooks for salary calculations
│       └── index.ts     # Feature exports
├── hooks/               # Global custom hooks
├── services/            # Business logic services
├── constants/           # Application constants
├── types/               # TypeScript type definitions
├── utils/               # Utility functions
└── data/                # Static data

Installation and Setup

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn

Local Development

  1. Clone the repository:
git clone https://github.com/njirolu/mysaly.git
cd mysaly
  1. Install dependencies:
npm install
# or
yarn install
  1. Start the development server:
npm run dev
# or
yarn dev
  1. Open your browser and navigate to http://localhost:5173

Building for Production

  1. Build the application:
npm run build
# or
yarn build
  1. Preview the production build:
npm run preview
# or
yarn preview

Usage

  1. Enter your monthly gross salary in the "Gaji Kotor Bulanan" field
  2. Select your marital status from the dropdown:
    • "Belum Kawin" (Single)
    • "Kawin" (Married)
  3. Select the number of dependents (0-3)
  4. Click "Hitung Gaji" to calculate your net salary

The calculator will display:

  • Tax calculation details
  • BPJS Health contribution breakdown
  • BPJS Employment contribution breakdown
  • Your final net salary

Calculation Formulas and Tax Rules

Tax Calculation (PPh 21)

The calculator follows Indonesian tax regulations:

  1. Annualized Salary: Monthly salary × 12
  2. PTKP (Penghasilan Tidak Kena Pajak):
    • Single (TK/0): Rp 54,000,000
    • Single with 1 dependent (TK/1): Rp 58,500,000
    • Single with 2 dependents (TK/2): Rp 63,000,000
    • Single with 3 dependents (TK/3): Rp 67,500,000
    • Married (K/0): Rp 58,500,000
    • Married with 1 dependent (K/1): Rp 63,000,000
    • Married with 2 dependents (K/2): Rp 67,500,000
    • Married with 3 dependents (K/3): Rp 72,000,000
  3. PKP (Penghasilan Kena Pajak): Annualized Salary - PTKP
  4. Position Cost: 5% of annualized salary (min Rp 500,000, max Rp 6,000,000)
  5. Tax Rates:
    • Up to Rp 60,000,000: 5%
    • Rp 60,000,001 - Rp 250,000,000: 15%
    • Rp 250,000,001 - Rp 500,000,000: 25%
    • Rp 500,000,001 - Rp 5,000,000,000: 30%
    • Above Rp 5,000,000,000: 35%

BPJS Contributions

BPJS Health:

  • Employee: 1% of monthly salary (capped at Rp 12,000,000)
  • Employer: 4% of monthly salary (capped at Rp 12,000,000)

BPJS Employment:

  • Employee: 2% of monthly salary
  • Employer: 3.7% of monthly salary

Contributing

We welcome contributions to improve MySaly! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Commit your changes (git commit -m 'Add some amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Development Guidelines

  • Follow the existing code style and conventions
  • Add appropriate TypeScript types for new code
  • Include JSDoc comments for functions and components
  • Test your changes thoroughly
  • Ensure the application builds successfully

Code Standards

  • Use TypeScript for all new code
  • Follow React best practices
  • Use functional components with hooks
  • Implement proper error handling
  • Write self-documenting code with meaningful variable names

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

See CHANGELOG.md for a detailed history of changes.

Support

If you encounter any issues or have questions, please open an issue on the GitHub repository.