Turn queries into easy-to-use tools your teammates can share.

Overview
qwaver logo

Turn queries into easy-to-use tools your teammates can share.

Parameterize! Visualize! Collaboratize?!

Join the chat at https://gitter.im/qwaver-io/community License master passing

qwaver links: Latest BuildUse CasesHelp!InstallationThanks

qwaver logo

Latest Build

The latest code is running at QWAVER.io

Use Cases

Boss: Hey, do you have time for {business question involving our databases}?

You: Sure! Give me 20 minutes..

17 minutes later...

You: Here you go! See attached chart and data!

Boss: Thanks! could you do 100 similar variations with different time periods and countries?

Your skills as a query artist were definitely needed that first time. But the second time? That's just changing a few key values. Your boss could do that himself... but he isn't comfortable with SQL.

If you're like me, you have hundreds of queries stored in your DB admin tool for several connected DBs. A lot your time is spent searching through them, altering WHERE clauses, exporting the results, plotting charts, and emailing the results (chart + data + query for validation). Often you've got others on your team doing the exact same thing re-inventing the wheel left and right.

  • Q: Don't other tools out there help with this?
    • A: Yeah, but they all require you (shudder) learn a new platform. Be it a "simple" markup language (lookin' at you, Looker) or some sort of intricate UI designed more for dashboards than actually getting insights. You already know your query language, let's leverage that strength!

Help!

Helping with this project will make you one of the cooler people that I know. How can I (meaning you) do that?

  • Easy: Give this project a ⭐️ !
  • Easy: Kick the tires. qwaver.io has the latest version running.
  • Easy: Edit this file and make a PR to add any feature requests.
  • Easy: If you're in the code and see where something could be improved, but can't make the improvement right then, add # TODO comment with a helpful description of what needs to be done and submit a PR.

The Data Model

  • The hierarchy is like this:
    • Org -> Database -> Query -> Result
    • Each "->" represents a one-to-many relationship
  • Users and Organizations
    • User and Organization have a many-to-many relationship with the connection defined by UserOrganization
      • Each organization can have many users
      • Each user can belong to many organizations
    • When using Qwaver, a user has a selected organization defined in their profile

Feature requests

Big, important things:

  • JS charts on pages
  • qwavers (esp. those with parameters) can be APIs as well
  • Query collections -- user-defined lists of queries that all conform to a given topic
  • add API access in addition to database access. Is that possible? We need it to be turned as a table to be treated generically
  • "Starters": pre-defined sets of queries and collections if a database is for a common CMS

Small but cool things:

  • set query type to: automatic, table, bar chart, line chart, pie or pivot
  • test database connection when adding new database
  • webpage preview when sharing results via slack or email (e.g. add open graph social previews to results. This will necessitate making an image url)
  • flag queries -- if their results do not align with their title/description or are wrong in any other way
    • Search results should not include flagged queries
    • The author of a flagged query should be given an alert
  • track average execution time for queries
  • For pie charts with more than 20 pie slices; make single slice be sum of the remainder
  • Add comments, likes
  • create 404 page
  • create exceptions table and log exceptions
  • creat easy way to leave feedback
  • email verification
  • a country or date selector when param is {country} or {date}
  • For parameters set maximum and minimum and numeric values
  • pre-populate for a new database two queries: list public tables, list columns given a table name
  • list users in an organization
  • automatically add "admin" to new organizations

Issues:

  • query parameters no longer recommending last specified

notes

General improvements

If you see any ways that the app could be improved in these ways, let's work on it!

  • data security -- of paramount importance. In no way do we want a user to have access to data from an organization to which they do not belong
  • performance -- This needs to be SNAPPY!
  • HTML/CSS styling
  • unit tests
  • support for more databases

Installation

qwaver is already up and running on qwaver.io

If you want to run locally:

pip install -r requirements.txt
python3 manage.py collectstatic --no-input
python3 manage.py createsuperuser
python3 manage.py makemigrations
python3 manage.py migrate

Run python server, go to localhost

python3 manage.py runserver

Environment variables:

DJANGO_SETTINGS_MODULE=qwaver.settings

Configurations. Create these as a settings.ini file in the qwaver directory that contains settings.py

[config]
ENVIRONMENT=[any value not 'prod' uses non-production logic]
SECRET_KEY=[your secret key]
DATABASE_NAME=[your value]
DATABASE_USER=[your value]
DATABASE_PASS=[your value]
DATABASE_HOST=[your value]
DATABASE_PORT=[your value]

Thank yous

  • Much of the user management code has been based on the snippets made available by Corey Schafer. He made an excellent tutorial on learning Django by walking through how to make a blog with many users. qwaver is basically a blog but for queries so it was a nice starting point!
You might also like...

An easy to implement marquee JQuery plugin with pause on hover support. I know its easy because even I can use it.

Simple-Marquee Copyright (C) 2016 Fabian Valle An easy to implement marquee plugin. I know its easy because even I can use it. Forked from: https://gi

Aug 29, 2022

PokemonNFT started as Buildspace Project - "Create your own mini turn-based NFT browser game" - ROSE Emerald Paratime Testnet

PokemonNFT started as Buildspace Project -

Welcome to PokemonNFTGame 👋 Buildspace Project - Create your own mini turn-based NFT browser game ✨ Demo Install npm install Usage npm run dev Blockc

Oct 3, 2022

🛠 Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

🛠 Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

May 21, 2022

Warvil is an AI bot that seeks to respond to your queries about programming.

Warvil Bot Warvil is an AI bot that seeks to respond to your queries about programming. View Project » View Demo · Report Bug · Request Feature Built

Jan 4, 2023

How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be trying show off out. Curate the list of gadgets and software and share it with your fans and followers.

How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be trying show off out. Curate the list of gadgets and software and share it with your fans and followers.

Show Off - Showcase your setup! How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be try

Nov 24, 2022

A social network where you can share posts, view your profile metrics and follow other users.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Aug 21, 2022

Hacktoberfest is all about meeting up all brains. In this repository we are planning to come with many ideas and works. You all can share your ides/works here.

Hacktoberfest is all about meeting up all brains. In this repository we are planning to come with many ideas and works. You all can share your ides/works here.

Hacktoberfest Submit your Work Hacktoberfest is all about meeting up all brains. In this repository we are planning to come with many ideas and works.

Oct 5, 2022

Turn an HTML input box to a duration picker, without jQuery

html-duration-picker.js html-duration-picker.js is a very tiny JS library used for transforming a native HTML text input into a duration picker. The a

Oct 19, 2022

This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do any operations that can be performed in python shell with this package.

Django execute code This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do

Nov 12, 2022
Comments
  • test: add model factories and unauthorized user behavior tests

    test: add model factories and unauthorized user behavior tests

    Description

    • Add factory_boy package to allow creating model factories for tests
    • Add factories for the models
    • Add unauthorized user tests (Database view seems to not check org access, the util method is not called)
    • Add tests for authorized user behavior

    Notes

    • Added get_success_url method for database and org edit views to allow successful redirections after edit
    • result model only has detail view, there is no edit/delete behavior
    • Org delete behavior also needs update. After the deletion, the cascade behavior needs to be added to not allow any dependent table to have invalid FK.
    • Database listing view does not have access checks implemented. The unauthorized database access test fails because it expects 403 but gets 200. That test has been commented out.
    opened by DawoudSheraz 0
  • Add a Gitter chat badge to README.md

    Add a Gitter chat badge to README.md

    brianrisk/qwaver now has a Chat Room on Gitter

    @brianrisk has just created a chat room. You can visit it here: https://gitter.im/qwaver-io/community.

    This pull-request adds this badge to your README.md:

    Gitter

    If my aim is a little off, please let me know.

    Happy chatting.

    PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

    opened by gitter-badger 0
Owner
Brian Risk
Brian Risk
A web tool for you to record your face and turn it into a 3D animation file.

Web Face Capture A free, open-source web tool for you to record your face and turn it into a 3D animation file. Go to the website Allow camera permisi

James Lee 9 Jan 6, 2023
✨ An IRL tokenization platform to turn your hopes, dreams, and desires into fundable NFTs on the Polygon blockchain using Chainlink, IPFS, Moralis, and NFT.Storage.

GoFundYourself Getting funding for your passion project, needs or dream doesn't have to be a nightmare! check out our live demo on Netlify Let's Fundi

Brian H. Hough | brianhuff.eth 7 Dec 6, 2022
Turn any dynamic website (especially wordpress) into a fast, secure, stable static site

Static site publisher Turn any dynamic website (especially wordpress) into a fast, secure, stable static site Reduced complexity - no need to run simp

Alex Ivkin 7 Apr 6, 2022
Windmill: Open-source platform and runtime to turn any scripts into internal apps, integrations and workflows

. Open-source and self-hostable alternative to Airplane, Pipedream, Superblocks and a simplified Temporal with autogenerated UIs to trigger flows and

Windmill Labs, Inc 1.6k Jan 4, 2023
✏️ A small jQuery extension to turn a static HTML table into an editable one. For quickly populating a small table with JSON data, letting the user modify it with validation, and then getting JSON data back out.

jquery-editable-table A small jQuery extension to turn an HTML table editable for fast data entry and validation Demo ?? https://jsfiddle.net/torrobin

Tor 7 Jul 31, 2022
A JavaScript plugin to turn many images into a gif

GiffyImages A JavaScript plugin to turn many elements images into a gif magically. Preview Getting started npm i giffy-images -D or yarn add giffy-im

Leonardo Carey 6 Nov 6, 2021
Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database using SQL queries

Microsoft Excel Add-in for Developers About Us Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database u

OSLabs Beta 30 Sep 30, 2022
This Plugin is For Logseq. If you're using wide monitors, you can place journals, linked references, and journal queries side by side.

Logseq Column-Layout Plugin Journals, linked references, and journal queries can be placed side by side if the minimum screen width is "1850px" or mor

YU 14 Dec 14, 2022
Use XMind share to present your .xmind files on your blog or website.

XMind Embed Viewer Use XMind share to present your .xmind files on your blog or website. Demo Quick start Install As an npm module npm i xmind-embed-v

XMind Ltd. 25 Dec 7, 2022