Our App is in the alpha stage, the beta is coming soon.

Welcome to Costs to Expect



Costs to Expect is a service focused on tracking and forecasting expenses. We are trying to simplify your budgets. There are three core products in the service; the Open Source REST API, our App and an Open Source website showing the costs to raise our children to adulthood.

Our API is the backbone of the service, everything depends on it. Our API is available to anyone who wants to use it. Our focus is expenses, however, that will change as the product matures.

Access API View our API on Github

Our Products

There are multiple products within the Costs to Expect service, the major products being our API and App, below is a quick overview of each product.


Our Open Source REST API, available under the MIT license, the API drives the entire service.

Our App

Our App is the commercial offering for Costs to Expect, we are working towards the public alpha, our aim is to make tracking and forecasting expenses as simple as possible.

Our Website

Our website is a long-term social project. My wife and I are tracking all the expenses to raise our child to adulthood.

Our Blog

Our blog acts as a central repository to list all updates, explains why we are doing what we are and acts as a place for us to talk about our products and the service.

Latest feature release [v2.10.0]

The latest release of the Costs to Expect API is 2.10.4; we released it on the 23rd May 2020.

The combined changelog below shows all the fixes and improvements we have made to the API since the last feature release.


  • We have added a new route, `/resource_types/[id]/resources/[id]/items/[id]/partial-transfer`; A partial transfer allows you to transfer a percentage of the `total` for an item from one resource to another.
  • We have added an `item_transfer` table; the table will log which items were transferred and by whom.
  • We have added a partial transfers collection; the route is `/resource_types/[id]/partial-transfers`.
  • We have added a partial transfers item view; the route is `/resource_types/[id]/partial-transfers/[id]`.
  • We have added a transfers collection; the route is `/resource_types/[id]/transfers`.
  • We have added a transfers item view; the route is `/resource_types/[id]/transfers/[id]`.
  • We have added a delete endpoint for partial transfers.


  • We have reformatted the validation rules in the configuration files; easier to read and simpler to add additional rules.
  • We have switched the HTTP status code for a "Constraint error" from 500 to 409.
  • We have tweaked the description for the resource field in the `/resource_types/[id]/resources/[id]/items/[id]/transfer` OPTIONS request.
  • We have renamed the third parameter of the route validation methods; we changed the name from `$manage` to `$write`.
  • We have renamed a response helper method; it was not clear from the name that the method is used for updates and delete.
  • We have tweaked our Docker setup to allow a local API and App/Website; the ports have been changed and a network has been created.
  • We have updated all item endpoints to return `updated`; this is the date and time an item was updated, not its category assignments.
  • We have updated item collection and show endpoints; we are going to allow the possibility of items not having categories and subcategories. When you add the `include-categories` and `include-subcategories` parameters to a request, we will not exclude items without category assignments.
  • We have updated the API to the latest release of Laravel 7.
  • We have updated the front end dependencies for the welcome page.
  • We have updated the `item-types` route to show additional information on each tracking method.
  • We have updated all decimal fields to 13,2 rather than 10,2.
  • We have updated all description fields; we have switched all the description fields from varchar(255) to text.


  • It is possible to set the quantity for a `simple-item` item as zero.
  • It is possible to clear optional values in a PATCH request.
  • We have corrected a bad link on the landing page.
  • We have corrected a typo on the landing page.
  • We have switched the table we look at to return created at for an item; we should be using the sub table, not the base item table.
  • We have corrected the `/resource-types/` OPTIONS request; `public` is not a required field.
  • We have updated the delete resource type action; we have added additional checks before we attempt to delete, it was possible to remove relationship values which made the resource type inaccessible.
  • We have adjusted the lottery value to reduce session clears.
  • We have updated to v3.5.1 of Jquery, v3.5.0 was bugged.

Copyright © Dean Blackborough 2018 - 2020
Our App | Our Website | Our Blog | Status

Latest release: 2.10.4 (23rd May 2020)

All code maintained by Dean Blackborough and released under the MIT license.