Skip to content

KeeganKnapp/CapstoneProject

Repository files navigation

📂 Project Overview

/CapstoneMauiProject
 ├─ CapstoneMauiProject.sln
 ├─ CapstoneMaui/      (MAUI App project)
  ├─ CapstoneMaui.csproj
  ├─ Platforms/
   └─ Android/
    └─ Services/
     └─ AndroidLoggerService.cs
  ├─ Resources/
   ├─ AppIcon/
   ├─ Splash/
   └─ Images/ Fonts/ Raw/
  ├─ Program.cs / MauiProgram.cs / App.xaml
  └─ (other app code)

 ├─ CapstoneMaui.Core/      (Shared core library)
  ├─ CapstoneMaui.Core.csproj
  ├─ Components/
   ├─ Layout/
    └─ MainLayout.razor
   └─ Pages/
    ├─ Employee/
     ├─ EmployeeDashboard.razor
     └─ JobSiteMap.razor
    ├─ Login.razor
    └─ Home.razor
  └─ Services/
   ├─ Abstractions/
    └─ AbstractLoggerService.cs
   └─ (NotificationService, Auth, etc.)

 └─ tests/
  └─ Unit/
   └─ Unit.csproj

Relationships:
 - CapstoneMaui (app)  --->  ProjectReference  --->  CapstoneMaui.Core
 - CapstoneMaui.csproj references NuGet packages (MudBlazor, Microsoft.Maui.Controls, Microsoft.Extensions.Logging, ...)
 - Platform-specific code (Platforms/Android) lives under CapstoneMaui and is compiled only for Android builds.

Dashboard

Payment System Use Cases: Manager can set rate of pay. Employee can see how many hours they have totaled so they know what to expect to recieve for their pay. (uses quickbooks API as a backend)

flowchart TD
    A[Payment System] --> L[Login]
    A --> Q{quickbooks API}
    M --> C(Set hours for week)
    C --> i(increase hours) --> C
    C--> F(decrease hours) --> C
    E --> D(Look at hours worked)
    B --> G(increase rate) --> B
    B --> H(decrease rate) -->B
    M --> B(Set Rate)
    D --> f(Show hours worked)

    L --> M[Manager / Owner]
    L --> E[Employee]

    E --> R[Request Time]
    R --> Z[Request hours on/off for day]
Loading

Manager Dashboard + Configuration Use Case: Manager logs into app for the first time. They are greeted with a dashboard and from here have the option to pick which elements they would like to view on their dashboard.

flowchart TD
    A[Open App] -->|Log in| B(View Dashboard)
    B --> C(Pick Elements)
    C --> D[Progress]
    C --> E[Jobsites]
    C --> F[Logged Hours]
    C --> H[Requests]
    G(View Progress)
    D --> G
    E --> G
    F --> G
    H --> G
Loading

Employee Dashboard #clockout only so far #other dashboard features to be added Use Case: Employee arrives on site. Employee opens the application in employee mode and clocks in using the clock in feature on their dashboard. The app automatically sends to the database to begin logging the hours. Upon being done for the day, the employee clocks out, which signals to stop logging hours and calculate total hours for the day to log for that day in the database under their name.

flowchart TD
    A[Employee opens Dashboard] --> B{Logged In?}
    B -- No --> C[Redirect to Login Page]
    C --> B
    B -- Yes --> D[View Dashboard]

    D --> E{Clocked In?}
    E -- No --> F{On site?}
    F -- No --> G(Cannot clock in)
    F -- Yes --> H[Status = Clocked in]
    H -- Yes --> I[Begin recording hours]
    

    E -- Yes --> K[Click Clock Out Button]
    K --> L[System records End Time]
    L --> M[Calculate Total Hours]
    M --> N[Status = Clocked Out]
Loading

Request System Use Case: Employee logs into app. From their dashboard they elect to submit a request to their manager. Once submitted the manager can either grant or deny the request. The employee is notified of their decision.

flowchart TD
    A["Employee View of App"] -- Log in --> B("Dashboard")
    B --> C("Requests")
    C -- Sends to Manager --> O
    B --> C("Requests")
    O -- Employee can see result --> C


    E["Manager View of App"] -- Log in --> J("View Dashboard")
    J -- Approves or Denies Requests --> O("Requests")
Loading

Progress Dashboard Use Case: Manager or Employee arrives on progress dashboard. They can view a list of all active or past jobsites. They will choose a jobsite and then be viewing a list of all tasks associated with that jobsite. They can then choose a task to view more details about it. Tasks can be marked as complete or incomplete. The manager and employee can both add or remove tasks from the jobsite as needed.

flowchart TD
    A["Production Progress"] --> B("Available Jobs are Listed")
    B --> C{"View or Add/Edit a Specific Job"}
    C -- Job One --> D["View Completed Tasks"]
    C -- Job Two --> D
    C -- Job Three --> D
    D ~~~ E["Add or Edit Tasks"]
    E ~~~ F["Add Notes to a Specific Task"]

Loading

Log in system

flowchart TD
    A[Open Site] --> B(Log In)
    B --> C(Enter Credentials)
    C --> |Valid| D[JWT & Refresh Token Issued]
    D --> H[Dashboard]

    C --> |Invalid| G(Log In Failed)
    G --> U(Show Error Message)
Loading

About

Capstone project for 2025-2026

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors