- Added CameraPreviewWidget for real-time camera feed and face detection.
- Created CapturedSelfieView to display captured selfies and verification results.
- Introduced CountdownOverlayWidget to manage countdown during face verification.
- Developed DebugPanel for troubleshooting liveness detection issues.
- Implemented ErrorStateWidget to handle and display error messages.
- Added InstructionBanner to guide users through the verification process.
- Created VerificationProgressWidget to show progress of verification steps.
- Added FacialVerificationService for handling face detection and comparison.
- Created SelfieVerificationController to manage selfie capture and validation against ID card.
- Integrated liveness detection functionality within the selfie verification process.
- Developed SignupWithRoleController for user registration with role selection.
- Introduced PersonalInfoController for managing user personal information during signup.
- Added CountdownOverlayWidget for displaying countdown during liveness check.
- Enhanced error handling and validation across controllers.
- Updated camera package version to 0.11.0+2 and camera_android_camerax to 0.6.7+2 in pubspec.lock and pubspec.yaml.
- Removed unused google_ml_kit dependencies from pubspec.lock and pubspec.yaml.
- Added CameraPreviewWidget for displaying camera feed in registration form.
- Created CapturedSelfieView to show the captured selfie and verification status.
- Implemented Debug Panel for liveness detection with real-time status updates.
- Added ErrorStateWidget to handle and display error messages during verification.
- Introduced InstructionBanner to guide users through the verification process.
- Developed VerificationProgressWidget to visually represent the verification progress.
- Updated IdentityVerificationController to streamline data loading and validation.
- Introduced a new VerificationSummary widget for displaying registration details.
- Improved form validation logic to ensure all required fields are checked before submission.
- Enhanced user profile update functionality in UserRepository to include additional registration data.
- Added verification progress card to provide visual feedback on the status of verification steps.
- Cleaned up code for better readability and maintainability.
- Added FormRegistrationScreen for user profile completion with step navigation.
- Created SelfieVerificationStep for capturing and validating user selfies.
- Implemented OfficerInfoStep and UnitInfoStep for officer-specific information input.
- Introduced PanicButtonController and PanicButtonPage for emergency alert functionality.
- Developed CustomElevatedButton and CustomBottomNavigationBar for enhanced UI components.
feat: Implement PermissionModel for role-based access control
feat: Create ResourceModel to manage resources with associated permissions
feat: Develop UserMetadataModel for user-related data management
feat: Implement AWS Signature helper for secure API requests
feat: Create detect-face function for AWS Rekognition integration
feat: Implement send-email function using Resend API
feat: Develop verify-face function for comparing KTP and selfie images
- Added functionality to compare the uploaded selfie with the ID card photo.
- Introduced new state variables in SelfieVerificationController to manage face comparison status and confidence levels.
- Implemented face detection and ID comparison logic in the selfie verification workflow.
- Updated UI components in SelfieVerificationStep to display face match results and provide retry options.
- Refactored IdentityVerificationStep to utilize new widget structure for better organization.
- Created separate widgets for identity verification fields and face verification section for improved readability and maintainability.
- Updated API endpoints for Azure Face API to use the latest version.
- Removed deprecated validation button from ImageUploader widget.
- Added navigation utility class for better route management.
- Implemented ImageSourceDialog for selecting image source (camera or gallery).
- Created ImageUploader widget for displaying and managing image uploads, including error handling and validation.
- Added TipsContainer widget for displaying helpful tips with customizable styles.
- Developed OcrResultCard to present extracted information from KTP and KTA models.
- Introduced ValidationMessageCard for showing validation messages with confirmation options.
- Implemented FormKeyDebugger for tracking and debugging form keys in the application.
- Added AnimatedSplashScreen for customizable splash screen transitions and navigation.
- Added a new JSON animation file for empty address in the assets/images/animations directory.
- Created a custom SliverPersistentHeaderDelegate class for tab bar functionality in custom_silverbar.dart.
- Introduced a global form key management class to streamline form key usage across the application in form_key.dart.
- Updated app routes for backward compatibility and renamed registration form route.
- Added new image constants for various animations and background images.
- Removed webview_flutter dependency from macOS and updated pubspec.lock.
- Introduced SignupWithRoleController to manage signup logic based on user roles.
- Created SignupWithRoleScreen for user interface, allowing role selection and form submission.
- Implemented RoleSelector widget for displaying available roles.
- Enhanced social login options and integrated privacy policy acceptance in the signup form.
- Implemented OfficerInfoStep widget for officer details input.
- Implemented PersonalInfoStep widget for personal details input.
- Implemented SelfieVerificationStep widget for selfie upload and verification.
- Implemented UnitInfoStep widget for unit details input.
- Created step form screen to manage the registration process with navigation between steps.
- Added AzureOCRService to handle ID card processing and face verification.
- Integrated image picker for uploading ID cards and selfies.
- Updated registration form to include ID card upload and selfie verification sections.
- Enhanced validation for extracted OCR data based on user role (officer or civilian).
- Added liveness check functionality for selfie verification.
- Improved user interface for image upload and verification status messages.
- Removed the old StepIndicator widget and replaced it with a new implementation that supports multiple styles (standard, rounded, numbered).
- Added new styles for the StepIndicator: NumberedStepIndicator, RoundedStepIndicator, and StandardStepIndicator.
- Updated the registration form screen to utilize the new StepIndicator with improved styling and functionality.
- Enhanced the StateScreen widget to adapt to dark mode and utilize constants for spacing and sizes.
- Refactored CustomTextField to support dark mode and improved styling.
- Introduced a new FormRegistrationScreen for handling user registration with multiple steps and validation.
- Added PermissionsRepository for managing permissions, including fetching, creating, and deleting permissions.
- Added ProfileRepository for handling user profile data, including fetching, updating, and uploading avatars.
- Added ResourcesRepository for managing resources, including fetching, creating, updating, and deleting resources.
- Added RolesRepository for managing roles, including fetching all roles and role permissions.
- Added UserRepository for managing user data, including authentication checks, updating user metadata, and fetching user details.
- Created a bindings file for personalization features.
- Added dark mode branding images for the app.
- Created contents.json files for branding and launch background images.
- Implemented splash screen with animated Lottie assets based on theme.
- Developed authentication repository with email/password and social login functionalities.
- Introduced background service for heavy computations in isolates.
- Added splash controller to manage authentication flow during splash screen.
- Renamed model classes to follow a unified naming convention (e.g., Evidence to EvidenceSupadartModel).
- Updated references to related models to match new naming conventions (e.g., IncidentLogs to IncidentLogSupadartModel).
- Adjusted static methods for conversion and JSON parsing to reflect the new class names.
- Modified table names in the models to align with the new naming scheme.
- Changed output directory in supadart.yaml to 'lib/generated/' for better organization.
- Mapped database table names to the new model class names in supadart.yaml.
- Implemented user creation, update, and deletion triggers to manage officer and standard user data.
- Created functions to handle user type changes and conditional updates based on user metadata.
- Added a function to retrieve nearby units based on geographical coordinates.
- Established triggers to update distance to units upon location changes.
- Created spatial indexes for efficient querying of units and locations.
- Added a function to delete the current user from the auth.users table.
- Added LocationLogsRepository for managing user location logs.
- Implemented methods to get user location logs, add a new log, get recent logs, and fetch logs within a time range.
feat: Create locations repository for district-based location management
- Added LocationsRepository to handle location data by district ID.
- Implemented methods to fetch locations by district, get location by ID, find nearby locations, and add new locations.
feat: Enhance permissions repository for role-based access control
- Added PermissionsRepository to manage permissions.
- Implemented methods to fetch all permissions, get permissions by role/resource, check user permissions, create and delete permissions.
feat: Update profile repository for user profile management
- Enhanced ProfileRepository to manage user profiles.
- Implemented methods to upload avatars, update profile information, create profiles if they don't exist, and fetch profiles by user ID/NIK.
feat: Develop resources repository for resource management
- Added ResourcesRepository to manage application resources.
- Implemented methods to fetch all resources, get resources by ID/type, create, update, and delete resources.
feat: Create roles repository for role management
- Added RolesRepository to manage user roles.
- Implemented methods to fetch all roles, get roles by ID/name, create and update roles, and fetch permissions for a role.
feat: Enhance users repository for user management
- Updated UsersRepository to manage user data and metadata.
- Implemented methods to check user roles, update user metadata, email, phone, and password, and search users by name/username/email.
- Added functionality to check if a user is banned.
- Added ProfileRepository for managing user profile data including fetching, updating, and uploading avatars.
- Introduced RolesRepository to handle role-related operations such as fetching all roles and retrieving roles by ID or name.
- Created UserRepository for user data management, including user authentication checks and profile updates.
- Developed OfficerModel to represent officer data with JSON serialization.
- Implemented RoleSelectionController to manage role selection logic during onboarding.
- Added LocationWarningScreen to handle location validation and user notifications.
- Created RoleSelectionScreen for users to select their roles during onboarding.
- Developed RoleCard widget for displaying role options in a user-friendly manner.
- Implement EventModel with JSON serialization and deserialization.
- Create EvidenceModel with associated JSON handling.
- Develop IncidentLogModel to manage incident logs and their evidences.
- Introduce SessionsModel to track user sessions related to events.
- Update index file to export new models.
feat(personalization): introduce permissions and resources models
- Add PermissionModel to manage user permissions with JSON support.
- Create ResourceModel to define resources and their associated permissions.
- Ensure proper serialization and deserialization for both models.
chore(database): update Prisma schema for new models and relationships
- Add new models: events, evidences, incident_logs, sessions, permissions, and resources.
- Define relationships between users, roles, and permissions.
- Update existing models to maintain referential integrity.
- Introduce enums for session status, contact message status, crime rates, and crime status.
- Updated description format in pubspec.yaml
- Added multiple utility packages for enhanced functionality
- Included local assets and fonts for better UI design
- Updated widget test to reference the new app structure
- Registered new plugins in generated_plugin_registrant.cc for Windows
- Updated generated_plugins.cmake to include new plugins
- Modified Supabase config to allow additional redirect URLs
- Added migration to change primary key type for patrol_units and update foreign key constraints in officers table.
- Created seeder for officers, generating random data and ensuring each officer is linked to a patrol unit.
- Developed seeder for patrol units, including logic for generating patrol types, statuses, and locations based on police units.
- Enhanced Supabase triggers for user creation, updates, and deletions to handle officer-specific logic and maintain data integrity.
- Introduced GIS functions and triggers to calculate distances between locations and units, optimizing spatial queries.
- Moved map utility functions from `map.ts` to `map/common.ts` for better organization.
- Updated imports in `district-extrusion-layer.tsx`, `district-layer.tsx`, `layers.tsx`, and `distance-info.tsx` to reflect the new location of utility functions.
- Enhanced `DistrictFillLineLayer` to improve handling of fill color expressions and opacity based on active controls.
- Introduced new types for crime source in `map.ts` and updated relevant components to use these types.
- Added a new `IncidentDetailTab` component to display detailed information about incidents, including severity and status.
- Improved handling of severity and status information across components for consistency and clarity.
- Updated CrimeSidebar to accept recent incidents as a prop for user reports from the last 24 hours.
- Modified SidebarIncidentsTab to format and display recent incidents, including filtering by category and sorting by timestamp.
- Adjusted CrimeMap to manage the selected year based on the source type and to handle recent incidents data.
- Renamed MapLegend to ClusterLegend for clarity and updated its props accordingly.
- Modified IIncidentLogs interface to include user details and additional fields.
- Implemented IncidentLogsPopup component for displaying incident details on the map.
- Added functionality to format timestamps, display severity badges, and show reporter information.
- Created SQL functions for retrieving nearby units and updating location distances in the database.
- Added spatial indexes to optimize queries related to units and locations.
- Removed unused CrimePopup component and replaced with IncidentPopup in layers.tsx
- Consolidated incident click handling logic in UnitsLayer and RecentIncidentsLayer
- Updated UnitsLayer to fetch nearest units and display them in the IncidentPopup
- Enhanced UI for displaying nearby police units with loading states and better formatting
- Cleaned up console logs for production readiness
- Adjusted map flyTo parameters for better user experience
- Added wave circle animations for incident markers