{"id":22669119,"url":"https://github.com/programmersteve/java-javalin-bank-backend","last_synced_at":"2026-05-06T03:31:51.080Z","repository":{"id":252026456,"uuid":"830381600","full_name":"ProgrammerSteve/Java-Javalin-Bank-Backend","owner":"ProgrammerSteve","description":"A REST java backend made using the javalin framework. Uses Postgresql to persist data, jwt tokens for authentication, and hashing for password storage.","archived":false,"fork":false,"pushed_at":"2024-08-06T04:53:07.000Z","size":66,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-03T20:57:12.913Z","etag":null,"topics":["docker","docker-compose","java","javalin","jwt","postgresql"],"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/ProgrammerSteve.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-07-18T07:00:20.000Z","updated_at":"2024-08-07T04:33:54.000Z","dependencies_parsed_at":"2024-08-07T08:56:04.572Z","dependency_job_id":"9518b019-b8da-4b18-a74f-d8ec155d244d","html_url":"https://github.com/ProgrammerSteve/Java-Javalin-Bank-Backend","commit_stats":null,"previous_names":["programmersteve/java-javalin-bank-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ProgrammerSteve/Java-Javalin-Bank-Backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerSteve%2FJava-Javalin-Bank-Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerSteve%2FJava-Javalin-Bank-Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerSteve%2FJava-Javalin-Bank-Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerSteve%2FJava-Javalin-Bank-Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProgrammerSteve","download_url":"https://codeload.github.com/ProgrammerSteve/Java-Javalin-Bank-Backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerSteve%2FJava-Javalin-Bank-Backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32677901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["docker","docker-compose","java","javalin","jwt","postgresql"],"created_at":"2024-12-09T15:18:38.248Z","updated_at":"2026-05-06T03:31:51.050Z","avatar_url":"https://github.com/ProgrammerSteve.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Setting up .env file\n```\nJDBC_URL=jdbc:postgresql://postgres-server:5432/postgres\nJDBC_USERNAME=postgres\nJDBC_PASSWORD=XXXXXXX\n\nDB_USER=postgres\nDB_PASSWORD=XXXXXXX\nDB_NAME=postgres\n\nSECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n```\n\n### Setting up connection to postgresql database\n- At the file: `src/main/resources`, the `application.properties` file sets up the db connection and secret key\n- using `${}`, we pull values from `.env`\n- Secret key should be long enough to be secure\n- Should follow the format:\n```\nsecret.key=${secret.key}\njdbc.url=${jdbc.url}\njdbc.username=${jdbc.username}\njdbc.password=${jdbc.password}\n```\n\n### Commands used\n- mvn clean package //recreate .jar file to be packaged in docker image\n- docker-compose up --build //build the docker containers for the java backend and postgresql along with a volume\n- docker-compose down -v //takes down the docker containers along with the volume\n- docker build -t javalinbank . //build the java backend container by itself\n\n### wait-for-it.sh\n- a bash script from https://github.com/vishnubob/wait-for-it\n- used in dockerfile for java backend\n- waits for postgresql container to initialize before running java container\n\n### Database for postgres\n- There is a one-to-many relationship between two tables: `users`, `accounts`\n- `docker-compose.yml` file uses the `init/setup.sql` file to create tables\n```\nCREATE TABLE IF NOT EXISTS users (\n    user_id SERIAL PRIMARY KEY,\n    username VARCHAR(50) UNIQUE,\n    password VARCHAR(50)\n);\n\nCREATE TABLE IF NOT EXISTS accounts (\n    account_id SERIAL PRIMARY KEY,\n    user_id INT UNIQUE,\n    balance DECIMAL(10, 2) CHECK (balance \u003e= 0),\n    account_type VARCHAR(20) NOT NULL,\n    FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE\n);\n```\n### Entity Relationship Diagram for this Backend\n![](src/main/resources/java-bank-erd.png)\n\n## Endpoints for users:\n\u003chr/\u003e\n\n#### `/get_accounts_by_user_id` `GET` `Requires Jwt`\n- Uses jwt payload to get user_id\n- returns a list of accounts for the user\n#### `/get_all_users` `GET`\n- returns all users\n#### `/register/{accountType}` `POST`\n- path param for accountType takes in a String for the type of account wanted: \"Checking\", \"Savings\", \"Roth IRA\", etc. Would probably be an enum if I continued working on this.\n- request body is in the format: **username (String)**, **password (String)**\n`{\"username\":\"XXXXXX\",\"password\":\"XXXXXX\"}`\n\u003chr/\u003e\n\n## Endpoints for accounts:\n\u003chr/\u003e\n\n#### `/view_balance` `POST` `Requires Jwt`\n- request body is in the format: **accountId (Integer)**\n  `{\"accountId\":\"XXXXXX\"}`\n#### `/withdraw` `POST` `Requires Jwt`\n- request body is in the format: **accountId (Integer)**, **amount (BigDecimal)**\n  `{\"accountId\":\"XXXXXX\",\"amount\":\"XXXXXX\"}`\n#### `/deposit` `POST` `Requires Jwt`\n- request body is in the format: **accountId (Integer)**, **amount (BigDecimal)**\n  `{\"accountId\":\"XXXXXX\",\"amount\":\"XXXXXX\"}`\n\u003chr/\u003e\n\n## Endpoints for auth:\n\u003chr/\u003e\n\n#### `/login` `POST`\n- request body is in the format: **username (String)**, **password (String)**\n  `{\"username\":\"XXXXXX\",\"password\":\"XXXXXX\"}`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrammersteve%2Fjava-javalin-bank-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogrammersteve%2Fjava-javalin-bank-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrammersteve%2Fjava-javalin-bank-backend/lists"}