{"id":15944369,"url":"https://github.com/dimasmith/iris","last_synced_at":"2025-08-16T12:33:33.267Z","repository":{"id":75302537,"uuid":"219605292","full_name":"dimasmith/iris","owner":"dimasmith","description":"Playground. Service that integrates with banking and accounting systems and compares balances","archived":false,"fork":false,"pushed_at":"2024-11-21T02:29:01.000Z","size":178,"stargazers_count":0,"open_issues_count":12,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-21T03:23:08.025Z","etag":null,"topics":["hexagonal-architecture","homemoney","java","monobank","spring","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimasmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-04T22:03:36.000Z","updated_at":"2023-08-24T19:21:12.000Z","dependencies_parsed_at":"2023-11-21T18:27:46.138Z","dependency_job_id":"d93762e0-121b-4508-8c56-24848807e776","html_url":"https://github.com/dimasmith/iris","commit_stats":{"total_commits":90,"total_committers":2,"mean_commits":45.0,"dds":"0.25555555555555554","last_synced_commit":"573d5409539cf4a21ee716faed7c8f6a4debba24"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimasmith%2Firis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimasmith%2Firis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimasmith%2Firis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimasmith%2Firis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimasmith","download_url":"https://codeload.github.com/dimasmith/iris/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230038879,"owners_count":18163311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hexagonal-architecture","homemoney","java","monobank","spring","spring-boot"],"created_at":"2024-10-07T08:22:16.949Z","updated_at":"2024-12-16T23:10:55.009Z","avatar_url":"https://github.com/dimasmith.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Iris\n====\n\n[![Build Status](https://sonarcloud.io/api/project_badges/measure?project=dimasmith_iris\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=dimasmith_iris)\n\nIris is the service that simplifies financial tasks.\nI'm developing it for personal needs, so it is rather simple. The service does not even have any security now. It's more an example project to work with hexagonal architecture.\n\n## Features\n### Implemented\n* Settle Balances - check balances of the banking account and the balance in the accounting system. Display both balances and show whether those are equal.\n\n### Planned\n* Remind of Unsettled Balance - the service performs balance checks on schedule and notifies user if there is misbalance.\n* Manage Periodic Payments - manage a list of subscriptions and periodic payments. It helps to plan a monthly budget.\n* Calculate Taxes - prepare numbers for a tax declaration for the last quarter.\n\n## Settings\n\n| Property | Description | Values |\n| -------- | ----------- | ------ |\n| `iris.banking` | type of banking systems | `demo`, `monobank` |\n| `iris.accounting` | type of accounting systems | `demo`, `homemoney` |\n\n## Integrations\n### Monobank\nIt is possible to retrieve banking accounts and balances from the [Monobank](https://monobank.ua).\n\n### Homemoney\nThe [Homemoney](https://homemoney.ua) is a personal accounting service. \nIris can retrieve accounts and balances from the Homemoney.\n\nTo enable integration first you need to retrieve a token from the [Homemoney API](https://homemoney.ua/api/).\nAfter that, configure properties to enable Homemoney accounting.\n\n```yaml\niris:\n  accounting: homemoney # use Homemoney as accounting\n  homemoney:\n    token: \u003ctoken\u003e # API token for Homemoney\n    currencies: # map currency IDs from Homemoney to ISO currency codes\n      808080: UAH  \n      808081: USD  \n      808082: EUR  \n```\nThe tricky part is the currency. \nHomemoney does not use any standard codes for a currency.\nOnly internal ID is present in a payload. \nThis ID is not consistent between users, so each user has their own mapping.\nThere's also no documented endpoint to get all the currencies for the user.\n\nNote that Iris caches requests to Homemoney API for 5 minutes. \n\n### Todoist\n\nIris can report a balance mismatch by reopening a dedicated task in the [Todoist](https://todoist.com).\n\nEnable a Todoist integration by setting `iris.todoist.enabled=true`. \nYou need an access token to integrate. \nObtain one in the integrations section of the Todoist settings screen.\nThe todoist integration works with a single predefined task. \nWhen balance settled, Iris completes the task. \nWhen settlement check fails, Iris reopens the task and sets its due date on today.\nCreate a task, open its details and supply the task id to the Todoist integration settings.\nAn example settings are:\n\n```yaml\niris:\n  todoist:\n    enabled: true\n    token: 9cffe052-09f2-47ee-9361-dd640fe96a89\n    task-id: 123456\n``` \n\n## Working with the project\n\n### Viewing architecture documents\n\nThe project contains architecture description in a `structurizr` format.\nUse the [Structurizr Lite](https://structurizr.com/help/lite) to view the documentation.\n\nThe easiest way is to use the docker container for Structurizr Lite.\n\n```shell\ndocker run -it --rm -p 8888:8080 -v \"$(pwd)/arch-docs:/usr/local/structurizr\" structurizr/lite\n```\n\nOpen the structurizr ui on [http://localhost:8888](http://localhost:8888)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimasmith%2Firis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimasmith%2Firis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimasmith%2Firis/lists"}