Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ab26152
Bump websocket-extensions from 0.1.3 to 0.1.4
dependabot[bot] Jun 6, 2020
27f15a4
Bump node-sass from 4.12.0 to 4.14.1
dependabot[bot] Sep 4, 2020
d6d3479
Bump http-proxy from 1.17.0 to 1.18.1
dependabot[bot] Sep 5, 2020
dfa5f4a
Bump ini from 1.3.5 to 1.3.7
dependabot[bot] Dec 10, 2020
8403797
Bump elliptic from 6.4.1 to 6.5.4
dependabot[bot] Mar 8, 2021
8640321
Bump y18n from 3.2.1 to 3.2.2
dependabot[bot] Mar 29, 2021
949a1b9
Bump handlebars from 4.1.2 to 4.7.7
dependabot[bot] May 6, 2021
6fa9d1a
Bump dns-packet from 1.3.1 to 1.3.4
dependabot[bot] May 26, 2021
21e49ff
Bump path-parse from 1.0.6 to 1.0.7
dependabot[bot] Aug 10, 2021
97399bc
Bump @angular/core from 5.2.11 to 11.0.5
dependabot[bot] Jun 2, 2022
1bd6191
Bump moment from 2.24.0 to 2.29.4
dependabot[bot] Jul 6, 2022
df888d6
Bump jszip from 3.2.1 to 3.10.1
dependabot[bot] Sep 8, 2022
e725111
Bump decode-uri-component from 0.2.0 to 0.2.2
dependabot[bot] Dec 2, 2022
abca09b
Bump express from 4.16.4 to 4.18.2
dependabot[bot] Dec 7, 2022
326010a
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ellipt…
Oct 18, 2025
efb7187
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/expres…
Oct 18, 2025
f7fe94e
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/handle…
Oct 18, 2025
0ecbad9
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/moment…
Oct 18, 2025
df75de5
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/decode…
Oct 18, 2025
7766897
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/dns-pa…
Oct 18, 2025
5d0a691
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/http-p…
Oct 18, 2025
c9c295d
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ini-1.…
Oct 18, 2025
49560f1
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/path-p…
Oct 18, 2025
6fab388
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/websoc…
Oct 18, 2025
1ea4372
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/y18n-3…
Oct 18, 2025
3c95650
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/jszip-…
Oct 18, 2025
ea30ba6
Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/node-s…
Oct 18, 2025
44a9348
Add crush and mcp files to .gitignore
Oct 21, 2025
460b911
Upgrade Angular 5 to 11 and fix dependency vulnerabilities
Oct 21, 2025
f1e5cee
Complete Angular modernization - builds successfully
Oct 18, 2025
f5b5e52
Add Go wrapper with Cobra CLI and embedded GUI
Oct 18, 2025
3026f8a
Make node URL configurable via CLI flag
Oct 19, 2025
ea123d4
Update README with node URL configuration examples
Oct 19, 2025
55aac81
Implement proper API proxy architecture
Oct 21, 2025
b025797
Update README to document proxy architecture
Oct 19, 2025
6294617
Fix RxJS v6 imports for production builds
Oct 21, 2025
d15a04f
Fix WASM loading and update to modern Go
Oct 21, 2025
cc38d46
change embed point and update command wrapper
Oct 21, 2025
b2f6bc5
include gui source files ; update command
Oct 21, 2025
40477f6
add skycoin-lite.wasm compiled with tinygo & wasm_exec.js provided by…
Oct 21, 2025
e3fcacb
serve embedded WASM from skycoin-lite via Gin routes
Oct 22, 2025
95e1af4
update go.mod
Oct 22, 2025
38bc78d
update import path
Oct 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 14 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,17 @@ debug.log
.DS_Store
Thumbs.db

/dist
# Crush files (case-insensitive)
*[Cc][Rr][Uu][Ss][Hh]*
*[Mm][Cc][Pp]*


# Go
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
go.work
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ install-deps-ui: ## install npm dependences
npm install
cd electron && npm install

build:
build: ## builds the GUI to src/gui/dist
npm run build

build-for-electron: ## compiles a version to be used with Electron
Expand Down
120 changes: 120 additions & 0 deletions README-GO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# Skycoin Web Wallet - Go Edition

A modernized, self-contained web wallet for Skycoin with embedded GUI and API proxy.

## Features

- Single binary with embedded web interface
- Built with Go 1.25+ and Angular 12
- No external dependencies - everything embedded
- Secure proxy architecture - API requests proxied through server
- Cross-platform support (Linux, macOS, Windows)
- Simple CLI built with Cobra

## Architecture

The server acts as a proxy between the web UI and the Skycoin node:

```
Browser -> localhost:8001 -> Server (Go) -> node.skycoin.com
Embedded Web UI
```

All `/api/*` requests are proxied to the configured node, avoiding CORS issues and keeping the node URL server-side only.

## Quick Start

```bash
# Run with default settings (connects to https://node.skycoin.com)
./skycoin-web

# Specify a custom node URL
./skycoin-web --node-url https://your-node.example.com

# Custom host and port
./skycoin-web --host 0.0.0.0 --port 8080

# All together
./skycoin-web --node-url https://node.skycoin.com --host 0.0.0.0 --port 8080

# View help
./skycoin-web --help
```

## Building from Source

### Prerequisites
- Node.js 16+ and npm
- Go 1.25+

### Build Steps

```bash
# 1. Install dependencies
npm install --legacy-peer-deps

# 2. Build the web interface (outputs to src/gui/dist)
npm run build

# 3. Build the Go binary
go build -o skycoin-web .

# 4. Run it!
./skycoin-web
```

You can also run directly with:
```bash
# From repository root
go run .

# Or from anywhere once merged upstream
go run github.com/skycoin/skycoin-web@develop
```

## CLI Commands

- `skycoin-web` - Start the web server with defaults
- `skycoin-web serve` - Explicitly start the server
- `skycoin-web version` - Show version information
- `skycoin-web --help` - Show all available options

### Flags

- `--host` / `-H` - Host to bind to (default: 127.0.0.1)
- `--port` / `-p` - Port to serve on (default: 8001)
- `--node-url` / `-n` - Skycoin node URL to connect to (default: https://node.skycoin.com)

## Development

### Frontend Development
```bash
npm start # Runs dev server on http://localhost:4200
```

### Backend Development
```bash
go run . --port 8001
```

## Recent Modernization

This wallet has been upgraded from Angular 5 → Angular 12:

- Updated all dependencies and fixed 200+ vulnerabilities
- Migrated to modern Angular Material imports
- Added webpack 5 polyfills for crypto libraries
- Replaced node-sass with dart-sass
- Fixed all TypeScript compilation errors
- Created single-binary distribution with Go

## License

MIT

## Contributing

Contributions welcome! This is a fork maintained at github.com/0pcom/skycoin-web

Original project: github.com/skycoin/skycoin-web
170 changes: 170 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"desktopwallet": {
"projectType": "application",
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./webpack.config.js"
},
"outputPath": "src/gui/dist",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/assets",
"src/favicon.ico"
],
"styles": [
"node_modules/font-awesome/css/font-awesome.css",
"src/assets/fonts/material-icons/material-icons.css",
"src/styles.scss"
],
"scripts": [
"src/assets/scripts/qrcode.min.js"
]
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
},
"local": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.local.ts"
}
]
},
"local-prod": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.local.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
},
"e2e": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.e2e.ts"
}
]
},
"e2e-prod": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.e2e-prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "desktopwallet:build",
"proxyConfig": "proxy.config.js",
"host": "0.0.0.0"
},
"configurations": {
"production": {
"browserTarget": "desktopwallet:build:production"
},
"local": {
"browserTarget": "desktopwallet:build:local"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "./karma.conf.js",
"styles": [
"src/styles.scss"
],
"scripts": [],
"assets": [
"src/assets",
"src/favicon.ico"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"src/tsconfig.app.json",
"src/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "./protractor.conf.js",
"devServerTarget": "desktopwallet:serve"
},
"configurations": {
"production": {
"devServerTarget": "desktopwallet:serve:production"
}
}
}
}
}
},
"defaultProject": "desktopwallet",
"cli": {
"analytics": false
}
}
Loading