{"id":28509394,"url":"https://github.com/r3dacted42/bank-mgmt-sys","last_synced_at":"2025-07-03T01:31:20.173Z","repository":{"id":283077312,"uuid":"869105251","full_name":"r3dacted42/bank-mgmt-sys","owner":"r3dacted42","description":"bank management server-client system mini project made for software systems course","archived":false,"fork":false,"pushed_at":"2025-03-23T17:09:28.000Z","size":672,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-08T22:09:10.396Z","etag":null,"topics":["concurrent-server","file-locking","multithreading","ncurses-tui","socket-programming"],"latest_commit_sha":null,"homepage":"","language":"C","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/r3dacted42.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-10-07T18:15:46.000Z","updated_at":"2025-03-23T17:09:31.000Z","dependencies_parsed_at":"2025-03-18T13:27:49.517Z","dependency_job_id":null,"html_url":"https://github.com/r3dacted42/bank-mgmt-sys","commit_stats":null,"previous_names":["r3dacted42/bank-mgmt-sys"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/r3dacted42/bank-mgmt-sys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r3dacted42%2Fbank-mgmt-sys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r3dacted42%2Fbank-mgmt-sys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r3dacted42%2Fbank-mgmt-sys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r3dacted42%2Fbank-mgmt-sys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r3dacted42","download_url":"https://codeload.github.com/r3dacted42/bank-mgmt-sys/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r3dacted42%2Fbank-mgmt-sys/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263243621,"owners_count":23436336,"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":["concurrent-server","file-locking","multithreading","ncurses-tui","socket-programming"],"created_at":"2025-06-08T22:08:22.137Z","updated_at":"2025-07-03T01:31:20.155Z","avatar_url":"https://github.com/r3dacted42.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# swsys pre-midterm \"mini\" project\n\"bank management system\"  \nuse `./install_packages.sh` to install required C libraries  \nuse `./run_server.sh` and `./run_client.sh` to run server and client respectively  \nuses libbcrypt for password hashing and ncurses for client tui  \nplease find the up-to-date project repository here: [r3dacted42/bank-mgmt-sys](https://github.com/r3dacted42/bank-mgmt-sys)  \n\n## feature set\nthe following user phases are supported:  \n- admin\n    - create user\n    - view / modify user\n    - delete user\n- manager\n    - activate / deactivate customer accounts\n    - assign loan applications to employees\n    - review customer feedback\n- employee\n    - add new customer\n    - modify customer info (needs fixing)\n    - review assigned loan applications\n    - view customer transactions\n- customer\n    - view balance\n    - deposit money\n    - withdraw money\n    - transfer money\n    - apply for loan\n    - view submitted loan applications\n    - view transaction history\n    - add feedback  \n\naside from the above, all users can their change password as well\n\n## todo\n- delete all user related records on user deletion\n- delete all irrelevant records on user role change\n- add docstrings for important functions xP\n\n## known issues\n- updating customer info from employee phase causes crash\n\n## general flow\n- the models store the structure of data used throughout the project\n- the controllers directly interact with the database files, using locking to ensure the files are not modified unexpectedly\n- the server births a new thread for each incoming connection\n- the client must login using credentials which are verified by the worker thread using functions provided by \nthe [user controller](https://github.com/r3dacted42/bank-mgmt-sys/blob/master/controller/user.h)\n- if the same user logs in from a different terminal, the previous thread with for that user account is cancelled\n- once authenticated, the server responds with the role of the user\n- the client shows the menu corresponding to the role of the logged-in user\n- subsequent requests are serviced as they arrive and the response is sent by the worker thread through the socket\n- for special kinds of request where the size of the response is not pre-known, the data is buffered into the socket \nthe number of objects to be read from the socket is sent in the response under the `bufcount` variable\n- the types of requests and their required data can be seen in [request.h](https://github.com/r3dacted42/bank-mgmt-sys/blob/master/model/request.h)\n- unions are used in the Request and Response structs to store the required data before being sent\n\n## class diagram\n![class_diagram.png](https://github.com/r3dacted42/bank-mgmt-sys/blob/master/class_diagram.png?raw=true)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr3dacted42%2Fbank-mgmt-sys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr3dacted42%2Fbank-mgmt-sys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr3dacted42%2Fbank-mgmt-sys/lists"}