Skip to content

Commit 1d7412b

Browse files
authored
Merge pull request #131 from oslabs-beta/main
dbSpy 8.0 to OSLabs
2 parents 2e92aab + cf36e2a commit 1d7412b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+26262
-22491
lines changed

.DS_Store

2 KB
Binary file not shown.

.ebextensions/certs.config

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
commands:
2+
01_create_certs_dir:
3+
command: "mkdir -p /usr/src/app/server/certs"
4+
5+
02_download_ca:
6+
command: "aws s3 cp s3://dbspy-secure-certs/ca.pem /usr/src/app/server/certs/ca.pem"
7+
8+
files:
9+
"/etc/profile.d/awscli.sh":
10+
content: |
11+
export PATH=$PATH:/usr/local/bin

.ebextensions/react-router.config

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
files:
2+
"/etc/nginx/conf.d/react-router.conf":
3+
mode: "000644"
4+
owner: root
5+
group: root
6+
content: |
7+
location / {
8+
try_files $uri $uri/ /index.html;
9+
}

.github/workflows/node.js.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515
strategy:
1616
matrix:
17-
node-version: [16.x, 18.x]
17+
node-version: [20.x]
1818
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
1919

2020
steps:
@@ -26,15 +26,17 @@ jobs:
2626
cache: 'npm'
2727
- run: npm ci
2828
- run: npm run build --if-present
29-
- name: Start server
29+
- name: Start server (only if secrets are available)
30+
if: ${{ env.USER_DB_USER != '' }}
3031
env:
3132
USER_DB_USER: ${{secrets.USER_DB_USER}}
3233
USER_DB_PW: ${{secrets.USER_DB_PW}}
3334
USER_DB_URL: ${{secrets.USER_DB_URL}}
3435
SSL_KEY: ${{secrets.SSL_KEY}}
3536
SSL_CERT: ${{secrets.SSL_CERT}}
3637
run: npm run start:test
37-
- name: Run test suites
38+
- name: Run test suites (only if secrets are available)
39+
if: ${{ env.MYSQL_TEST_URL != '' || env.PG_TEST_URL != '' }}
3840
env:
3941
MYSQL_TEST_URL: ${{secrets.MYSQL_TEST_URL}}
4042
MYSQL_TEST_USERNAME: ${{secrets.MYSQL_TEST_USERNAME}}

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ temp/
88
.cert/
99
ca.crt/
1010
ca.key/
11-
coverage/
11+
coverage/
12+
certs/
13+
.DS_Store

README.md

Lines changed: 86 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div align="center">
22

33
<a href="https://makeapullrequest.com">![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)</a>
4-
<a href="https://img.shields.io/badge/version-1.0.1-blue">![Version](https://img.shields.io/badge/version-6.0.0-blue)</a>
4+
<a href="https://img.shields.io/badge/version-1.0.1-blue">![Version](https://img.shields.io/badge/version-8.0.0-blue)</a>
55
![GitHub Stars](https://img.shields.io/github/stars/oslabs-beta/JAKT?color=%23fb7182)
66
![MIT License](https://img.shields.io/badge/license-MIT-yellow)
77

@@ -16,30 +16,81 @@
1616
<h1 align="center">Visualize, modify, and build your database with dbSpy!</h1>
1717
<p align="center">An open-source data modeling tool to facilitate relational database development</p>
1818

19-
### New Features with Version 7.0
19+
<p align="center">
20+
<img src="https://img.shields.io/badge/React-61DAFB?style=flat-square&logo=react&logoColor=black" />
21+
<img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" />
22+
<img src="https://img.shields.io/badge/Express.js-000000?style=flat-square&logo=express&logoColor=white" />
23+
<img src="https://img.shields.io/badge/React--Router-EA4335?style=flat-square&logo=reactrouter&logoColor=white" />
24+
<img src="https://img.shields.io/badge/React--Flow-00BFFF?style=flat-square&logo=react&logoColor=white" />
25+
<img src="https://img.shields.io/badge/Vite-BB99FF?style=flat-square&logo=vite&logoColor=white" />
26+
<img src="https://img.shields.io/badge/TailwindCSS-38B2AC?style=flat-square&logo=tailwindcss&logoColor=white" />
27+
<img src="https://img.shields.io/badge/Zustand-FACC15?style=flat-square&logo=react&logoColor=black" />
28+
<img src="https://img.shields.io/badge/MySQL-00758F?style=flat-square&logo=mysql&logoColor=white" />
29+
<img src="https://img.shields.io/badge/PostgreSQL-336791?style=flat-square&logo=postgresql&logoColor=white" />
30+
<img src="https://img.shields.io/badge/Axios-5A29E4?style=flat-square&logo=axios&logoColor=white" />
31+
<img src="https://img.shields.io/badge/TypeORM-FF5277?style=flat-square&logo=typescript&logoColor=white" />
32+
<img src="https://img.shields.io/badge/OAuth2-3B82F6?style=flat-square&logo=oauth&logoColor=white" />
33+
<img src="https://img.shields.io/badge/Jest-C21325?style=flat-square&logo=jest&logoColor=white" />
34+
<img src="https://img.shields.io/badge/React--Testing--Library-E33332?style=flat-square&logo=testing-library&logoColor=white" />
35+
<img src="https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white" />
36+
<img src="https://img.shields.io/badge/AWS-FF9900?style=flat-square&logo=amazonaws&logoColor=black" />
37+
</p>
38+
39+
### 🚀 dbSpy v8.0 ✨ New Features
40+
41+
### 🔍 Test New Query Page - a modern querying interface
42+
43+
- Run SQL queries against PostgreSQL or MySQL DBs
44+
- Live results + metadata: execution time, query name, timestamp
45+
- Zustand-powered state management
46+
- Input validation and error handling
47+
- Component-level Jest + ReactTestLibrary tests
48+
49+
### 💾 View Saved Queries Page
50+
51+
- Access previously saved queries per user
52+
- Sortable, styled tables with TypeScript typing
53+
- Track query performance across data models
54+
55+
### 🎨 UI / UX Enhancements
56+
57+
- TailwindCSS redesign: colors, layout, interactions
58+
- Responsive and fully supported dark/light mode
59+
- Logo animation integrated in navbar
60+
- Sidebar and tab layout fixes
61+
62+
### 🛠 Functional Fixes
63+
64+
- Resolved layout shift bugs
65+
- Optimized backend response handling
66+
- OAuth (GitHub + local login)
67+
68+
### 📈 Opportunities for Continued Development
69+
70+
- Extend Test Query feature to additional DB types (e.g. Oracle)
71+
- Persist database sessions across routes
72+
- Integrate LLMs to suggest efficient queries and schema improvements
73+
- Add OAuth support for Microsoft accounts
74+
- Add support for NoSQL (MongoDB) and graph databases
75+
- Expand UI testing coverage
2076

21-
-UI is now full widescreen with a drop down menu to allow for more workspace.
22-
-The Save, Load, and Delete features now take filename, and can save schema, and data.
23-
-Deleting certain elements in tables now locates, and also properly delete depedent elements on other tables
24-
-Implemented an algorithm to highlight all edges connected to currently selected table
25-
-Fixed several Issues where certain Elements would not be deleted from a connected database
26-
-Fixed several Issues with show Data terminating react flow
27-
-Fixed several Issues with Edges being rendered too many times, and not deleted
77+
---
2878

29-
### Use Cases
79+
### dbSpy v7.0 updates
3080

31-
- Connecting to an existing remote PostgreSQL, MySQL, MicroSoftSQL, OracleSQL databases
32-
- Renders an ER diagram for SCHEMA and DATA of the existing database and provides an interface for users to both modify existing tables and create new tables. A log of changes is stored, and at any point, the user can generate a query containing the changes, such that they are reflected in the existing database.
33-
- Uploading your database's SQL file
34-
- Renders an ER diagram for the provided SQL file (db dump) and provides an interface for a user to both modify existing tables and create new tables. Changes are converted into the corresponding queries, which the user can view and execute on their own database outside of dbSpy.
35-
- Seamlessly visualize relational databases (both SCHEMA and DATA)
36-
- After connecting database tables with one another, users are able to render the relationship connections of individual tables by clicking on the tables.
37-
- Creating a database + ER diagram from scratch
38-
- Provides a canvas for users to create a database by using ER diagrams, thus creating a blueprint for engineering database structures.
81+
- Full widescreen UI with a dropdown menu for more workspace
82+
- Enhanced Save, Load, and Delete features that support filenames for saving schema and data
83+
- Proper deletion of dependent elements across tables
84+
- Algorithm to highlight edges connected to the selected table
85+
- Fixed rendering and deletion issues with elements
86+
- Support for connecting to remote databases (PostgreSQL, MySQL, Microsoft SQL, Oracle SQL)
87+
- Ability to upload SQL files and render ER diagrams for the provided SQL dump
88+
- Interface for modifying tables and creating new ones, with changes reflected in the database via generated queries
89+
- Canvas to create databases and ER diagrams from scratch.
3990

4091
---
4192

42-
### Key Features
93+
### 🔑 Key Features
4394

4495
1. **Database Uploads:** Connect to remote SQL database or upload local SQL files
4596

@@ -63,9 +114,15 @@
63114

64115
11. **Dark Mode:** Visual settings to provide a more comfortable viewing experience in low-light environements
65116

66-
## <img src="images/dbSpy7_canvas.png">
117+
12. **Live Querying and Save Queries** Test SQL queries and also save them to track and analyze query performance across data models (<span style="color:green"><strong>dbSpy V8.0</strong></span>)
118+
119+
## <img src="images/dbspy8homepage.png">
120+
121+
## <img src="images/dpspy8testquery.png">
122+
123+
## <img src="images/dpspy8savequery.png">
67124

68-
### Getting started
125+
### 🛠 Getting started
69126

70127
You will need your own MySQL database for backend functions.
71128

@@ -129,7 +186,7 @@ $ npm run dev
129186

130187
To connect with the SQL database, we must create and configure SSL certificates.
131188

132-
### Mac
189+
### macOS
133190

134191
1. Install mkcert; you can learn more about mkcert [here](https://github.com/FiloSottile/mkcert)
135192

@@ -140,7 +197,7 @@ npm install -g mkcert
140197
2. Run the following script
141198

142199
```bash
143-
npm run cert
200+
npm run cert:mac
144201
```
145202

146203
### Linux
@@ -205,7 +262,7 @@ npm run cert:linux
205262
2. Click on the confirm icon to delete the column.
206263
3. Click on the cancel icon to cancel the deletion.
207264

208-
## <img src="images/dbspy7.gif">
265+
## <img src="images/dbspyv8.gif">
209266

210267
### Adding a foreign key reference to a column
211268

@@ -248,6 +305,11 @@ npm run cert:linux
248305

249306
### Credits/Contributors
250307

308+
- Yihe Liu • [LinkedIn](https://www.linkedin.com/in/yiheliu)[Github](https://github.com/SparrowGecko)
309+
- Emma Vargas • [LinkedIn](https://www.linkedin.com/in/emmavargas/)[Github](https://github.com/emma-vargas)
310+
- Vicky Yue • [LinkedIn](https://www.linkedin.com/in/vickyue/)[Github](https://github.com/vyue013)
311+
- Roshumba Llewellyn • [LinkedIn](https://www.linkedin.com/in/roshumballewellyn/)[Github](https://github.com/roshumba)
312+
- Revathy Venkataraman • [LinkedIn](https://www.linkedin.com/in/revavenk/)[Github](https://github.com/reva2024)
251313
- David Jones • [LinkedIn](http://www.linkedin.com/in/davidjonesswe/)[Github](https://github.com/david-jones-git)
252314
- John Ruiz • [LinkedIn](https://www.linkedin.com/in/john-ruiz-profile/)[Github](https://github.com/johnruiz17)
253315
- Minh Chang • [LinkedIn](https://www.linkedin.com/in/minh-chang/)[Github](https://github.com/miha-cha)

images/dbspy8homepage.png

180 KB
Loading

images/dbspyv8.gif

14.8 MB
Loading

images/dpspy8savequery.png

163 KB
Loading

images/dpspy8testquery.png

97.6 KB
Loading

0 commit comments

Comments
 (0)