1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-23 15:19:38 +02:00
Commit graph

87 commits

Author SHA1 Message Date
Zach Gollwitzer
98df7ccb11
Deps cleanup (#702) 2024-05-02 10:18:06 -04:00
Jose Farias
4c5f8263bc
Implement transaction category management (#688)
* Singularize "transaction" in transaction-nested paths

* Refactor category badge partial

* Let modal content define its width

* Add contectual menu to transactions index

* Add null_category helper

* Implement category edits

* Fix inline transaction category badges

* Fix typos in system test paths

* Add missing translations

* Add decoration to color select controller

* Wire up transaction category creation

* Fix indent in color-select-controller

* Add button for clearing category from transaction

* Implement category deletions

* Fix existing modal sizes

* Use null_category in a single place

* Remove anemic method in category deletion controller

* reassign_and_destroy -> reassign_transactions_then_destroy

* Fix i18n

* Remove destroy action from CategoriesController callbacks

* transactions_merchant -> transaction_merchant

* reassign_transactions_then_destroy -> replace_and_destroy

* Add transaction category CRUD tests

* Add presence check for transaction_id

* Check replacement_category_id presence

* Test Transaction::Category#replace_and_destroy!
2024-05-02 09:24:31 -04:00
Thibaut Gorioux
6fdb8e8d69
Allow a self-hosted user to configure their SMTP settings directly from within the UI (#682)
* Add setting fields to model

* Allow to configure SMTP settings

* Normalize locales

* Cleanup locales

* Remove 'coming soon'

* fix test

* Reset credentials

* Reset development config

* Check smtp spelling

* Use post instead of get method

* TLS ENV variable is more descriptive

* Rework application mailer

* Follow rails convention for mailer action params

* Reset schema.rb to main

* Test WIP

* Add test for controller and mailer

* Move tests from controller to model

* Custom error message if settings are not all present

* Comment smtp config in development env

* Add default tls enabled value

* Rubocop

* Fix controller test

* Reset credentials

* Normalize locales

* Test

* fix test

* Fix application mailer test that fails randomly

* Error flash message instead of notice

* Rework application mailer tests
2024-04-29 16:44:24 -04:00
Jakub Kottnauer
9549182462
Add Transaction Merchant management (#686)
* Add basid crud for merchant management

* Tweak UI and add localization

* Fix lint

* Add filtering by merchant

* Add tests

* Add stimulus controller to update avatar in merchant form

* Add line between merchant rows

* Change default merchant color

* Cleanup
2024-04-29 15:17:28 -04:00
Razvan Marescu
93953499a6
Fix profile page on fresh install (#684) 2024-04-27 08:59:02 -04:00
Jakub Kottnauer
ad4de99f1a
Add partial account sync support (#653)
* Add partial account sync support

* Fix indentation

* Use historical balance as base when doing partial sync

* Simplify controller crud tests

* Fix linter errors
2024-04-24 15:55:52 -04:00
Josh Brown
b3f8ab78d9
Implement savings rate insight card (#670) 2024-04-24 10:02:22 -04:00
Josh Brown
461fa672ff
Add income and spending insight cards to dashboard (#668)
* Generate time series for rolling 30 day sum of income and spending

* Highlight accounts with most income and spending in the last 30 days

* Aggregate chips after 3 top accounts in insight card

* Refactor aggregation filter

I think this is easier to read and understand whats happening at a
glance

* Refactor and tidy

* Use family currency for insight cards

* Further reduce risk of sql injection

* Fix lint

* Refactor rolling total queries

* Add test for transaction snapshot
2024-04-24 08:34:50 -04:00
Jose Farias
fc3ade392a
Refactor TimeSeries artifacts (#651)
* Reindent TimeSeries classes

* Fix spacing in time series tests

* Remove trend tests where current is nil

I think if we've gotten this far with a nil value for current, there's a data integrity problem.

If we allow this, we'll have to be very defensive in our code. Best to raise and fix early.

* Reindent Money class

* Refactor TimeSeries artifacts

* Use as_json in TimeSeries

* Bring back tests for trends where current is nil

* Bring back trend test

* Correctly enumerate trend test

* Use favorable_direction for trend_styles helper

* Make trend public in TimeSeries::Value

* Allow nil current values in trends

I think I might've gotten it wrong before, nils might appear in trends if values are unavailable for snapshots

* Clean up TimeSeries::Trend

* Skip trend values same class validations if any values are nil

* Refactor Money

* Remove object parsing in TimeSeries::Value

We're only every passing hashes
2024-04-22 08:30:42 -04:00
Zach Gollwitzer
5aca2ff9b6
Add zero-config self hosting on Render (#612)
* v1 of backend implementation for self hosting

* Add docs

* Add upgrades controller

* Add global helpers for self hosting mode

* Add self host settings controller

* Conditionally show self hosting settings

* Environment and config updates

* Complete upgrade prompting flow

* Update config for forked repo

* Move configuration of github provider within class

* Add upgrades cron

* Update deploy button

* Update guides

* Fix render deployer

* Typo

* Enable auto upgrades

* Fix cron

* Make upgrade modes more clear and consistent

* Trigger new available version

* Fix logic for displaying upgrade prompts

* Finish implementation

* Fix regression

* Trigger new version

* Add i18n translations

* trigger new version

* reduce caching time for testing

* Decrease cache for testing

* trigger upgrade

* trigger upgrade

* Only trigger deploy once

* trigger upgrade

* If target is commit, always upgrade if any upgrade is available

* trigger upgrade

* trigger upgrade

* Test release

* Change back to maybe repo for defaults

* Fix lint errors

* Clearer naming

* Fix relative link

* Add abs path

* Relative link

* Update docs
2024-04-13 09:28:45 -04:00
Zach Gollwitzer
b1bfdef8ff
Isolate infinite loop bug, add timeout to actions (#583)
* Isolate infinite loop bug, add timeout to actions

* Increase timeout to allow for temporary failure

* Set correct timeout, implement temporary fix

* Trigger syncs at controller layer
2024-03-29 12:53:08 -04:00
Jose Farias
7ae25dd6df
Implement Synth as an exchange rate provider (#574)
* Implement Synth as an exchange rate provider

* Add assertions to provider interface test

* Assert the correct provider error is raised

* Remove unnecessary parens
2024-03-27 11:16:00 -04:00
Zach Gollwitzer
110855d077
Multi-Currency Part 2 (#543)
* Support all currencies, handle outside DB

* Remove currencies from seed

* Fix account balance namespace

* Set default currency on authentication

* Cache currency instances

* Implement multi-currency syncs with tests

* Series fallback, passing tests

* Fix conflicts

* Make value group concrete class that works with currency values

* Fix migration conflict

* Update tests to expect multi-currency results

* Update account list to use group method

* Namespace updates

* Fetch unknown exchange rates from API

* Fix date range bug

* Ensure demo data works without external API

* Enforce cascades only at DB level
2024-03-21 13:39:10 -04:00
Juan B. Rodriguez
49d1fe0e11
feat: add crypto account type to demo data (#555)
* feat: add crypto account type to demo data

* fix: set currency to BTC, revert schema migration change and fix tests

* fix: update dates in time_series tests
2024-03-19 15:34:35 -04:00
Zach Gollwitzer
f904d9d062
Add the ability to "rollup" values in a time series (#554)
* Clean up time series models

* Add value group rollup class for summarizing hierarchical data

* Integrate new classes

* Update UI to use new patterns

* Update D3 charts to expect new data format

* Clean up account model

* More cleanup

* Money improvements

* Use new money fields

* Remove invalid fixture data to avoid orphaned accountables

* Update time series to work better with collections

* Fix tests and UI bugs
2024-03-19 09:10:40 -04:00
Zach Gollwitzer
fe2fa0eac1
Multi-currency support: Money + Currency class improvements (#553)
* Money improvements

* Replace all old money usage
2024-03-18 11:21:00 -04:00
Zach Gollwitzer
c60ddaec1d
Multi-currency part 1 (#542)
* Add family snapshots table

* Add snapshot method, clean up family expected results

* Remove old sync trigger
2024-03-11 16:32:13 -04:00
Jakub Kottnauer
90d0cc0c39
Add backend support for transaction categories (#524)
* Add backend support for transaction categories

* Fix tests

* Localize default category names

* Add tests

* Remove category icon and set default color
2024-03-07 13:15:50 -05:00
Zach Gollwitzer
ad7136cb63
Add accounts management list (#522)
* Add accounts management

* Normalize i18n file

* Get turbo streams working

* Ignore disabled accounts in calculations

* Add empty state
2024-03-07 10:55:51 -05:00
Zach Gollwitzer
6f0e410684
Dashboard View and Calculations (#521)
* Handle Turbo updates with tabs

Fixes #491

* Add Filterable concern for controllers

* Add trendline chart

* Extract common UI to partials

* Series refactor

* Put placeholders for calculations in

* Add classification generated column to account

* Add basic net worth calculation

* Add net worth tests

* Get net worth graph working

* Fix lint errors

* Implement asset grouping query

* Make trends and series more intuitive

* Fully functional dashboard

* Remove logging
2024-03-06 09:56:59 -05:00
Zach Gollwitzer
facd74f733
Net worth calculation (#508)
* Add classification generated column to account

* Add basic net worth calculation

* Add net worth tests

* Fix lint errors
2024-03-04 08:31:22 -05:00
Zach Gollwitzer
0fe9b6d34a
Add Money and Money Series (#505)
* Add Money class

* Standardize creation of money series

* Formatting

* Fix test
2024-03-01 17:17:34 -05:00
Zach Gollwitzer
14641d16de
Add Local Development Demo Data (#502)
* Clean up seeds, add development demo data

* Handle liability account display and sync

* Fix tests
2024-02-29 16:35:54 -05:00
Zach Gollwitzer
dbf575c02a
Basic Account Balance Sync Algorithm (#501)
* Sketch out sync interface

* Add basic account sync algorithm

* Update logic for final balance in series

* Remove start_date concept

* Clean up tests

* Improve clarity of test

* Update app/models/account.rb

Co-authored-by: Rob Zolkos <rob@zolkos.com>
Signed-off-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>

* Update app/models/transaction.rb

Co-authored-by: Rob Zolkos <rob@zolkos.com>
Signed-off-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>

* Update app/models/valuation.rb

Co-authored-by: Rob Zolkos <rob@zolkos.com>
Signed-off-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>

* Re-organize code, simplify job interface

* Consolidate balance calculations

* More cleanup

---------

Signed-off-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>
Co-authored-by: Rob Zolkos <rob@zolkos.com>
2024-02-29 08:32:52 -05:00
Zach Gollwitzer
7d48c01833
Prepare fixture data for account sync tests (#493)
* Rename account balance field for clarity

`original_balance` and `original_currency` may infer that these values are "original" to the account.  In reality, they represent the "current" balance and currency on the account.

* Prepare fixture data for account sync testing

* Update to new field

* Fix conflicts

* Remove local schema change
2024-02-27 12:43:49 -05:00
Zach Gollwitzer
87b97b3c41
Scaffold out basic transactions model and UI (#478)
* Transaction scaffold

* Rough in transaction views

* Fix sort order

* Fix mass assignment issue

* Fix test

* Simplify CI workflow

* Don't seed db before test
2024-02-23 21:34:33 -05:00
Zach Gollwitzer
b5b2d335fd
Add Live Data to Account Page (#464)
* Add trends, time series, seed data

* Remove test data

* Replace old view values with helpers

* Fix tooltip bugs in D3 chart

* Fix tests

* Fix smoke test

* Add CRUD actions for valuations

* Scaffold out inline editing with Turbo
2024-02-20 09:07:55 -05:00
Zach Gollwitzer
3ec9c9b56b
Scaffold out the UI for individual account page (#461)
* Add `AccountBalance` table for account views

* Scaffold out account UI

* Add D3 line chart scaffolding

* Style fixes
2024-02-14 13:02:11 -05:00
Josh Pigford
aa351ae616
Multi-currency support (#425)
* Initial foundational pass at multi-currency

* Default format currency

* More work on currency and exchanging

* Re-build currencies on change

* Currency import/setup

* Background job overhaul + cheaper OXR plan support

* Lint fixes

* Test fixes

* Multi-currency setup instructions

* Allow decimals in the balance field

* Spacing fix for form

---------

Signed-off-by: Josh Pigford <josh@joshpigford.com>
2024-02-10 16:18:56 -06:00
Nidhi Sarvaiya
1182ab39bd
Integrate money-rails gem (#268)
* Integrate money-rails gem

* Fix Lint issues

* Basic test for monetize feature

* Merge main branch

* Changes to monetize balance field

---------

Co-authored-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>
2024-02-06 12:30:51 -05:00
Dwight Watson
d61a22b070
Opt-in to Current fully (#297) 2024-02-04 17:36:46 -06:00
Lee McAlilly
69698d0463
Add initial model tests with starter fixtures for User, Family, and Account (#281)
* Add initial user fixture

* Add initial tests for  the User model

* Add initial tests for Family and a valid Account

* Pass rubocop
2024-02-03 13:07:23 -06:00
Rob Zolkos
71939d6fb5 Rework Account to use delegated types 2024-02-03 02:48:51 +00:00
Jose Farias
3852b79121
Use consistent language for invite codes 2024-02-02 19:37:10 -06:00
Jose Farias
8118927f9b
Improve InviteCode generate! test 2024-02-02 19:34:58 -06:00
Jose Farias
b3a792c47d
Implement invitation codes 2024-02-02 17:55:27 -06:00
Josh Pigford
99de24ac70 Initial commit 2024-02-02 09:05:04 -06:00