Giter Site home page Giter Site logo

hargata / lubelog Goto Github PK

View Code? Open in Web Editor NEW
866.0 12.0 39.0 5.58 MB

LubeLogger is a web-based vehicle maintenance and fuel mileage tracker

Home Page: https://lubelogger.com

License: MIT License

C# 21.17% HTML 21.00% CSS 0.46% JavaScript 57.36% Dockerfile 0.02%
fuel-consumption vehicle vehicles

lubelog's Introduction

image

Self-Hosted, Open-Source, Web-Based Vehicle Maintenance and Fuel Mileage Tracker

Website: https://lubelogger.com

Why

Because nobody should have to deal with a homemade spreadsheet or a shoebox full of receipts when it comes to vehicle maintenance.

Showcase

Promotional Brochure

Screenshots

Demo

Try it out before you download it! The live demo resets every 20 minutes.

Live Demo Login using username "test" and password "1234"

Download

LubeLogger is available as both a Docker Image and a Windows Standalone Executable.

Read this Getting Started Guide on how to download either of them

Need Help?

Documentation

Troubleshooting Guide

Search Existing Issues

Dependencies

License

MIT

Support

Support this project by Subscribing on Patreon or Making a Donation

lubelog's People

Contributors

ffcoder avatar florianschroen avatar hargata avatar jdh313 avatar kapcake avatar natewright avatar redge76 avatar thisisqasim avatar tylerbrewer2 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  avatar

lubelog's Issues

Add support to add/remove fields in Fuel Tab

Love the project. I would like to make use of the fuel tracking tab, as fuel tracking is already something I do on a per tank scale. However I found I'm already tracking several parameters that aren't currently in the fuel tracking tab. Rather than list out what they are, I would like the ability to add/remove fields as necessary to customize the information tracked to suit my specific needs.

Thank you and keep up the good work!

[Question] What is this expense

The smallest expense chunk in this pie diagram is called "Expenses by category: 15", I don't have any expense of 15€. What is it? It is also marked as being in November of the current year
Screenshot_2024-01-13-06-40-35-57_3aea4af51f236e4932235fdada7d1643~2.jpg

[BUG] currency symbol not displayed when run from docker container

related to #1 (comment) and #3

I guess it is intended to show the $ Dollar sign.

grafik

The issue is browser independent. (tested FF, Chrome, Chromium)

My guess is that code files are saved in another encoding compared to the runtime inside the container. So maybe we have to set a locale or character set as environment or runtime configuration, or maybe convert file from windows default encoding to utf8 or whatever before checking into git?!

System:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description:    Linux Mint 21
Release:        21
Codename:       vanessa

$ docker version
Client: Docker Engine - Community
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:07:41 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:07:41 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.26
  GitCommit:        3dd1e886e55dd695541fdcd67420c2888645a495
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
``

[Feature Request] GUI translation to different language

I would love to have GUI in Slovenian language. And I am sure other non English users as well in theirs. So having an option to change the languege would be very much appreciated.

Maybe using crowdin to store and collect the translated strings?

Import Issues

When trying to import CSV file into the library, it errors out. I have created some example entries under "fuel" and exported to CSV file from lubblogger website, then proceeded to delete the entries and tried to import from the previously exported CSV and it fails with error message:
image
any help would be greatly appreciated.
Helio2k

[Bug] Unable to specify cost with decimal places in any category

When adding a new record to any of the categories (Service Records, Repairs, Upgrades, Fuel, Taxes), decimal separators "." and "," get stripped from the input and get replaced with ",00".

Browser console and Container logs show no errors.

Expected Behavior

Cost should be saved with cents in decimal places. The input "572,69" should result in the same value being displayed in the table.

Input:
Screenshot 2024-01-10 102437

Expected Output (Modified HTML as an example):
Screenshot 2024-01-10 104417

Current Behavior

"," and "." get removed from the input and "00" is added as the decimal places. So the input "572,69" becomes "57.269,00".

Input:
Screenshot 2024-01-10 102437

Output
Screenshot 2024-01-10 102450

Steps to Reproduce

  1. Add new vehicle.
  2. Add a new record in any category.
  3. Specify a Cost with decimal places.

Environment

Docker Container running on Unraid 6.12.6 with Docker Engine 20.10.24.
Container version is the latest released 4 hours ago as of writing this issue.

[Bug] Cost of gas refuled is a number field

The cost of gas refuled field is of type number. This prevents someone with a non-english locale ex. german to type the price correctly. It should be a text field like the Amount of gas refuled field. If you manually change the type from number to text it works correctly. 30,11 will be saved as 30,110€

[BUG] Fuel CSV import Failure

I am trying to upload a fuel csv. I have followed the template and even tried to reimport the template after downloading it but it fails. I had no issue doing a csv upload for any of the other tabs (Service records, repairs, upgrades, taxes).
Here is the error in the log when i try to import the untouched fuel csv example.

fail: CarCareTracker.Controllers.VehicleController[0]
Error Occurred While Bulk Inserting
System.ArgumentNullException: Value cannot be null. (Parameter 's')
at System.Decimal.Parse(String s, NumberStyles style)
at CarCareTracker.Controllers.VehicleController.ImportToVehicleIdFromCsv(Int32 vehicleId, ImportMode mode, String fileName) in /App/Controllers/VehicleController.cs:line 254

[Feature Request] Gas station

There are different gas station vendors (Petrol, OMV, Shell, MOL, ...). It would be nice to have an option to have a database of them (self maintained, not global) and an option to select them when inputing new fuel record.

Then you can get information of average usage per 100 km per gas station for example. Or different filters to see how much you spent on gas per different gas station.

[Feature Request] Multiple Tanks for one car

Hi, my car is a petrol and LPG/gasoline and LPG so I have two tanks that I like to monitor.

With the same feature you can have a petrol/natural gas (petrol/methane) but also for the new diesel car you can monitor the diesel and AdBlue tanks.

Other ideas after that, that could be implement are that the page can show two different fuel economy graph but also a composed one and a medium price per km/mile.

[Feature Request] Make Vehicle Notes similar to the Service and Repair sections.

Would love to have the Main Notes section mimic the style of the other data entry fields. I don't know how much work that would be, but would make it easier/faster to find the notes you're looking for and less chance of me accidently deleting the rest of my notes for the vehicle.

Would like to just go to my Tire Sizing notes or my Immobilizer Pin code. Just a QOL thing.

Thanks for the work and sorry I lack the skill set to contribute, but If I'm ever looking to move to Utah I will give Price a look.

Unable to log in after container update

Running using docker-compose with authentication enabled, if the container rebuilds, the data protection key being used cannot be found. Please see the logs from my container below.

Repro:

  • Configure docker-compose.yml as needed and start up the container.
  • Enable authentication and set a username/password
  • Stop and delete the container
  • Start again using docker-compose.yml
  • The page on load will be blank with a thrown error in the log file

Log file:

warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]

      Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed. For more information go to https://aka.ms/aspnet/dataprotectionwarning

warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]

      No XML encryptor configured. Key {d318d71b-38fb-4cb4-9d42-fcce247d73f0} may be persisted to storage in unencrypted form.

info: Microsoft.Hosting.Lifetime[14]

      Now listening on: http://[::]:8080

info: Microsoft.Hosting.Lifetime[0]

      Application started. Press Ctrl+C to shut down.

info: Microsoft.Hosting.Lifetime[0]

      Hosting environment: Production

info: Microsoft.Hosting.Lifetime[0]

      Content root path: /App

fail: Microsoft.AspNetCore.Server.Kestrel[13]

      Connection id "0HN0FPCTRMNIL", Request id "0HN0FPCTRMNIL:00000001": An unhandled exception was thrown by the application.

      System.Security.Cryptography.CryptographicException: The key {d868915a-a32c-432a-9d92-0c2e04cc3e06} was not found in the key ring. For more information go to https://aka.ms/aspnet/dataprotectionwarning

         at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status)

         at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData)

         at Microsoft.AspNetCore.DataProtection.DataProtectionCommonExtensions.Unprotect(IDataProtector protector, String protectedData)

         at CarCareTracker.Middleware.Authen.HandleAuthenticateAsync() in /App/Middleware/Authen.cs:line 55

         at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.AuthenticateAsync()

         at Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext context, String scheme)

         at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)

         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

[Feature Request] Adding support for recurring cost i.e insurance costs

Hello,

I like the project so far! (thanks for the work)

But a feature what i would like to have, is to have support to automatically create recurring costs.

For example, in Europe you pay (monthly / quartly or yearly) a fixed cost for the insurance,
or some pay a recurring fee for a automobile club (and in exchange, if your car is broken its free to tow you car, if you book it over the the automobile club)

Best regards

Feature Request - Engine Hours

An engine hour data field would be very useful - better yet, the ability to add a custom data field(s) to a service record.

Vehicles without license plate and OCR of invoices

Just wondering if there's a possibility to add a vehicle without licence plate being required.
For project cars etc that id like to keep track of.

Also wondering if OCR could be added.
Upload pdf or image of invoice and have it automatically add expense

Thanks

[QOL/Feature Request] Reset of page location after Edit

Not sure of the best way to describe this so i am including a video. Basically i uploaded my fuel logs from fuelly using the fuel csv template. That worked great however i have severy tans marked partial or missed fuel ups. I am manually adjusting those in Lube Logger but everytime i make an adjustment i am scrolled back to the top of the list and have to rescroll to my location in the list. Is there anyway to have it stay in the same place of the list after an edit

2024-01-13_22-32-43.mp4

Error when disabling Use Imperial Calculation for Fuel Economy

When I change "Use Imperial Calculation for Fuel Economy Calculations(MPG) This Will Also Change Units to Miles and Gallons" I get and error:

An error occurred, please try again later.

Docker gives and error:

07. 01. 2024 09:57:06 fail: CarCareTracker.Controllers.HomeController[0]
07. 01. 2024 09:57:06      Error on saving config file.
07. 01. 2024 09:57:06      System.IO.FileNotFoundException: Could not find file '/App/config/userConfig.json'.
07. 01. 2024 09:57:06      File name: '/App/config/userConfig.json'
07. 01. 2024 09:57:06         at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
07. 01. 2024 09:57:06          at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
07. 01. 2024 09:57:06
         at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
07. 01. 2024 09:57:06         at System.IO.StreamReader.ValidateArgsAndOpenPath(String path, Encoding encoding, Int32 bufferSize)
07. 01. 2024 09:57:06         at System.IO.File.ReadAllText(String path, Encoding encoding)
07. 01. 2024 09:57:06         at CarCareTracker.Controllers.HomeController.WriteToSettings(UserConfig userConfig) in /App/Controllers/HomeController.cs:line 58

Non-file based database support

What is the issue you're reporting

Currently lubelog only uses a flat file similar to sqlite, this means scaling becomes a huge issue as, for example, users of k8s at home are unable to properly run this highly available as it requires a single pod accessing a single database file.

What is the proposed solution

implement a database driver for either mysql (mariadb) or postgres

From my understanding, Postgres is more developer friendly

Are you willing to contribute

I am not good at coding, but I can happily write documentation!

[Feature Request] History Print View

Would be awesome to be able to print a consolidated view of the service, repairs, upgrades that have been made to the vehicle. Sort of like a CarFax history section.

[Feature Request] Input total price OR price per unit

Currently I need to input total price of bill when I refuel my car. And you calculate the unit cost. It would be nice to have it also vice versa. So when you add new fuel record, you can type unit price and final price gets calculated from it.

Add Linux/Arm64/v8 support

Hi, I would like to test and try this new veichle management container, but I wuold like to use that in an ARM cpu.

It's possible to have an arm64/v8 support for the docker container?

(I tested with a build and I got it working so it's possible to run lubelog on arm)

[Bug] Close Calendar after date selection

Not sure if it's left open by choice, but when selecting the date on the calendar, it stays open until you move onto another part of the screen. Not a major issue, but additional clicking required.

[Feature Request] Change the landing tab from Service Records to Fuel

Change the landing tab from Service Records to Fuel because most of times that we open the app is to input or consult Fuel data.

Or, a landing page where shows the tree latest inputs (any of them) and statistics like Current month Consuption, Cost etc. with a direct button to add Fuel, Service Records etc.

[RFC] Multiple User Management, RBAC, and Collaboration

This is the ticket to discuss/track the progress of building out the user management system along with a collaboration(just like Google Docs!) feature where you can share your vehicles with other users in the system and give them permissions such as Editor or Viewer.

This is also PRIORITY 1 right now, so if I don't get to your feature request it's because I'm currently working on this

Description of the problem/issue we're trying to solve:
Currently LubeLogger only supports one user per instance, which means if you have a spouse or perhaps employees* that needs access to edit or view the vehicle data you will need to share the root user credentials to them, which can be pretty risky in itself, having additional users being able to set up their own account with their own username and password and able to add their own vehicles makes it an overall better experience for all involved.

Design Outline/Acceptance Criteria:

  • Root user(the credentials you setup when you check "Enable Authentication" in the Settings page) can be correctly identified.
  • Root users can set default server configs.
  • New users will have to go through a token-based registration process, see next point.
  • Token-based registration process where either the Root User(or other users mark as Admin) can generate tokens for new users to use and sign up, tokens are tied to email addresses and the user will be required to provide a token that matches their email address on registration.
  • New users will also have access to a settings page but any settings they make in there gets written to a DB table instead of the default server json file.
  • Users will only be able to see vehicles they created/added unless they are shared by other users.
  • Root users can see all vehicles created in the system. If you are a root user and you only want to view your vehicles, I highly recommend creating a second user account and then mark that second account as an editor for your vehicles.
  • When sharing a vehicle, users have the ability to mark the new collaborator as just a Viewer or an Editor. Viewer can only view the vehicle and its records but make no changes to it.
  • The first user with an editor permission to the vehicle will always be marked as the owner of the vehicle - this is assigned when the user creates the vehicle, they get assigned permissions to the vehicle they just created, and the first one in line will always be marked as the owner(this is to facilitate the deletion of users and ensuring that ownership gets passed down to the next editor in line).

Addendum
This project has taken up a lot more effort and resources than I previously thought, and it had grown to be larger than a side project. I have a full time job on the side and building out new features needs a lot of testing that it has backwards compatibility. When the user management feature is released, there will most likely be a licensing change. The discussion I have with my partner right now is that we might pursue a a dual licensing model where LubeLogger remains a free and open source application for a majority of individuals but Corporate Entities employing more than 10 employees are required to either purchase a subscription or a one time fee. Note that for both groups of users the app will remain functionally identical. We will not be implementing restrictions/license key activation or whatnot to verify if a user has purchased a subscription, this is done so that LubeLogger can remain functional even if ran in an air-gap environment. The subscription is purely based on the licensing terms and the honor system. For corporate entities, upon the purchase of a subscription/one time purchase, you will be given a receipt to prove that you are compliant with the licensing terms for as long as the subscription remains active.

[Feat Request] PWA Support

~90% of data is input when we are out, so PWA Support to be able to better responsive from a mobile phone.

[Feature Request] Supplies/Parts

I would love to see a parts and supplies section, which allows me to enter a parts picture, price, and supplier. Then have the ability to add those parts and supplies to a service and have the parts/supplies that were used added to the cost. This would be very helpful for those that do a lot of self service.

Having the ability for those parts and supplies to either be "Universal" or vehicle specific would also be beneficial. It also helps track exactly what was serviced and replaced when you do it yourself. Thanks!

Date and Currency Formats

Issue

With the date format MM/DD/YYYY the application can be open for confusion for the rest of the globe using different formats like:

  • DD.MM.YYYY
  • YYYY-MM-DD

The currency of $/USD may not be appealing to everyone, considerations should be taken to include other common values.

Proposed Solutions

For the date format you maybe able to add a setting to toggle to use a display of the date based on ISO8601/RFC3339 YYYY-MM-DD this is probably the simplest solution and I think a good compromise, but maybe also a drop-down to just selected the favored date format.

Currency, similar approach could be taken in the settings a drop-down to select common currency's:

  • $ (USD)
  • € (EUR)
  • £ (GBP)
  • Fr. (CHF)

[RFE] Status Indicators on Garage Tab

Idea

I would like to use the Garage tab as a dashboard that provides an overview of status of all vehicles.

Details

Add chips to vehicles on the Garage tab. Ideally, this could be configurable. To begin with, though, having info such as last reported mileage, avg. mpg, service/reminder status.

Container runs as root

The docker container runs as root, and therefore all files owned by root.

It would be beneficial if the container could be edited to work with the user: command in the docker compose.

I tried it, and it caused the container webpage to not show

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.