All notable changes to the MySaly project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Complete refactoring of the MySaly salary calculator application
- Feature-based project structure for better organization and scalability
- Comprehensive TypeScript type definitions for improved type safety
- Custom hooks for state management and calculations
- Reusable UI components with consistent styling
- Business logic separation into dedicated services
- Performance optimizations with memoization
- Comprehensive documentation including API docs and development guide
- Form validation with error handling
- Local storage integration for form data persistence
- Lazy loading for improved initial page load performance
- Critical Bug Fix: Fixed PTKP_RATE typo bug where
7_200_0000was corrected to72_000_000for married individuals with 3 dependents - Type Safety: Removed unsafe type assertions (
as unknown as SelectState) and implemented proper type-safe handlers - State Management: Consolidated form state to use a single source of truth instead of duplicated state variables
- Component Architecture: Refactored large components (App.tsx, calc.tsx, info.tsx) into smaller, focused components
- File Organization: Reorganized from component-based to feature-based directory structure
- Calculation Logic: Extracted business logic from presentation components into dedicated services
- Performance: Added React.memo, useMemo, and useCallback for performance optimization
- Code Quality: Improved maintainability index and reduced complexity scores
- Developer Experience: Better IntelliSense support with comprehensive TypeScript types
- Error Handling: Implemented proper error handling throughout the application
- Accessibility: Added proper ARIA attributes and semantic HTML elements
- User Experience: Added loading states and improved visual feedback
- Documentation: Added comprehensive JSDoc comments and component documentation
- TypeScript Coverage: Achieved 100% TypeScript coverage with no
anytypes - Testability: Separated business logic for easier unit testing
- Maintainability: Improved code organization following React and TypeScript best practices
- Scalability: Implemented architecture that supports future feature additions
- Performance: Optimized render times with effective memoization strategies
- Currency Formatting Hook: Custom hook for handling currency input and display
- Form Validation: Comprehensive form validation with error messages
- Local Storage: Persistent form data across browser sessions
- Component Library: Reusable UI components (Button, Card, FormField, etc.)
- Calculation Service: Modular calculation functions for tax and BPJS
- Component file locations have changed due to the new feature-based structure
- Some component props have been updated for better type safety
- Internal API structure has been refactored (no impact on end users)
- If you were importing components directly from their old paths, update your imports to use the new feature-based paths
- The calculation API remains the same from an end-user perspective
- All existing functionality has been preserved with improved reliability
- Unit tests for calculation functions and components
- E2E tests with Cypress
- Support for additional tax deductions
- Export functionality for calculation results
- Dark mode theme
- Mobile app version
- Implement comprehensive test suite
- Add bundle size optimization
- Implement error boundary components
- Add performance monitoring
- Initial prototype with mixed concerns
- Limited type safety with several type assertions
- Business logic embedded in UI components
- Monolithic component structure
- Critical PTKP calculation bug
- Clean architecture with separated concerns
- Full TypeScript coverage with proper types
- Business logic extracted to services
- Feature-based component organization
- All critical bugs resolved
- Performance optimizations implemented
- Comprehensive documentation added