You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
neroshop/README.md

270 lines
13 KiB

# neroshop - WORK IN PROGRESS (ON HOLD)
[![banner](assets/images/appicons/LogoLight250x250.png)](https://github.com/layters/testshop "neroshop logo")
NeroShop is a decentralized peer-to-peer marketplace for trading goods and services with [**Monero**](https://getmonero.org/)
> __Disclaimer: The neroshop team is comprised of a single developer that operates independently
> and is not affiliated, associated, authorized, endorsed by, or in any way officially connected
> with the Monero project, Monero team or any other organization.__
## Table of contents
<!-- - [The history behind neroshop](#about)-->
- [Demo](#demo)
- [Project Status](#project-status) <!-- - [Documentation](#documentation)-->
- [Building neroshop](#building-neroshop)
- [Dependencies](#dependencies)
- [Compiling neroshop from source](#compiling-neroshop-from-source)
- [Contributing](#contributing) <!-- - [Bug Bounty Program]-->
- [License](#license)
- [Donations](#donations)
- [Resources](#resources)
- [Thanks](#thanks)
## Demo
<details>
<summary>Click to load images</summary>
![Wallet_Keys_Generation](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Wallet_Keys_Generation.png)
![Registration](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Registration.png)
![Login](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Login.png)
![CatalogGrid](https://github.com/layters/testshop/blob/main/assets/images/screenshots/CatalogGrid.png)
![CatalogList](https://github.com/layters/testshop/blob/main/assets/images/screenshots/CatalogList.png)
![ProductPage](https://github.com/layters/testshop/blob/main/assets/images/screenshots/ProductPage.png)
![SettingsDialog_Network](https://github.com/layters/testshop/blob/main/assets/images/screenshots/SettingsDialog_Monero.png)
![SettingsDialog_General](https://github.com/layters/testshop/blob/main/assets/images/screenshots/SettingsDialog_General.png)
![HomePage](https://github.com/layters/testshop/blob/main/assets/images/screenshots/HomePage.png)
![HomePage_Recent_Listings](https://github.com/layters/testshop/blob/main/assets/images/screenshots/HomePage_Recent_Listings.png)
![Dashboard](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Dashboard_Overview.png)
![Store_Inventory](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Store_InventoryTab.png)
![Store_Inventory_ProductDialog_Top](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Store_InventoryTab_ProductDialog_Top.png)
![Store_Inventory_ProductDialog_Mid](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Store_InventoryTab_ProductDialog_Mid.png)
![Store_Inventory_ProductDialog_Bottom](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Store_InventoryTab_ProductDialog_Bottom.png)
![WalletPage_Send](https://github.com/layters/testshop/blob/main/assets/images/screenshots/WalletPage_BalanceSend.png)
![WalletPage_Receive](https://github.com/layters/testshop/blob/main/assets/images/screenshots/WalletPage_BalanceReceive.png)
![WalletPage_Transactions](https://github.com/layters/testshop/blob/main/assets/images/screenshots/WalletPage_BalanceTxs.png)
![ProfilePage_ListingsTab](https://github.com/layters/testshop/blob/main/assets/images/screenshots/ProfilePage_ListingsTab.png)
![ProfilePage_RatingsTab](https://github.com/layters/testshop/blob/main/assets/images/screenshots/ProfilePage_RatingsTab.png)
![ProfilePage_With_Custom_Avatar](https://github.com/layters/testshop/blob/main/assets/images/screenshots/ProfilePage_With_Custom_Avatar.png)
![MessagesPage](https://github.com/layters/testshop/blob/main/assets/images/screenshots/Messages_Page.png)
</details>
## Project Status
https://gist.github.com/layters/83efdef0c5ea3d8ff458bfc312d11be3
## Building neroshop
### Dependencies
:heavy_check_mark: = Currently in use | :o: = Optional | :x: = Marked for deprecation or removed | :grey_question: = Not in use, but may be considered
:white_square_button: = For CLI only | :package: = Bundled
| Library | Minimum Ver. | Purpose | Status |
|--------------------------------------------------------------------|--------------------|------------------------------------------------------------------------|----------------------------------------------------|
| [monero-cpp](https://github.com/monero-ecosystem/monero-cpp) | latest | monero wallet and payment system | :heavy_check_mark: :package: |
| [sqlite3](https://sqlite.org/) | 3.38.0 | database management | :heavy_check_mark: :package: |
| [QR Code generator](https://github.com/nayuki/QR-Code-generator) | ? | qr code generation | :heavy_check_mark: :package: |
| [json](https://github.com/nlohmann/json/) | ? | json parsing and msgpack | :heavy_check_mark: :package: |
| [curl](https://github.com/curl/curl) | ? | currency conversion | :heavy_check_mark: :white_square_button: |
| [openssl](https://github.com/openssl/openssl) | 1.1.1 | for curl, sha256 sum and message encryption | :heavy_check_mark: |
| [Qt](https://www.qt.io/) | 5.15.x | graphical user interface | :heavy_check_mark: |
| [stduuid](https://github.com/mariusbancila/stduuid) | ? | unique id generation | :heavy_check_mark: :white_square_button: :package: |
| [linenoise](https://github.com/antirez/linenoise) | ? | command line interface | :heavy_check_mark: :white_square_button: :package: |
| [lua](https://www.lua.org/) | 5.1.5 | configuration script | :heavy_check_mark: :package: |
| [cxxopts](https://github.com/jarro2783/cxxopts) | ? | command line option parser | :heavy_check_mark: :package: |
| [libi2pd](https://github.com/PurpleI2P/i2pd) | latest | network proxy | :heavy_check_mark: :package: |
| [i2psam](https://github.com/i2p/i2psam) | ? | network proxy | :grey_question: :package: |
### Compiling neroshop from source
**0. Install prerequisites**
Debian/Ubuntu
```bash
sudo apt install build-essential cmake git
```
Arch
```bash
sudo pacman -Sy --needed base-devel cmake git
```
Fedora
```bash
sudo dnf install gcc gcc-c++ make cmake git
```
**1. Clone neroshop (and its submodules)**
```bash
git clone --recurse-submodules https://github.com/layters/testshop.git
```
```bash
cd testshop
```
**2. Install dependencies**
Debian/Ubuntu
```bash
# neroshop
sudo apt install libcurl4-openssl-dev libssl-dev qtdeclarative5-dev qml-module-qt-labs-platform qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-shapes qml-module-qtquick-dialogs
# monero-cpp (monero)
sudo apt update && sudo apt install pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache
```
Arch (missing Qt/QML libraries)
```bash
# neroshop
sudo pacman -Sy --needed curl openssl qt5-declarative
# monero-cpp (monero)
sudo pacman -Syu --needed boost openssl zeromq libpgm unbound libsodium libunwind xz readline expat gtest python3 ccache qt5-tools hidapi libusb protobuf systemd
```
Fedora (missing Qt/QML libraries)
```bash
# neroshop
sudo dnf install libcurl-devel openssl-devel
# monero-cpp (monero)
sudo dnf install boost-static libstdc++-static pkgconf boost-devel openssl-devel zeromq-devel openpgm-devel unbound-devel libsodium-devel libunwind-devel xz-devel readline-devel expat-devel gtest-devel ccache qt5-linguist hidapi-devel libusbx-devel protobuf-devel protobuf-compiler systemd-devel
```
**3. Update monero-cpp submodules**
```bash
cd external/monero-cpp && ./bin/update_submodules.sh
```
```bash
cd external/monero-project
```
**4. Install expat and unbound (May be required to build monero-project on Debian/Ubuntu otherwise, this step can be skipped):**
```bash
wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2
tar -xf expat-2.4.8.tar.bz2
sudo rm expat-2.4.8.tar.bz2
cd expat-2.4.8
./configure --enable-static --disable-shared
make
sudo make install
cd ../
```
```bash
wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.19.0.tar.gz
tar xzf unbound-1.19.0.tar.gz
sudo apt update
sudo apt install -y build-essential
sudo apt install -y libssl-dev
sudo apt install -y libexpat1-dev
sudo apt-get install -y bison
sudo apt-get install -y flex
cd unbound-1.19.0
./configure --with-libexpat=/usr --with-ssl=/usr
make
sudo make install
cd ../
```
<!-- git submodule update --init --force --recursive --> <!-- <= call this before building monero -->
**5. Build monero-project to create .a libraries**
```bash
make release-static -j$(nproc)
```
```bash
cd ../../../../
```
**6. Build neroshop**
To build with [**CMake**](https://cmake.org/):
```bash
# Build external libraries
cd external/
cmake .
make -j$(nproc)
cd ..
```
```bash
# Build neroshop
cd build
cmake .. #-DNEROSHOP_BUILD_CLI=1 #-DNEROSHOP_BUILD_TESTS=1
make -j$(nproc)
```
**7. Run neroshop**
```bash
# Run neroshop
./neroshop
```
## Contributing
See [Wiki](https://github.com/layters/testshop/wiki)
## License
This project is licensed under the [GNU General Public License v3.0](LICENSE)
## Donations
**Monero (XMR):**
```
83QbQvnnyo7515rEnW8XwF1hbP5qMab6sHXFzP6pg3EKGscgXCbVjbt1FX5SF7AV9p4Ur1tiommuQSzrQQRHkZicVYu6j8Y
```
<p align="center">
<a href="monero:83QbQvnnyo7515rEnW8XwF1hbP5qMab6sHXFzP6pg3EKGscgXCbVjbt1FX5SF7AV9p4Ur1tiommuQSzrQQRHkZicVYu6j8Y" target="_blank"><img src="assets/images/donate_xmr.png" width="128" height="128"></img></a>
</p>
**Wownero (WOW):**
```
WW2pQTQWHpyJf2CHrCmZG7Tn3zBnYRZTH8g4U3pSZf5s6xsTXrZc9odDWmrWzjRc9MMQWrKXxjHsRdzH5JpJ7kzx1jZuSVSfi
```
<p align="center">
<a href="wownero:WW2pQTQWHpyJf2CHrCmZG7Tn3zBnYRZTH8g4U3pSZf5s6xsTXrZc9odDWmrWzjRc9MMQWrKXxjHsRdzH5JpJ7kzx1jZuSVSfi" target="_blank"><img src="assets/images/donate_wow.png" width="128" height="128"></img></a>
</p>
[**OpenAlias**](https://openalias.org/):
`donate.neroshop.org` or `donate@neroshop.org`
## Resources
- Website: [neroshop.org](https://neroshop.org/)
- DHT Specification: [specs](https://github.com/layters/specs)
- Git Mirrors:
- [Codeberg](https://codeberg.org/layter/neroshop)
- [Gitea](https://git.wownero.com/layter/neroshop)
- [Radicle](https://radicle.xyz): `rad:z2Y72SYpHTkiRXrn4hkZaf1VYhc7J`
- Lemmy: https://monero.town/c/neroshop
- Mail: neroshop@protonmail.com
- Matrix Rooms:
- [#neroshop:matrix.org](https://matrix.to/#/#neroshop:matrix.org)
- [#neroshop-dev:matrix.org](https://matrix.to/#/#neroshop-dev:matrix.org)
## Thanks
* [u/EchoingCat](https://www.reddit.com/user/EchoingCat/) — for the revision of the official neroshop logo
* [woodser](https://github.com/woodser) — for his guidance and for his work on the monero-cpp library which has made the development of this app possible
* [yuriio147](https://github.com/yuriio147) — for his work on various QML components, the currency converter, wallet address qr provider, image loader and image provider, fixing a major bug in the RSA encryption code, the RSA signing and verifying functions, and for teaching me some Qt/QML techniques
* [lza_menace](https://twitter.com/lza_menace) — for creating the new monero.fail JSON API endpoint
* everyone in our matrix room — for sharing many great ideas that have been useful to the project
[//]: # (./clean.sh)
[//]: # (git checkout -b main)
[//]: # (git add .gitignore .gitmodules assets/ cmake/ CMakeLists.txt external/ LICENSE qml/ qml.qrc README.md src/ tests/)
[//]: # (git commit -m"..." or git commit -a --allow-empty-message -m "")
[//]: # (git push -u origin backup --force)
[//]: # (https://git.wownero.com/layter/neroshop/settings => Mirror Settings => Synchronize Now)
[//]: # (removing an external lib from submodules index: git rm --cached path/to/submodule)