2020-01-29 19:58:42 +00:00
[![styled with prettier ](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg )](https://github.com/prettier/prettier)
2020-02-01 17:00:44 +00:00
[![Donate ](https://img.shields.io/badge/donate-paypal-blue.svg )](https://paypal.me/JanProchazkaCz/30eur)
2020-01-29 19:58:42 +00:00
2020-01-21 06:58:19 +00:00
# DbGate - database administration tool
2019-12-24 16:48:25 +00:00
2020-04-13 19:23:24 +00:00
DbGate is fast and efficient database administration tool. It uses JavaScript and TypeScript.
2019-12-24 16:48:25 +00:00
2020-04-13 18:53:44 +00:00
## Currently implemented features
* Browsing objects - tables, views, procedures, functions
* Support for Microsoft SQL Server, Postgre SQL, MySQL
* Table data browsing - filtering, sorting, adding related columns using foreign keys
* Table data editing, with SQL change script preview
* SQL editor, execute SQL script
2020-04-13 19:04:24 +00:00
* Runs as application for Windows and Linux. Or in Docker container on server and in web Browser on client. (in future possibly on Mac - colaborators needed)
2020-04-13 18:53:44 +00:00
![Screenshot ](https://raw.githubusercontent.com/dbshell/dbgate/master/screenshot.png )
2019-12-24 16:48:25 +00:00
2020-01-21 06:58:19 +00:00
## Design goals
2020-04-13 18:53:44 +00:00
* Application simplicity - DbGate takes the best and only the best from old [DbGate ](http://www.jenasoft.com/dbgate ), [DatAdmin ](http://www.jenasoft.com/datadmin ) and [DbMouse ](http://www.jenasoft.com/dbmouse ) . First will be implemented the most used features from this software.
2020-01-21 06:58:19 +00:00
* Minimal dependencies - so that the software can be developed in future without problems with obsolete libraries
* Frontend - React, styled-components, socket.io
* Backend - NodeJs, ExpressJs, socket.io, database connection drivers
2020-03-13 21:42:09 +00:00
* JavaScript + TypeScript
2020-04-13 19:04:24 +00:00
* App - electron
* There is plan to incorporate SQLite to support work with local datasets
2020-01-21 06:59:44 +00:00
* Platform independed - will run as web application in single docker container on server, or as application using Electron platform on Linux, Windows and Mac
2019-12-24 16:48:25 +00:00
2020-04-13 18:53:44 +00:00
## How Can I Contribute?
You're welcome to contribute to this project! Especially with these topics:
* Mac support. App is build using electron, without native modules, so it should be very easy to build app for Mac
* Styles, graphics
* Better MySQL, Postgre SQL support
* Github actions for publishing releases
Any help is appreciated!
Feel free to report issues and open merge requests.
2020-01-21 06:58:19 +00:00
## How to run development environment
2019-12-24 16:48:25 +00:00
2020-01-21 06:58:19 +00:00
```sh
yarn
yarn start
```
2019-12-24 16:48:25 +00:00
2020-03-13 21:42:09 +00:00
If you want to make modifications in typescript packages, run TypeScript compiler in watch mode in seconds terminal:
2020-01-21 06:58:19 +00:00
```sh
2020-03-13 21:42:09 +00:00
yarn lib
2020-01-21 06:58:19 +00:00
```
2019-12-24 16:48:25 +00:00
2020-01-21 06:58:19 +00:00
Open http://localhost:5000 in your browser
2020-03-13 21:42:09 +00:00
2020-04-13 18:53:44 +00:00
You could run electron app, using this server:
```sh
cd app
yarn
yarn start
```
## How to run built electron app locally
2020-04-13 18:55:19 +00:00
This mode is very similar to production run of electron app. Electron app forks process with API on dynamically allocated port, works with compiled javascript files.
2020-04-13 18:53:44 +00:00
```sh
cd app
yarn
```
```sh
yarn
yarn build:app:local
yarn start:app:local
```
2020-03-13 21:42:09 +00:00
## Packages
* api - backend, Javascript, ExpressJS
* datalib - TypeScript library for utility classes
* electron - application (JavaScript)
* engines - drivers for database engine (mssql, mysql, postgres), analysing database structure, creating specific queries (JavaScript)
* filterparser - TypeScript library for parsing data filter expressions using parsimmon
* sqltree - JSON representation of SQL query, functions converting to SQL (TypeScript)
* types - common TypeScript definitions
* web - frontend in React (JavaScript)