Skip to content

Commit 5f3a72c

Browse files
author
minhnq
committed
feat: update readme and policy
1 parent b2e9067 commit 5f3a72c

4 files changed

Lines changed: 113 additions & 15 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ jobs:
2222
git pull origin main
2323
chmod +x deploy.sh
2424
./deploy.sh
25+
cd backend
26+
chmod +x deploy.sh
27+
./deploy.sh

README.md

Lines changed: 106 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,140 @@
11
# DevTools
22

3-
Free online developer tools. No signup required, 100% client-side processing.
3+
Free online developer tools. No signup required, 100% client-side processing for most tools.
4+
5+
**Live Demo**: [pwhs.app](https://pwhs.app)
46

57
## Tools
68

7-
- **Subdomain Scanner** - Discover subdomains using CT logs, VirusTotal, Shodan, Subfinder
8-
- **OTP Generator** - Generate TOTP codes with key saving and password protection
9-
- **Base64 Image** - View/encode images to Base64 with drag & drop
10-
- **Webhook Tester** - Receive and inspect webhook requests in real-time
9+
| Tool | Description | Storage |
10+
|------|-------------|---------|
11+
| **Subdomain Scanner** | Discover subdomains using CT logs, VirusTotal, Shodan | Client-side |
12+
| **OTP Generator** | Generate TOTP codes with key saving and password protection | Local Storage |
13+
| **Base64 Image** | View/encode images to Base64 with drag & drop | Client-side |
14+
| **Webhook Tester** | Receive and inspect webhook requests in real-time | Server |
15+
| **JSON Server** | Host, validate, and share JSON data with mock APIs | Server |
16+
| **Image Uploader** | Upload images and get shareable links | S3/R2 |
17+
| **File Transfer** | Share any file with expiring download links | S3/R2 |
18+
| **Time Capsule** | Lock files until a future date | S3/R2 |
19+
| **ANeko Builder** | Create custom skins for ANeko Reborn Android app | Client-side |
20+
21+
## Project Structure
22+
23+
```
24+
devtool-fe/
25+
├── src/ # Next.js frontend
26+
│ ├── app/ # App router pages
27+
│ ├── components/ # React components
28+
│ └── lib/ # Utilities
29+
├── backend/ # NestJS backend API
30+
│ └── src/
31+
│ ├── checkdomain/ # Subdomain scanner cron
32+
│ ├── upload/ # Image upload service
33+
│ ├── transfer/ # File transfer service
34+
│ └── capsule/ # Time capsule service
35+
└── prisma/ # Database schema
36+
```
1137

1238
## Quick Start
1339

40+
### Frontend (Next.js)
41+
1442
```bash
15-
# Install
16-
npm install
43+
# Install dependencies
44+
bun install
1745

18-
# Run
19-
npm run dev
46+
# Run development server
47+
bun run dev
2048
```
2149

2250
Open http://localhost:3000
2351

52+
### Backend (NestJS)
53+
54+
```bash
55+
cd backend
56+
57+
# Install dependencies
58+
bun install
59+
60+
# Run development server
61+
bun run start:dev
62+
```
63+
64+
Backend runs on http://localhost:3001
65+
2466
## Environment Variables
2567

68+
### Frontend (.env)
69+
2670
```env
2771
# VirusTotal API Key (free tier: 4 requests/minute)
28-
# Get yours at: https://www.virustotal.com/gui/sign-in
2972
VIRUSTOTAL_API_KEY=
3073
3174
# Shodan API Key (free tier: 100 credits/month)
32-
# Get yours at: https://account.shodan.io
3375
SHODAN_API_KEY=
3476
35-
# Base URL (e.g. https://yourdomain.com)
77+
# Base URL
3678
NEXT_PUBLIC_BASE_URL=https://yourdomain.com
3779
38-
# PostgreSQL for Webhook Tester
80+
# PostgreSQL Database
81+
DATABASE_URL=postgresql://user:pass@host:5432/db
82+
83+
# S3/R2 Cloudflare Storage
84+
S3_ENDPOINT=
85+
S3_ACCESS_KEY=
86+
S3_SECRET_KEY=
87+
S3_BUCKET=
88+
S3_PUBLIC_URL=
89+
90+
# Custom Public URLs (optional)
91+
IMAGE_PUBLIC_URL=https://image.yourdomain.com
92+
CAPSULE_PUBLIC_URL=https://capsule.yourdomain.com
93+
94+
# Time Capsule Settings (optional)
95+
CAPSULE_MAX_FILE_SIZE=104857600
96+
CAPSULE_MAX_LOCK_DAYS=365
97+
CAPSULE_MIN_LOCK_DAYS=1
98+
```
99+
100+
### Backend (.env)
101+
102+
```env
103+
# PostgreSQL Database
39104
DATABASE_URL=postgresql://user:pass@host:5432/db
105+
106+
# S3/R2 Storage
107+
S3_ENDPOINT=
108+
S3_ACCESS_KEY=
109+
S3_SECRET_KEY=
110+
S3_BUCKET=
111+
112+
# Server Port
113+
PORT=3001
40114
```
41115

42116
## API Keys (Optional)
43117

44118
Configure in UI Settings panel:
45-
- **VirusTotal** - [virustotal.com](https://www.virustotal.com/)
46-
- **Shodan** - [shodan.io](https://shodan.io/)
119+
- **VirusTotal** - [virustotal.com](https://www.virustotal.com/) - Subdomain enumeration
120+
- **Shodan** - [shodan.io](https://shodan.io/) - Subdomain enumeration
121+
122+
## Deployment
123+
124+
### Frontend
125+
Deploy to any platform that supports Next.js (Vercel, Netlify, etc.)
126+
127+
### Backend
128+
```bash
129+
cd backend
130+
bun run build
131+
bun run start:prod
132+
```
133+
134+
Or use PM2:
135+
```bash
136+
pm2 start ecosystem.config.js
137+
```
47138

48139
## License
49140

backend/deploy.sh

100644100755
File mode changed.

src/app/policy/page.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ export default function PolicyPage() {
4141
<li><strong>Base64 Converter:</strong> Image processing happens 100% locally. Your files are never uploaded to our servers.</li>
4242
<li><strong>JSON Server:</strong> Data you explicitly save is stored in our database to generate a shareable URL. We do not analyze this data.</li>
4343
<li><strong>Webhook Tester:</strong> Request data sent to your unique webhook URL is stored temporarily for your inspection. We do not use this data for any other purpose.</li>
44+
<li><strong>Image Uploader:</strong> Uploaded images are stored on our servers to generate shareable links. Images may be deleted after a period of inactivity.</li>
45+
<li><strong>File Transfer:</strong> Files you upload are stored temporarily on our servers to provide download links. Files are automatically deleted after the expiration time you set.</li>
46+
<li><strong>Time Capsule:</strong> Files and messages are encrypted and stored on our servers until the unlock date. After unlocking, data may be deleted after a period of inactivity.</li>
47+
<li><strong>ANeko Builder:</strong> All skin editing happens 100% locally in your browser. We do not upload or store any of your skin files.</li>
4448
</ul>
4549

4650
<h3>2. Local Storage</h3>

0 commit comments

Comments
 (0)