This means you can now schedule transactions for your credit cards, choosing between installment-based payments or recurring ones. Here's what I changed: - I added a new `ScheduledTransaction` model. This will keep track of all the details for these scheduled payments, like how often they occur, the number of installments, the date of the next payment, and so on. - I set up connections between `ScheduledTransaction` and `Account`, `Category`, and `Merchant`. - I created a background process, `CreateTransactionsFromScheduledJob`. This process will run regularly to: - Find any scheduled transactions that are due. - Create the necessary `Transaction` and `Entry` records for them. - Update the `next_occurrence_date` for the scheduled transaction. - Manage the lifecycle of these transactions. For installments, this means increasing the count and removing the schedule when it's complete. For recurring transactions, it means removing the schedule if it's past its end date. - I updated the user interface for Credit Cards: - I added a new section under each credit card where you can see and manage its scheduled transactions. - I implemented a new nested controller, `CreditCards::ScheduledTransactionsController`, to handle creating, viewing, editing, and deleting these scheduled transactions. - I created new views and partials to display the list of scheduled transactions and a form for creating or editing them, using Turbo Streams for a smoother experience. - I made sure that your existing transaction views will correctly show transactions generated by this new process. - I added model tests for `ScheduledTransaction`, job tests for `CreateTransactionsFromScheduledJob`, and controller/integration tests for the new UI. **Important Notes:** - I generated the database migration for `ScheduledTransaction` (`db/migrate/20250524135137_create_scheduled_transactions.rb`), but I couldn't run it because of an ongoing PostgreSQL issue in my automated environment. You'll need to run this migration manually. - Similarly, I've written the new tests, but I couldn't execute them to confirm they pass due to the same database connectivity problem. You'll need to run and verify these tests in an environment where PostgreSQL is working correctly. |
||
---|---|---|
.cursor/rules | ||
.devcontainer | ||
.github | ||
app | ||
bin | ||
config | ||
db | ||
docs/hosting | ||
lib | ||
log | ||
public | ||
storage | ||
test | ||
tmp | ||
vendor | ||
.dockerignore | ||
.editorconfig | ||
.env.example | ||
.env.local.example | ||
.env.test.example | ||
.erb_lint.yml | ||
.gitattributes | ||
.gitignore | ||
.rubocop.yml | ||
.ruby-version | ||
biome.json | ||
compose.example.yml | ||
config.ru | ||
CONTRIBUTING.md | ||
Dockerfile | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
Procfile.dev | ||
Rakefile | ||
README.md |
Maybe: The personal finance app for everyone
Get involved: Discord • Website • Issues
Backstory
We spent the better part of 2021/2022 building a personal finance + wealth management app called, Maybe. Very full-featured, including an "Ask an Advisor" feature which connected users with an actual CFP/CFA to help them with their finances (all included in your subscription).
The business end of things didn't work out, and so we shut things down mid-2023.
We spent the better part of $1,000,000 building the app (employees + contractors, data providers/services, infrastructure, etc.).
We're now reviving the product as a fully open-source project. The goal is to let you run the app yourself, for free, and use it to manage your own finances and eventually offer a hosted version of the app for a small monthly fee.
Maybe Hosting
There are 2 primary ways to use the Maybe app:
- Managed (easiest) - we're in alpha and release invites in our Discord
- Self-host with Docker
Contributing
Before contributing, you'll likely find it helpful to understand context and general vision/direction.
Once you've done that, please visit our contributing guide to get started!
Local Development Setup
If you are trying to self-host the Maybe app, stop here. You should read this guide to get started.
The instructions below are for developers to get started with contributing to the app.
Requirements
- See
.ruby-version
file for required Ruby version - PostgreSQL >9.3 (ideally, latest stable version)
After cloning the repo, the basic setup commands are:
cd maybe
cp .env.local.example .env.local
bin/setup
bin/dev
# Optionally, load demo data
rake demo_data:reset
And visit http://localhost:3000 to see the app. You can use the following credentials to log in (generated by DB seed):
- Email:
user@maybe.local
- Password:
password
For further instructions, see guides below.
Multi-currency support
If you'd like multi-currency support, there are a few extra steps to follow.
- Sign up for an API key at Synth. It's a Maybe product and the free plan is sufficient for basic multi-currency support.
- Add your API key to your
.env
file.
Setup Guides
- Mac dev setup guide
- Linux dev setup guide
- Windows dev setup guide
- Dev containers - visit this guide to learn more
Repo Activity
Copyright & license
Maybe is distributed under an AGPLv3 license. " Maybe" is a trademark of Maybe Finance, Inc.