Code Monkey home page Code Monkey logo

altalogy / tari Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tari-project/tari

0.0 0.0 0.0 95.92 MB

The Tari protocol

Home Page: https://tari.com

License: BSD 3-Clause "New" or "Revised" License

JavaScript 4.73% CSS 3.87% HTML 0.07% Rust 79.39% Makefile 0.01% Shell 0.72% C 0.93% Dockerfile 0.11% Batchfile 0.16% Inno Setup 0.09% Handlebars 0.19% Python 0.04% PowerShell 0.01% Gherkin 0.83% SCSS 0.03% Vue 0.15% TypeScript 8.68%

tari's People

Contributors

agubarev avatar alex1307 avatar anselld avatar aviator-app[bot] avatar bors[bot] avatar brianp avatar cifko avatar cjs77 avatar corquaid avatar delta1 avatar deniskolodin avatar dependabot[bot] avatar dunnock avatar hansieodendaal avatar impala123 avatar krakaw avatar kukabi avatar leet4tari avatar mrnaveira avatar neonknight64 avatar ordian avatar philipr-za avatar sdbondi avatar striderdm avatar stringhandler avatar swvheerden avatar tarnas14 avatar tomaszantas avatar truszczynskia avatar zhangcheng avatar

Watchers

 avatar

tari's Issues

[Mining] Merged Mining

  • Merged Mining box
  • only active if tari mining is correctly set up
  • 'set your monero wallet address' <inline>
  • start mining
  • "XXXX XTR/XMR" is the amount of blocks mined during current session
  • while balance of mined blocks is 0, show spinning loading indicator on the left of 0000 XTR/XMR

[Mining] Monero / Tari block mined notifications

Blocked by: #188


image

  1. the above notifications should be shown as modals, with backdrop
  2. user interaction is needed for the notification to disappear (either "got it" button or backdrop click)
  3. if any other modal is currently open (e.g. settings), the notification should wait - once the current modal is closed, the new one appears after short delay (300~500ms ?), effectively making a stack of popups waiting for the user
  4. the same principle explained above should apply when there are multiple different mining notifications, so:
    if there are 3 blocks mined of the same type (XTR/XMR), the text should combine them "3 blocks were mined" etc.
    but if there are blocks of different type XTR & XMR, we should not cmbine them, they should stack as explained with modals)
  5. we should show a text OS notification about mined blocks, example notification:
[Title] Tari Launchpad: Fantaritastic!
[Body] You've just mined a Tari block!

[Mining] Tari Mining

  • Tari Mining box on the Mining page
  • "Set your own Tari Wallet password" <inline>
  • setup the backend with tari wallet pass, call the backend, start mining (#61)
  • "XXXX XTR" is the amount of XTR mined during current session
  • while balance of mined blocks is 0, show spinning loading indicator on the left of 0000 TR

to discuss with @tari

  • we don't want to store the wallet password in the frontend application state
  • we need an endpoint from tari backend to store and retrieve state securely between application runs

Add Build job to CircleCI

Add building Tauri with CircleCI.

  • discuss this idea with Tari. Maybe they would have some suggestions on this.

Use native platform in CircleCI job (ie. MacOS, Windows, Linux) that install all dependencies (Rust, Node, etc.), and store builds as artifacts, so it can be easily downloaded and tested on different platforms.

  • use dedicated branch to trigger builds on CircleCI (running jobs on CircleCI for native platforms costs more credits than Docker on Linux).

[Mining] Statistics

image

ac:

  • tari statistics
  • monero mining statistics are not going to be available, it's too complicated to get this on initial launch
  • data should be equal to sum of amounts for WalletTransaction events with event field with value 'mined'

filters:

Monthly filter: as on the screenshot above, if we only have data for one month, don't show "vs" comparisons
Yearly filter: should show all months in the selected year, with values of mined xtr, xmr for each month, if we only have data for one year, don't show "vs" comparisons
All filter: should be disabled if we only have data for only one year, otherwise show year by year results, don't show "vs" indicator on coin balances (nothing to compare)

[Wallet] help prompts

  1. main help above and below wallet boxes
  2. account balance difference from available balance

1. :

Tari wallet is a hardware app that allows you to manage your Tari balance.
Only way to unlock access to your Tari wallet is by providing correct Tari wallet Password. Remember, unlike your social media account or bank account passwords your Tari wallet password can never be recovered.
image
image

2. :

https://www.figma.com/file/adOeOi2kRKn8mKM8GsrwZh/Tari-Launchpad-(Altalogy-Copy)?node-id=446%3A334091

how to persist data between application restarts

we should not attempt to persist sensitive data like passwords etc.
BUT
the easiest strategy for storage would be to use localStorage, it persists between tauri restarts, so we could serialize redux store to localStorage and deserialize it on application startup

[ExpertView] Logs

we should show tari logs from tari processes
the logs are available in different paths based on OS:

  • MacOS : ~/Library/Caches/tari/tmp/{network}/{service}/log/
  • Linux: ~/.cache/tari/tmp/{network}/{service}/log/
  • windows ??

logs taken from these files should be rendered with grafana
then we embed grafana on the logs page, maybe with some additional styling to be closer in the color scheme to figma

for more info see the discussion in #206

[BaseNode] Base Node - basic functionality

  • tab in the main layout (with Running indicator)
  • only the purple box that lets you choose Tari network

discuss with @tari (backend)

  • event about baseNode.running state change
  • get tari network options (?)
  • set tari network

[Wallet] Real balance chart on balance

Initially we used an icon on the wallet balance card:
image

it would be very cool to have this be an actual chart of your wallet balance history of some time in the past (maybe current month / quarter / year)

[Wallet] Main functionality

  • add password (unlock your wallet, if not unlocked)
  • password should not be remembered between sessions
  • Tari Wallet box (with "running" indicator)
  • show Tari Wallet ID as emojis
  • Balance box (WITHOUT "send funds", just the info)
  • use a balance chart icon for on the balance box

to discuss with @tari

  • command for getting wallet info ({ running: boolean; walletId: string; balance: number; availableBalance: number; }) - we can add an endpoint to backend, let's assume it for now
  • event about changes of wallet.running state - can be taken from 'tari://docker-system-event'

[Random] Dark mode

  • try to follow system settings to set it
  • setup dark theme
  • add dark mode switch in Settings
  • make sure everything follows the change to the dark theme

figma

[Wallet] Transaction history

  • recent transactions under Wallet info
  • "show full history" should be just an infinite-scrolling list of transactions that take the full height of the viewport

CI setup

Enable CircleCI for forked repo that runs test for Launchpad

Things to do on CircleCI:

  • Eslint
  • Tests (react-testing + jest)

[Mining] Settings

  • link to settings in Mining
  • actual settings modal
  • external monero URL with authentication - remember to use this setting when running services (if not done already in mining issue)

[Settings] Security Settings (seed phrase)

  • get password seed phrase from backend
  • show to user
  • verify
  • let them print
  • to show "created" state - we need to either remember we already set it up or get that information from backend

[T-Bot] dumb component to show different states

  • create the T-Bot (html, svg) - to include him in different Components easily
  • color for Tari, color for Monero
  • have interface for heart eyes
  • loading eyes
  • radar instead of eyes
  • big radius shadow (see mining notification on figma)
  • there should be a way to show the bot with animation:
    minimal implementation: expand the bot from 0x0 to target dimensions, probably with bezier
    nice to have: expand the bot body first, then animate his face and eyes in (this could be extracted to a separate issue to be pushed back, if proves to be time consuming)

[Random] Close confirmation with specific message

RESEARCH
when user closes the app - can we customize the warning message to say "please note..."
(we can catch the close event, but at this point you need to hide the whole application and show a dialog with ok/cancel)

figma

[Wallet] Send funds

  • the whole journey of sending money
  • assumption: transaction fee from the backend

backend questions:

  • is there an event for new transactions, for transaction state change?

Main layout

  • status bar on top (tari launchpad icon, settings)
  • white page
  • tabs (Mining, Base Node, (Wallet)
  • main content

consideration:

  • do we need routes? application state with "view" should be enough

[for additional points]:
how to be prepared for expert view

[Onboarding] docker not on the OS

  • add docker detection to onboarding (how to do it correctly?)
  • guide user through docker installation
  • show docker instructions for correct OS
  • during user docker installation poll to detect docker to show 'easy peasy...' message and go to "pull images" step to rejoin the "happy path"

[ExpertView] layout

  • status bar switch
  • 50% column layout
  • expert view slides in from the right, use transition time and function consistent with the rest of the application
  • full screen
  • tabs (again)
  • when expert view takes 50% width - reflow the main layout (tabs and components have different paddings etc see here)

additional points:
resizable: no

Readme

  • Brief description what is the Launchpad
  • Instructions on how to run project
  • Info about locales

[Onboarding] Happy path - docker detected

  • dockers are already detected in OS
  • pull images (remember error states)
  • sync blockchain (with progress bar and stuff) NO external node
  • done
  • show the application - Mining view by default

notes:

  • when showing multiple messages in onboarding, show "dots" for 1sec between messages (like here)
  • "skip chatting" should skip text-only conversational messages and skip to next point of action (in this case to the step of image pull, where there is a background process indicator), this means: immediately load all the messages until the pull images without the "dots" delay

[ExpertView] Performance

figma reference

ac

  • this screen shows container stats,
  • the three graphs should be (in order, from top to bottom): "cpu, memory, network traffic"
  • on each graph we should plot all containers (so N lines on each graph for N containers) - keep in mind, this is "logical containers, so Tor, BaseNode, etc. not actual running containers, so if the user starts and stops tor and has different containers running, that data is still shown as "tor"
  • this should show data of the currently selected network, so if the user changes the network, different data is shown

filters:
image
"last 30 minutes", "last hour", "last 2h" "last 8h" "last 24h"

refresh rates:
image
1sec, 10sec, 60sec

chart behaviour explanation:

if you have "last 30 minutes" or "last 1h" the whole chart should represent the "window" that you selected and show performance values in that window
if you have "last 1h" but we only have last 20 minutes, 2/3 of the chart will be empty and then last 20 minutes will show
and the lines will "travel to the left" over time as you have it open, as the ticks come in with new data
data outside the selected window is not accessible
this gives us the opportunity to adjust the labels on x axis to best suit the selected window (e.g last 30 minutes - labels every 2 minutes, 1h - labels every 5 minutes etc.)

implementation notes

  • keep track of stats events of dockers whenever they're active with timestamps
  • combine them when plotting OS/Mem/network usage on this view
  • store mined network with data points
  • find the best strategy to store and show the data - consider saving all data to disk and only poll for it every [refresh rate]
    storage strategy tbd - this could be something on the frontend (like sqlite or sth, or we can discuss with tari to have backend store this data and give us interface to query it)

[Mining] Mining schedule

max number of schedules: 32

to determine if mining should be run (or not), check all schedules - effectively creating the widest mining window possible from any overlapping schedules, e.g.
Schedule1: 8AM - 10AM, Schedule2: 9AM - 11AM, Schedule3: 1PM - 2PM, Schedule 4: 1:30PM - 5PM
would effectively mean, that mining will be run in 2 windows: 8AM - 11AM and 1PM - 5PM

still to do:

  • persisting scheduling state between application starts
  • starting mining based on schedule state
  • disabling scheduling link when neither mining is setup correctly
  • disabling misconfigured mining types on schedule form
  • limiting the number of schedules
  • manual overrides

how manual overrides should work:

If mining is active because of starting it manually, it should stay active until the user manually stops it.
But if it is stopped, for any reason, it should still follow schedules
But if I stop during a scheduled mining period, do not start mining again until the next scheduled start (i.e. ignore the fact that we're in the middle of a scheduled mining period)

[Settings] Wallet

  • start/stop wallet
  • if you stop the wallet container - are you still able to mine?
  • show wallet id, allow to copy

figma

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.