mirror of https://github.com/layters/testshop
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.
270 lines
13 KiB
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)
|