Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: Migrate app interface to bslib components and layout #31

Open
9 tasks
jimbrig opened this issue Sep 20, 2024 · 1 comment
Open
9 tasks

[Feature]: Migrate app interface to bslib components and layout #31

jimbrig opened this issue Sep 20, 2024 · 1 comment
Assignees
Labels
breaking Indicates a breaking chance that affects existing code feature New feature requests help wanted Extra attention is needed refactor Code refactoring and cleanup

Comments

@jimbrig
Copy link
Member

jimbrig commented Sep 20, 2024

Goal: Migrate and refactor all shinydashboard, shinydashboardPlus, and bs4Dash package implementations from the gmhLeasingDashboard package to bslib.


  • Leverage navbar-based navigation over sidebar-based navigation in bslib via page_navbar(): replace dashboardPage() with page_navbar().
  • Convert sidebar to top navbar. Instead of sidebar menu's, use nav_panel() and nav_menu() within bslib::page_navbar() to create the top navigation structure.
  • Separate interface into component modules for each page/tab and each nav_panel() should call the corresponding mod_*_ui() UI module function.
  • Create a mod_header_ui() module that includes the GMH logo, dropdowns, and necessary buttons/links. Apply this in the title argument for page_navbar()
  • Implement mod_footer_ui() module
  • Utilize bslib's layout functions for organizing content: layout_columns(), layout_column_wrap(), etc.
  • Adapt custom components
  • Utilize bslib card's to wrap distinct sections of content within each page/tab.
  • Implement sidebar's where necessary and a global app sidebar with global filters
@jimbrig jimbrig added breaking Indicates a breaking chance that affects existing code feature New feature requests help wanted Extra attention is needed refactor Code refactoring and cleanup labels Sep 20, 2024
@jimbrig jimbrig self-assigned this Sep 20, 2024
@jimbrig
Copy link
Member Author

jimbrig commented Nov 19, 2024

App

Core Root Level App:

  • app_ui.R
  • app_server.R
  • app_run.R

App-Related:

  • app_assets.R
  • app_config.R
  • app_logging.R

UI Inputs

Core Filtering Inputs:

  1. Portfolio Selector
  • Name: input_portfolio
  • Function: input_portfolio()
  • Type: shinyWidgets::pickerInput() (i.e. Select, Dropdown, Multi-Select)
  • Choices: Lists portfolios from the portfolios table
  • Purpose: Filter properties based on their associated portfolio for portfolio-specific analysis.
  1. Property Selector
  • Name: input_property
  • Function: input_property()
  • Type: shinyWidgets::pickerInput() (i.e. Select, Dropdown, Multi-Select)
  • Choices: List of properties with IDs as names and names as values. Conditional to input_portfolio.
  • Purpose: Narrow down the analysis and data to specific properties or a set of properties.
  1. Leasing Period
  • Name: input_leasing_period
  • Function: input_leasing_period()
  • Type: Date Range Picker
  • Choices:
  • Purpose: Filter leases, financials, and occupancy data based on the move-in/move-out dates or financial periods.
  1. (Property) Floorplan Selector
  • Name: input_floorplan
  • Function: input_floorplan()
  • Type: Select
  • Options: List of available floor plans for selected properties
  • Purpose: Analyze data for specific floorplans

From Auth:

  • input_email
  • input_password
  • input_otp

Modules

  • mod_home or mod_dashboard
  • mod_summary
  • mod_reports
  • mod_portfolios
  • mod_properties
  • mod_floorplans
  • mod_leasing

Dashboard Module

  • KPI Value Boxes: Total Number of Properties, Occupancy Rate, ?
  • KPI Card
  • Recent Alerts and Notifications

image

Properties Module

  • Property List or Grid
  • Map View of Properties (colored by Portfolio)
  • Property Comparison Tool

Leasing Module

  • Lease Status Summary
  • Occupancy Trends
  • Leasing Performance by Property

Reports Module

Top-Level Modules:

  • Dashboard: mod_dashboard()
  • Property Portfolio: mod_properties()
  • Financial Reports: mod_reports()
  • Data Management: mod_data()

Nested Modules:

Data Retrieval and Storage Module

Fetches data from Entrata API and stores it in the database

Components:

  • API Connection and Authentication Handler
  • Database Connection Handler
  • Data Synchronization Logic

Property Module

Display and manage individual property details

Components:

  • Property Summary Card
  • Leasing Details
  • Leasing Performance Chart
  • Projected Occupancy
  • Occupancy Chart
  • Property Metadata and Map
  • Property Floor Plans, Floorplan Details, Rate Details
  • Projected Rent Growth
  • Property Installment Amenity Charges and Specials/Discounts

Leasing Performance Chart:

leasing-performance-char

Leasing Module

Handles leasing data and operations

Components:

  • Lease Status Overview
  • Upcoming Renewals
  • Vacancy Predictions

Financial Module

Generates and displays financial reports

Components:

  • Revenue/Expense Breakdown
  • Cash Flow Analysis
  • Accounting

Data Visualization Module

Creates reusable charts, tables, and graphics

Components:

  • Line Chart
  • Bar Chart
  • Pie Chart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking Indicates a breaking chance that affects existing code feature New feature requests help wanted Extra attention is needed refactor Code refactoring and cleanup
Projects
None yet
Development

No branches or pull requests

1 participant