Skip to content

Appoinsty is a Java Mobile Application which allows clients to schedule and make appointments for Businesses. We are following the SaaS model for our idea.

License

Notifications You must be signed in to change notification settings

LCIS-codepath/Appointsy

Repository files navigation

Appointsy

Table of Contents

  1. Overview
  2. Product Spec
  3. Wireframes
  4. Schema
  5. App Updates

Overview

Description

An application for businesses that allows clients to schedule appointments through their availability.

App Evaluation

  • Category: Business/Social Network.
  • Mobile: Primarily developed for Android mobile applications but may extend the idea to the web and iOS.
  • Story: Provides the user with nearby local businesses depending on the specified filters.
  • Market: Small businesses and their clients.
  • Habit: The app will be used as often as the user needs to schedule appointments for their daily lists and neccessities.
  • Scope: Business would primarily post their availabilty on the app, which will allow users to specify their appointment. That will provide a bussiness with a confirmation of the appointment. Provide both the bussiness and individuals with a reminder.

Product Spec

1. User Stories (Required and Optional)

Required Must-have Stories

User

  • User can login & register
  • User can favorite Businesses
  • Login to view nearby businesses
  • Filter nearby businesses by location/favorites
  • Register through sign up
  • Favorited/liked businesses
  • Notifications and Reminders of Appointment
  • Setup profile
  • Google Maps API to show distance between User and Business

Business

  • Sign up or log in
  • Create business profile
  • Set availability hours
  • View all upcoming appointments

General

  • UI Setup
  • Custom App Icon
  • Infinite scrolling
  • Swipe to refresh
  • Modal overlays (fragments)
  • Bottom Navigation Bar
  • Data binding MVVM
  • Google API Maps
  • Google API Calendar
  • Back4App connect
  • Connect Google Calendar API to allow users to add their appointment

Optional: Nice-to-have Stories

  • Data Binding
  • Stride API Payment system for SaaS
  • Table Orders
  • Splash Screen
  • Business Analytics
  • Offline persistence
  • Phone number/email confirmation
  • GitHub Actions setup
      • CI - build
      • CD - deploy

2. Screen Archetypes

  • Login
  • Register - Setup business or user credentials
    • Phone number confirmation
  • Home
    • Shows list of scheduled appointments
  • Stream
    • Show list of local businesses
    • User can filter by distance, favorited, and type of business
  • Detail (Profile view)
    • Provide a detailed information from the profile
  • Creation (Appointment)
    • View availability, create, reschedule, cancel appointments
    • Manange appointment(s) section
  • Profile
    • Provide email, password, phone number
    • Setup photo, username, bio
    • Business: name, appointment availability, phone number, location, hours of operation
    • User: name, secheduled appointments (if it's with your business)
  • Settings
    • Change theme light/dark mode
    • About
    • Logout

3. Navigation

Tab Navigation (Tab to Screen)

  • Stream (Businesses)
  • Home (Manage appoinments)
  • Creation
  • Profile
  • Settings

Flow Navigation (Screen to Screen)

  • Home
    • View created appointments
  • Creation
    • Manage appointments
  • Signup -> Profile setup
  • Login -> Stream screen
  • Stream -> detail view
  • Stream -> compose
  • Profile
    • Modify user attributes
  • Settings
    • Show app settings

Wireframes

  • Recommend viewing the image in a different tab and zooming in
    to different parts of the image for a better understanding.

[BONUS] Digital Wireframes & Mockups

Design

[BONUS] Interactive Prototype

Video Walkthrough

Schema 1.3

Schema

Models

User

Property Type Description
ObjectID Title Unique profile ID
Name String User's full name
Email String User's unique email
Password String User's password
Image File Optional profile image
Phone Number Integer Optional/Required
Bio String Optional bio for user

Business

Property Type Description
ObjectID Integer Unique object ID
Business name String Business's name
Owner name String Owner's name
Location Int Business location
Hours Int Business hours of service
Service/Avg Price Int Average price of service
Business Type String Type of bussiness

Appointments

Property Type Description
ObjectID Integer Unique ID
Time String Appointment time
Details String Detail information
Date Date When the appointment is scheduled
isReschedule Boolean User can reschedule only 1 time
Status Boolean If the appointment is cancelled or awaiting
UserObjectID Pointer Reference key to User
BussinessObjectID Pointer Reference key to Business

Networking

  • Login
    • Google Login
      • (READ/GET) google access token
  • Register - Setup business or user credentials
    • (CREATE/POST) Create new user profile for client/business
  • Stream
    • (READ/GET) Appointment details
  • Home
    • Business
      • (READ/GET) get the list of events from user calendar
      • (UPDATE/PUT) Favorite
    • Client
      • (READ/GET) Get appointments from calendar
      • (Read/GET) Get distance of business in relation to users current location
  • Detail
    • Business desc.
      • (READ/GET) Get Business details
      • (Create/POST) Create new Google Maps intent for driving directions
      • (READ/GET) Get appointments from calendar
    • Appointment
      • (DELETE) Cancel appointment
      • (UPDATE/PUT) Reschedule appointment
      • (POST/CREATE) Intent for Maps directions
  • Creation (Appointment)
    • (READ/GET) Get business details
    • (CREATE/POST) Add event to calendar
  • Appointment Overlay
    • (Create/POST) Create a new appointments
    • (READ/GET) Get events from calendar
    • (READ/GET) Get business details
  • Profile
    • (GET/CREATE) Create a new user Profile
  • Settings
    • (POST/GET) User preference for dark mode
    • (POST/GET) Logout

--- Basic snippets for each Parse network request

public void createObject() {
  ParseObject entity = new ParseObject("Appointment");

  entity.put("BusinessName", "A string");
  entity.put("Time", "2323" );
  entity.put("Status", "Confirmed" );
  entity.put("Details", "Business 123" );
  entity.put("isReschedule", "false" );

  entity.put("user", ParseUser.getCurrentUser());

  // Saves the new object.
  // Notice that the SaveCallback is totally optional!
  entity.saveInBackground(e -> {
    if (e==null){
      //Save was done
    }else{
      //Something went wrong
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
  });
}

— End points & APIs

Google Maps API

HTTP VERB Endpoint Description
GET distancematrix/rows/distance gets distance between two locations

Google Calendar API

HTTP VERB Endpoint Description
GET /calendars/calendarId/events/eventId Returns an event.

Stripe API

HTTP VERB Endpoint Description
POST /create-payment-intent Payment lifecycle

Google Pay

Google Login

Open-Source Libraries & Resources

  • iconmonstr

App Updates

Create Appointent

Video Walkthrough

Features

Video Walkthrough

About

Appoinsty is a Java Mobile Application which allows clients to schedule and make appointments for Businesses. We are following the SaaS model for our idea.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages