Giter Site home page Giter Site logo

ferraridamiano / converternow Goto Github PK

View Code? Open in Web Editor NEW
374.0 11.0 57.0 39.41 MB

The Unit Converter app: easy, immediate and multi-platform

Home Page: https://converter-now.web.app

License: GNU General Public License v3.0

Kotlin 0.05% Dart 80.95% HTML 1.01% CMake 7.63% C++ 9.74% C 0.62%
flutter flutter-app material-design android webapp dart cross-platform converter-app unit-converters conversion

converternow's Introduction

Converter NOW

Contributors Open web app Donate paypal

Maintained with Melos

Why Converter NOW

A few years ago I noticed that most of the unit converters on the digital stores were ugly, not immediately usable, with ads and tracking software. I thought it would be a good idea to develop Converter NOW in order to solve all these problems!

๐Ÿš€ It is made to be easy, fast and usable: just start typing and immediately you have the real-time conversion with all the other units of measurement!

๐Ÿ–Œ๏ธ It is customizable: the units can be reorganized according to your priorities and your use case

๐Ÿ”ข It integrates a calculator that let you do the calculations in every page

๐Ÿ’ฐ Currency exchange rates updated daily

๐ŸŽจ Choose your style: use the accent color of your device or your favorite one

โšซโšช Choose your favourite theme: dark or white theme

๐Ÿ“ฑ๐Ÿ–ฅ๏ธ Multiplatform: available for Android, Web, Linux and Windows

๐Ÿ’ฏ It is free, no ads, no data collection, no permissions (just Internet to update currency conversions). And first of all it is open source!

Installation

You can find the compiled app in GitHub releases or in all of the following app stores:

Android

Get it on Google Play Get it on F-Droid

Linux

Download on Flathub Download AppImage Get it from the Snap Store

Windows

Get it from the Microsoft Store

Web

You can reach the PWA here.

Build from source code

First you need to install flutter and all the tooling for your target platform (e.g. Android Studio for Android, etc.). Then you have to install two tools:

  • dart pub global activate melos (useful to easily manage the repository)
  • dart pub global activate vector_graphics_compiler (useful to compile the svg icons)

Then, run melos bootstrap in the root of the project in order to get all the dependencies, generate the translation files and optimize the svg icons. Then follow the instructions for the platform you want to target.

Android

On Android you should first disable the signing option in android/app/build.gradle (just comment that line). Then you can type flutter build apk --split-per-abi to compile the code. You can find the output in build/app/outputs/flutter-apk folder.

Linux

Type flutter build linux to build the Linux app. You can find the output in build/linux/x64/release/bundle.

Windows

Type flutter build windows to build the Windows app. You can find the output in build/windows/runner/Release.

Web

Type flutter build web to build the Web app. You can find the output in build/web.

Note: if you deploy it not on the base path, add --base-href=/path/ to the command above, change /path/ with your path.

iOS and MacOS

The app is not tested against iOS and MacOS, but you should be able to compile it even for these platforms. You first need to generate the platform specific code and then compile them.

converternow's People

Contributors

ahmetlii avatar atrafon avatar cosify avatar daniel5551 avatar dependabot[bot] avatar dfandrich avatar ferraridamiano avatar ftno avatar harshmakwana27 avatar kevmoo avatar majoranaoedipus avatar milotype avatar muhaaliss avatar n-berenice avatar omer358 avatar pereorga avatar plum7x avatar realpixelcode avatar rehork avatar syu-pf-ssy avatar the7thnightmare avatar torok42 avatar u2code avatar vsnmrn 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  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  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  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

converternow's Issues

Use units_converter package

I took the code that compute the conversion of this app and put it in a library so everyone can build it's own unit converter or do whatever he/she want. Now I want to remove these block of code from this repo and use the library.
You can view the library here.

Shoe sizes are off

Here in the UK a size 9 is about EU 43, according to your converter, which looks really nice, an EU size 43 is UK 7.08 for men. I wear uk size 9 shoes and they have EU43 marked on them. Every other conversion list I can find online agrees with my shoes.

diziet

Improve coherence in settings

On desktop and web some option in the settings have no sense. For example: if I downloaded the linux app I don't want to rate the android app on the play store. But a good option would be: "download android app" or "rate the app on snap store", etc.

Add Linux support

As of flutter release linux in the alpha channel we should deploy a snap version of Converter NOW. All the packages we use have linux support. We are just waiting this issue to be fixed flutter/flutter#60743

UPDATE 28th July
The app can be compiled and works but has some graphical bugs. We are waiting for a stabler version of flutter for linux.

Improve the structure of the code

We should separate more the logic of the app from the UI. Provider package is here to help.
We should also remove ConversionManager.dart because we could do everything inside ConversionPage.dart

Improve layout for large screen

At the moment the layout with a small screen and with a big screen is not so different. The idea is to remove the bottom appbar with big screens and integrate everything in the FAB. In this way there will not be a large bottom app bar on the desktop app

HERE a spoiler

Please add timezone conversions!

Hey! I LOVE your app and it meets all of my needs, so thank you. But just because it misses timezone conversion it makes it difficult to use it as the default. Hoping there is a possibility that you can add this.

Calculator improvement

We should improve the calculator:

  • create a model of the calculator and separate it from the UI
  • setup a test suite
  • migrate from the depracted raisedbutton to elevatedButton

Change exchange rate api service

The exchange rate api service that we are currently using is no longer free, in fact the current app version is stuck to old values. We should migrate to the free service of the ECB.

New icons!

At the moment every icon has a different style and not every icon looks nice. I am not good with graphics, so if you are you can contribute to this project! You can post here below your suggestions. Then I will tell you how you can submit a PR.

More units

As requested by someone we should add other units:

  • mills
  • ISK
  • HRK
  • BGN

If you need others, write them below

Name problem

Hi @ferraridamiano,

First thank you for this application :-)

In the search, there is a problem if the name is on multiple lines

Sans titre

move the inscription above

I don't see part of the inscription. please move the inscription above so that the button does not interfere with watching.
bug

Add more languages

If you want to contribute to this project translating the app you are welcome!

Here you can find the updated instructions on how you can add a new language (or improve an existing one).

Here is the current status of the translations:

Language App translation Store page translation Credits
Arabic โœ”๏ธ โœ”๏ธ @omer358
Catalan โœ”๏ธ โŒ @pereorga
Chinese โœ”๏ธ โœ”๏ธ @syu-pf-ssy @MajoranaOedipus
Chinese (traditional) โœ”๏ธ โœ”๏ธ @plum7x @MajoranaOedipus
Croatian โœ”๏ธ โœ”๏ธ @milotype
Dutch โœ”๏ธ โœ”๏ธ @David-git-code
English โœ”๏ธ โœ”๏ธ @ferraridamiano
French โœ”๏ธ โœ”๏ธ @Torok42
German โœ”๏ธ โœ”๏ธ @u2code
Indonesian โœ”๏ธ โœ”๏ธ @the7thNightmare
Italian โœ”๏ธ โœ”๏ธ @ferraridamiano
Japanese โœ”๏ธ โœ”๏ธ ๅŒฟๅ, @syu-pf-ssy
Norwegian โœ”๏ธ โŒ @FTno
Polish โœ”๏ธ โœ”๏ธ @rehork
Portuguese โœ”๏ธ โœ”๏ธ @mezysinc
Russian โœ”๏ธ โœ”๏ธ @vadimyoungg @Atrafon
Spanish โœ”๏ธ โœ”๏ธ @n-berenice
Turkish โœ”๏ธ โœ”๏ธ @muhaaliss

Thanks in advance! ๐Ÿ’š

Improve the the structure and the state management of the app

I started building this app with the idea to learn dart and flutter. So I made a lot of mistakes, I tried to workaround them with the idea that if it works it's a good thing. But as the app grows in size and complexity it becomes more and more important to structure it well. So from now I will start to do some things:

  1. The business logic must be separated from the UI
  2. I will stop to manage the state with ephemeral state, instead I will use provider to manage the state.
  3. I will change the variable name that I will touch from italian to english so more people can understand the code better

Add continuous delivery

We need to add continuous delivery, so:

  • We don't need to deploy the updated website every time, just push the commit

  • We don't need to manually upload the apk files as release on github

Theme change

At the moment you can change the theme of the app just if you change the theme on the phone (just android 9/10 and above). We need to implement a switch to setup the theme between light, dark and system so also with android 9/10 and below can change the theme of the app.

Data transfer calculator

Ciao,
Greetings from Italy.
Thanks for this unit converter, until today I had to use shady apps filled with ads.

There's a calculation I do a lot and I think would fit nice the app: data transfer calculator.
E.g: How much time does it take to transfer 2.5 GB at 3.8 MB/s?
It should allow the user to pick whatever unit combination desires.
I use this one but is ugly and not mobile friendly

Thanks!

Add Windows support

Few days ago the flutter team has announced that flutter for Windows has reached the alpha stage. All the packages that we use are Windows compatible. I tried to compile for windows and it works pretty good. We should add the support for Windows.

Here's some screenshots:
Immagine5

Immagine6

The app downloads the currency rates even if it already have them

The app should download the currencies rates just if what already has is older than a day. The problem is that the api we use returns a date that is referred to some time zone that may not be the same of the time zone of the user. And what is saved is the http response, when the app is opened the second time in that day checks the latest http response and compare with the date of the user, so it launches a new http request even if the rates are already updated.

Here's the problem:
(I commented just the incriminated lines)

 _getCurrency() async {
    String now = DateFormat("yyyy-MM-dd").format(DateTime.now());
   
    String dataFetched=prefs.getString("currencyRates"); //here we get the saved currency
    if(dataFetched==null || CurrencyJSONObject.fromJson(json.decode(dataFetched)).date!=now){ //it compares the date saved with the current date of the user
        try{
          final response =await http.get('https://api.exchangeratesapi.io/latest?symbols=USD,GBP,INR,CNY,JPY,CHF,SEK,RUB,CAD,KRW,BRL,HKD,AUD,NZD,MXN,SGD,NOK,TRY,ZAR,DKK,PLN,THB,MYR,HUF,CZK,ILS,IDR,PHP,RON');
          if (response.statusCode == 200) {

            CurrencyJSONObject currencyObject = new CurrencyJSONObject.fromJson(json.decode(response.body));
            currencyValues=currencyObject.rates;  

            lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');

            prefs.setString("currencyRates", response.body); //we save the currency rates with a date that can be different from the date of the user due to different time zones
          }
          else
            _leggiCurrenciesSalvate();

        }catch(e){
          print(e);
          _leggiCurrenciesSalvate();
      }
    }
    else{
      _leggiCurrenciesSalvate();
      lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');
    }
    setState(() {
      isCurrencyLoading=false;
    });
  }

Use intl package

We should use intl package for translation and using more modern arb files instead of json. And we should rename the italian key in english key so that the contributors effort will be less.

Use the standard ReorderableListView

Currently we are using a custom ReorderableList. We should use the standard ReorderableListView.
The ReorderPage should also be optimized for large screens

Add to Debian & Arch Repositories

Please add this app to the debian and arch repositories so many distros can download the app without having to use snaps or flatpaks.

(Feature) Adding Finance Tools

Hi @ferraridamiano again

I would like to also propose to add a Financial tools to make the app more useful like the following:

- Unite Price: to calculate the price of a unity product from the Price and quantity
- Sales Tax: taking as input the price, tax, and a method (add or substract) and give the output: Final price, and tax amount
- Tip: taking as input the Bill, People, and the Tip (15% default) and give the output: Final Bill, Cost per Person and Tip amount
- Loan: taking as input the Loan, Rate(per Yr%), and the Period(in Years or Months) and give the output: Monthly Pay, Total Pay and Interest
- Interest: Simple and compound interest.

If this could be implemented It would be very helpful and very cool!

Best Regards

App quits on launch

Im seeing an error I have had with a couple of Snap Games, but not yet with an app.
I installed 2.6.0 latest/stable from Ubuntu Software. Launching the app has it appear in the dock for a moment, then quit.

si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters) caught my eye as it is what i have seen with a couple of Snap Games that won't run (quit on launch), when I install the hirsute-universe version they run fine. In this case that is not an option.

Ubuntu 21.04, Lenovo Thinkbook 14 G2 AMD.

journalctl -r


 7ๆœˆ 22 16:18:50 Sulaco converternow[11672]: The program 'converternow' received an X Window System error.
                                              This probably reflects a bug in the program.
                                              The error was 'BadAlloc'.
                                                (Details: serial 380 error_code 11 request_code 149 (unknown) minor_code 2)
                                                (Note to programmers: normally, X errors are reported asynchronously;
                                                 that is, you will receive the error a while after causing it.
                                                 To debug your program, run it with the GDK_SYNCHRONIZE environment
                                                 variable to change this behavior. You can then get a meaningful
                                                 backtrace from your debugger if you break on the gdk_x_error() function.)
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: AVC apparmor="DENIED" operation="open" profile="snap.converternow.converternow" name="/proc/sys/vm/max_map_count" pid=11672 comm="converternow" requested_mask>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:89): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:88): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:87): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:86): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:85): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:84): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:83): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:82): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:81): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:80): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters)
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7ๆœˆ 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: /usr/share/libdrm/amdgpu.ids: No such file or directory
 7ๆœˆ 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:4055:23: 'font-feature-settings' is not a valid property name
 7ๆœˆ 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:3593:25: 'font-feature-settings' is not a valid property name
 7ๆœˆ 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:1555:23: 'font-feature-settings' is not a valid property name
 7ๆœˆ 22 16:18:50 Sulaco converternow[11672]: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-jL5mJj0Bis: No such file or directory
 7ๆœˆ 22 16:18:50 Sulaco systemd[909]: app-gnome-converternow_converternow-11672.scope: Succeeded.
 7ๆœˆ 22 16:18:50 Sulaco systemd[909]: Started snap.converternow.converternow.07dbccb0-0d9d-4e79-a047-c427d614bfe7.scope.
 7ๆœˆ 22 16:18:50 Sulaco systemd[909]: Started Application launched by gnome-shell.

High CPU usage on Linux

The Linux version takes up 60-70% of my CPU usage on Fedora 33 KDE. I installed it via the snap store.

Any idea why? Is it a flutter bug?

Specs:

Kernel: Linux 5.10.20-200.fc33.x86_64 x86_64
Distro: Fedora release 33 (Thirty Three)
CPU:    Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz
        4 cores/threads
        3500.00 MHz
RAM:    7.61 GiB
GPU:    Mesa Intel(R) HD Graphics 620 (KBL GT2)
        OpenGL 4.6 (Compatibility Profile) Mesa 20.3.4
        GLSL 4.60

(Improvement) Reorganizing the app tabs into categories

Hi @ferraridamiano I would like to make a proposition for the organization of the app as I believe it would be better if we have Master Categories instead of having all the tabs on the side of the app, I propose to use categories like:

Geometry: Length, Area, Volume, Angles
Finance : Currencies
Physics: Force, Speed, Temperature, Time Energy, Power, Pressure, Mass
Numerical: Numeral systems, SI Prefix
Practical: Fuel Consumption, Shoe size, Digital Data, Torque

I think It will make the app more organized and easier quicker to navigate!

hope you give it a thought :)

Add tools section

As requested by many app user we should add a tools section where we can add any kind of tools, such as: time transfer calculator, trip cost (cost of fuel on a given distance), etc
I opened a new branch dedicated to this feature

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.