Git Product home page Git Product logo

coinfuse's Introduction


Project license Pull Requests welcome

Table of Contents

About

CoinFuse is a powerful and user-friendly platform for tracking cryptocurrency market capitalization and gaining insights into the world of cryptocurrencies. With real-time data, comprehensive coin information, and more, our app simplifies the complex world of crypto for enthusiasts, traders, and investors. Join us on this exciting journey of exploring and analyzing the crypto market.

Screenshots
Coin Menu Coin Details
Coin Exchanges Exchanges Menu
Exchange Details Profit Calculator
Dark
Coin Menu Coin Details
Coin Exchanges Exchanges Menu
Exchange Details Profit Calculator

Built With

The CoinFuse app follows a modular architecture that promotes separation of concerns and modularity. It consists of the following modules, each responsible for specific functionality:

  • App Module: The main module of the app that encompasses the UI elements and user interface-related functionalities. It utilizes the following Android Architecture Components:

    • LiveData: Used for data observation and propagation between the view-models and UI components.
    • Data Binding: Binds UI components in layouts to data sources, simplifying UI updates.
  • Presentation Module: This module contains the view-models responsible for orchestrating the interaction between the UI components and the domain layer. It utilizes LiveData for reactive data updates.

    • ViewModel: Stores and manages UI-related data, ensuring data survives configuration changes.
  • Domain Module: Encapsulates the core business logic and use cases of the app. It defines interfaces and contracts that the data layer must implement.

  • Data Module: Implements the repositories defined in the domain module and acts as a bridge between the domain and the external data sources. It incorporates the following Android Architecture Components:

    • Room: Handles local database caching and retrieval.
  • Remote Module: Handles data retrieval from external APIs and utilizes Retrofit for network communication.

  • Local Module: An Android-specific module that focuses on storing and accessing data locally. It includes Room for local database caching and Shared Preferences for managing application preferences.

By following this modular architecture, the CoinFuse app achieves a clean separation of concerns, promotes code reusability, and facilitates easy maintenance and testing. The app also incorporates several Android Architecture Components, such as LiveData, ViewModel, Data Binding, and Room, to enhance its functionality and provide a smooth user experience.

Figma jam diagram

Roadmap

See the open issues for a list of proposed features (and known issues).

Support

Reach out to the maintainer at one of the following places:

Project assistance

If you want to say thank you or/and support active development of CoinFuse:

  • Add a GitHub Star to the project.
  • Tweet about the CoinFuse.
  • Write interesting articles about the project on Dev.to, Medium or your personal blog.

Together, we can make CoinFuse better!

Contributing

First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.

Please read our contribution guidelines, and thank you for being involved!

Authors & contributors

The original setup of this repository is by Avtandil Kupreishvili.

For a full list of all authors and contributors, see the contributors page.

Security

CoinFuse follows good practices of security, but 100% security cannot be assured. CoinFuse is provided "as is" without any warranty. Use at your own risk.

For more information and to report security issues, please refer to our security documentation.

License

This project is licensed under the Apache Software License 2.0.

See LICENSE for more information.

Acknowledgements

  • ongakuer - CircleIndicator - A lightweight indicator like in nexus 5 launcher. (Apache-2.0 license)
  • bumptech - glide - An image loading and caching library for Android focused on smooth scrolling. (Apache-2.0 license)
  • airbnb - lottie - Render After Effects animations natively on Android and iOS, Web, and React Native. (Apache-2.0 license)
  • PhilJay - MPAndroidChart - A powerful πŸš€ Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations. (Apache-2.0 license)
  • facebook - shimmer-android - An easy, flexible way to add a shimmering effect to any view in an Android app. (BSD license)
  • ReactiveX - RxJava - RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. (Apache-2.0 license)
  • square - retrofit - A type-safe HTTP client for Android and the JVM. (Apache-2.0 license)
  • square - okhttp - Square’s meticulous HTTP client for the JVM, Android, and GraalVM. (Apache-2.0 license)
  • google - dagger - A fast dependency injector for Android and Java. (Apache-2.0 license)
  • mockito - mockito - Most popular Mocking framework for unit tests written in Java. (MIT license)
  • robolectric - robolectric - Android Unit Testing Framework. (MIT license)
  • google - Material icons - Material Design Icons' growing icon collection allows designers and developers targeting various platforms. (Apache-2.0 / Ubuntu font license)

coinfuse's People

Contributors

hexley21 avatar

Stargazers

 avatar

Watchers

 avatar

coinfuse's Issues

feat: bookmarks

Feature Request

Describe the Feature Request

Bookmark tab in navigation fragment, where bookmarked coins will be represented.

Describe Preferred Solution

On navigating to bookmarks tab, it represents coins similar to coins menu tab, but only bookmarked coins are shown.
which will be sorted by timestamp ASC or DES(default), according what user prefers through sorting choice.
When clicking on Coin, it navigates to details fragment as it would happen from coins-menu.

Ability to remove bookmarked coin directly from bookmarks tab.

Describe Alternatives

Related Code

Everything is present in app for doing this. just need to add UI elements, viewmodels and minoroties...

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

feat: scrolling

Feature Request

Describe the Feature Request

All scrollable content load gradually.
At app's current stage. all the list items load simultaneously.
That will drasticly improve performance, especially for old devices.

Describe Preferred Solution

Load specific amount of items at first.
When scrolled to the bottom, call items with limit and offset and load them to list.
When user reaches to the bottom and no data is available, disable data loading, to avoid unnecessary calls.

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

feat: exchanges

Feature Request

Describe the Feature Request

Crypto currency exchanges tab, which shows all available exchange platforms for cryptocurrencies.
Similar to crypto currencies tab, where all available crypto currencies are shown and is possible to go it's own detailed page with exchange rates, prices and other valuable information.

Describe Preferred Solution
A special fragment for exchanges which can be navigated through Navigation fragment with bottom navigation bar.
that will represent a list of exchanges markets, with ability to search and save the search queries into memory for quick access.
Exchange details fragment, which will show all useful information about the exchange service. that can be accessed through clicking the exchange list item, or be accessed through coin details's exchange item's.

Describe Alternatives

Related Code

Domain:
Exchange model.
Separated Exchanges repository
Use-cases that provide: Exchanges, Exchange by Id, SearchHistory

Data:
Exchanges Local and remote repositories.
Exchange Repository implementation.

Local:
Save exchanges to cache.
Exchange Entity.
Get Exchanges when internet is not available.
Get Exchanges search history.

Remote:
Retrofit service.
Exchange DTO.

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes
  • No

Settings

Feature Request

Describe the Feature Request

Describe Preferred Solution

A tab where user can manage app preferences such as:

  • App theme.
  • Language.
  • Currency.
    Ability of:
  • Clear app cache.
  • Rate app on Google Play.
    And navigate to:
  • About us page.
  • Contact page.
  • OS Acknowledgments.
  • OS Libraries used.

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

Informational pages.

Feature Request

Describe the Feature Request

App lacks informational and supporting type of pages, so use could reach out to developer or see app info in case of need.

  • About us page.
  • Contact.
  • Privacy Policy
  • Credits
  • Also Rate App on Google-play functionality would be a plus.

Describe Preferred Solution

Create a fragment for each of them and navigate through settings fragment by clicking designated button for each of them.

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

feat: ui-remaster

Feature Request

Describe the Feature Request

  • App has old-looking ui.
  • Bad light theme.
  • UI/UX issues.

Describe Preferred Solution

  • Update app UI.
  • Improve light theme.
  • Improve UI/UX.

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

Calculator

Feature Request

Describe the Feature Request

A Coin buy/sell profit calculator tab, where user can input:

  • Coin.
  • Investment amount.
  • Buy price.
  • Sell price.
  • Investment fee.
  • Exit fee.
    Profit = ((Sell Price - Buy Price) x (Investment / Buy price) - (Investment Fee + Exit Fee))

Describe Preferred Solution

  • Create new Fragment for calculations
  • Create input-fields for each value.
  • Search coin to get existing price. (SearchCoin - interactor in VM)

Describe Alternatives

Related Code

  • ProfitCalculatorFragment extends BaseFragment<FragmentProfitCalculatorBinding, ProfitCalculatorViewModel>
  • ProfitCalculatorViewModel extnds ViewModel
    • @Inject private SearchCoins searchCoins;
    • private StateLiveData<List> currentSearch;
    • private LiveData currentProfit;
    • public int calculateProfit(double investment, double buy, double sell, double invFee, double exitFee)
  • fragment_profit_calculator

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

  • Yes

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.