You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add docker discovery - improve connection loading - add direct connection module
* Docker
* Tests for docker
* Make docker detection more robust
* Robust indexing, fix search, add search to results,
* UX bug fixes and mariadb warning
* Oracle role - Omarchy - Fast data table - Result search - SSH optimizations - Connectionstring CLI support
* Add query favorite feature and fix race conditions
* Hide column header on Fast data table when no results
* Update readme
---------
Co-authored-by: Peter Adams <18162810+Maxteabag@users.noreply.github.com>
-**Connection manager UI** - Save connections, switch between databases without CLI args
20
22
-**Just run `sqlit`** - No CLI config needed, pick a connection and go
21
23
-**Multi-database out of the box** - SQL Server, PostgreSQL, MySQL, SQLite, MariaDB, Oracle, DuckDB, CockroachDB, Supabase, Turso - no adapters to install
24
+
- Connect directly to database docker container
22
25
-**SSH tunnels built-in** - Connect to remote databases securely with password or key auth
23
26
-**Vim-style editing** - Modal editing for terminal purists
24
27
-**Query history** - Automatically saves queries per connection, searchable and sortable
28
+
- Filter results
25
29
- Context-aware help (no need to memorize keybindings)
26
30
- Browse databases, tables, views, and stored procedures
31
+
- Indexes, Triggers and Sequences
27
32
- SQL autocomplete for tables, columns, and procedures
@@ -208,6 +221,84 @@ SSH tunnel functionality requires additional dependencies. Install with the `ssh
208
221
209
222
If you try to create an SSH connection without these dependencies, sqlit will detect this and show you the exact command to install them for your environment.
210
223
224
+
### Vision
225
+
226
+
The core purpose of this application is to read Read&Write to a SQL database.
227
+
The core elements to achieve this purpose is: CEQR:
228
+
229
+
- C: Connecting
230
+
- E: Exploring
231
+
- Q: Querying
232
+
- R: Viewing results
233
+
234
+
Connecting: Connecting to a server
235
+
Exploring: Understanding the structure and content of the databases
236
+
Querying: Executing SQL queries
237
+
D: Viewing the results of SQL queries
238
+
239
+
Additionally, we have requirements 'EAFF':
240
+
241
+
- E: Easy
242
+
- A: Aesthetically pleasing
243
+
- F: Fun
244
+
- F: Fast
245
+
246
+
If an idea or feature does *not* achieve any of the 'CBQV' elements adhering to all of the 'EAFF' requirements. It does not belong to sqlit.
247
+
248
+
**[E]asy:**
249
+
Sqlit should not require any external documentation at all. It must prioritize intuitiveness above all.
250
+
251
+
**[A]esthetically pleasing:**
252
+
Sqlit should not render one unnecessary pixel. It should prioritize beauty above anything. Minimalism over bloat.
253
+
254
+
**Fun:**
255
+
Sqlit aims make fulfilling its core purpose be an enjoyable experience for the user, even a source of pleasure.
256
+
257
+
**Fast:**
258
+
Sqlit aims to fulfill its core purpose for the user, with intention to giving the user the results they want with as few actions as possible.
259
+
260
+
Essentially, sqlit aims to do CRUD on SQL really well.
261
+
262
+
This implies this tool is more suited for developer's daily use than an database administrator.
263
+
Every feature in sqlit should have a target audience in which they will use it every time they use sqlit.
264
+
If nobody is going to a feature every day. It does not belong to sqlit.
265
+
E.g.
266
+
267
+
1) advanced query performance debugging -> rarely used -> does not belong in sqlit
268
+
2) edit cell key-binding -> a audience who will use this every day -> belongs to sqlit
269
+
270
+
**On complexity:**
271
+
Minimalism: sqlit aims to abstract away as much complexity as possible from the user, while giving them enough control to achieve CBQV. sqlit should never do anything under the hood that the user might have interest in understanding. Universal state problems deem for magical fixes. Conditional state problems, explicit user awareness. User should never ask "wait, how did it know?" "why is this here?" "why did it work then, but not now?"
272
+
273
+
Voluntary advanced usage: Anything beyond most essentials to achieve CEQR should be voluntary to be exposed to. Minimal cogntive overhead. Always assume by default our user just wants to perform CRUD with SQL.
274
+
275
+
The idea is the user is exposed to an interface that's minimalistic and easy, but if they want to become 'power users' they may dig into command menu or see help and memorize.
276
+
277
+
Advances features should not be advertised on the main tool bar or anywhere else where the user has no say in whether it's rendered, as they take up space and distract from the most essential features for crud.
278
+
279
+
One state: There should be no settings or preferences with important exception of interface (aesthetics, keyboard bindings). No settings to enable or disable features for conditional behaviour. Do not include a feature that a user finds annoying. Settings to disable a feature is a symptom of this. Anything beyond essential must be sought after if needed, not disabled if unwanted.
280
+
281
+
**Keybindings philosophy:**
282
+
To make sqlit as fast' as possible, sqlit has a large focus on keybindings.
283
+
To make sqlit as 'easy' as possible, all necessary keybindings to do 'CEQR' well, must be visible at all times.
284
+
To make sqlit as 'aesthetically pleasing' any keybinding not strictly necessary to perform 'CEQR' in a 'easy' and 'fast' way will be hidden behind help <?> or command menu <space>
285
+
Keybindings will favour 'vim' traditions as the core audience is developers who enjoy working in terminals.
286
+
We shy away from ^+ commands and will only use them where it is not natural to have a "insert/normal" mode and where input is crucial. (Typical is pop up modals)
287
+
288
+
**Ideal:**
289
+
It should be easy to use for someone who just started using sqlit.
290
+
sqlit should provide fun and a feeling of mastery and satisfaction for those who want to achieve it, by becoming a sql-manipulating wizard with creative keybinding combos.
291
+
292
+
**Designing keybindings decision hierarchy:**
293
+
294
+
1. Intuitive to learn
295
+
2. Harmony (we should think about which keybindings are used in sequence, in typical to flow and maximize user mastery satisfaction and opportunity to combine them fast)
0 commit comments