Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f211705
feat: migrate to shadcn/ui + Tailwind CSS with light/dark theme support
andrerfneves Jun 1, 2026
dff1963
docs: add exe.dev deployment guide and reorder deployment options
andrerfneves Jun 1, 2026
8facc33
feat: implement iOS-style UI with advanced shadcn components
andrerfneves Jun 1, 2026
0f5d09d
fix: properly mount Scanner component in QR scanner dialog
andrerfneves Jun 1, 2026
4484a17
fix: await LNURL fetch results before rendering
andrerfneves Jun 1, 2026
a8645b8
feat: add Payment Hash Verifier tool (resolves #92)
andrerfneves Jun 1, 2026
59b3a9e
fix: improve error messages for LNURL fetch failures (resolves #95)
andrerfneves Jun 1, 2026
1b76147
style: redesign input and menu layout
andrerfneves Jun 1, 2026
891e456
style: polish menu dropdown styling
andrerfneves Jun 1, 2026
d441870
style: fix dropdown background and hover states
andrerfneves Jun 1, 2026
f99cce2
style: update menu label and active theme check indicators
andrerfneves Jun 1, 2026
5982c5a
style: adjust header typography and menu spacing
andrerfneves Jun 1, 2026
9f99839
feat: animate decode state and add loading in search submit
andrerfneves Jun 1, 2026
d761d92
style: align menu button border and radius with input field
andrerfneves Jun 1, 2026
677f2ca
fix: make QR scanner dialog and preview backgrounds opaque
andrerfneves Jun 1, 2026
1eed4b4
fix: smooth motion transition for full UI and swap header copy colors
andrerfneves Jun 1, 2026
912e2f6
fix: restore centered idle layout while preserving framer motion shift
andrerfneves Jun 1, 2026
82c7878
fix: reduce motion lift so header stays visible with results
andrerfneves Jun 1, 2026
a968f90
fix: smooth result exit and add view-level route AnimatePresence
andrerfneves Jun 1, 2026
9498930
fix: unify home view motion and smooth result exit
andrerfneves Jun 1, 2026
647ca33
fix: unify decoder motion and color code alerts
andrerfneves Jun 1, 2026
3066d86
fix: stabilize decoder collapse motion and improve theme contrast
andrerfneves Jun 1, 2026
274ec30
fix: open payment hash verifier as modal and reserve app route
andrerfneves Jun 1, 2026
b48e542
refactor: clean legacy app files and route helpers
andrerfneves Jun 1, 2026
e286ec3
fix: improve decoded result labels and lightning address display
andrerfneves Jun 1, 2026
41c4a54
fix: improve mobile header and menu interactions
andrerfneves Jun 1, 2026
b4a22cb
fix: improve light callout contrast
andrerfneves Jun 1, 2026
49a5229
fix: align decoder surface colors
andrerfneves Jun 1, 2026
9bc603f
feat: refine decoder result details
andrerfneves Jun 1, 2026
7b42770
chore: clean decoder dead code and add regression tests
andrerfneves Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
dist
.git
.gitignore
*.md
.env*
.vscode
.idea
coverage
storybook-static
.DS_Store
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ ga.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*

*storybook.log
19 changes: 19 additions & 0 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@


/** @type { import('@storybook/react-vite').StorybookConfig } */
const config = {
"stories": [
"../src/**/*.mdx",
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
],
"addons": [
"@storybook/addon-essentials",
"@storybook/addon-onboarding",
"@storybook/addon-interactions"
],
"framework": {
"name": "@storybook/react-vite",
"options": {}
}
};
export default config;
19 changes: 19 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { StorybookConfig } from "@storybook/react-vite";

const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions",
],
framework: {
name: "@storybook/react-vite",
options: {},
},
docs: {
autodocs: "tag",
},
};

export default config;
13 changes: 13 additions & 0 deletions .storybook/preview.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/** @type { import('@storybook/react').Preview } */
const preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};

export default preview;
15 changes: 15 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { Preview } from "@storybook/react";
import "../src/index.css";

const preview: Preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};

export default preview;
139 changes: 139 additions & 0 deletions DEPLOYMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# Deployment Guide

Lightning Decoder can be deployed to various platforms. This guide covers the most common options.

## Deployment Options

### 1. [Docker Deployment](./DEPLOYMENT_DOCKER.md) ⭐ Recommended

Deploy using Docker containers for maximum portability and consistency across environments.

- **Best for**: Production deployments, self-hosting, Kubernetes
- **Difficulty**: Easy
- **Time**: 5-10 minutes
- **Features**: Containerized, reproducible, scalable

[Get started with Docker →](./DEPLOYMENT_DOCKER.md)

### 2. [exe.dev Deployment](./DEPLOYMENT_EXEDEV.md)

Deploy to exe.dev VMs with built-in HTTPS proxies and zero configuration.

- **Best for**: Quick deployments, development, demos
- **Difficulty**: Very Easy
- **Time**: 2-5 minutes
- **Features**: Instant VMs, automatic HTTPS, public/private sharing

[Get started with exe.dev →](./DEPLOYMENT_EXEDEV.md)

### 3. [Vercel Deployment](./DEPLOYMENT_VERCEL.md)

Deploy to Vercel's edge network with automatic CI/CD and preview deployments.

- **Best for**: Production deployments, teams, automatic deployments
- **Difficulty**: Easy
- **Time**: 5-10 minutes
- **Features**: Edge network, preview deployments, analytics

[Get started with Vercel →](./DEPLOYMENT_VERCEL.md)

### 4. [Static Hosting](#static-hosting)

Deploy to any static hosting service (Netlify, GitHub Pages, Cloudflare Pages, etc.).

- **Best for**: Simple deployments, free hosting
- **Difficulty**: Easy
- **Time**: 5-15 minutes
- **Features**: Global CDN, free tier available

[Learn more about static hosting ↓](#static-hosting)

## Static Hosting

Since Lightning Decoder is a static site built with Vite, it can be deployed to any static hosting service:

### Build the project

```bash
npm run build
```

This creates a `dist/` folder with the production build.

### Deploy the dist folder

Upload the contents of `dist/` to your hosting provider:

- **Netlify**: Drag and drop the `dist/` folder to Netlify's deploy interface
- **GitHub Pages**: Push the `dist/` contents to a `gh-pages` branch
- **Cloudflare Pages**: Connect your repository and set the build command to `npm run build` with output directory `dist`
- **AWS S3 + CloudFront**: Upload `dist/` to an S3 bucket and configure CloudFront for CDN delivery

### Environment Variables

No environment variables are required for the base application. All Lightning Network decoding happens client-side.

## Development

### Local Development

```bash
npm install
npm run dev
```

The app will be available at `http://localhost:5173`

### Storybook

```bash
npm run storybook
```

Storybook will be available at `http://localhost:6006`

### Testing

```bash
npm test
```

Run the test suite with Vitest.

## Build for Production

```bash
npm run build
```

The optimized production build will be in the `dist/` folder.

## Troubleshooting

### Build fails with dependency errors

Make sure you're using Node.js 18 or higher:

```bash
node --version
```

If you need to upgrade Node.js, use a version manager like nvm.

### Storybook not loading

Clear the Storybook cache:

```bash
rm -rf node_modules/.cache/storybook
npm run storybook
```

### Tests failing

Make sure all dependencies are installed:

```bash
npm install
npm test
```
Loading
Loading