arafaysaleem/ez_tickets_app
55.8
Adequate · 21 September 2026
11.3k
lines of production code
Dart
primary language
4
measurements over time
What this system is
This is a Flutter-based mobile application for booking cinema tickets, featuring a complete user flow from authentication to payment. The system manages core domain entities such as movies, shows, theaters, and bookings, supported by a robust networking layer and state management via Riverpod. It provides a full-featured UI for browsing content, selecting seats, processing payments, and tracking booking history.
Features
Add forgot password flow UI components
The app now includes a complete user interface for the forgot password process. New widgets have been added to handle the email input, OTP verification, and password reset steps. This includes a button widget that manages the flow between requesting an OTP, verifying it, and resetting the password, as well as text fields for the email, OTP code, and new password. The UI dynamically updates based on the current state of the password recovery process.
_lib/views/widgets/forgot\password · high confidence
Add payment method selection and billing details widget
The payment flow now includes a dedicated widget for displaying billing details, which dynamically shows the number of selected seats and the total price. Users can also choose between three payment modes—Cash on Delivery, Card, and On-Hand Cash—each revealing specific input fields (such as delivery address, promo code, or branch name) and a Pay button that triggers the payment process.
lib/views/widgets/payment · high confidence
Add user bookings history and detailed booking views
Users can now view their complete booking history, with each entry displaying the movie title, show date and time, total price, and number of seats. Tapping a booking opens a detailed dialog showing individual seat information, including seat row and number, price, and status (e.g., cancelled or reserved). This introduces new widgets for the bookings list, summary rows, and a details dialog, all powered by the bookings provider.
_lib/views/widgets/user\bookings · high confidence
Add user profile and navigation widgets to the welcome screen
The welcome screen now displays user profile details (full name, email, address, and contact information) and includes buttons to browse movies and view existing bookings. These new widgets integrate with the custom router for navigation and use the Riverpod state management for user data.
lib/views/widgets/welcome · medium confidence
Added change password screen with form fields and save button
Users can now change their password through a new screen that includes input fields for the current password, a new password, and a confirmation of the new password, along with a save button that displays a loading state while the change is being processed.
_lib/views/widgets/change\password · high confidence
Added new data models for bookings, payments, and showtimes
Introduced a suite of new data models to support booking, payment, and showtime functionality. This includes \BookingModel\ and \UserBookingModel\ for managing user reservations, \PaymentModel\ and \UserPaymentModel\ for handling financial transactions, and \ShowModel\ alongside \ShowTimeModel\ for scheduling. Additionally, supporting models for \Theater\, \Seat\, \Genre\, \Movie\, and \Role\ have been added to structure the application's domain data.
lib/models · high confidence
Added new domain enums for booking, movie, payment, and user roles
New enum types have been introduced to model core domain concepts, including BookingStatus, MovieType, PaymentMethod, RoleType, ShowStatus, ShowType, TheaterType, and UserRole. Each enum includes JSON serialization annotations and utility extensions for converting to and from string representations, enabling consistent data handling across the application.
lib/enums · high confidence
Added skeleton loaders for movies, shows, theater, and user bookings
New skeleton loading widgets have been introduced to provide visual placeholders during data fetching. This includes a movie actors list skeleton, a movies screen skeleton, a shows screen skeleton, a theater screen skeleton, and a user bookings skeleton loader. Additionally, a new actor picture placeholder widget was added to support these UI states.
lib/views/skeletons · high confidence
Centralized app constants, themes, and form validation utilities
The app now uses dedicated utility classes in the \lib/helper/utils\ directory to manage shared resources. \Constants\ defines global values such as colors, gradients, font styles, and regex patterns for validating emails, contacts, and credit cards. \CustomTheme\ provides a unified \ThemeData\ configuration for the entire app. \FormValidator\ offers static methods to validate user inputs (email, password, name, etc.) and return specific error messages. \AssetsHelper\ and \ExceptionConstants\ centralize asset paths and exception names respectively.
lib/helper/utils · high confidence
Introduce new movie details UI components
The movie details screen now features a dedicated sliding sheet layout composed of new widgets: a main poster with scaling animation, a horizontal list of actors with skeleton loading states, a summary box for the movie's introduction, and a play button that navigates to a trailer screen. These components replace the previous implementation, providing a more interactive and visually rich user experience for viewing movie details.
_lib/views/widgets/movie\details · high confidence
Introduce new networking and local storage services
Added new local storage services (KeyValueStorageBase and KeyValueStorageService) for managing user authentication state and tokens, alongside a complete networking layer using the Dio HTTP client. This includes an ApiInterface and ApiService for performing GET, POST, PATCH, and DELETE requests, supported by a DioService wrapper and a comprehensive NetworkException system for handling API and network errors.
lib/services/networking · high confidence
Introduce new screens for authentication, movie browsing, and ticketing
Added new screens for app startup, home, login, register, forgot password, change password, movies, movie details, shows, theater seating, payment, confirmation, ticket summary, and trailer playback. These screens implement the core user flows for authentication, content discovery, and the ticket booking process, utilizing Riverpod for state management and custom widgets for UI components.
lib/views/screens · high confidence
Introduces new state models for authentication, password recovery, future operations, and payments
Added four new state classes to manage application status: AuthState (unauthenticated, authenticating, authenticated, failed), ForgotPasswordState (email, OTP, reset password, loading, failed, success), FutureState (idle, loading, data, failed) for generic future operations, and PaymentState (unprocessed, processing, successful, failed). These models provide structured representations of user and system states across the application.
lib/providers/states · high confidence
New common UI widgets and error handling components
The app introduces a suite of reusable UI components in the common widgets directory, including a shimmer loading indicator, a ratings display, a scrollable column layout, and a rounded bottom container. A new custom text field widget adds support for password visibility toggling, autofocus, and max length constraints. Error handling is improved with a dedicated error response handler and a customizable error widget that supports both dark and light themes. Additionally, a custom dialog widget is added to standardize alert and confirmation popups, and a custom text button widget provides gradient and outlined styles with disabled states.
lib/views/widgets/common · high confidence
New helper extensions for context, string validation, and integer duration conversion
Added three new extension files in lib/helper/extensions: context\_extensions.dart provides convenient access to screen dimensions, theme, and text styles via BuildContext; string\_extension.dart adds validation methods for email, full name, contact, zip code, credit card, OTP, and capitalization; int\_extension.dart adds duration conversion methods for milliseconds, microseconds, and seconds.
lib/helper/extensions · high confidence
New repository classes for core domain entities
The application now includes dedicated repository classes for managing data operations related to authentication, bookings, movies, payments, shows, and theaters. Each repository provides standard CRUD methods (create, update, delete, fetch all, fetch one) and specific queries (e.g., fetching user bookings, filtering movies), enabling the application to interact with the corresponding backend APIs.
lib/services/repositories · high confidence
New show times selection widgets
Added three new widgets for the show times screen: ShowDatesList for horizontal date selection, ShowTimesList for horizontal time slot selection, and ShowDetailsBox to display show type, status, and seating availability. These components use Riverpod for state management and apply consistent styling with the app's theme constants.
_lib/views/widgets/show\times · high confidence
New ticket summary UI with seat, show, and movie details
The ticket summary screen now displays a complete booking overview. Users can see the movie poster, show date/time/theater, and a list of selected seats with prices, all rendered via new widget components (TicketsSummaryBox, ShowDetailsSection, TicketDetailsList, DashedTicketSeparator) that integrate with the Riverpod state management.
_lib/views/widgets/ticket\summary · high confidence
Project documentation and configuration files added
The repository now includes a MIT License file, a Dart analysis options file (analysis\_options.yaml) with specific linting rules, a build configuration (build.yaml) for code generation, and a codecov configuration (codecov.yml) that excludes generated files from coverage reports. Additionally, the README.md has been significantly expanded to describe the app's features, technical stack, and setup instructions.
(repo-wide) · high confidence
Behavioural changes
Add retry and more booking buttons to the confirmation page
The confirmation page now includes two new interactive elements: a 'REtry PAYMENT' button that allows users to retry a failed or pending payment, and a 'MAKE MORE BOOKINGS' button that clears the current selection and navigates back to the movies screen. These new widgets provide users with immediate options to either retry a payment or start a new booking flow directly from the confirmation view.
lib/views/widgets/confirmation · high confidence
Added API, logging, and refresh token network interceptors
The networking layer now includes three new interceptors for the HTTP client: an API interceptor that injects authentication tokens into requests and validates response success states; a logging interceptor that prints request, response, and error details to the debug console for debugging; and a refresh token interceptor that automatically retries failed requests with a new token when authentication expires. These changes improve request handling, debugging capabilities, and session management.
lib/services/networking/interceptors · high confidence
Added ProGuard rules for Flutter components
A new ProGuard configuration file (proguard-rules.pro) was added to the Android app, containing keep rules for the io.flutter packages. This change ensures that Flutter-related classes and plugins are not stripped or obfuscated during the code minification process, preventing potential runtime errors or crashes caused by missing symbols.
android/app · high confidence
App initialization and routing infrastructure overhaul
The application entry point now initializes a custom key-value storage service and configures system chrome settings (portrait-only orientation) before running. The root widget is wrapped in a Riverpod ProviderScope for state management. The app's theming has been replaced with a custom theme, and the default auto-generated routing has been replaced with a custom AppRouter that manages the navigator key and route generation.
lib · medium confidence
Introduces a custom routing system for app navigation
The application now uses a custom \AppRouter\ class and a \Routes\ constant class to manage named navigation across the app. This change replaces the previous auto\_route-based routing with a manual \generateRoute\ switch statement that maps route names to specific screens, including login, registration, movie details, ticketing, and payment flows. Users will experience consistent navigation behavior as the app now explicitly defines routes for screens such as user bookings, trailers, and confirmations, ensuring all navigation paths are centrally managed and easily maintainable.
lib/routes · medium confidence
Migrate to Riverpod and introduce new providers for auth, bookings, and payments
The application's state management has been refactored to use the Riverpod library, replacing the previous approach. This introduces a new provider architecture in the \lib/providers\ directory, including \all\_providers.dart\ which wires up repositories and notifiers for features like authentication, movie listings, showtimes, theaters, bookings, and payments. Specific providers such as \AuthProvider\, \BookingsProvider\, \PaymentsProvider\, and \ShowsProvider\ are now responsible for managing their respective states and API interactions, enabling more robust state handling across the app.
lib/providers · high confidence
Redesigned theater screen and seat selection UI
The theater screen now features a curved, gradient-styled visual with a new 'Purchase Seats' button that dynamically updates to show the number of selected seats. Seat selection includes a bounce animation on tap, and the seats area now synchronizes scrolling with the screen header. A legend indicating available, taken, and selected seats has been added to improve clarity during the booking process.
lib/views/widgets/theater · high confidence
Refactored movies screen into modular widgets and added a type filter menu
The movies screen UI has been refactored into separate, reusable widgets including a movie carousel, backdrop view, and overview column, improving code organization and maintainability. Additionally, a new movie type filter menu (All, Now Showing, Coming Soon) has been added to the movies screen header, allowing users to filter the displayed content by movie type.
lib/views/widgets/movies · high confidence
Transparent status and navigation bars on Android
The Android app now renders the status bar and navigation bar transparently, allowing content to extend behind these system UI areas. This change modifies the main activity to disable system window insets, giving the app a more immersive, edge-to-edge appearance.
android/app/src/main/kotlin · high confidence
Test coverage
Added code coverage report for application modules; Added unit and golden tests for app enums, models, and UI screens.
Dependencies
Updated Android build configuration and Flutter dependencies
The Android build configuration was updated to target SDK 31, increased the minimum SDK to 18, and enabled code minification with ProGuard for release builds. Signing configurations were added to support release builds. On the Flutter side, the SDK constraint was raised to 2.14.0, and several packages were added or upgraded, including better\_player, carousel\_slider, cached\_network\_image, and flutter\_secure\_storage, while removing older dependencies like chewie.
(dependencies) · medium confidence
Updated Gradle wrapper to version 6.7.1
The Android build system now uses Gradle 6.7.1 instead of 6.7, ensuring the project builds with the latest patch release of that minor version.
android/gradle · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 50 → 56 (+5.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 97 (-3.1)
- Architecture 99 → 98 (-0.8)
- Maturity 35 → 48 (+12.3)
- Readiness 48 → 45 (-3.1)
- Security 54 → 65 (+11.6)
- Domain Modelling 100 → 100 (+0.0)
Resolved (30)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (pubspec.lock)
- High CVE: [GHSA redacted] (pubspec.lock)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 10 more
New (80)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (11 lines × 2) (lib/views/skeletons/shows_skeleton_loader.dart)
- Duplicated block (12 lines × 2) (lib/views/screens/home_screen.dart)
- Duplicated block (12 lines × 2) (lib/views/skeletons/theater_skeleton_loader.dart)
- Duplicated block (12–13 lines × 3) (lib/views/screens/payment_screen.dart)
- Duplicated block (13 lines × 2) (lib/views/widgets/show_times/show_dates_list.dart)
- Duplicated block (14 lines × 2) (lib/views/skeletons/theater_skeleton_loader.dart)
- Duplicated block (16 lines × 2) (lib/views/screens/register_screen.dart)
- Duplicated block (18 lines × 3) (lib/views/widgets/payment/payment_options.dart)
- Duplicated block (19 lines × 2) (lib/views/screens/confirmation_screen.dart)
- Duplicated block (19 lines × 2) (lib/views/widgets/change_password/change_password_fields.dart)
- Duplicated block (20 lines × 2) (lib/views/widgets/payment/mode_details_input.dart)
- Duplicated block (20 lines × 2) (lib/views/widgets/ticket_summary/show_details_section.dart)
- Duplicated block (20 lines × 3) (lib/views/widgets/welcome/user_profile_details.dart)
- Duplicated block (21 lines × 2) (lib/views/skeletons/shows_skeleton_loader.dart)
- Duplicated block (22 lines × 2) (lib/views/screens/login_screen.dart)
- Duplicated block (22 lines × 2) (lib/views/skeletons/movies_skeleton_loader.dart)
- …and 60 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
arafaysaleem/ez_tickets_app was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1115f4befa879651e386795fa926a0d30cbd48ba — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.