Code Monkey home page Code Monkey logo

diwata's Introduction

Diwata

Diwata is a database interface for PostgreSQL,Mysql, Sqlite with the goal of being usable, user-friendly with its basic and advanced functionality be discoverable by the user.

Backers on Open Collective Sponsors on Open Collective

Demo

sakila database in heroku

Quick local demo setup using sqlite sakila.db

Use the nightly compiler.

git clone https://github.com/ivanceras/diwata
cd diwata
git submodule update --init --recursive
./run_sqlite_sakila.sh
open http://localhost:9000

Features

  • Automatic display of direct and indirect linked record
  • Freeze column and freeze rows
  • Infinite scrolling / loading of page on scrolling
  • User friendly granular search and filter
  • Diplay descriptive referred records. (ie: Instead of displaying the foreign_key value integer or uuid, display the referred records in such a way it is distinguisable by the user)
  • Well integrated with the browsers, clickable tables, records and tabs can be openned in a new window and displays the data as though clicking on it.

Roadmap checklist:

  • Basic data display
  • Infinite load-on-deman scrolling
  • Meaningful dropdown lookup
  • Seamless url-based navigation
  • Delete records
  • Update records
  • Insert records
  • Detail record update/insert, delete link detail records [ ] Filtering and searching on has_many and indirect records for detailed record
  • Undo update/delete records (upon deletion/modification, user have a grace period to undo the changes)
  • Search and filter data
  • Drag/Rearrange and resize columns
  • Multi column sorting
  • Smart delete cascade messages
  • Error Handling/Error messages display
  • Advanced filtering, where user can type in the logic for filtering
  • Display of images and file attachments
  • Interactive/dynamic record count indicator for toolbar buttons
  • Loading indicators
  • Page transition animation
  • Search/filter on tables
  • Table/Columns filtering based on privilege system.
    • Display only tables that the user has privilege
    • Display only columns that the user has privilege
    • An interface for superusers to set user privileges for each tables
  • Row level security
    • When the server is configured to require user login, the user will be forced to login
  • Plugin and module system
  • Custom validation on field
  • Custom buttons for application specific functionality

Notes:

[1]: You can use sakila database dump as demo database https://github.com/ivanceras/sakila

Patreon:

Please support me on patreon, so I can dedicate more time to the development of this project

Contact me:

ivanceras [a t] gmail.com

Contributors

This project exists thanks to all the people who contribute.

Backers

Please be a backer of this project! ๐Ÿ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

diwata's People

Contributors

ivanceras avatar monkeywithacupcake avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diwata's Issues

Spreadsheet UI mode

I found your comment here on Reddit and I think it's awesome that you want to make Diwata more like Airtable seeing as people love the data entry UI for it and often use it as the backend for apps e.g. CRM systems.

This could be done via a UI toggle mode which allows more spreadsheet-like data entry, or just make adjustments to the existing UI.

Some differences would be:

  • Creating field types: single line text, long text, single select etc
  • Make the sidebar for tables collapsible
  • Swapping from single field/column search to whole table search

Great to see the improvements you've already made towards better UI, looking forward to more to come :)

Could not connect to database (no SSL connection possible?)

Trying this out on a hosted database I got the following:

connection Error: DbError(PlatformError(PostgresError(GenericError("From conversion", Error(Db(DbError { severity: "FATAL", parsed_severity: None, code: SqlState("28000"), message: "no pg_hba.conf entry for host \"......\", user \"......\", database \"......\", SSL off", detail: None, hint: None, position: None, where_: None, schema: None, table: None, column: None, datatype: None, constraint: None, file: Some("auth.c"), line: Some(470), routine: Some("ClientAuthentication") }))))))

I suspect (?) the problem may be that SSL is required by the db host, but is turned off by rustorm over here: https://github.com/ivanceras/rustorm/blob/8da5be8dd143591f6ae09d1469fa4a54ba496d40/src/pg/mod.rs#L34

EDIT: note that the hosting is on heroku https://devcenter.heroku.com/articles/connecting-to-heroku-postgres-databases-from-outside-of-heroku#ssl

Support Arrays

I was trying to check out this project using my local db, but I get a panic with not convered: ArrayType(Int) in rustorm-0.10.5/src/pg/column_info.rs:203:30.

Looking for a co-founder

I'm looking for a co-founder who can do marketing, and basic of building a website such as a landing page. This project is about to reach maturity and a commercial version will be released.

Demo not working

I tried to click on both demo link on the readme page and none of them works.

Debounce search

I just quickly tried out a demo and found search to be very laggy. I guess that is because there is no debouncing - every keystroke triggers a query. It might speed up things to add a one second wait time if there are more keystrokes and then trigger the query.

I have not looked at the code but probably it would be a good idea to cancel queries if they have become obsolete (one more key added)

Other then that I found it very intersting to see and will have an eye on this project. Cheers!

problem with git submodule init

Hi!
I try to install diwata to my server:
when run command "git submodule update --init --recursive" i see error:
git submodule update --init --recursive fatal: No url found for submodule path 'crates/sakila' in .gitmodules

Can you fix this problem?

error[E0554]: `#![feature]`

got error
error[E0554]: #![feature] may not be used on the stable release channel
---~/.cargo/registry/src/github.com-1ecc6299db9ec823/sauron_vdom-0.20.0/src/lib.rs:3:1
|
3 | #![feature(arbitrary_self_types)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
--> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/sauron_vdom-0.7.1/src/lib.rs:3:1
|
3 | #![feature(arbitrary_self_types)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to previous error

rustc version1.40.0 stable
following
git clone https://github.com/ivanceras/diwata
cd diwata
git submodule update --init --recursive
./run_sqlite_sakila.sh

Loading of window perception time is too long

Loading of a window takes a long time, since the init function also fetches the records to be displayed in the window as well.
To overcome this, the window has to be initialize and displayed first and then the loading of the records will have to kick in afterwards.

Compile error on Win 10 64-bit machine

I am trying to do a compile on Windows 64-bit machine and run into this error. I have OpenSSL installed and set the environment as per here - https://facility9.com/2016/03/installing-rust-on-windows/

  • DEP_OPENSSL_INCLUDE=C:\OpenSSL-Win64\include
  • OPENSSL_INCLUDE_DIR=C:\OpenSSL-Win64\include
  • OPENSSL_LIB_DIR=C:\OpenSSL-Win64\lib\VC
  • OPENSSL_LIBS=ssleay32MT:libeay32MT
error: failed to run custom build command for `openssl-sys v0.9.33`
process didn't exit successfully: `/tmp/cargo-install7r9fIC/release/build/openssl-sys-40df22b71997e8b6/build-script-main` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
cargo:rerun-if-env-changed=OPENSSL_DIR
run pkg_config fail: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`: No such file or directory (os error 2)"

--- stderr
thread 'main' panicked at '


Could not find directory of OpenSSL installation, and this `-sys` crate cannot
proceed without this knowledge. If OpenSSL is installed and this crate had
trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
compilation process.

Make sure you also have the development packages of openssl installed.
For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.


If you're in a situation where you think the directory *should* be found
automatically, please open a bug at https://github.com/sfackler/rust-openssl
and include information about your system as well as this message.

    $HOST = x86_64-unknown-linux-gnu
    $TARGET = x86_64-unknown-linux-gnu
    openssl-sys = 0.9.33


It looks like you're compiling on Linux and also targeting Linux. Currently this
requires the `pkg-config` utility to find OpenSSL but unfortunately `pkg-config`
could not be found. If you have OpenSSL installed you can likely fix this by
installing `pkg-config`.

', /home/jbenedict/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.33/build/main.rs:232:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `diwata_cli v0.1.5`, intermediate artifacts can be found at `/tmp/cargo-install7r9fIC`

Caused by:
  build failed

Failed to build openssl v0.9.24

I think I've hit this issue sfackler/rust-openssl#987.
This command from the README

cargo install diwata_cli

results in that error:

error: failed to run custom build command for `openssl v0.9.24`
process didn't exit successfully: `/tmp/cargo-installt1jW4Q/release/build/openssl-8abd590564d2b4a3/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'Unable to detect OpenSSL version', /home/smueller/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.9.24/build.rs:16:14
note: Run with `RUST_BACKTRACE=1` for a backtrace
โžœ  diwata git:(master) โœ— rustc -vV                                                                                                                                                     16:51:28
rustc 1.32.0-nightly (14997d56a 2018-12-05)
binary: rustc
commit-hash: 14997d56a550f4aa99fe737593cd2758227afc56
commit-date: 2018-12-05
host: x86_64-unknown-linux-gnu
release: 1.32.0-nightly
LLVM version: 8.0
โžœ  ~ openssl version                                                                                                                                                                   15:39:57
OpenSSL 1.1.1a  20 Nov 2018
โžœ  ~ lsb_release -a                                                                                                                                                                    15:40:02
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux buster/sid
Release:        unstable
Codename:       sid

Compile with stable release of rust

Hi, I was trying to create a diwata package for NixOS (and other platforms where the nix package manager is available).

However, in order to get it to build I've had to compile with nightly rustc, which would make it tough to get it accepted into the nixpkgs collection.

Running cargo build --release
   Compiling serde v1.0.27
   Compiling rustc-serialize v0.3.24
   Compiling gcc v0.3.54
   Compiling byteorder v1.2.1
   Compiling bitflags v1.0.1
   Compiling lazy_static v0.2.11
   Compiling strsim v0.7.0
   Compiling pear v0.0.12
   Compiling ordermap v0.2.13
   Compiling num-traits v0.2.1
   Compiling scopeguard v0.3.3
   Compiling matches v0.1.6
   Compiling unicode-normalization v0.1.5
   Compiling ansi_term v0.11.0
   Compiling nodrop v0.1.12
   Compiling byte-tools v0.2.0
   Compiling state v0.3.3
error[E0554]: #![feature] may not be used on the stable release channel
 --> /tmp/nix-build-diwata-0.1.0.drv-0/diwata-0.1.0-vendor/state/src/lib.rs:1:1
  |
1 | #![feature(const_fn)]
  | ^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
 --> /tmp/nix-build-diwata-0.1.0.drv-0/diwata-0.1.0-vendor/state/src/lib.rs:2:1
  |
2 | #![feature(const_unsafe_cell_new)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
 --> /tmp/nix-build-diwata-0.1.0.drv-0/diwata-0.1.0-vendor/state/src/lib.rs:3:1
  |
3 | #![feature(const_atomic_usize_new)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
 --> /tmp/nix-build-diwata-0.1.0.drv-0/diwata-0.1.0-vendor/state/src/lib.rs:4:1
  |
4 | #![feature(const_atomic_bool_new)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 4 previous errors

error: Could not compile `state`.
warning: build failed, waiting for other jobs to finish...
error: build failed

I think I may have had similar problems with other dependencies. Is there any chance of a fix?

Build breaks due to missing rustorm/dao/Cargo.toml

Following the "Install dependencies" step in README.md, during the "Compile and run" steps,

running e.g. cargo run -p diwata -- --help gives me the error

error: failed to read `/tmp/diwata/rustorm/dao/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

See rust-lang/rust#40284 and rust-lang/rust#40297

A simple solution (that at least make the program run) is to add git submodule update --init as a step before the cargo run... line, but I'm not sure if that's really what you want.


I'm using

  • Ubuntu 17.10
  • Git version 2.15.1
  • rustc 1.26.0-nightly (2789b067d 2018-03-06)

Elm 0.19

one of the dependencies is outdated and breaks during the install.

npm ERR! errno 1
npm ERR! [email protected] install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-09-08T05_04_13_032Z-debug.log

You can manually download the new update using:
wget "https://github.com/elm/compiler/releases/download/0.19.0/binaries-for-linux.tar.gz"

Panics when database has xml data type

I get this error when trying to connect to my postgres database

thread 'main' panicked at 'not yet handled: xml', /home/jbenedict/.cargo/registry/src/github.com-1ecc6299db9ec823/rustorm-0.10.7/src/pg/column_info.rs:320:26
note: Run with `RUST_BACKTRACE=1` for a backtrace.

This is what appears in the browser when I open http://localhost:8000
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.