Skip to content

Commit 5da3bc1

Browse files
committed
feat: initial JSONPretty app — format, validate, and convert JSON in the browser
0 parents  commit 5da3bc1

29 files changed

+7919
-0
lines changed

.github/workflows/deploy.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: actions/setup-node@v4
23+
with:
24+
node-version: 20
25+
cache: npm
26+
- run: npm ci
27+
- run: npm run build
28+
env:
29+
BASE_URL: /${{ github.event.repository.name }}/
30+
- uses: actions/upload-pages-artifact@v3
31+
with:
32+
path: dist
33+
34+
deploy:
35+
needs: build
36+
runs-on: ubuntu-latest
37+
environment:
38+
name: github-pages
39+
url: ${{ steps.deployment.outputs.page_url }}
40+
steps:
41+
- id: deployment
42+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
15+
# Editor directories and files
16+
.vscode/*
17+
!.vscode/extensions.json
18+
.idea
19+
.DS_Store
20+
*.suo
21+
*.ntvs*
22+
*.njsproj
23+
*.sln
24+
*.sw?
25+
26+
# Claude
27+
.claude/

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
legacy-peer-deps=true

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# JSONPretty
2+
3+
A frontend-only JSON formatting, validation, and conversion tool. **Your JSON never leaves your browser.**
4+
5+
## Privacy
6+
7+
JSONPretty runs 100% in the browser. No data is sent to any server. No analytics, no tracking, no cookies.
8+
9+
## Features
10+
11+
- **Format / Prettify** — Paste ugly JSON, get it beautifully formatted
12+
- **Validate** — Clear error messages pointing to the exact line
13+
- **JSON to YAML** — One-click conversion
14+
- **JSON to CSV** — Convert arrays of flat objects to CSV
15+
- **Diff** — Compare two JSON objects side by side
16+
- **Dark mode** — System detection + manual toggle
17+
- **Multilingual** — English, Spanish, French, Italian, Portuguese, German, Czech
18+
- **PWA** — Install it as a native app
19+
- **Responsive** — Works on desktop and mobile
20+
21+
## Getting Started
22+
23+
```bash
24+
npm install
25+
npm run dev
26+
```
27+
28+
## Contributing
29+
30+
Found a bug or have a feature request? [Open an issue](https://github.com/alejandroSuch/JSONPretty/issues).
31+
32+
## Support
33+
34+
<a href="https://buymeacoffee.com/alejandrosuch" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="40"></a>
35+
36+
## License
37+
38+
MIT

index.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<meta name="theme-color" content="#f59e0b" />
8+
<title>JSONPretty</title>
9+
</head>
10+
<body>
11+
<div id="root"></div>
12+
<script type="module" src="/src/main.tsx"></script>
13+
</body>
14+
</html>

0 commit comments

Comments
 (0)