@mufazmi/rediscover 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
<img src="public/rediscover_banner.png" alt="Rediscover Banner" width="100%">
|
|
4
4
|
|
|
5
|
-
<br/>
|
|
6
5
|
<br/>
|
|
7
6
|
|
|
8
7
|
# Rediscover
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
### A Self-Hosted Redis Management Tool with a Modern Web Interface
|
|
10
|
+
|
|
11
|
+
<br/>
|
|
11
12
|
|
|
12
13
|
[](https://opensource.org/licenses/MIT)
|
|
13
14
|
[](https://nodejs.org)
|
|
14
15
|
[](https://hub.docker.com/r/mufazmi/rediscover)
|
|
15
16
|
[](https://redis.io)
|
|
16
|
-
[](https://www.npmjs.com/package/@mufazmi/rediscover)
|
|
17
18
|
|
|
18
19
|
<br/>
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
key management, and advanced operations — all from a clean, responsive web interface.
|
|
21
|
+
Rediscover is a production-ready, self-hosted Redis management platform built for developers and teams who need real-time visibility, intuitive key management, and multi-instance control — all from a clean, responsive web interface.
|
|
22
22
|
|
|
23
23
|
<br/>
|
|
24
24
|
|
|
25
|
-
[
|
|
25
|
+
[**Live Demo**](#-live-demo) · [**Quick Start**](#-quick-start) · [**Installation**](#-installation) · [**Configuration**](#️-configuration) · [**Troubleshooting**](#-troubleshooting)
|
|
26
26
|
|
|
27
27
|
<br/>
|
|
28
28
|
|
|
@@ -30,36 +30,56 @@ key management, and advanced operations — all from a clean, responsive web int
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
+
## 🌐 Live Demo
|
|
34
|
+
|
|
35
|
+
Experience Rediscover before installing — two live instances are available for you to explore:
|
|
36
|
+
|
|
37
|
+
| Instance | URL |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 🟢 Demo Server 1 | [rediscover.umairfarooqui.com](https://rediscover.umairfarooqui.com) |
|
|
40
|
+
| 🟢 Demo Server 2 | [rediscover1.umairfarooqui.com](https://rediscover1.umairfarooqui.com) |
|
|
41
|
+
|
|
42
|
+
**Demo Credentials** *(same for both instances)*
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Username : admin
|
|
46
|
+
Password : admin@123
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
> These demo environments are shared and reset periodically. Please do not store sensitive data.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
33
53
|
## ✨ Features
|
|
34
54
|
|
|
35
|
-
|
|
|
36
|
-
|
|
37
|
-
| 📊
|
|
38
|
-
| 🗝️
|
|
39
|
-
| 🔐
|
|
40
|
-
| 🌐
|
|
41
|
-
| 📱
|
|
42
|
-
| ⚡
|
|
43
|
-
| 🎨
|
|
44
|
-
| 🔧
|
|
55
|
+
| Feature | Description |
|
|
56
|
+
|---|---|
|
|
57
|
+
| 📊 **Real-time Monitoring** | Live stats, memory usage, and performance metrics streamed via WebSocket |
|
|
58
|
+
| 🗝️ **Key Management** | Browse, search, create, edit, and delete keys across all Redis data types |
|
|
59
|
+
| 🔐 **Secure Authentication** | JWT-based auth with role-based access control |
|
|
60
|
+
| 🌐 **Multi-Connection** | Manage multiple Redis instances simultaneously from a single interface |
|
|
61
|
+
| 📱 **Responsive Design** | Fully functional on desktop, tablet, and mobile — built with Tailwind CSS + Radix UI |
|
|
62
|
+
| ⚡ **High Performance** | Optimized loading and caching for large-scale Redis deployments |
|
|
63
|
+
| 🎨 **Modern UI** | Clean, distraction-free interface with thoughtful UX |
|
|
64
|
+
| 🔧 **Flexible Configuration** | Configure via environment variables or directly through the built-in UI |
|
|
45
65
|
|
|
46
66
|
---
|
|
47
67
|
|
|
48
68
|
## ⚡ Quick Start
|
|
49
69
|
|
|
50
|
-
Get
|
|
70
|
+
Get up and running in under a minute:
|
|
51
71
|
|
|
52
|
-
**NPM**
|
|
72
|
+
**Via NPM**
|
|
53
73
|
```bash
|
|
54
74
|
npm install -g @mufazmi/rediscover && rediscover
|
|
55
75
|
```
|
|
56
76
|
|
|
57
|
-
**Docker**
|
|
77
|
+
**Via Docker**
|
|
58
78
|
```bash
|
|
59
79
|
docker run -d -p 3000:3000 -p 3001:3001 mufazmi/rediscover:latest
|
|
60
80
|
```
|
|
61
81
|
|
|
62
|
-
|
|
82
|
+
Open **http://localhost:3000** in your browser. ✅
|
|
63
83
|
|
|
64
84
|
---
|
|
65
85
|
|
|
@@ -70,8 +90,8 @@ Then open **http://localhost:3000** in your browser. ✅
|
|
|
70
90
|
<table>
|
|
71
91
|
<tr>
|
|
72
92
|
<th>Method</th>
|
|
73
|
-
<th>
|
|
74
|
-
<th>Version</th>
|
|
93
|
+
<th>Dependency</th>
|
|
94
|
+
<th>Minimum Version</th>
|
|
75
95
|
</tr>
|
|
76
96
|
<tr>
|
|
77
97
|
<td rowspan="2"><b>NPM</b></td>
|
|
@@ -84,7 +104,7 @@ Then open **http://localhost:3000** in your browser. ✅
|
|
|
84
104
|
</tr>
|
|
85
105
|
<tr>
|
|
86
106
|
<td rowspan="2"><b>Docker</b></td>
|
|
87
|
-
<td>Docker</td>
|
|
107
|
+
<td>Docker Engine</td>
|
|
88
108
|
<td>≥ 20.10.0</td>
|
|
89
109
|
</tr>
|
|
90
110
|
<tr>
|
|
@@ -104,28 +124,32 @@ Then open **http://localhost:3000** in your browser. ✅
|
|
|
104
124
|
|
|
105
125
|
---
|
|
106
126
|
|
|
107
|
-
###
|
|
127
|
+
### Option 1 — NPM *(Recommended)*
|
|
108
128
|
|
|
109
129
|
```bash
|
|
110
|
-
#
|
|
130
|
+
# Install globally
|
|
111
131
|
npm install -g @mufazmi/rediscover
|
|
112
132
|
|
|
113
|
-
#
|
|
133
|
+
# Verify installation
|
|
114
134
|
rediscover --version
|
|
115
135
|
|
|
116
|
-
#
|
|
136
|
+
# Launch the application
|
|
117
137
|
rediscover
|
|
118
138
|
```
|
|
119
139
|
|
|
120
|
-
|
|
140
|
+
Then visit **http://localhost:3000**.
|
|
121
141
|
|
|
122
|
-
> **
|
|
142
|
+
> **Tip:** If you encounter a permission error, run:
|
|
143
|
+
> ```bash
|
|
144
|
+
> npm config set prefix '~/.npm-global'
|
|
145
|
+
> ```
|
|
146
|
+
> Then add `~/.npm-global/bin` to your `PATH` and re-install.
|
|
123
147
|
|
|
124
148
|
---
|
|
125
149
|
|
|
126
|
-
###
|
|
150
|
+
### Option 2 — Docker
|
|
127
151
|
|
|
128
|
-
**Basic
|
|
152
|
+
**Basic usage:**
|
|
129
153
|
```bash
|
|
130
154
|
docker run -d \
|
|
131
155
|
--name rediscover \
|
|
@@ -134,7 +158,7 @@ docker run -d \
|
|
|
134
158
|
mufazmi/rediscover:latest
|
|
135
159
|
```
|
|
136
160
|
|
|
137
|
-
**With environment variables:**
|
|
161
|
+
**With custom environment variables:**
|
|
138
162
|
```bash
|
|
139
163
|
docker run -d \
|
|
140
164
|
--name rediscover \
|
|
@@ -146,11 +170,12 @@ docker run -d \
|
|
|
146
170
|
mufazmi/rediscover:latest
|
|
147
171
|
```
|
|
148
172
|
|
|
149
|
-
**Docker Compose** *(recommended for production)*:
|
|
173
|
+
**Docker Compose** *(recommended for production deployments)*:
|
|
150
174
|
|
|
151
175
|
```yaml
|
|
152
176
|
# docker-compose.yml
|
|
153
177
|
version: '3.8'
|
|
178
|
+
|
|
154
179
|
services:
|
|
155
180
|
rediscover:
|
|
156
181
|
image: mufazmi/rediscover:latest
|
|
@@ -175,47 +200,29 @@ docker-compose up -d
|
|
|
175
200
|
|
|
176
201
|
---
|
|
177
202
|
|
|
178
|
-
zmi/rediscover/releases):
|
|
179
|
-
|
|
180
|
-
| Platform | Binary |
|
|
181
|
-
|---|---|
|
|
182
|
-
| 🪟 Windows | `` |
|
|
183
|
-
| 🍎 macOS (Intel) | `` |
|
|
184
|
-
| 🍎 macOS (Apple Silicon) | `` |
|
|
185
|
-
| 🐧 Linux | `` |
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
# macOS / Linux — make executable and run
|
|
189
|
-
chmod +x
|
|
190
|
-
sudo mv /usr/local/bin/rediscover
|
|
191
|
-
rediscover
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
203
|
## ⚙️ Configuration
|
|
197
204
|
|
|
198
|
-
Create a `.env` file in your working directory:
|
|
205
|
+
Create a `.env` file in your working directory to customize Rediscover:
|
|
199
206
|
|
|
200
207
|
```env
|
|
201
|
-
# ── Server
|
|
208
|
+
# ── Server ─────────────────────────────────────────────────
|
|
202
209
|
PORT=3000
|
|
203
210
|
BACKEND_PORT=3001
|
|
204
211
|
NODE_ENV=production
|
|
205
212
|
HOST=0.0.0.0
|
|
206
213
|
|
|
207
|
-
# ── Security
|
|
208
|
-
JWT_SECRET=your-very-secure-secret-key
|
|
214
|
+
# ── Security ────────────────────────────────────────────────
|
|
215
|
+
JWT_SECRET=your-very-secure-secret-key # Required in production
|
|
209
216
|
JWT_EXPIRATION=24h
|
|
210
217
|
|
|
211
|
-
# ── Redis Connection
|
|
218
|
+
# ── Redis Connection ─────────────────────────────────────────
|
|
212
219
|
REDIS_HOST=localhost
|
|
213
220
|
REDIS_PORT=6379
|
|
214
221
|
REDIS_PASSWORD=your-redis-password
|
|
215
222
|
REDIS_TIMEOUT=5000
|
|
216
223
|
REDIS_TLS=false
|
|
217
224
|
|
|
218
|
-
# ── Application
|
|
225
|
+
# ── Application ──────────────────────────────────────────────
|
|
219
226
|
MAX_CONNECTIONS=10
|
|
220
227
|
SESSION_TIMEOUT=30
|
|
221
228
|
REFRESH_INTERVAL=5
|
|
@@ -228,20 +235,20 @@ DEBUG=false
|
|
|
228
235
|
|---|---|---|
|
|
229
236
|
| `PORT` | `3000` | Web UI server port |
|
|
230
237
|
| `BACKEND_PORT` | `3001` | Backend API server port |
|
|
231
|
-
| `NODE_ENV` | `development` | `production` or `development` |
|
|
232
|
-
| `HOST` | `localhost` | Bind address
|
|
233
|
-
| `JWT_SECRET` | — | **Required in production.** JWT
|
|
238
|
+
| `NODE_ENV` | `development` | Runtime environment: `production` or `development` |
|
|
239
|
+
| `HOST` | `localhost` | Bind address — use `0.0.0.0` to expose on all interfaces |
|
|
240
|
+
| `JWT_SECRET` | — | **Required in production.** Secret key used to sign JWT tokens |
|
|
234
241
|
| `JWT_EXPIRATION` | `24h` | Token lifetime (e.g. `1h`, `7d`, `24h`) |
|
|
235
|
-
| `REDIS_HOST` | `localhost` | Default Redis hostname or IP |
|
|
242
|
+
| `REDIS_HOST` | `localhost` | Default Redis hostname or IP address |
|
|
236
243
|
| `REDIS_PORT` | `6379` | Default Redis port |
|
|
237
|
-
| `REDIS_PASSWORD` | — | Redis AUTH password (if set) |
|
|
244
|
+
| `REDIS_PASSWORD` | — | Redis AUTH password (leave blank if not set) |
|
|
238
245
|
| `REDIS_TIMEOUT` | `5000` | Connection timeout in milliseconds |
|
|
239
|
-
| `MAX_CONNECTIONS` | `10` |
|
|
240
|
-
| `REFRESH_INTERVAL` | `5` | Dashboard refresh
|
|
241
|
-
| `SESSION_TIMEOUT` | `30` |
|
|
246
|
+
| `MAX_CONNECTIONS` | `10` | Maximum simultaneous Redis connections |
|
|
247
|
+
| `REFRESH_INTERVAL` | `5` | Dashboard auto-refresh interval in seconds |
|
|
248
|
+
| `SESSION_TIMEOUT` | `30` | Idle session timeout in minutes |
|
|
242
249
|
| `DEBUG` | `false` | Enable verbose debug logging |
|
|
243
250
|
|
|
244
|
-
> **
|
|
251
|
+
> **Note:** You can also add and manage Redis connections directly from the web UI by clicking **Add Connection** and entering your server details.
|
|
245
252
|
|
|
246
253
|
---
|
|
247
254
|
|
|
@@ -251,7 +258,7 @@ DEBUG=false
|
|
|
251
258
|
<summary><b>❌ "npm: command not found" or "node: command not found"</b></summary>
|
|
252
259
|
<br>
|
|
253
260
|
|
|
254
|
-
Node.js is not installed. Install it
|
|
261
|
+
Node.js is not installed on your system. Install it using one of the methods below:
|
|
255
262
|
|
|
256
263
|
```bash
|
|
257
264
|
# macOS
|
|
@@ -264,12 +271,12 @@ sudo apt install nodejs npm
|
|
|
264
271
|
sudo yum install nodejs npm
|
|
265
272
|
```
|
|
266
273
|
|
|
267
|
-
Or download
|
|
274
|
+
Or download the official installer at [nodejs.org](https://nodejs.org).
|
|
268
275
|
|
|
269
276
|
</details>
|
|
270
277
|
|
|
271
278
|
<details>
|
|
272
|
-
<summary><b>❌ "Permission denied" during npm install</b></summary>
|
|
279
|
+
<summary><b>❌ "Permission denied" during npm global install</b></summary>
|
|
273
280
|
<br>
|
|
274
281
|
|
|
275
282
|
```bash
|
|
@@ -283,15 +290,18 @@ npm install -g @mufazmi/rediscover
|
|
|
283
290
|
</details>
|
|
284
291
|
|
|
285
292
|
<details>
|
|
286
|
-
<summary><b>❌ Port 3000 already in use</b></summary>
|
|
293
|
+
<summary><b>❌ Port 3000 is already in use</b></summary>
|
|
287
294
|
<br>
|
|
288
295
|
|
|
289
296
|
```bash
|
|
290
|
-
#
|
|
291
|
-
sudo lsof -ti:3000 | xargs kill -9
|
|
292
|
-
|
|
297
|
+
# macOS / Linux — kill the process using the port
|
|
298
|
+
sudo lsof -ti:3000 | xargs kill -9
|
|
299
|
+
|
|
300
|
+
# Windows — find and kill the process
|
|
301
|
+
netstat -ano | findstr :3000
|
|
302
|
+
# Then: taskkill /PID <PID> /F
|
|
293
303
|
|
|
294
|
-
#
|
|
304
|
+
# Alternatively, run on a different port
|
|
295
305
|
PORT=3005 rediscover
|
|
296
306
|
```
|
|
297
307
|
|
|
@@ -302,28 +312,28 @@ PORT=3005 rediscover
|
|
|
302
312
|
<br>
|
|
303
313
|
|
|
304
314
|
```bash
|
|
305
|
-
#
|
|
306
|
-
redis-cli ping
|
|
315
|
+
# Verify Redis is running
|
|
316
|
+
redis-cli ping # Expected response: PONG
|
|
307
317
|
|
|
308
|
-
# Install Redis if
|
|
309
|
-
sudo apt install redis-server
|
|
318
|
+
# Install Redis if not present
|
|
319
|
+
sudo apt install redis-server # Ubuntu / Debian
|
|
310
320
|
brew install redis && brew services start redis # macOS
|
|
311
|
-
sudo yum install redis
|
|
321
|
+
sudo yum install redis # CentOS / RHEL
|
|
312
322
|
```
|
|
313
323
|
|
|
314
|
-
Also
|
|
315
|
-
-
|
|
316
|
-
- `bind`
|
|
324
|
+
Also verify:
|
|
325
|
+
- Port `6379` is open in your firewall rules
|
|
326
|
+
- The `bind` directive in `redis.conf` permits connections from your host
|
|
317
327
|
|
|
318
328
|
</details>
|
|
319
329
|
|
|
320
330
|
<details>
|
|
321
|
-
<summary><b>❌ "Authentication failed" to Redis</b></summary>
|
|
331
|
+
<summary><b>❌ "Authentication failed" when connecting to Redis</b></summary>
|
|
322
332
|
<br>
|
|
323
333
|
|
|
324
|
-
-
|
|
325
|
-
- Ensure `REDIS_PASSWORD` in your `.env` matches
|
|
326
|
-
- Test
|
|
334
|
+
- Check the `requirepass` directive in your `redis.conf`
|
|
335
|
+
- Ensure `REDIS_PASSWORD` in your `.env` matches exactly
|
|
336
|
+
- Test manually: `redis-cli -a your-password ping`
|
|
327
337
|
|
|
328
338
|
</details>
|
|
329
339
|
|
|
@@ -333,20 +343,20 @@ Also check:
|
|
|
333
343
|
|
|
334
344
|
```bash
|
|
335
345
|
sudo usermod -aG docker $USER
|
|
336
|
-
newgrp docker # Apply without logging out
|
|
346
|
+
newgrp docker # Apply group change without logging out
|
|
337
347
|
```
|
|
338
348
|
|
|
339
349
|
</details>
|
|
340
350
|
|
|
341
351
|
<details>
|
|
342
|
-
<summary><b>❌ Container exits immediately</b></summary>
|
|
352
|
+
<summary><b>❌ Container exits immediately after starting</b></summary>
|
|
343
353
|
<br>
|
|
344
354
|
|
|
345
355
|
```bash
|
|
346
|
-
# Inspect
|
|
356
|
+
# Inspect startup logs
|
|
347
357
|
docker logs rediscover
|
|
348
358
|
|
|
349
|
-
# Run interactively
|
|
359
|
+
# Run interactively to debug
|
|
350
360
|
docker run -it --rm -p 3000:3000 -p 3001:3001 mufazmi/rediscover:latest
|
|
351
361
|
```
|
|
352
362
|
|
|
@@ -358,10 +368,9 @@ docker run -it --rm -p 3000:3000 -p 3001:3001 mufazmi/rediscover:latest
|
|
|
358
368
|
|
|
359
369
|
```bash
|
|
360
370
|
# Export inline
|
|
361
|
-
export JWT_SECRET="your-secure-key"
|
|
362
|
-
rediscover
|
|
371
|
+
export JWT_SECRET="your-secure-key" && rediscover
|
|
363
372
|
|
|
364
|
-
# Or
|
|
373
|
+
# Or persist in .env
|
|
365
374
|
echo 'JWT_SECRET=your-secure-key' >> .env
|
|
366
375
|
```
|
|
367
376
|
|
|
@@ -371,36 +380,36 @@ echo 'JWT_SECRET=your-secure-key' >> .env
|
|
|
371
380
|
<summary><b>❌ Blank page or UI not loading</b></summary>
|
|
372
381
|
<br>
|
|
373
382
|
|
|
374
|
-
-
|
|
375
|
-
- Temporarily disable ad blockers
|
|
383
|
+
- Confirm JavaScript is enabled in your browser
|
|
384
|
+
- Temporarily disable browser extensions or ad blockers
|
|
376
385
|
- Use a modern browser: Chrome 90+, Firefox 88+, Safari 14+
|
|
377
|
-
- Open DevTools → Console
|
|
386
|
+
- Open **DevTools → Console** and look for JavaScript errors
|
|
378
387
|
|
|
379
388
|
</details>
|
|
380
389
|
|
|
381
|
-
**Enable debug mode** for detailed logs:
|
|
390
|
+
**Enable debug mode** for detailed diagnostic logs:
|
|
382
391
|
```bash
|
|
383
392
|
DEBUG=true rediscover
|
|
384
393
|
```
|
|
385
394
|
|
|
386
|
-
Still stuck? [Open a GitHub Issue](https://github.com/mufazmi/rediscover/issues) with your OS, Node.js version, install method, and
|
|
395
|
+
Still stuck? [Open a GitHub Issue](https://github.com/mufazmi/rediscover/issues) with your OS, Node.js version, install method, and full error output.
|
|
387
396
|
|
|
388
397
|
---
|
|
389
398
|
|
|
390
|
-
## 🛠️ Development
|
|
399
|
+
## 🛠️ Local Development
|
|
391
400
|
|
|
392
401
|
```bash
|
|
393
|
-
# Clone the
|
|
402
|
+
# Clone the repository
|
|
394
403
|
git clone https://github.com/mufazmi/rediscover.git
|
|
395
404
|
cd rediscover
|
|
396
405
|
|
|
397
406
|
# Install dependencies
|
|
398
407
|
npm install
|
|
399
408
|
|
|
400
|
-
# Start
|
|
409
|
+
# Start the development server
|
|
401
410
|
npm run dev
|
|
402
411
|
|
|
403
|
-
# Run
|
|
412
|
+
# Run the test suite
|
|
404
413
|
npm test
|
|
405
414
|
|
|
406
415
|
# Build for production
|
|
@@ -411,15 +420,15 @@ npm run build
|
|
|
411
420
|
|
|
412
421
|
## 🤝 Contributing
|
|
413
422
|
|
|
414
|
-
Contributions are welcome — bug
|
|
423
|
+
Contributions are welcome and appreciated — whether it's a bug fix, new feature, documentation improvement, or a question.
|
|
415
424
|
|
|
416
425
|
1. Fork the repository
|
|
417
|
-
2. Create
|
|
418
|
-
3. Commit your changes: `git commit -m 'Add your feature'`
|
|
419
|
-
4. Push: `git push origin feature/your-feature`
|
|
426
|
+
2. Create a feature branch: `git checkout -b feature/your-feature-name`
|
|
427
|
+
3. Commit your changes: `git commit -m 'Add: your feature description'`
|
|
428
|
+
4. Push to the branch: `git push origin feature/your-feature-name`
|
|
420
429
|
5. Open a Pull Request
|
|
421
430
|
|
|
422
|
-
Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting.
|
|
431
|
+
Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting changes.
|
|
423
432
|
|
|
424
433
|
---
|
|
425
434
|
|
|
@@ -436,15 +445,15 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting.
|
|
|
436
445
|
|
|
437
446
|
### 🏆 Security Recognition
|
|
438
447
|
|
|
439
|
-
Recognized for responsible disclosure
|
|
448
|
+
Recognized by leading global organizations for responsible vulnerability disclosure:
|
|
440
449
|
|
|
441
|
-
`NASA` · `Dell Technologies` · `Nokia` · `Lenovo` · `Zoom` · `LG` · `ABN AMRO Bank` · `Accenture` · `Paytm` · `U.S.
|
|
450
|
+
`NASA` · `Dell Technologies` · `Nokia` · `Lenovo` · `Zoom` · `LG` · `ABN AMRO Bank` · `Accenture` · `Paytm` · `U.S. Department of Homeland Security` · `WHO` · `United Airlines` · `Drexel University` · `Radboud University`
|
|
442
451
|
|
|
443
452
|
---
|
|
444
453
|
|
|
445
454
|
## 📄 License
|
|
446
455
|
|
|
447
|
-
Released under the [MIT License](LICENSE). Free to use, modify, and distribute.
|
|
456
|
+
Released under the [MIT License](LICENSE). Free to use, modify, and distribute — attribution appreciated.
|
|
448
457
|
|
|
449
458
|
---
|
|
450
459
|
|
|
@@ -452,6 +461,6 @@ Released under the [MIT License](LICENSE). Free to use, modify, and distribute.
|
|
|
452
461
|
|
|
453
462
|
**Made with ❤️ by [Umair Farooqui](https://github.com/mufazmi)**
|
|
454
463
|
|
|
455
|
-
*If Rediscover saves you time,
|
|
464
|
+
*If Rediscover saves you time, a ⭐ on GitHub goes a long way — thank you!*
|
|
456
465
|
|
|
457
|
-
</div
|
|
466
|
+
</div>
|