{"id":15050550,"url":"https://github.com/budgetingwebsite/backend","last_synced_at":"2026-01-23T10:16:41.220Z","repository":{"id":256238137,"uuid":"854619710","full_name":"BudgetingWebsite/Backend","owner":"BudgetingWebsite","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-26T18:37:59.000Z","size":428,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T02:14:53.523Z","etag":null,"topics":["backend","bouncycastle","budgeting","dropwizard","java","java-17","jooq","rest-api","sql"],"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/BudgetingWebsite.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":"2024-09-09T13:48:50.000Z","updated_at":"2024-09-23T21:27:09.000Z","dependencies_parsed_at":"2025-02-16T09:32:30.387Z","dependency_job_id":"8854cd69-7e52-4381-8ffd-d8a367f4be40","html_url":"https://github.com/BudgetingWebsite/Backend","commit_stats":null,"previous_names":["budgetingwebsite/backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BudgetingWebsite%2FBackend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BudgetingWebsite%2FBackend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BudgetingWebsite%2FBackend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BudgetingWebsite%2FBackend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BudgetingWebsite","download_url":"https://codeload.github.com/BudgetingWebsite/Backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248142902,"owners_count":21054671,"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":["backend","bouncycastle","budgeting","dropwizard","java","java-17","jooq","rest-api","sql"],"created_at":"2024-09-24T21:27:15.920Z","updated_at":"2026-01-23T10:16:41.206Z","avatar_url":"https://github.com/BudgetingWebsite.png","language":"Java","readme":"# Budgeting Website Backend\nThis is the backend for the budgeting website. It should provide for the majority of processing and logic for the website. Users should be able to create secure accounts, store income and expense records, categorize those records into bucket, and budget their finances. Statistics should also be provided, such as net income over time.\n\nCurrently, several databases are intended to be supported. They include MySQL, PostgreSQL, MariaDB, SQLite, and H2. For testing, H2 is being used.\n\n# Technology\n- Java 17\n- Dropwizard\n- Jooq\n- SQLite JDBC\n- H2 JDBC\n- MySQL JDBC\n- PostgreSQL JDBC\n- MariaDB JDBC\n- Bouncycastle\n- JUnit\n- Jackson\n- Mybatis\n\n# Configuration\nThe project-specific configurations you can set in the YAML file you'll provide to the program.\n\n- `database-url \u003cString\u003e` - _the url to the database._\n- `admin-username \u003cString\u003e` - _the username of the admin account to be autogenerated._\n- `admin-password \u003cString\u003e` - _the password of the admin account to be autogenerated._\n- `max-username-length \u003cInteger\u003e` - _the maximum length to allow for usernames._\n\n# Setup\nThe schema for initializing the database can be found at src/main/resources/schema.sql.\n\n# Endpoints\n\n## Account\n\n### `POST`\u0026emsp;/account/{uuid}\nCreates a new account with the provided username and password.\n\n#### Consumes JSON\n```\n{\n\tusername: String,\n\tpassword: String\n}\n```\n\n### `AUTH:Basic`\u0026emsp;`DELETE`\u0026emsp;/account/{username}\nDelete an existing account based on the provided username. Will return 401 if the provided credentials does not correspond to an account with the admin role or is not the same account that is being deleted.\n\n### `AUTH:Basic`\u0026emsp;`PUT`\u0026emsp;/account/password\nUpdate the password of authenticated account. \n\n#### Consumes JSON\n```\n{\n\tpassword: String\n}\n```\n\n### `AUTH:Basic`\u0026emsp;`Permited:ADMIN`\u0026emsp;`PUT`\u0026emsp;/account/{username}/roles\nUpdate the roles of the account of the provided username. The roles should be comma-delimited. They are case-sensitive. The allowed roles are USER and ADMIN.\n\n#### Consumes JSON\n```\n{\n\troles: String\n}\n```\n\n## Account\n\n### `AUTH:Basic`\u0026emsp;`POST`\u0026emsp;/bucket\nCreate a new bucket.\n\n#### Consumes JSON\n```\n{\n\tname: String,\n\tshare: Double\n}\n```\n\n### `AUTH:Basic`\u0026emsp;`DELETE`\u0026emsp;/bucket/{uuid}\nDelete the bucket associated with the provided UUID.\n\n### `AUTH:Basic`\u0026emsp;`PUT`\u0026emsp;/bucket/{uuid}\nUpdate the bucket associated with the provided UUID.\n\n#### Consumes JSON\n```\n{\n\tname: String,\n\tshare: Double\n}\n```\n\n### `AUTH:Basic`\u0026emsp;`GET`\u0026emsp;/bucket\nGet the authenicated user's buckets.\n\n#### Produces JSON\n```\n{\n\t[\n\t\t{\n\t\t\tuuid: String,\n\t\t\tcreated: LocalDateTime,\n\t\t\tupdated: LocalDateTime,\n\t\t\towner: String,\n\t\t\tname: String,\n\t\t\tshare: Double,\n\t\t\tamount: Long\n\t\t},\n\t\t...\n\t]\n}\n```\n\n## Financial Record\n\n### `AUTH:Basic`\u0026emsp;`POST`\u0026emsp;/record/income\nAdd an income record.\n\n#### Consumes JSON\n```\n{\n\tamount: Integer,\n\tyear: Integer,\n\tmonth: Integer,\n\tday: Integer,\n\tcategory: String,\n\tdescription: String\n}\n```\n#### Produces TEXT\n```\nuuid: String\n```\n\n### `AUTH:Basic`\u0026emsp;`POST`\u0026emsp;/record/expense\nAdd an expense record.\n\n#### Consumes JSON\n```\n{\n\tamount: Integer,\n\tyear: Integer,\n\tmonth: Integer,\n\tday: Integer,\n\tcategory: String,\n\tdescription: String,\n\tbucket: String\n}\n```\n\n#### Produces TEXT\n```\nuuid: String\n```\n\n### `AUTH:Basic`\u0026emsp;`DELETE`\u0026emsp;/record/income/{uuid}\nDelete an income record.\n\n### `AUTH:Basic`\u0026emsp;`DELETE`\u0026emsp;/record/expense/{uuid}\nDelete an expense record.\n\n### `AUTH:Basic`\u0026emsp;`GET`\u0026emsp;/record/income\nGet income records in the time range. Month and day values start at 1. So, January 1st, 2024, would be `...startYear=2024\u0026startMonth=1\u0026startDay=1...`\n\n#### Consumes PARAMS\n```\nstartYear: String\nstartMonth: String\nstartDay: String\nendYear: String\nendMonth: String\nendDay: String\n```\n\n### `AUTH:Basic`\u0026emsp;`GET`\u0026emsp;/record/expense\nGet expense records in the time range. Month and day values start at 1. So, January 1st, 2024, would be `...startYear=2024\u0026startMonth=1\u0026startDay=1...`\n\n#### Consumes PARAMS\n```\nstartYear: String\nstartMonth: String\nstartDay: String\nendYear: String\nendMonth: String\nendDay: String\n```\n\n### `AUTH:Basic`\u0026emsp;`PUT`\u0026emsp;/record/income/{uuid}\nUpdate an income record.\n\n#### Consumes JSON\n```\n{\n\tamount: Integer,\n\tyear: Integer,\n\tmonth: Integer,\n\tday: Integer,\n\tcategory: String,\n\tdescription: String\n}\n```\n\n### `AUTH:Basic`\u0026emsp;`PUT`\u0026emsp;/record/expense/{uuid}\nUpdate an expense record.\n\n#### Consumes JSON\n```\n{\n\tamount: Integer,\n\tyear: Integer,\n\tmonth: Integer,\n\tday: Integer,\n\tcategory: String,\n\tdescription: String,\n\tbucket: String\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbudgetingwebsite%2Fbackend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbudgetingwebsite%2Fbackend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbudgetingwebsite%2Fbackend/lists"}