DEV Community

Cover image for Zeep Service -Your Travel Partner(Low-Level Design)
Dhairya Pandya
Dhairya Pandya

Posted on

Zeep Service -Your Travel Partner(Low-Level Design)

Introduction

Zeep Service is a mobile application designed to facilitate commuting for students between their homes and campus. It provides a unified platform for both drivers and passengers, enabling efficient travel management. Drivers can view and manage their passenger lists for each trip, while students can book rides either through subscriptions or on a per-day basis, with the flexibility to cancel if needed.

The app also features real-time notifications for both drivers and passengers, allowing drivers to see the total number of riders for upcoming trips, and passengers to accept or decline rides. Additionally, it includes a WhatsApp bot for easy communication with customer support and a dashboard for monitoring app usage.

For reliability, Zeep Service integrates Crashlytics, which monitors and reports application errors, including detailed crash data. Automation processes within the app are powered by Quickwork, a Mumbai-based automation company.

Highlights

  1. Seamlessly integrated WhatsApp messaging with QuickWork and Google Sheets to create interactive dashboards, enhancing data visualization and user engagement.
  2. Developed a robust SaaS architecture using Google Firebase, leveraging its ecosystem to ensure a reliable and scalable platform.
  3. Designed an intuitive user interface with Material UI, making trip approvals and cancellations straightforward and user-friendly.
  4. Built a Dialogflow NLP chatbot that accurately understands customer intents, extracts key information, and integrates with Google Calendar for automated scheduling.
  5. Applied proven design patterns such as Adapter, Builder, and Singleton to optimize database connections and ensure a scalable application architecture.

Screenshots

dhairyapandya dhairyapandya
dhairyapandya dhairyapandya
dhairyapandya dhairyapandya
dhairyapandya dhairyapandya

Usecase diagram of the Application

When building a Van Service application, it's essential to map out how each part of the system interacts. A flowchart provides a clear and concise visualization of these interactions, helping both developers and stakeholders understand the entire process. Let’s explore the flowchart for a typical Van Service application, highlighting the key steps and decision points.

Requirements for Each Actor in the Van Service Application

Customer

  • Registration:
    • Must provide a name, email, mobile number, and password.
  • Login:
    • Authenticate using email and password.
  • Passenger Information:
    • Specify type of user (Driver, Passenger), gender, city, and subscription type.
  • Location Details:
    • Provide college name, boarding point, and dropping point.
  • Ride Management:
    • Can generate a Customer ID using name, email, mobile number, and password.
    • Can cancel a ride on a specific date.
    • Must be able to submit a complaint to the Complain Registry if necessary.

Driver

  • Profile Management:
    • Provide driver-specific details: name, age, driving license (as an image), conductor name, vehicle registration details, and rating.
    • Validate driver's information: name, age, license, and vehicle registration.
  • Vehicle Details:
    • Specify vehicle information including model name, company name, type, seating capacity, and number plate.
    • Upload vehicle-related images: pictures of the vehicle, driving license, and number plate.
    • Validate vehicle details.

Passenger

  • Registration:
    • Must provide the same registration details as a customer, including name, email, mobile number, password, and city.
    • Additional details include type of user, subscription type, and boarding point string.
  • Journey Management:
    • Can select and verify the time of dropping and boarding point details.
    • Calculate journey time based on start and drop-off times.

Admin (Customer_Mngr)

  • Customer Management:
    • Oversee and validate customer data including customer number, selected driver, and manager ID.
    • Validate drivers assigned to customers.
  • Matching Algorithm:
    • Execute the matchmaking algorithm to pair customers with available drivers.
    • Manage a list of customer IDs and driver IDs for matching purposes.

Complaint Registry

  • Complaint Management:
    • Register complaints with details such as complaint ID, type of complaint, status, and the customer who raised the complaint.
    • Handle the status updates and resolutions of complaints.

Location Details

  • Location Information:
    • Provide and update location details such as the college name, city, and both boarding and dropping points.

Signin/Signup Process

  • User Signup:
    • Collect essential signup information, including name, email, mobile number, user type, gender, and password.
  • User Login:
    • Authenticate using the provided email and password.

Dropping and Boarding Points

  • Journey Management:
    • Specify the dropping point details like time and location.
    • Calculate journey time based on start and dropping times.
    • For boarding points, provide information on the number of other people, boarding time, and journey time.

Given below is the Use case diagram for the application

Image description

(Zoomed in)
Image description
Image description

Class Diagram

In developing a robust and efficient Van Service application, having a well-structured class diagram is essential. The class diagram serves as a blueprint, providing a detailed view of the system's structure and the relationships between its components. Below is an overview of the class diagram for our Van Service application, highlighting the key entities and their interactions.

Here are some of the classes that are formed here

  1. boardingPoint.java
public class BodingPoint {
    int numberOfOtherPeople;
    time timeofboarding;
    time journeyTime;
    int stopsInBetween;

    time timeCalculation(time timeofBoarding, time timeofDropping);
}

Enter fullscreen mode Exit fullscreen mode

2.complainRegistry.java

public class ComplainRegistry {
    int complainId;
    ComplainType typeOfComplain;
    ComplainStatus complainStatus;
    int complainRaisedByCustomerId;
}

public boolean registerComplain(ComplainType typeOfComplain, int complainRaisedByCustomerId) {
    // Logic to register the complaint
    return true; // Return true if the complaint was successfully registered
}

// Enum for ComplainType
public enum ComplainType {
    SERVICE, DRIVER, VEHICLE, OTHER
}

// Enum for ComplainStatus
public enum ComplainStatus {
    PENDING, RESOLVED, CLOSED
}
Enter fullscreen mode Exit fullscreen mode
  1. customer.java
public class Customer {
    String name;
    String emailid;
    String mobileNumber;
    String password;

    int generateCustomerId(String name, String emailid, String mobileNumber, String password);
}

Enter fullscreen mode Exit fullscreen mode
  1. customer_Mngr.java
class Customer_Mngr {
    int customerNumber;
    String driverSelected;
    int managerId;

    bool ValidateData(int customerNumber, String driverSelected, int managerId);
}
Enter fullscreen mode Exit fullscreen mode
  1. driver.java
public class Driver {
    String driverName;
    int driverAge;
    Image drivingLicence;
    String conductorName;
    String vehicleRegistration;
    String Rating;

    bool ValidateData(String driverName, int driverAge, Image drivingLicence, String conductorName, String vehicleRegistration);
}

Enter fullscreen mode Exit fullscreen mode
  1. droppingPoint.java
public class DroppingPoint {
    time timeofDropping;
    LatLon placeOfDropping;

    time journeyTimeCalculation(time startTimeOfJourney, time timeofDropping);
}

Enter fullscreen mode Exit fullscreen mode
  1. locationDetails.java
public class LocationDetails {
    String collegeName;
    String city;
    String boardingPoint;
    String dropingPoint;

    void putRequest(String collegeName, String city, String boardingPoint, String dropingPoint);
}

Enter fullscreen mode Exit fullscreen mode
  1. login.java
public class Login {
    String emailid;
    String password;

    String getEmailid(String customerId);
    String getPassword(String customerId);
}

Enter fullscreen mode Exit fullscreen mode
  1. matchingAlgorithm.java
import java.sql.Driver;

public class MatchingAlgorithm {
    int CustomerId;List<int>DriverIdList;

    Driver matchmakingalgorithm(int CustomerId, List<int> DriverIdList);
}

Enter fullscreen mode Exit fullscreen mode
  1. passenger.java
public class Passenger {
    String name;
    String emailid;
    String mobileNumber;
    enum typeOfUser(Driver, Passenger);
    enum gender;
    String city;
    String boardingPt;
    enum subscriptionType;
    int PassengerId;

    int userType(int customerId);
    bool dataValidation();
    int generateCustomerId(String Name);
    int generatePassengerId(int customerId);
    bool rideCancellation(date day);
}

Enter fullscreen mode Exit fullscreen mode
  1. signIn.java
public class Signin {
    String name;
    String emailid;
    String mobileNumber;
    enum typeOfUser(Driver, Passenger);
    enum gender;
    String password;

    int userType(int CustomerId);
    bool DataValidation();
    int generateCustomerId(String Name);
}

Enter fullscreen mode Exit fullscreen mode

12.vehicleDetails.java

public class VehicleDetails {
    String modelName;
    String companyName;
    enum typeOfVehicle;
    int sittingCapacity;
    Image picturesOfVehicle;
    Image numberPlateImage;
    Image drivingLicence;
    String driverName;
    String conductorName;

    void verifyVehicleDetails(String modelName, String picturesOfVehicle, String numberPlateImage, Image drivingLicence, String driverName);
}

Enter fullscreen mode Exit fullscreen mode

This is the overall class Diagram of the application

Image description

Supporting Links
Github
Youtube Video Link

Top comments (0)