Back to work

Ferry Boat SLZ

Mobile MVP for a ferry: ticket and vehicle booking, a digital queue with your position, and boarding checked by QR code.

01The problem

A ferry's capacity is not a single count. A pedestrian takes a seat, a vehicle takes area, and checking people aboard needs a ticket that cannot be duplicated.

02The decision

A digital queue with your position and priority by category, and capacity modelled on three axes: pedestrians, vehicles and area in square metres. The fare and the area of each category live in a table, so changing prices does not need a new release of the app. Ticket numbering, the QR code and the recount of free places live in the database, so cancelling a ticket returns the place without the app doing any arithmetic.

03The outcome

MVP presented to innovation representatives of Porto do Itaqui.

Period
2024
Role
Mobile and database
Tech
React NativeExpoTypeScriptZustandPostgreSQLExpo Camera
  • Sign up and access

    Creating an account asks for full name, CPF with an input mask, phone, e-mail and password, with the CPF validated before anything is sent. Once signed in, the app decides on its own where to send the person: a passenger goes to the tabs, an operator goes to the boarding panel.

  • Departures and availability

    A date picker with today and the next four days. Each departure shows time, origin, destination, status and how many places are left. When it gets tight, the card warns that few places remain, or marks the trip full and blocks booking.

  • Booking a ticket and a vehicle

    The person builds the order item by item: pick the passenger fare, fill in each name and CPF, and for a vehicle pick the category and give the plate and the model. The screen adds up the vehicles' area in square metres and shows how much still fits on the ferry, blocking the order when it goes past either the space or the places.

  • Ticket and QR code

    Each ticket generates a QR code of its own and a ticket number, both created in the database and not by the app. The screen shows Present at boarding, the ticket number, the passenger, the date and the vessel, and moves between the several tickets of the same order.

  • My tickets and cancellation

    Lists the tickets with price, boarding and status. You can open the QR code, see the details and cancel. Cancellation understands a group booking and treats the tickets of the same order together, returning the places to the trip.

  • Digital queue

    If the person has more than one trip, the app asks which queue to follow. The queue shows the position in large type, how many people are ahead, the estimated time and the places on that trip. The screen refreshes on its own every 25 seconds. Entry is automatic at booking, with priority by category: elderly and disabled passengers first, then children, then students, then adults.

  • Boarding officer panel

    A separate area, with a profile check at the door. It lists the day's trips with time, route, vessel and current occupancy against the maximum. Opening a trip, the operator sees who is aboard, who is in the queue, pedestrians and vehicles, and has three actions with confirmation: start boarding, mark that the vessel has departed and cancel the trip.

  • Boarding scanner

    The camera opens asking for explicit permission. The operator points it at the passenger's QR code and the check happens in the database. The answers become an alert on screen: invalid QR code, ticket already used, ticket cancelled, or boarding confirmed.

  • Profile, notifications and help

    The profile shows personal data and two statistics that come from the database, trips taken and total spent, with editing of the data. Notifications list trip alerts with mark as read and delete. The frequently asked questions bring ten items in an accordion plus contact shortcuts.