DBvieweR: Shiny Database Management Dashboard - Shiny Contest Submission

DBvieweR: Shiny Database Management Dashboard

image

Authors: David Munoz Tord

Abstract: Welcome to DBvieweR! You'll start at a login screen (demo credentials provided). Once in, you'll land on the "View Tables" tab, your gateway to database exploration. The left sidebar is your control center, housing tabs for importing, renaming, updating , .. even deleting tables ! (if you are allowed to) , and more database wizardry. It's like DBeaver, but with a friendlier face and a lot less nerd-speak. Ready to make databases less daunting?

Full Description:
Hey there, data explorers and accidental database managers! :wave:

Ever felt like you needed a PhD in Computer Science just to peek at your company's data? Well, grab your mug because DbVieweR is here to turn that frown upside down!

DbVieweR Screenshot

What's This All About?

Picture this: You're working at a bank (fancy, right?), and you need to share data with colleagues who think SQL is a new trendy drink. You've got DBeaver, which is great if you speak fluent nerd, but not so much for the rest of mere mortals or you got Airtable who cost and arm and a leg.

Enter DBvieweR: The love child of a serious database management system and a user-friendly Shiny app. It's like giving your data a makeover and teaching it to speak human!

Why Should You Care?

  1. No More Installation Nightmares: Forget about convincing IT to install software. DBvieweR runs in your browser, because who doesn't love a good web app?

  2. Login Flexibility: Powered by shinyauthr, DBvieweR offers secure and customizable authentication options to fit your organization's needs.

  3. CRUD Operations, But Make It Simple: Create, Read, Update, Delete - all wrapped up in a sleek UI.

  4. Don't get locked in: Import and export data from and to CSV/Excel, making it easy for everyone to work with the data they need.

  5. Delete with Discretion: Only authorized users can delete tables, ensuring data integrity and security.

  6. Robust and Reliable: Built-in safeguards against common database pitfalls, including protection against SQL injection, data type mismatches, and accidental deletions.

The Origin Story

This little project was born in the trenches of corporate data sharing. Now, it's open source and ready to democratize data access for everyone.

Who's It For?

  • Corporate teams struggling with data accessibility
  • Academics/Labs who love data but hate command lines
  • Anyone who's ever looked at a database and thought, "I wish this was easier"

Database Management and Visualization App

Core Functionalities:

  1. Data Viewing and Exploration

    • View database tables
    • Explore data with interactive tools
    • Filter and search within tables
    • Download filtered views of data
  2. Table and Data Modification

    • Modify table names
    • Edit, add, and delete columns
    • Add new columns with custom expressions
    • Add and delete rows
    • Delete entire tables
  3. Data Import

    • Import tables from CSV files
    • Import tables from XLS/XLSX files
  4. Data Visualization

    • Generate interactive visualizations of your data
    • Download generated graphs

About the App

This app provides a comprehensive suite of tools for database management, data exploration, and visualization. Whether you're a data analyst, database administrator, or business user, our app offers intuitive interfaces for handling various aspects of data management and analysis.

From basic operations like viewing and filtering data to more advanced features such as adding columns with expressions and generating visualizations, this app is designed to streamline your data workflow. The ability to import data from common formats like CSV and Excel makes it easy to bring your existing data into the system.

With its combination of data manipulation capabilities and visualization tools, this app serves as a one-stop solution for many of your data management and analysis needs.

:sparkles: Key Features

:file_folder: Dynamic Table Selection

  • Smart Table Listing: Automatically detects and displays all tables in your connected database.
  • User-Friendly Interface: Easy-to-use dropdown menu for quick table selection.

:mag: Interactive Data Exploration

  • Powered by GWalkR: Utilizes the GWalkR package for creating interactive and insightful data visualizations.
  • Real-Time Rendering: Visualizations are generated on-the-fly as you explore different tables.

:framed_picture: Customizable Visualizations

  • One-Click Generation: Create stunning visualizations with just a single click of the "Generate Visualization" button.
  • Adaptive Display: Visualizations adjust automatically to your data structure and content.

:zap: Responsive Design

  • Fluid Layout: Optimized for various screen sizes and devices.
  • Intuitive Controls: User-friendly interface for seamless navigation and interaction.

:arrows_counterclockwise: Real-Time Data Sync

  • Auto-Refresh: Data is automatically fetched when switching between tables.
  • Always Up-to-Date: Visualizations reflect the most current data in your database.

:chart_with_upwards_trend: Progress Tracking

  • Loading Indicators: Clear progress messages keep you informed during data fetching and visualization generation.
  • Success Notifications: Receive instant feedback when your visualization is ready to explore.

:hammer_and_wrench: Modular Architecture

  • Shiny Modules: Built using Shiny modules for enhanced maintainability and scalability.
  • Easy Integration: Seamlessly integrates with existing Shiny applications.

:wrench: Technical Highlights

  • R Shiny: Built on the robust and flexible Shiny framework for interactive web applications.
  • SQL Integration: Direct connection to SQL databases for real-time data access.
  • Reactive Programming: Utilizes Shiny's reactive programming model for efficient updates and smooth user experience.

Want to Dive In?

Check out the GitHub repo for all the nitty-gritty details. Pull requests are welcome, especially if they come with good ideas for improvement!
Check the Live Demo For Yourself
Check the YouTube Demo

Remember, databases don't have to be dull.


Shiny app: https://munoztd0.shinyapps.io/DbVieweR/
Repo: GitHub - munoztd0/DbVieweR at demo

Thumbnail:
image

Full image:
DbVieweR  Screenshot

6 Likes

P.S. Some features have been deactivated on the shinyapps.io demo for obvious security reasons. I'm currently working on implementing these safely on a publicly accessible server. However, by its nature, this tool should have restricted access in real-world scenarios. I may post a video demonstrating the full admin capabilities in the future. Keep you posted soon.

3 Likes

Nice project! When will the video be available?

3 Likes

Nice project ! It’s sqlite only or also works ok MySQL db ?

The good news is that since it works on SQLite it will work on every SQL DB flavor ! I will add an argument to add any SQL engine very soon. Then you will only need to provide you DB connection and voila !

keep you updated soon!

1 Like

working on it ! Thanks for the support !

1 Like

Can't wait to test this new feature!! Great work!!

1 Like

Here it is a video with full demo !

Check it out on YouTube

Just pushed a new branch with a functioning implemenation

-> GitHub - munoztd0/DbVieweR at demo_sql

I only tested with SQLite and PostgreSQL for now because I don't have access to a MySQL DB but I should work seamlessly in theory

Please feel free to try it and tell me how it goes !

Just pushed a new branch with a functioning implemenation

-> GitHub - munoztd0/DbVieweR at demo_sql

Super fun stuff!

I noticed that when you update or delete values in a table that is currently selected in the "View" section, the table view does not update to show the current state of the data until to switch to a different table and come back to it.

Is there a place where you can put an observe to have the DT object in the "View" tab to update whenever the
underlying data is edited? I found this challenging in my much less nice-looking implementation.

Steps to reproduce:

  1. Load demo (star wars data default)
  2. Switch to Delete Rows
  3. Delete a couple rows
  4. Switch back to View tab
    Expected: Deleted rows are gone
    Observed: Deleted rows are still visible until you interact with the DT or swap to another table and return to starwars.

Hi Seadoo ! Thanks for looking at my app, it's already heartwarming.

So yeah I totally see what you mean .. It was the default behavior for a while but then it would just reload the data each time you change tabs and stuff like that and it was quite annoying but I will try to find a middle ground in between useless refresh and no refresh at all.

I wanted to put a big refresh button in the bottom left, what would you think about that ?

Anyhow, please fill free to fork the project and try it by your own that would amazing to have some input on it !

munoztd0,

I would have a look at the DT:dataTableProxy() function. This will allow to update or modify the table witout full re-rendering it, which can improve performance when working with large tables or dynamic data.

Kraggle

2 Likes