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
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
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
A flat theme for Django admin interface. Modern, fresh, simple.

Django Flat Theme django-flat-theme is included as part of Django from version 1.9! πŸŽ‰ Please use this app if your project is powered by an older Djan

elky 416 Sep 22, 2022
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
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
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
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 07, 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
Sandwich Batch Normalization

Sandwich Batch Normalization Code for Sandwich Batch Normalization. Introduction We present Sandwich Batch Normalization (SaBN), an extremely easy imp

VITA 48 Dec 15, 2022
Jazzy theme for Django

Django jazzmin (Jazzy Admin) Drop-in theme for django admin, that utilises AdminLTE 3 & Bootstrap 4 to make yo' admin look jazzy Installation pip inst

David Farrington 1.2k Jan 08, 2023
A cool, modern and responsive django admin application based on bootstrap 5

django-baton A cool, modern and responsive django admin application based on bootstrap 5 Documentation: readthedocs Live Demo Now you can try django-b

Otto srl 678 Jan 01, 2023
A python application for manipulating pandas data frames from the comfort of your web browser

A python application for manipulating pandas data frames from the comfort of your web browser. Data flows are represented as a Directed Acyclic Graph, and nodes can be ran individually as the user se

Schlerp 161 Jan 04, 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 Flask-Admin 5.2k Dec 29, 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
πŸ“± 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
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
GFPGAN is a blind face restoration algorithm towards real-world face images.

GFPGAN is a blind face restoration algorithm towards real-world face images.

Applied Research Center (ARC), Tencent PCG 25.6k Jan 04, 2023
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
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

1.2k Jan 05, 2023
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