Giter VIP home page Giter VIP logo

xcite.old's Introduction

xcite_update_github

X C I T E

XTRABYTES Consolidated Interactive TErminal

XCITE is the core application utilizing the XTRABYTES Proof-of-Signature blockchain protocol. Built to support modules like a decentralized exchange and a fully-integrated chat protocol. The code-fluid architecture will let any developer use the XTRABYTES API and create their dream project. XCITE is poised to be a top contender in all-in-one decentralized applications.

Our Mission

We aim to deliver a blockchain platform that provides users with superior speed, security, and scalability over present blockchain offerings. We have crafted a unique Proof of Signature consensus algorithm that obtains these benefits in an economical and eco-friendly manner. Our platform’s modular nature will allow users to assume an infinite capacity for growth. And with modularity driving our development pipeline, we will be able to institute enhanced usabilities for programmers and end-users alike. This includes code-agnostic APIs, superior technical support, and best-in-class user interfaces. All to achieve our vision of having users and developers view XTRABYTES as the premier blockchain platform within the cryptocurrency world.

Table of Content

Features

xcite_android_github forthebadge forthebadge

A few of the things you can do with XCITE:

  • Ability to register several user accounts
  • Wallet keys can be saved on your local device or on our servers
  • Retrieve registered user accounts on different devices and platforms
  • Import and export addresses
  • Import private keys onto any supported devices
  • Track and monitor the balance of wallets without the need of private keys
  • Open device applications directly from the XCITE mobile app, such as the phone (call) app, sms/message app and email app
  • Choose from 2 different wallet modes
    • View only mode (no transactions allowed)
    • Active view mode (transactions are allowed)
  • Create and store contact entries such as phone numbers and emails
  • Pinlock code authentication available for added security
  • Receive notification alerts when wallet balance changes
  • Real time market prices
  • 24 hour XBY, XFUEL, BTC and ETH price monitor
  • Mobile platform available for Android and iOS
  • Desktop platform available for Windows, macOS and Linux

Statistics

Some information regarding XCITE and its development:

GitHub contributors GitHub last commit GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub repo size GitHub code size in bytes GitHub language count GitHub top language

Status:

Website Website

Getting Started

Prerequisites (Windows)

Prerequisites for Windows deployment:

Prerequisites (macOS)

Prerequisites for macOS deployment:


Dependencies

Dependencies are a set of resource files (modules, libraries) used in the creation of the application. Pre-compiled dependencies can be used or they can be compiled, from source, with the correct compiler.
Libraries or modules can include configuration data, documentation, message templates, subroutines, classes, values or type specifications.

Required dependencies for the desktop platform (Windows, macOS, Linux):

Required dependencies for the mobile platform (Android, iOS):

  • The required dependencies are already included and can be found inside the XCITE /dependencies folder. There is no need to compile them.

MinGW (Windows only)

MinGW is recommended when compiling libraries in Windows. You can download the MinGW compiler for Windows here.

  • MinGW provides a complete open source programming toolset for developers working on the Windows platform. It includes a port of the GNU Compiler Collection (GCC), including C, C++ and other compilers.
  • MSYS is an alternative to Microsoft's cmd.exe. It provides a general purpose command line environment, suited for use with MinGW.
  • Complete instructions guide

Compiling (Desktop platforms only)

Compiling converts source code (in our case, the dependency files) to binary or object code (the files needed for the XCITE app build). A compiler is a program (or set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language, often having a binary form known as object code).

Note that the compiling procedures in the macOS and Linux systems are similar to Windows. Use the Windows example as a reference.

Create a folder where you are going to copy the required dependencies, for example, C:\deps.

Boost (Windows example)

  • Open a Windows command prompt line and inside the boost folder type:
    • bootstrap.bat mingw
    • b2 --build-type=complete --with-chrono --with-filesystem --with-program_options -- with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage

Berkeley DB 4.8.30 NC (Windows example)

  • Using the MinGW command prompt window type:
    • cd db-4.8.30.NC/build_unix
    • Still inside the build_unix folder type:
      • ../dist/configure --enable-mingw --enable-cxx --disable-shared --disablereplication
    • Once it finishes aggregating all the necessary files, type:
      • Make

Openssl 1.0.2q

Follow the instructions on how to compile openssl libraries (Windows example).

  • Complete instructions guide

Editing the .pro file

Edit the xcitedesk.pro file to include the correct paths of the compiled dependencies. See the example below:

xcite-pro-file


Install Qt

XCITE development requires the Qt cross-platform framework. If you don't have Qt installed you can download it from here for free.
QT includes Qt Creator, an integrated development environment (IDE). Qt Creator comes with a wide range of integrated tools for both developers and designers.

macOS NOTE: Before installing Qt, you first need to install Xcode.

Our development is currently targeting Qt 5.11.3 and up. When the Qt installer asks which Qt components to install, select the following components and a compiler suitable to your development environment:

  • Qt 5.11.3 -> Qt Charts (Required --> All platforms)
  • Qt 5.11.3 -> MinGW 5.3.0 32 bit (Windows compiler)
  • Developer and Designer Tools -> MinGW 5.3.0 32 bit (Windows compiler)
  • Qt 5.11.3 -> macOS (Mac components --> Desktop)
  • Qt 5.11.3 -> iOS (Mac components --> Mobile)
  • Qt 5.11.3 -> Android ARMv7 (Android physical device components)
  • Qt 5.11.3 -> Android x86 (Android virtual device components)

Windows installer options qt-windows-installation

Once the Qt installation is complete, clone or download the XCITE repository.
Edit the .pro file accordingly and open the xcitedesk.pro (for the desktop platform) or the xcite.pro (for the mobile platform) using Qt Creator.

Project Configuration (Android)

Configuring Java, Android SDK and Android NDK in Qt Creator. And the versions best suited for development.

Java is a widely used programming language, designed to be used in a distributed environment, as is often the case with the Android platform. The Android SDK (software development kit) is a set of development tools used to develop applications for the Android platform. The Android NDK (Native Development Kit) is a companion tool to the Android SDK that lets developers build performance-critical portions of the apps in native code. It provides headers and libraries that allow developers to build activities, handle user input, use hardware sensors, access application resources, and more, when programming in C or C++.

Prerequisites for Android deployment:

There is no need to download and install Android Studio (SDK). The Android SDK command tools contain all the necessary files.

In the Qt project, choose the Android kit that corresponds to your target device:

  • Android for ARM if using physical device
  • Android for x86 if using an emulator

In Qt Options --> Devices --> Android, confirm that the prerequisite paths are correct. Once finished, your project configuration should have the following appearance and you should be able to select the necessary kit:

QT options

  • Complete instructions guide

Project Configuration (iOS)

Again, if you have not installed the necessary files, please do so.

Prerequisites for iOS deployment:

You need to select the correct kit for the mobile version in Qt Creator:

  • Qt (xx version) for iOS --> the mobile version

Xcode, developed by Apple, provides a suite of software development tools, similar to the Qt platform, for coding, testing and creating application. While Qt can be used to create macOS and iOS applications, we recommend using Xcode for iOS project builds.
To use Xcode, it is necessary to create a .xcodeproj file to be able to build the iOS XCITE application. Qt will generate the file. Once it is generated, Xcode can use it to make the iOS build.

An Apple ID can be used to obtain the Apple Developer account. The basic privileges of an Apple Developer account are available for free. It will grant access to developer forums, beta updates and the ability to use Xcode to build, deploy and test apps on our own devices.

To generate the .xcodeproj file:

  • Open the xcite.pro in QT
  • Go to Build --> Run qmake

QT qmake

  • Go to your XCITE folder and search for the newly created .xcodeproj file

mac folder

  • Open the .xcodeproj file in Xcode and choose Product --> Build

iOS build

Qt Troubleshooting Advice

QMake is a fundamental part of Qt that serves the function of creating a make file. QMake not installing properly is usually attributed to user error and can be simply solved. If you run into a QMake issue during your Qt installation process follow these troubleshooting tips.

If this issue arises you should first try the following steps before performing a reinstallation of Qt:

  1. Ensure antivirus did not keep QMake from installing during the installation process.

  2. Ensure proper Kit is selected/detected by going to Tools --> Options --> Build & Run --> Kits.

  • If no kit is selected or all kits are errored out, you will need to either manually install a kit or perform a reinstallation
  1. Ensure a compiler is installed by checking Tools --> Options --> Build & Run --> Compilers.
  • If no compiler is installed you will need to either reinstall or manually install MinGW version 5.3.0

Other Qt errors:

  1. Edit the xcitedesk.pro file to include the correct paths of the compiled dependencies.
  • If the paths do not exist or are incorrect, you will get several Qt errors leading to compiling failure
  1. Ensure you have an Apple Developer Account (create one) when compiling the iOS version.

Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found.

  • To avoid the above error message, make sure you have a valid Apple Developer account. In XCODE go to Preferences --> Accounts and enter your account details.

XCITE Desktop Screenshots

xcite-testnet-2-21-18

Testnet Interaction xcite-testnet-2-21-18

XCITE -> Home image

XCITE -> Testnet Interaction (Debug Console)

xcite-console2

XCITE -> Send Coins image

XCITE -> Receive Coins image

XCITE -> Settings image

X-CHANGE -> Home image

X-CHAT -> Home image

XCITE Mobile Screenshots

XCITE Mobile -> Start

XCITE Mobile -> Home

XCITE Mobile -> Transfer

Contributing

If you would like to contribute to XCITE development, please contact us. We would love to hear from you.

Submit any bugs through the project's tracker:

Issues

Frequently Asked Questions

1. Where is the rest of the source code?

Since the Proof of Signature consensus algorithm is still closed-source, this repository does not yet include the complete source code. We understand that the public needs to be able to review the source code and will publish the remaining source code as soon as it's ready.

2. What platforms does XCITE plan to support?

  • Linux Desktop
  • Android devices
  • Apple Desktop (macOS)
  • iPhone/iPad (iOS)
  • Windows desktop

3. Where can I learn more about XTRABYTES?


xcite.old's People

Contributors

borzalom avatar dannyboz1987 avatar fluorine avatar goldeneyexby avatar jcpbs avatar jpilgrim6 avatar justin-smith avatar magik100 avatar max-meldrum avatar nrocy777 avatar p-mc2 avatar tuukkape avatar xbygdm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xcite.old's Issues

Add Style Guide

Create STYLEGUIDE.md

Adopt Qt's "QML Coding Conventions" as a style guide to help keep our coding style consistent.

http://doc.qt.io/qt-5/qml-codingconventions.html

Include a reference to "preferences -> Qt Quick -> QML/JS Editing: Enable auto format on save" as a way of automatically adhering to the style guide when saving any file.

Add mouse hover to DatePicker

In Controls.DatePicker.qml, change the background color of the currently-hovered date on mouse hover. A slightly-lighter version of its current background color should work well.

Improve X-Chat popup UI

The X-Chat popup UI isn't a pixel-perfect replica of the mockups. Change the UI to more accurately reflect the mockups.

Current Design:

image

Mockup Design:

image

Rename ButtonDiode control to ButtonIcon

The name "ButtonDiode" is a carryover from early UI prototypes. Rename the control and change its references from "ButtonDiode" to the more general name "ButtonIcon".

Resize main application window based on available screen size

The main window size is currently statically set which results in window clipping off the edge of the screen when the available screen size isn't sufficient. Change the main window size to size itself down if there isn't enough available screen space.

Naming consistency

All components should follow a consistent naming convention. Need to update the new items I've added so that the language follows through.

XCITE UI/UX Terminology

X-BOARD = A Module
HOME = A View
Balance = A Diode

Fix broken Sign Up button

To reproduce:

  • Run app
  • Click the small 'Sign Up' link at the bottom
  • Click the Sign Up button

Error:
qrc:/main.qml:21:5: QML StackView: replace: qrc:/Login/DashboardForm.qml:-1 No such file or directory

Create view to show search results

It would be nice to create a page to show search results.

In my opinion, ideally:

  • It must be shown on current view as a semi-transparent rectangle under the search bar, or on top of current view just as search works in PluralSight. This would prevent users from losing context. The box should implicitly grow in height with most results.
  • Results should be available for (1) views (xChange, XChat, etc) (2) My Contacts (3) My Addresses

For now, I think results for Views should be enough.

Set and display app version

  • Update the current version in xcite.pro to the upcoming release 0.1.2
  • Display the version in the UI (perhaps in the title bar or "popup" area)

Refactor module menus

Module menus using a bunch of bools to manage what's visible, could probably be simplified to a simplified selectedBoard variable.

Success/failure component

Implement a reusable success/fail component to give the user feedback that an operation was completed successfully.

History Coloring

Current color coding of the history page is confusing with no real indication of why some stuff is blue and others are red. Receives should likely be marked as blue and sends as red. Will add comments to inform future use of such designs.

Is there something I'm missing with the current colors (presumably they're like that to look pretty)? Probably a non-issue but worth fixing for now to avoid confusion.

Expand Address Book Width

Expand address book width when window size is expanded: found in ReceiveCoin

For aesthetic purposes, slightly increase left hand pane

Remove StackView from Login area

Remove the Login area StackView and replace it with visibility changes.

  • The transitions add what almost feels like "lag"
  • We aren't using transitions everywhere else

Implement QML Loaders

Instead of setting visible: true or false to show or hide components, utilize the QML Loader to delay creating the component until it's demanded.

http://doc.qt.io/qt-5/qml-qtquick-loader.html

From the docs:

Loader is used to dynamically load QML components.

Loader can load a QML file (using the source property) or a Component object (using the sourceComponent property). It is useful for delaying the creation of a component until it is required: for example, when a component should be created on demand, or when a component should not be created unnecessarily for performance reasons.

Delete Unnecessary Folders/Files

Number of unnecessary folders and files exist that are unlikely to be used.

Requested Deletion 1: xcite/workarea
Requested Deletion 2: xcite/documentation

Searching for more bloat, will submit pull request when comprehensive search is completed. Let me know if these need to stay in.

Test ScrollBar on Modules

As pointed out by bilen in discord, for some modules it will be necessary to add scroll ability, primarily vertically.

Look into forms and validation in QT/QML

We need a nice set of components for validating forms and feeding back errors to users.

Adding new people to the send coins address list seems like a good fit with which to test this.

Sending of coins without using the addressbook

Currently one can only send coins to the highlighted addressbook entry, even if they have changed the contents of the form.

We ought to handle this nicely:

  • When a user changes the address in the form, perhaps change the UI to make it obvious that they're doing a 'quick send' and deselect the item in the addressbook.
  • Should change related dialogs/messaging to take it into account.

Change ButtonDiode control selection behavior

Currently the ButtonDiode control allows itself to be unselected by clicking on it again after selecting it. The majority of the time (with the exception being the Online indicator, for example) unselection should only be performed by selecting a different ButtonDiode. Add a property to the ButtonDiode control that defaults to not allowing unselection but allows it to be set if needed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.