Skip to content

Commit ac3671e

Browse files
authored
Merge pull request #43 from oslabs-beta/prod-dev
prod to main (has production links)
2 parents 83b3aa2 + cff635e commit ac3671e

Some content is hidden

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

66 files changed

+26049
-22442
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+
}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ temp/
99
ca.crt/
1010
ca.key/
1111
coverage/
12-
certs/
12+
certs/
13+
.DS_Store

README.md

Lines changed: 85 additions & 23 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

@@ -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

index.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,9 @@
2727
</head>
2828
<body
2929
id="body"
30-
class="dark bg-[#fffefd] transition-colors duration-500 dark:bg-gray-900"
30+
class="bg-background text-black transition-colors duration-500 dark:bg-primary dark:text-white"
3131
>
32-
<div
33-
id="root"
34-
class="bg-inherit transition-colors duration-500 dark:bg-gray-900"
35-
></div>
32+
<div id="root"></div>
3633
<script type="module" src="./src/index.tsx"></script>
3734
</body>
3835
</html>

jest.config.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default {
2323
// collectCoverageFrom: undefined,
2424

2525
// The directory where Jest should output its coverage files
26-
coverageDirectory: "coverage",
26+
coverageDirectory: 'coverage',
2727

2828
// An array of regexp pattern strings used to skip coverage collection
2929
// coveragePathIgnorePatterns: [
@@ -89,8 +89,9 @@ export default {
8989

9090
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
9191
moduleNameMapper: {
92-
"\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/mocks/fileMock.js",
93-
"\\.(css|less)$": "<rootDir>/mocks/fileMock.js"
92+
'\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
93+
'<rootDir>/mocks/fileMock.js',
94+
'\\.(css|less)$': '<rootDir>/mocks/fileMock.js',
9495
},
9596

9697
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
@@ -138,7 +139,8 @@ export default {
138139
// setupFiles: [],
139140

140141
// A list of paths to modules that run some code to configure or set up the testing framework before each test
141-
// setupFilesAfterEnv: [],
142+
//
143+
setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'],
142144

143145
// The number of seconds after which a test is considered as slow and reported as such in the results.
144146
// slowTestThreshold: 5,
@@ -147,7 +149,7 @@ export default {
147149
// snapshotSerializers: [],
148150

149151
// The test environment that will be used for testing
150-
testEnvironment: "jsdom",
152+
testEnvironment: 'jsdom',
151153

152154
// Options that will be passed to the testEnvironment
153155
// testEnvironmentOptions: {},

0 commit comments

Comments
 (0)