BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

Overview

BitcartCC

Github All Contributors CircleCI Codecov Python versions

BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

Linked repositories

Our ecosystem consists of a few packages, this is our central repository.

It is recommended to propose feature requests to BitcartCC ecosystem as a whole on that repository.

Full list of our repositories:

https://github.com/bitcartcc/bitcart - BitcartCC Core Daemons and Merchants API

https://github.com/bitcartcc/bitcart-admin - The admin panel of BitcartCC

https://github.com/bitcartcc/bitcart-store - BitcartCC ready store

https://github.com/bitcartcc/bitcart-docker - Docker packaging, base for all deployment methods

https://github.com/bitcartcc/bitcart-sdk - Python library for coins connection

https://github.com/bitcartcc/bitccl - The BitCCL scripting language for checkout flow automation

https://github.com/bitcartcc/bitcart-docs - BitcartCC documentation

https://github.com/bitcartcc/bitcart-site - BitcartCC official site

Docs

Docs are available at https://docs.bitcartcc.com or in our docs repository

Contributing

See our contributing guidelines for details.

Contributors

Thanks goes to these wonderful people (emoji key):


MrNaif2018

🚧 💻 📖 🎨

tomasmor42

💻

Yağız Değirmenci

💻

Weidong Sun

💻

kartecianos

💻

CYBORG

🎨

Saksham Singh

🎨

Orestis Charalampakos

🎨 💻

TobyAsE

💻 🎨

Shadman Ahmed

🎨

Karol Trzeszczkowski

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Copyright and License

Copyright (C) 2019 MrNaif2018

Licensed under the GPLv3+

Comments
  • [FEATURE] Please consider a copyright license that protects the users of this software.

    [FEATURE] Please consider a copyright license that protects the users of this software.

    Your project is labeled to use the MIT license, which is an open source license but it has the strict allowance that code under this license can be re-released by anyone later as closed source.

    The direct effect is that while todays release is open source, there is no way to know that next month your organization does not decide to relicense to a closed source version. We just have your promise to not do that.

    This is a huge risk to merchants. Merchants that would use this product want to receive updates, may want to pay someone to build features and generally want to make sure that they don't lock themselves into a dead-end project.

    Maybe also relevant for your own motivation is that any competitor can come and fork your project and compete against you with a closed source project using your own code as a basis.

    Describe the solution you'd like

    Please consider relicensing your project to use a so called "copyleft" license which disallows you or anyone else from using this code against the userbase. I personally prefer GPLv3 for this.

    Additional context

    In Bitcoin Cash we had several cases where companies did follow the route I explained, which cost the community a lot.

    The first is that the company nchain has relicensed their fork of one full node to no longer be open source. Code that goes in there can not be copied by others, they had some rule about the code being limited to their chain only.

    The second is that the Bitcoin,com wallet was forked from another and after a year of development and getting a lot of people using their product, they stopped posting sources. They effectively made it closed source.

    Neither of these actions is possible with any of the GPL licenses. Please consider protecting your users by adopting a GPL license.

    enhancement 
    opened by zander 29
  • Add authentification to API

    Add authentification to API

    Our bitcart backend API is written in fastapi. It is located in main.py file andapi/ folder. Currently it is accessible by everyone. We should add authentification, either Token, or JWT, or some other kind of auth. Some useful links: https://fastapi.tiangolo.com/tutorial/security/intro/ https://fastapi.tiangolo.com/tutorial/security/get-current-user/ https://fastapi.tiangolo.com/tutorial/security/first-steps/ https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/

    The user model is defined in schemes.py(pydantic validation for output in API), and database model in models.py. Also, when user is logged in API should be restricted to displaying only those wallets, store, products, invoices that user have. User has is_superuser value, if it is True, then all data should be displayed. If user is not superuser, users list might not be accessible at all, or there should be a new endpoint added: /users/current Or /profile Returning logged user info.

    help wanted Community decision hacktoberfest 
    opened by MrNaif2018 19
  • [BUG]After I created a wallet, I got an error(I configured an ETH testnet installation.)

    [BUG]After I created a wallet, I got an error(I configured an ETH testnet installation.)

    Hi,

    This project is amazing, absolutely underestimated. I love it!

    Describe the bug After I created a wallet, a tip error appeared above the ID column of the datatable: "Error loading wallet. Either the currency of this wallet is no longer supported or it was disabled on the server. Check server logs for more information"

    To Reproduce Steps to reproduce the behavior:

    I configured an ETH testnet installation(I unchecked BTC installation and no lightning). Installation is done successfully. I can open admin panel and store.

    1. Create a wallet
    2. Set contract to USDT
    3. Set xpub to Metamask's public key
    4. Save

    Server:

    • OS: Ubuntu 20.04(self-hosted)
    • Version 20.04
    bug 
    opened by fintechee 14
  • Docker install does not work on Ubuntu 20.04

    Docker install does not work on Ubuntu 20.04

    I tried multiple install settings, several rebuilds. It all starts fine, trying to connect via HTTPS gives a 500 Internal server error. .. one time I got an API error instead. Nothing I tried worked. Any magic I'm missing?

    bug 
    opened by Jayd603 13
  • [FEATURE] Making contributions easier

    [FEATURE] Making contributions easier

    First of all congrats @MrNaif2018 and @xiaoxianma :tada: :rocket: it is been a long time since i glanced at Bitcart, but it looks really stable and neat right now. But i have a one concern, repository having a lack of documentation, especially for contributors, setting up environment manually and a poor CONTRIBUTING.md could be frustrating for newcomers.

    But i think it can be imrpoved easily. What do you guys think about this?

    enhancement 
    opened by ycd 9
  • Add alembic migrations to the project

    Add alembic migrations to the project

    Bitcart backend API uses gino orm(kind of orm), which is executing sqlalchemy core queries via async database driver. But there are no migrations yet, so user data might be broken if we won't add migrations. All is needed is to setup alembic with that project, and add applying migrations code somewhere in docker-entrypoint.sh. But as bitcart is using async orm, we might need to find alternate solution for that if it is possible. Also any ideas on using a better orm are appreciated. In future we might switch to edgedb at all.

    help wanted hacktoberfest 
    opened by MrNaif2018 8
  • Pyre type error fixed

    Pyre type error fixed

    "filename": "api/schemes.py" "warning_type": "Incompatible attribute type [8]" "warning_message": " Attribute underpaid_percentage declared in class StoreCheckoutSettings has type Decimal but is used as type int." "warning_line": 142 "fix": Decimal to int

    opened by luca-digrazia 6
  • Update web.txt

    Update web.txt

    Gino does not work with sqlalchemy 1.4, throwing an error when running the alembic command. This allows the alembic command to run by forcing 1.3. AttributeError: module 'sqlalchemy.sql.schema' has no attribute '_schema_getter'

    opened by StevenWilliams 6
  • Backend improvements

    Backend improvements

    This issue contains a list of improvements for our backend (Python):

    • [x] General refactor, make it easier to add new features, do something with constantly growing utils.py files and others, possibly by splitting it into separate apps. Create more utilities
    • [x] Either switch to sqlalchemy 1.4/2.0 or create model-level utilities for managing many-to-many relationships and others, to avoid repetitions and bugs
    • [x] Clearly separate different stages: models (database), validators (sync checks), async checks of the data, and the actual views
    • [x] Probably squash alembic migrations into one Not required and might cause issues upgrading from old versions
    • [x] Use unique non-int ids for objects (i.e. secrets.token_urlsafe()) (see #221)
    • [x] Add functional testing of the invoice processing functions (just like in SDK, set up regtest network and test that payments are detected correctly) (see #226)
    • [x] Test IPNs sending (#226)
    • [x] Test other hard-to-test things in functional testing
    • [x] Test SDK in all python versions instead of one
    • [x] Add CI cache everywhere where possible
    • [x] Improve contributing guidelines and document code more
    • [x] Improve search, add ability to search by special fields, or to search all objects created in the last 7 days/day/month, custom filters support in search directly (for example, filter invoices by store)
    • [x] Fix worker timeouts (#158)
    • [x] Plugins support, see #242
    enhancement 
    opened by MrNaif2018 6
  • [FEATURE] Odoo Integration

    [FEATURE] Odoo Integration

    Is your feature request related to a problem? Please describe. https://www.odoo.com/fr_FR/app/ecommerce

    Describe alternatives you've considered https://github.com/monero-integrations/moneroodoo

    enhancement 
    opened by TheNexter 5
  • [BUG] Worker raises: aioredis.exceptions.ResponseError: wrong number of arguments for 'hset' command

    [BUG] Worker raises: aioredis.exceptions.ResponseError: wrong number of arguments for 'hset' command

    Describe the bug

    Running the worker python worker.py raises an exception: aioredis.exceptions.ResponseError: wrong number of arguments for 'hset' command

    (env) [email protected]:/var/www/bitcart$ python worker.py 
    2022-08-04 21:01:54,133 - [PID 23060] - api.settings.log_startup_info [line 229] - INFO - BitcartCC version: 0.6.8.1 - https://bitcartcc.com - https://github.com/bitcartcc/bitcart
    2022-08-04 21:01:54,142 - [PID 23060] - api.settings.log_startup_info [line 230] - INFO - Python version: 3.9.9 (main, Jan 11 2022, 09:25:52) 
    [GCC 6.3.0 20170516]. On platform: Linux-4.9.0-19-amd64-x86_64-with-glibc2.24
    2022-08-04 21:01:54,143 - [PID 23060] - api.settings.log_startup_info [line 231] - INFO - BITCART_CRYPTOS=btc; IN_DOCKER=False; LOG_FILE=None
    2022-08-04 21:01:54,143 - [PID 23060] - api.settings.log_startup_info [line 235] - INFO - Successfully loaded 1 cryptos
    2022-08-04 21:01:54,143 - [PID 23060] - api.settings.log_startup_info [line 236] - INFO - 17 notification providers available
    2022-08-04 21:01:54,150 - [PID 23060] - api.settings.internal_error_handler [line 213] - ERROR - 
    Traceback (most recent call last):
      File "/var/www/bitcart/worker.py", line 78, in <module>
        asyncio.run(main())
      File "/usr/local/lib/python3.9/asyncio/runners.py", line 44, in run
        return loop.run_until_complete(main)
      File "/usr/local/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
        return future.result()
      File "/var/www/bitcart/worker.py", line 45, in main
        await tor_ext.refresh(log=False)  # to pre-load data for initial requests
      File "/var/www/bitcart/api/ext/tor.py", line 112, in refresh
        await settings.settings.redis_pool.hset(
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/client.py", line 1085, in execute_command
        return await self.parse_response(conn, command_name, **options)
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/client.py", line 1101, in parse_response
        response = await connection.read_response()
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/connection.py", line 919, in read_response
        raise response from None
    aioredis.exceptions.ResponseError: wrong number of arguments for 'hset' command
    
    Traceback (most recent call last):
      File "/var/www/bitcart/worker.py", line 78, in <module>
        asyncio.run(main())
      File "/usr/local/lib/python3.9/asyncio/runners.py", line 44, in run
        return loop.run_until_complete(main)
      File "/usr/local/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
        return future.result()
      File "/var/www/bitcart/worker.py", line 45, in main
        await tor_ext.refresh(log=False)  # to pre-load data for initial requests
      File "/var/www/bitcart/api/ext/tor.py", line 112, in refresh
        await settings.settings.redis_pool.hset(
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/client.py", line 1085, in execute_command
        return await self.parse_response(conn, command_name, **options)
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/client.py", line 1101, in parse_response
        response = await connection.read_response()
      File "/var/www/bitcart/env/lib/python3.9/site-packages/aioredis/connection.py", line 919, in read_response
        raise response from None
    aioredis.exceptions.ResponseError: wrong number of arguments for 'hset' command
    

    To Reproduce Steps to reproduce the behavior:

    1. Follow the manual deployment steps
    2. Run python3 worker.py

    Expected behavior

    Expect the worker to run and not raise an exception

    Environment (please complete the following information):

    • OS: Debian GNU/Linux 9.13 (stretch)
      
    • Bitcart version: Version 0.6.8.1
      
    • yarn --version: 3.2.2
      
    • npm -v: 8.5.5
      
    • nodejs -v: v17.9.0
      
    bug 
    opened by surfer190 4
  • [FEATURE] Release as Nextcloud App

    [FEATURE] Release as Nextcloud App

    Have you considered publishing BitcartCC as a Nextcloud app?

    I could imagine lots of people finding out about the possibility to make a store using crypto by seeing the app in the Nextcloud app repository. A Nextcloud install already comes with its own database and everything, so ideally the installation would be a one-click process as with most other NC apps.

    Certain user groups could be set to be allowed to edit products, admins could configure the server settings, and standard users could purchase items. Optionally the BitcartCC interface could be accessible outside of Nextcloud too, though I think it'd be better to just allow guest logins in Nextcloud. Depending on the type of Nextcloud instance the server may already have the customer's name and address, meaning that information wouldn't have to be typed in since the customer is already known. Digital items could be delivered right into the file storage of the user. Receipts could be stored directly in the customer's storage. Special user ranks could be up for purchase, eg for more storage space or to get access to additional Nextcloud apps. etc

    What do you think of that idea?

    enhancement 
    opened by kevATin 2
  • Add tests for hcaptcha integration

    Add tests for hcaptcha integration

    As we've recently gained hcaptcha support, it would be good to run tests in a staging environment

    Relevant code: https://github.com/bitcartcc/bitcart/blob/4a6021a0e950f29f9963f54d92f44ae604b58ac7/api/views/token.py#L74-L84 Docs: https://docs.hcaptcha.com/#integration-testing-test-keys

    help wanted good first issue 
    opened by MrNaif2018 0
  • Update all non-major dependencies

    Update all non-major dependencies

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | Pending | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---|---|---|---| | cimg/go | docker | minor | 1.18 -> 1.19 | | age | adoption | passing | confidence | | sqlalchemy (changelog) | | minor | <1.4 -> <1.5 | 1.4.46 | age | adoption | passing | confidence |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 1
  • BCH regtest tests

    BCH regtest tests

    This is obviously a draft and isn't fully set up yet. Tests were able to complete, now we need to think of a way to run regtest tests for both coins

    Depends on Electron-Cash/Electron-Cash#2319

    opened by MrNaif2018 0
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Pending Approval

    These branches will be created by Renovate only once you click their checkbox below.

    • [ ] Update dependency protobuf to v4

    Awaiting Schedule

    These updates are awaiting their schedule. Click on a checkbox to get an update now.

    • [ ] Refresh pip-compile outputs

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    circleci
    .circleci/config.yml
    • circleci/postgres 12-alpine-ram
    • cimg/go 1.18
    gomod
    cli/go.mod
    • go 1.18
    • github.com/joho/godotenv v1.4.0
    • github.com/urfave/cli/v2 v2.23.7
    • github.com/ybbus/jsonrpc/v3 v3.1.1
    pip-compile
    requirements/base.txt
    requirements/daemons/bch.txt
    • aiohttp <4.0
    • protobuf <4
    requirements/daemons/bnb.txt
    • aiohttp <4.0
    requirements/daemons/bsty.txt
    • protobuf <4
    requirements/daemons/btc.txt
    • protobuf <4
    requirements/daemons/eth.txt
    • aiohttp <4.0
    requirements/daemons/grs.txt
    • protobuf <4
    requirements/daemons/ltc.txt
    • protobuf <4
    • scrypt >=0.6.0
    requirements/daemons/matic.txt
    • aiohttp <4.0
    requirements/daemons/sbch.txt
    • aiohttp <4.0
    requirements/daemons/trx.txt
    • aiohttp <4.0
    requirements/daemons/xmr.txt
    • aiohttp <4.0
    requirements/daemons/xrg.txt
    • aiohttp <4.0
    • protobuf <4
    requirements/dev.txt
    requirements/lint.txt
    requirements/production.txt
    requirements/test.txt
    requirements/web.txt
    • sqlalchemy <1.4

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
Releases(0.7.0.1)
Owner
BitcartCC
Your self-hosted, open-source cryptocurrency all-in-one solution
BitcartCC
A minimalist GUI frontend for the youtube-dl. Takes up less than 4 KB.

📥 libre-DL A minimalist GUI wrapper for youtube-dl. Written in python. Total size less than 4 KB. Contributions welcome. You don't need youtube-dl pr

40 Sep 23, 2022
Nginx UI allows you to access and modify the nginx configurations files without cli.

nginx ui Table of Contents nginx ui Introduction Setup Example Docker UI Authentication Configure the auth file Configure nginx Introduction We use ng

David Schenk 4.3k Dec 31, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Dec 29, 2022
Extendable, adaptable rewrite of django.contrib.admin

django-admin2 One of the most useful parts of django.contrib.admin is the ability to configure various views that touch and alter data. django-admin2

Jazzband 1.2k Dec 29, 2022
Video Visual Relation Detection (VidVRD) tracklets generation. also for ACM MM Visual Relation Understanding Grand Challenge

VidVRD-tracklets This repository contains codes for Video Visual Relation Detection (VidVRD) tracklets generation based on MEGA and deepSORT. These tr

25 Dec 21, 2022
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Xadmin Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap. Liv

差沙 4.7k Dec 31, 2022
A jazzy skin for the Django Admin-Interface (official repository).

Django Grappelli A jazzy skin for the Django admin interface. Grappelli is a grid-based alternative/extension to the Django administration interface.

Patrick Kranzlmueller 3.4k Dec 31, 2022
Real-time monitor and web admin for Celery distributed task queue

Flower Flower is a web based tool for monitoring and administrating Celery clusters. Features Real-time monitoring using Celery Events Task progress a

Mher Movsisyan 5.5k Dec 28, 2022
Material Design for Django

Django Material Material design for Django. Django-Material 1.7.x compatible with Django 1.11/2.0/2.1/2.2/3.0/3.1 Django-Material 1.6.x compatible wit

Viewflow 2.5k Jan 01, 2023
Django Semantic UI admin theme

Django Semantic UI admin theme A completely free (MIT) Semantic UI admin theme for Django. Actually, this is my 3rd admin theme for Django. The first

Alex 69 Dec 28, 2022
A modern Python package manager with PEP 582 support.

A modern Python package manager with PEP 582 support.

Python Development Master(PDM) 3.6k Jan 05, 2023
A curated list of the latest breakthroughs in AI by release date with a clear video explanation, link to a more in-depth article, and code.

A curated list of the latest breakthroughs in AI by release date with a clear video explanation, link to a more in-depth article, and code

Louis-François Bouchard 2.9k Jan 08, 2023
Freqtrade is a free and open source crypto trading bot written in Python

Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram. It contains backtesting, plotting and money man

20.2k Jan 02, 2023
Jinja is a fast, expressive, extensible templating engine.

Jinja is a fast, expressive, extensible templating engine. Special placeholders in the template allow writing code similar to Python syntax.

The Pallets Projects 9k Jan 04, 2023
Python Crypto Bot

Python Crypto Bot

Michael Whittle 1.6k Jan 06, 2023
Manuskript is an open-source tool for writers.

Manuskript is an open-source tool for writers. Manuskript runs on GNU/Linux, Mac OS X, and Windows.

Olivier 1.4k Jan 07, 2023
Jet Bridge (Universal) for Jet Admin – API-based Admin Panel Framework for your application

Jet Bridge for Jet Admin – Admin panel framework for your application Description About Jet Admin: https://about.jetadmin.io Live Demo: https://app.je

Jet Admin 1.3k Dec 27, 2022
FLEX (Federated Learning EXchange,FLEX) protocol is a set of standardized federal learning agreements designed by Tongdun AI Research Group。

Click to view Chinese version FLEX (Federated Learning Exchange) protocol is a set of standardized federal learning agreements designed by Tongdun AI

同盾科技 50 Nov 29, 2022
The script that able to find admin panels

admin_panel_finder The script will try to request possible admin panels by reading possible admin panels url then report as 200 YES or 404 NO usage: p

E-Pegasus 3 Mar 09, 2022
A Django app that creates automatic web UIs for Python scripts.

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data anal

Wooey 1.9k Jan 01, 2023