UtiliTrack is a simple utility expense tracker application.
Clone the repository and install the dependencies:
git clone https://github.com/sowrensen/utilitrack.git
composer install --no-dev
Copy the .env.example
file to .env
.
You should configure a database connection. Either SQLite
or MySQL
is fine. Once that is done, you can run the
migrations.
php artisan migrate
There is also a seeder for Category
. It has four default categories, if you want them, append --seed
to migration
command. You can seed later as well by running,
php artisan db:seed --class=CategorySeeder
Set the QUEUE_CONNECTION
key to sync
or database
. sync
is recommended if you won't be
importing/exporting large amount of data.
The app is built using Filament. You should configure the following keys in .env
to access the dashboard.
FILAMENT_PATH=
FILAMENT_DOMAIN=
FILAMENT_PATH
is used if you want to access the admin panel via a route path e.g.http://utilitrack.test/admin
.- If you want to access via a subdomain or the domain itself, set
FILAMENT_DOMAIN
instead.
Important
Keep FILAMENT_PATH
blank if you set FILAMENT_DOMAIN
, else it won't work.
Now, an admin account needs to be created. Run the following command,
php artisan make:filament-user --name <NAME> --email <EMAIL> --password <PASSWORD>
We have a feature that can append each entry to Google Sheets. For this you are going to need
a service account and keys. You should enable the Drive
and Sheets
API scopes. Add the service account as an editor in your spreadsheet.
Once that is done, you should set up the following keys in .env
:
GOOGLE_CLOUD_CONFIG_PATH=absolute/path/to/service-account.json
GOOGLE_SHEET_ID=
Login using your admin credentials. You will see the dashboard.
From the Category menu you can manage categories. You can create subcategories as well. If you check
Has usage per day
checkbox, a per day usage will be calculated for each entry in this category.
From the Expense menu you can manage expenses. There are two filters, Category
and Date
. Note that, the
summaries for Usable, Leftover, and Usage/day columns are only visible when Category
filter
is applied, because they are kinda irrelevant otherwise. A note icon will be visible if entry has any notes.
Using the Import from file
option, you can bulk import expenses from a CSV file. An example csv
file is attached in
the pop-up window which you get upon clicking the button. You will receive a notification when import is complete.
When you select multiple entries in the table, you can export them to a CSV file from the Bulk actions
menu. Your
filters will be applied to the exported data. You will get a notification when export is complete and the file can
be downloaded from the notification either in csv
or xlsx
format.
The new entry form is pretty straightforward. Just fill in the required fields and submit. Append to GSheets
checkbox will appear if you've configured the Google Sheets section.
Caution
If you update the entry later, your changes will not be reflected in the Google Sheet. Also deleting the entry from the app won't remove it from the sheet. However, you can append the entry anytime later from Edit if you haven't during creation.
While editing an existing entry you can append the row google sheet if you haven't already. For already appended
entries,
a green dot will appear beside the title. Otherwise a gray dot will show. Append to GSheets
button will appear if
you've
configured the Google Sheets section regardless of appended or not.
The project is totally meant for personal use. If you need additional features, please fork the repo and do it yourself. Bug repos are always welcome.