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) stephen@web:/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
Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app.

Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app. A starting template for developers to customize, build, and even deploy the desired admin console for their DB.

Daqi Chen 1 Sep 10, 2022
With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials.

Django Hijack With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials. Docs See http://django

null 1.2k Jan 5, 2023
WebVirtCloud is virtualization web interface for admins and users

WebVirtCloud is a virtualization web interface for admins and users. It can delegate Virtual Machine's to users. A noVNC viewer presents a full graphical console to the guest domain. KVM is currently the only hypervisor supported.

Anatoliy Guskov 1.3k Dec 29, 2022
With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials.

Django Hijack With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials. Docs 3.x docs are avai

null 1.2k Jan 2, 2023
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
A platform used with frabit-server and frabit

A platform used with frabit-server and frabit

FrabitTech 1 Mar 3, 2022
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 8, 2023
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Jan 7, 2023
Ajenti Core and stock plugins

Ajenti is a Linux & BSD modular server admin panel. Ajenti 2 provides a new interface and a better architecture, developed with Python3 and AngularJS.

Ajenti Project 7k Jan 7, 2023
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 5.2k Dec 29, 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
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 management tools as well as strategy optimization by machine learning.

null 20.2k Jan 2, 2023
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 4.6k Feb 7, 2021
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN δΈ­ζ–‡ζ–‡ζ‘£ Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 1.6k Jan 2, 2023
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
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
A high-level app and dashboarding solution for Python

Panel provides tools for easily composing widgets, plots, tables, and other viewable objects and controls into custom analysis tools, apps, and dashboards.

HoloViz 2.5k Jan 3, 2023
PyMMO is a Python-based MMO game framework using sockets and PyGame.

PyMMO is a Python framework/template of a MMO game built using PyGame on top of Python's built-in socket module.

Luis Souto Maior 61 Dec 18, 2022
Extends the Django Admin to include a extensible dashboard and navigation menu

django-admin-tools django-admin-tools is a collection of extensions/tools for the default django administration interface, it includes: a full feature

Django Admin Tools 731 Dec 28, 2022