Merge branch 'umbrel-works' into artem
This commit is contained in:
commit
6eb77bbd0c
25 changed files with 1036 additions and 1 deletions
4
.dockerignore
Normal file
4
.dockerignore
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.git
|
||||
.github
|
||||
build
|
||||
node_modules
|
||||
47
.github/workflows/push.yml
vendored
Normal file
47
.github/workflows/push.yml
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
name: Create and publish a Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['umbrel-works']
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
build-and-push-image:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
attestations: write
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
id: push
|
||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
|
||||
11
Dockerfile
Normal file
11
Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
FROM node:18
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package*.json /app
|
||||
|
||||
RUN npm i
|
||||
|
||||
COPY . /app
|
||||
|
||||
CMD [ "npm", "start" ]
|
||||
22
Umbrel/docker-compose.yml
Normal file
22
Umbrel/docker-compose.yml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: lightning-pub
|
||||
APP_PORT: 1776
|
||||
|
||||
server:
|
||||
image: ghcr.io/shocknet/lightning.pub:umbrel-works
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}/data:/data"
|
||||
- "${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro"
|
||||
environment:
|
||||
LN_BACKEND_TYPE: "LND"
|
||||
LND_ADDRESS: $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT
|
||||
LND_CERT_PATH: "/lnd/tls.cert"
|
||||
LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon"
|
||||
DATABASE_FILE: "/data/db.sqlite"
|
||||
METRICS_DATABASE_FILE: "/data/metrics.sqlite"
|
||||
PORT: 1776
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
36
Umbrel/umbrel-app.yml
Normal file
36
Umbrel/umbrel-app.yml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
manifestVersion: 1
|
||||
id: lightning-pub
|
||||
category: finance
|
||||
name: Lightning.Pub
|
||||
version: "1.0.0"
|
||||
tagline: lightning, nostr, accounts, lnurl, web
|
||||
description: >-
|
||||
"Pub" is a Nostr-native account system designed
|
||||
to make running Lightning infrastructure for your friends/family/customers
|
||||
easier than previously thought possible.
|
||||
|
||||
Being Nostr-native eliminates the complexity of configuring your node like a server by using commodity Nostr relays.
|
||||
These relays, unlike LNURL proxies, are trustless by nature of Nostr's own encryption spec (NIP44).
|
||||
|
||||
Support for optional services are integrated into Pub for operators seeking backward compatibility with legacy LNURLs and Lightning Addresses.
|
||||
|
||||
By solving the networking and programability hurdles, Pub provides Lightning with a 3rd Layer that enables node-runners and
|
||||
Uncle Jims to more easily bring their personal network into Bitcoin's permissionless economy. In doing so, Pub runners
|
||||
can keep the Lightning Network decentralized, with custodial scaling that is free of fiat rails, large banks,
|
||||
and other forms of high-time-preference shitcoinery.
|
||||
developer: shocknet
|
||||
website: https://shock.network
|
||||
dependencies:
|
||||
- lightning
|
||||
repo: https://github.com/shocknet/Lightning.Pub
|
||||
support: https://github.com/shocknet/Lightning.Pub/discussions
|
||||
port: 1776
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
submitter: shocknet
|
||||
submission: https://github.com/getumbrel/umbrel/pull/334
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
import express from 'express';
|
||||
import path from 'path';
|
||||
import { ServerOptions } from "../proto/autogenerated/ts/express_server";
|
||||
import { AdminContext, MetricsContext } from "../proto/autogenerated/ts/types";
|
||||
import Main from './services/main'
|
||||
|
|
|
|||
100
static/backup.html
Normal file
100
static/backup.html
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Montserrat"
|
||||
/>
|
||||
<link rel="stylesheet" href="css/styles.css" />
|
||||
<link rel="stylesheet" href="css/backup.css" />
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Lightning.Pub</title>
|
||||
<meta name="description" content="Lightning for Everyone" />
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<img
|
||||
src="img/pub_logo.png"
|
||||
width="38px"
|
||||
height="auto"
|
||||
alt="Lightning Pub logo"
|
||||
/>
|
||||
<img src="img/LightningPub.png" height="33px" alt="Lightning Pub logo" />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="setup-header">
|
||||
<button class="icon-button back-button" onclick="history.back()">
|
||||
<img src="img/back.svg" alt="" />
|
||||
</button>
|
||||
<h2>Backup</h2>
|
||||
<p class="header-title">
|
||||
It looks like this is a
|
||||
<span style="font-weight: bold">new</span> node, it's important
|
||||
establish backups.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<section class="setup-content">
|
||||
<div class="description-box">
|
||||
<div class="description">
|
||||
In addition to your seed phrase, you'll need a channel backup to
|
||||
</div>
|
||||
<div class="description">
|
||||
recover funds should your node experience a hardware failure.
|
||||
</div>
|
||||
<br />
|
||||
<div class="description">
|
||||
It's important always to have the latest version of this backup,
|
||||
</div>
|
||||
<div class="description">
|
||||
fortunately they're small enough to be cached on the Nostr relay.
|
||||
</div>
|
||||
</div>
|
||||
<div class="warning-text">
|
||||
If you did not choose the developers relay, be sure your relay has
|
||||
adequate storage policies to hold NIP78 events.
|
||||
</div>
|
||||
<div class="checkbox-container">
|
||||
<div class="checkbox" style="margin-top: 12px">
|
||||
<input type="checkbox" id="backup" />
|
||||
<div class="checkbox-shape"></div>
|
||||
<label for="backup">
|
||||
Encrypted Backup to Nostr Relay
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
class="push-button hidden-button"
|
||||
onclick="location.href='seed.html'"
|
||||
style="margin-top: 92px;"
|
||||
id="next-button"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-text">
|
||||
<div>By proceeding you acknowledge that this is</div>
|
||||
<div>bleeding-edge software, and agree to the providers</div>
|
||||
<div>
|
||||
<span style="color: #c434e0">terms</span> regarding any services
|
||||
herein.
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<p class="marked">Need Help?</p>
|
||||
</footer>
|
||||
|
||||
<script src="js/backup.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
77
static/connect.html
Normal file
77
static/connect.html
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Montserrat"
|
||||
/>
|
||||
<link rel="stylesheet" href="css/styles.css" />
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Lightning.Pub</title>
|
||||
<meta name="description" content="Lightning for Everyone" />
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<img
|
||||
src="img/pub_logo.png"
|
||||
width="38px"
|
||||
height="auto"
|
||||
alt="Lightning Pub logo"
|
||||
/>
|
||||
<img src="img/LightningPub.png" height="33px" alt="Lightning Pub logo" />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="setup-header">
|
||||
<button class="icon-button back-button" onclick="history.back()">
|
||||
<img src="img/back.svg" alt="" />
|
||||
</button>
|
||||
<h2>Connect</h2>
|
||||
<p class="header-title">
|
||||
Who's the Nostr user that owns this node, can recover the backups, and
|
||||
connect to manage it?
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<section class="setup-content">
|
||||
<div id="qrcode"></div>
|
||||
<p class="text-gray">
|
||||
strfry.shock.network <br />npub123abcdefghhhhhhhhhhhhhhh
|
||||
</p>
|
||||
<br />
|
||||
<p class="text-gray">Note: Code contains a one-time pairing secret.</p>
|
||||
</section>
|
||||
|
||||
<button
|
||||
class="push-button"
|
||||
style="margin-top: 32px"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-text">
|
||||
<div>By proceeding you acknowledge that this is</div>
|
||||
<div>bleeding-edge software, and agree to the providers</div>
|
||||
<div>
|
||||
<span style="color: #c434e0">terms</span> regarding any services
|
||||
herein.
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<p class="marked">Need Help?</p>
|
||||
</footer>
|
||||
|
||||
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
|
||||
|
||||
<script src="js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
18
static/css/backup.css
Normal file
18
static/css/backup.css
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
.description {
|
||||
font-size: 14px;
|
||||
color: #a3a3a3;
|
||||
text-decoration: none solid rgb(163, 163, 163);
|
||||
text-align: center;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.warning-text {
|
||||
font-size: 14px;
|
||||
color: #c434e0;
|
||||
font-style: italic;
|
||||
text-decoration: none solid rgb(196, 52, 224);
|
||||
text-align: center;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
27
static/css/liquidity.css
Normal file
27
static/css/liquidity.css
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
.question-box {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
left: -4px;
|
||||
}
|
||||
|
||||
.question-box .question-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
min-width: 280px;
|
||||
background-color: var(--background-color);
|
||||
color: #a3a3a3;
|
||||
padding: 12px;
|
||||
border: 2px solid #c423e0;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
transform: translate(-50%, -50%);
|
||||
padding-top: 28px;
|
||||
z-index: 200;
|
||||
}
|
||||
|
||||
.question-content .close-button {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 0;
|
||||
}
|
||||
35
static/css/seed.css
Normal file
35
static/css/seed.css
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
.seed-box-container {
|
||||
display: grid;
|
||||
grid-template-columns: auto auto auto auto auto auto;
|
||||
justify-content: center;
|
||||
row-gap: 4px;
|
||||
column-gap: 12px;
|
||||
}
|
||||
|
||||
@media (max-width: 680px) {
|
||||
.seed-box-container {
|
||||
grid-template-columns: auto auto auto auto;
|
||||
}
|
||||
}
|
||||
|
||||
.blur-filter {
|
||||
filter: blur(5px);
|
||||
}
|
||||
|
||||
.seed-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.reveal-button {
|
||||
font-size: 14px;
|
||||
color: #c434e0;
|
||||
font-style: italic;
|
||||
text-decoration: none solid rgb(196, 52, 224);
|
||||
text-align: center;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin-top: 16px;
|
||||
}
|
||||
244
static/css/styles.css
Normal file
244
static/css/styles.css
Normal file
|
|
@ -0,0 +1,244 @@
|
|||
:root {
|
||||
--background-color: #16191c;
|
||||
--color: #ffffff;
|
||||
--color-marked: #ff7700;
|
||||
--color-linked: #2aabe9;
|
||||
--gradient: linear-gradient(60deg, #ff7700 0%, #c740c7 100%);
|
||||
--font-size-h2: 36px;
|
||||
--font-size-p: 16px;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-block-start: 15px;
|
||||
font-family: Montserrat;
|
||||
background-color: var(--background-color);
|
||||
color: var(--color);
|
||||
text-align: center;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: var(--background-color);
|
||||
padding-inline: 2%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 500px;
|
||||
width: 100%;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
body {
|
||||
zoom: 1.4;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 2000px) {
|
||||
body {
|
||||
zoom: 1.6;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 425px) {
|
||||
header > img:nth-child(1) {
|
||||
width: 30px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
header > img:nth-child(2) {
|
||||
width: auto;
|
||||
height: 26px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
background-color: transparent;
|
||||
padding: 7px 10px;
|
||||
border: 1px solid #c740c7;
|
||||
border-radius: 5px;
|
||||
font-size: 14px;
|
||||
color: #999999;
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.push-button {
|
||||
background-color: transparent;
|
||||
padding: 10px 55px;
|
||||
font-size: 20px;
|
||||
color: var(--color);
|
||||
text-align: center;
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
background: linear-gradient(var(--background-color), var(--background-color))
|
||||
padding-box,
|
||||
var(--gradient) border-box;
|
||||
border-radius: 5px;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: var(--font-size-h2);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: var(--font-size-p);
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.text-gray {
|
||||
color: #a3a3a3;
|
||||
margin-block-end: 5px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Hide the default checkbox */
|
||||
.checkbox input[type="checkbox"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Create a new box */
|
||||
.checkbox label {
|
||||
padding-left: 32px;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
color: #a3a3a3;
|
||||
text-decoration: none solid rgb(163, 163, 163);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.checkbox .checkbox-shape {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: transparent;
|
||||
border: 1px solid #a3a3a3;
|
||||
border-radius: 5px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translate(0, -50%);
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/* Display a checkmark when the checkbox is checked */
|
||||
.checkbox input[type="checkbox"]:checked + .checkbox-shape::before {
|
||||
content: "✔";
|
||||
color: #a012c7;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.line {
|
||||
margin-block: 24px;
|
||||
background: var(--gradient);
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.marked {
|
||||
color: var(--color-marked);
|
||||
}
|
||||
|
||||
.linked {
|
||||
color: var(--color-linked);
|
||||
}
|
||||
|
||||
.setup-footer > p {
|
||||
line-height: 4px;
|
||||
}
|
||||
|
||||
.setup-header {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.setup-header > .back-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.setup-header > h2 {
|
||||
margin-block-start: 20px;
|
||||
}
|
||||
|
||||
.setup-header .header-title {
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
#qrcode {
|
||||
display: flex;
|
||||
margin: auto;
|
||||
justify-content: center;
|
||||
margin-block-start: 40px;
|
||||
margin-block-end: 15px;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.input-group span {
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
font-weight: bold;
|
||||
text-decoration: none solid rgb(255, 255, 255);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.input-group > input {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
footer {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
max-width: 500px;
|
||||
width: 100%;
|
||||
margin-inline: auto;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
footer .footer-text {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.checkbox-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.hidden-button {
|
||||
visibility: hidden;
|
||||
}
|
||||
BIN
static/img/LightningPub.png
Normal file
BIN
static/img/LightningPub.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
1
static/img/back.svg
Normal file
1
static/img/back.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="24" height="24"><g><path xmlns:default="http://www.w3.org/2000/svg" d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" style="fill: rgb(255, 255, 255);" vector-effect="non-scaling-stroke"/></g></svg>
|
||||
|
After Width: | Height: | Size: 383 B |
1
static/img/close.svg
Normal file
1
static/img/close.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 41 41" width="20" height="20"><g><path xmlns:default="http://www.w3.org/2000/svg" d="M35.6,41.5c-0.8,0-1.6-0.3-2.1-0.9L20.7,27.8L8,40.6c-1.1,1.1-3.1,1.1-4.2,0l-2.8-2.8c-1.2-1.2-1.2-3.1,0-4.3l12.7-12.8 L0.9,7.9C0.3,7.4,0,6.6,0,5.8s0.3-1.6,0.9-2.1l2.8-2.8c1.1-1.1,3.1-1.1,4.2,0l12.7,12.8L33.5,0.9c1.1-1.1,3.1-1.1,4.2,0l2.8,2.8 c0.6,0.6,0.9,1.3,0.9,2.1s-0.3,1.6-0.9,2.1L27.8,20.7l12.7,12.8c1.2,1.2,1.2,3.1,0,4.3l-2.8,2.8C37.1,41.1,36.4,41.5,35.6,41.5z M20.7,25l14.2,14.2c0.4,0.4,1,0.4,1.4,0l2.8-2.8c0.4-0.4,0.4-1,0-1.4L25,20.7L39.1,6.5c0.2-0.2,0.3-0.4,0.3-0.7s-0.1-0.5-0.3-0.7 l-2.8-2.8c-0.4-0.4-1-0.4-1.4,0L20.7,16.5L6.5,2.3c-0.4-0.4-1-0.4-1.4,0L2.3,5.1C2.1,5.3,2,5.6,2,5.8s0.1,0.5,0.3,0.7l14.2,14.2 L2.3,34.9c-0.4,0.4-0.4,1,0,1.4l2.8,2.8c0.4,0.4,1,0.4,1.4,0L20.7,25z" style="fill: rgb(196, 52, 224);" vector-effect="non-scaling-stroke"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1,008 B |
BIN
static/img/pub_logo.png
Normal file
BIN
static/img/pub_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
1
static/img/question.svg
Normal file
1
static/img/question.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="16" height="16"><g><path xmlns:default="http://www.w3.org/2000/svg" id="question-circle" d="M13.24,17.24c-0.06,0.06-0.15,0.09-0.24,0.09h-2c-0.18,0.01-0.32-0.13-0.33-0.31c0-0.01,0-0.01,0-0.02 v-2c-0.01-0.18,0.13-0.32,0.31-0.33c0.01,0,0.01,0,0.02,0h2c0.18-0.01,0.32,0.13,0.33,0.31c0,0.01,0,0.01,0,0.02v2 C13.33,17.09,13.3,17.18,13.24,17.24z M16,10c0,0.29-0.04,0.57-0.13,0.84c-0.07,0.22-0.17,0.43-0.29,0.63 c-0.13,0.19-0.28,0.36-0.46,0.5c-0.15,0.13-0.31,0.25-0.48,0.36l-0.51,0.3c-0.23,0.13-0.42,0.31-0.57,0.52 c-0.12,0.15-0.2,0.33-0.22,0.52c0.01,0.18-0.13,0.32-0.31,0.33c-0.01,0-0.02,0-0.03,0h-2c-0.18,0.01-0.32-0.13-0.33-0.31 c0-0.01,0-0.01,0-0.02v-0.38c0.01-0.48,0.21-0.94,0.54-1.29c0.33-0.38,0.74-0.69,1.2-0.9c0.27-0.11,0.51-0.27,0.71-0.47 c0.15-0.18,0.22-0.4,0.21-0.63c-0.02-0.26-0.17-0.49-0.39-0.61c-0.55-0.35-1.24-0.35-1.79,0c-0.34,0.29-0.64,0.63-0.9,1 c-0.06,0.08-0.16,0.12-0.26,0.12c-0.07,0.01-0.14-0.02-0.2-0.06l-1.37-1c-0.14-0.09-0.19-0.27-0.1-0.41 c0.01-0.01,0.01-0.02,0.02-0.03C9.11,7.6,10.6,6.74,12.2,6.79c1.25-0.02,2.44,0.54,3.22,1.51C15.8,8.79,16,9.38,16,10L16,10z M18.93,8c-0.7-1.21-1.71-2.22-2.93-2.92C14.79,4.37,13.41,3.99,12,4c-1.41-0.01-2.79,0.37-4,1.08C6.79,5.78,5.78,6.79,5.08,8 C4.37,9.21,3.99,10.59,4,12c-0.01,1.41,0.36,2.79,1.07,4c0.7,1.21,1.71,2.22,2.93,2.92c1.21,0.71,2.59,1.09,4,1.08 c1.41,0.01,2.79-0.36,4-1.07c1.21-0.7,2.22-1.71,2.92-2.93c0.71-1.21,1.09-2.59,1.08-4c0.01-1.41-0.37-2.79-1.08-4H18.93z" style="fill: rgb(163, 163, 163);" vector-effect="non-scaling-stroke"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
90
static/index.html
Normal file
90
static/index.html
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Montserrat"
|
||||
/>
|
||||
<link rel="stylesheet" href="css/styles.css" />
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Lightning.Pub</title>
|
||||
<meta name="description" content="Lightning for Everyone" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<img
|
||||
src="img/pub_logo.png"
|
||||
width="38px"
|
||||
height="auto"
|
||||
alt="Lightning Pub logo"
|
||||
/>
|
||||
<img src="img/LightningPub.png" height="33px" alt="Lightning Pub logo" />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="setup-header">
|
||||
<h2>Setup</h2>
|
||||
<p class="header-title">
|
||||
Let's confirm some things before we start this Pub
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<section class="setup-content">
|
||||
<div class="input-group">
|
||||
<span>give this node a name that wallet users will see:</span>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Nodey McNodeFace"
|
||||
value=""
|
||||
style="width: 100%"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="input-group" style="margin-top: 38px">
|
||||
<span>If you want to use a specific Nostr relay, enter it now:</span>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="wss://relay.lightning.pub"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="checkbox" style="margin-top: 12px">
|
||||
<input type="checkbox" id="customCheckbox" />
|
||||
<div class="checkbox-shape"></div>
|
||||
<label for="customCheckbox">
|
||||
Use the default managed relay service and auto-pay 1000 sats
|
||||
permonth to support developers
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="push-button"
|
||||
onclick="location.href='liquidity.html'"
|
||||
style="margin-top: 92px"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-text">
|
||||
<div>By proceeding you acknowledge that this is</div>
|
||||
<div>bleeding-edge software, and agree to the providers</div>
|
||||
<div>
|
||||
<span style="color: #c434e0">terms</span> regarding any services
|
||||
herein.
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<p class="marked">Need Help?</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
11
static/js/backup.js
Normal file
11
static/js/backup.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
$(() => {
|
||||
$("#backup").click(() => {
|
||||
const checked = $("#backup").prop("checked");
|
||||
const nextButton = $("#next-button");
|
||||
if (checked) {
|
||||
nextButton.removeClass("hidden-button");
|
||||
} else {
|
||||
nextButton.addClass("hidden-button");
|
||||
}
|
||||
});
|
||||
});
|
||||
9
static/js/liquidity.js
Normal file
9
static/js/liquidity.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
$(() => {
|
||||
$("#show-question").click(() => {
|
||||
$("#question-content").show();
|
||||
});
|
||||
|
||||
$("#close-question").click(() => {
|
||||
$("#question-content").hide();
|
||||
});
|
||||
});
|
||||
10
static/js/script.js
Normal file
10
static/js/script.js
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
$(document).ready(function() {
|
||||
var qrcode = new QRCode(document.getElementById("qrcode"), {
|
||||
text: "strfry.shock.network npub123abcdefghhhhhhhhhhhhhhh",
|
||||
width: 157,
|
||||
height: 157,
|
||||
colorDark : "#000000",
|
||||
colorLight : "#ffffff",
|
||||
// correctLevel : QRCode.CorrectLevel.H
|
||||
});
|
||||
});
|
||||
15
static/js/seed.js
Normal file
15
static/js/seed.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
$(() => {
|
||||
$("#reveal-button").click(() => {
|
||||
$("#seed-box-container").removeClass("blur-filter");
|
||||
});
|
||||
|
||||
$('#copied').click(() => {
|
||||
const checked = $("#copied").prop('checked');
|
||||
const nextButton = $("#next-button");
|
||||
if (checked) {
|
||||
nextButton.removeClass("hidden-button");
|
||||
} else {
|
||||
nextButton.addClass("hidden-button");
|
||||
}
|
||||
})
|
||||
});
|
||||
93
static/liquidity.html
Normal file
93
static/liquidity.html
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Montserrat"
|
||||
/>
|
||||
<link rel="stylesheet" href="css/styles.css" />
|
||||
<link rel="stylesheet" href="css/liquidity.css" />
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Lightning.Pub</title>
|
||||
<meta name="description" content="Lightning for Everyone" />
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<img
|
||||
src="img/pub_logo.png"
|
||||
width="38px"
|
||||
height="auto"
|
||||
alt="Lightning Pub logo"
|
||||
/>
|
||||
<img src="img/LightningPub.png" height="33px" alt="Lightning Pub logo" />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="setup-header">
|
||||
<button class="icon-button back-button" onclick="history.back()">
|
||||
<img src="img/back.svg" alt="" />
|
||||
</button>
|
||||
<h2>Liquidity</h2>
|
||||
<p class="header-title">
|
||||
How do you want to manage Lightning connectivity?
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<section class="setup-content">
|
||||
<div class="checkbox" style="margin-top: 60px">
|
||||
<input type="checkbox" id="automate" />
|
||||
<div class="checkbox-shape"></div>
|
||||
<label for="automate">
|
||||
Use Boostrap Service to Automate
|
||||
<div class="question-box">
|
||||
<button class="icon-button" id="show-question">
|
||||
<img src="img/question.svg" />
|
||||
</button>
|
||||
<div class="question-content" id="question-content">
|
||||
Bootstrapping uses a trusted peer until channel management
|
||||
events cost less than 1% to execute
|
||||
<button class="icon-button close-button" id="close-question">
|
||||
<img src="img/close.svg" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox" style="margin-top: 60px">
|
||||
<input type="checkbox" id="manual" />
|
||||
<div class="checkbox-shape"></div>
|
||||
<label for="manual">Manage my channels manually</label>
|
||||
</div>
|
||||
<button
|
||||
class="push-button"
|
||||
onclick="location.href='backup.html'"
|
||||
style="margin-top: 92px"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-text">
|
||||
<div>By proceeding you acknowledge that this is</div>
|
||||
<div>bleeding-edge software, and agree to the providers</div>
|
||||
<div>
|
||||
<span style="color: #c434e0">terms</span> regarding any services
|
||||
herein.
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<p class="marked">Need Help?</p>
|
||||
</footer>
|
||||
|
||||
<script src="js/liquidity.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
181
static/seed.html
Normal file
181
static/seed.html
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Montserrat"
|
||||
/>
|
||||
<link rel="stylesheet" href="css/styles.css" />
|
||||
<link rel="stylesheet" href="css/seed.css" />
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Lightning.Pub</title>
|
||||
<meta name="description" content="Lightning for Everyone" />
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<img
|
||||
src="img/pub_logo.png"
|
||||
width="38px"
|
||||
height="auto"
|
||||
alt="Lightning Pub logo"
|
||||
/>
|
||||
<img src="img/LightningPub.png" height="33px" alt="Lightning Pub logo" />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="setup-header">
|
||||
<button class="icon-button back-button" onclick="history.back()">
|
||||
<img src="img/back.svg" alt="" />
|
||||
</button>
|
||||
<h2>Seed Phrase</h2>
|
||||
<p class="header-title">
|
||||
Store your seed phrase somewhere safe, you'll need it if something
|
||||
ever goes wrong with your nodes hard drive.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<section class="setup-content">
|
||||
<div class="seed-box-container blur-filter" id="seed-box-container">
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
<div class="seed-box">
|
||||
<span>1</span>
|
||||
<span>albert</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="reveal-button" id="reveal-button">Click To Reveal</button>
|
||||
|
||||
<div class="checkbox-container">
|
||||
<div class="checkbox" style="margin-top: 12px">
|
||||
<input type="checkbox" id="copied" />
|
||||
<div class="checkbox-shape"></div>
|
||||
<label for="copied">
|
||||
I have copied this somewhere safe
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
id="next-button"
|
||||
class="push-button hidden-button"
|
||||
onclick="location.href='connect.html'"
|
||||
style="margin-top: 92px"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-text">
|
||||
<div>By proceeding you acknowledge that this is</div>
|
||||
<div>bleeding-edge software, and agree to the providers</div>
|
||||
<div>
|
||||
<span style="color: #c434e0">terms</span> regarding any services
|
||||
herein.
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<p class="marked">Need Help?</p>
|
||||
</footer>
|
||||
|
||||
<script src="js/seed.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -68,4 +68,4 @@
|
|||
"exclude": [
|
||||
"./tests"
|
||||
],
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue