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 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
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
There is a new admin bot by @sinan-m-116 .

find me on telegram! deploy me on heroku, use below button: If you can't have a config.py file (EG on heroku), it is also possible to use environment

Sinzz-sinan-m 0 Nov 09, 2021
Python books free to read online or download

Python books free to read online or download

Paolo Amoroso 3.7k Jan 08, 2023
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

1.6k Dec 28, 2022
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 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
Tactical RMM is a remote monitoring & management tool for Windows computers, built with Django and Vue.

Tactical RMM is a remote monitoring & management tool for Windows computers, built with Django and Vue. It uses an agent written in golan

Dan 1.4k Dec 30, 2022
Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Probabilistic machine learning 5.3k Dec 31, 2022
xarray: N-D labeled arrays and datasets

xarray is an open source project and Python package that makes working with labelled multi-dimensional arrays simple, efficient, and fun!

Python for Data 2.8k Dec 29, 2022
django's default admin interface made customizable. popup windows replaced by modals. :mage: :zap:

django-admin-interface django-admin-interface is a modern responsive flat admin interface customizable by the admin itself. Features Beautiful default

Fabio Caccamo 1.3k Dec 31, 2022
An administration website for Django

yawd-admin, a django administration website yawd-admin now has a live demo at http://yawd-admin.yawd.eu/. Use demo / demo as username & passowrd. yawd

Pantelis Petridis 140 Oct 30, 2021
Collection of admin fields and decorators to help to create computed or custom fields more friendly and easy way

django-admin-easy Collection of admin fields, decorators and mixin to help to create computed or custom fields more friendly and easy way Installation

Ezequiel Bertti 364 Jan 08, 2023
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
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
StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery

StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery

3.3k Jan 01, 2023
📱 An extension for Django admin that makes interface mobile-friendly. Merged into Django 2.0

Django Flat Responsive django-flat-responsive is included as part of Django from version 2.0! 🎉 Use this app if your project is powered by an older D

elky 248 Sep 02, 2022
Passhunt is a simple tool for searching of default credentials for network devices, web applications and more. Search through 523 vendors and their 2084 default passwords.

Passhunt is a simple tool for searching of default credentials for network devices, web applications and more. Search through 523 vendors and their 2084 default passwords.

Viral Maniar 1.1k Dec 31, 2022
aiohttp admin is generator for admin interface based on aiohttp

aiohttp admin is generator for admin interface based on aiohttp

Mykhailo Havelia 17 Nov 16, 2022
Legacy django jet rebooted , supports only Django 3

Django JET Reboot Rebooting the original project : django-jet. Django Jet is modern template for Django admin interface with improved functionality. W

215 Dec 31, 2022