{"id":18475522,"url":"https://github.com/danglotb/skillful_network","last_synced_at":"2025-04-08T13:32:18.335Z","repository":{"id":37380734,"uuid":"272182351","full_name":"danglotb/skillful_network","owner":"danglotb","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-07T19:07:18.000Z","size":5940,"stargazers_count":4,"open_issues_count":32,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-23T13:11:17.825Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/danglotb.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}},"created_at":"2020-06-14T10:48:46.000Z","updated_at":"2021-04-20T07:39:16.000Z","dependencies_parsed_at":"2023-02-07T22:17:00.393Z","dependency_job_id":null,"html_url":"https://github.com/danglotb/skillful_network","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danglotb%2Fskillful_network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danglotb%2Fskillful_network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danglotb%2Fskillful_network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danglotb%2Fskillful_network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danglotb","download_url":"https://codeload.github.com/danglotb/skillful_network/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247851864,"owners_count":21006834,"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":[],"created_at":"2024-11-06T10:34:41.894Z","updated_at":"2025-04-08T13:32:13.327Z","avatar_url":"https://github.com/danglotb.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/danglotb/skillful_network.svg?branch=master)](https://travis-ci.org/danglotb/skillful_network) [![Coverage Status](https://coveralls.io/repos/github/danglotb/skillful_network/badge.svg?branch=master)](https://coveralls.io/github/danglotb/skillful_network?branch=master)\n\n# Skillful Network\n\n## Run\n\nClone the projet:\n```sh\ngit clone https://github.com/danglotb/skillful_network.git\n```\n\nRun the frontend:\n```sh\ncd skillful_network_client\nng serve\n```\n\nRun the backend in another terminal:\n```sh\ncd skillful_network_server\nmvn clean package spring-boot:run -DskipTests -Dspring-boot.run.profiles=dev\n```\nHere, the options `-Dspring-boot.run.profiles=dev` specifies the `dev` profile for easy-to-run demo or development. The database is `h2` in the memory and there is no email sent (look at the console when you register).\n\nCheck that the application is running by going to the following url:\n```sh\nhttp://localhost:4200\n```\n\nYou can login using `user@uca.fr` and `Qwerty123`, or create a new account (the temporary code will appear in the console of the backend).\n\n### Code organization\n\n#### Frontend\n\nThe backend is organized as follows:\n\n  - `app`: root of the project\n    - `login`: contains everything related to the first screen: login and register.\n    - `shared`: contains common and shared apis.\n      - `components`: contains abstract and custom material components. Should be reused a maximum.\n      - `models`: contains classes to represent the data manipulated by the application.\n      - `services`: contains all the `services` to requests the backend\n    - `home`: contains everythin concerning the rest of the platform.\n\nWe must reuse a maximum the abstract `components` in order to avoid redundancy of code. Create a new one if you need to.\nEvery requests made to the backend should be handled by the `shared.services.ApiHelperService`, _i.e._ calls to the API `http: HttpClient`.\nHowever, every `components` must use a unique and dedicated `service` to make these requests, and not direclty the `shared.services.ApiHelperService`.\nThe relation between frontend `services` and backend `controllers` must be one-to-one, _i.e._ each frontend `service` requests a unique backend `controller`.\nBut, a `service` can use others `services` if it needs to.\n\n#### Backend\n\nThe backend is organized as follows:\n\nEach responsability, _i.e._ `entities`, `repositories`, `services`, `controllers` has its own package.\nEach reponsible package is divided as follow:\n  - `application`: contains classes related to job and training applications.\n  - `user`: contains classes related to the users and their information.\nIf any class is direclty in the responsible package, it means that there is no sub-package that corresponds to the class.\nAll `services` must be declared as an interface in the package `fr.uca.cdr.skillful_network.services`.\nAll implementations of `services` must be in the sub-package `impl`, _i.e._ namely `fr.uca.cdr.skillful_network.services.impl`.\n\nWe adopt the following basic rules:\n - The link between `controllers` and `services` is one-to-one, _i.e._ a `controller` use an unique `service`.\n - `controllers` must not access directly to `repositories` and must use `services` instead.\n - All the business logic must be in `services`.\n - All the network logic must be in the `controllers`.\n - The link between `services` and `repositories` is one-to-one, _i.e._ a `service` use an unique `repository`.\n\nOthers packages are the following:\n - `request`: contains class definitions of objects send by the frontend.\n - `security`: contains the classes related to the security configuration.\n - `tools`: contains helper classes.\n\n### API\n\nThe API is available at the following url: `http://localhost:8080/swagger-ui.html` while the application backend is running.\n\n### H2 Database\n\nThe database for development used in `H2`, that is loaded in the memory. This database is initialized using the `json` files in `skillful_network_server/main/resources/data/`.\n\nWhile the application backend is running, the database is available at the following url: `localhost:8080/h2`.\nThe username is `sa` and the password is empty ``.\n\nThe json files are generated using the test class `fr.uca.cdr.skillful_network.JSONGenerator`. If you need special instances of entities, you should update the test with you required datas by constructing new objects (please, respect the separation of concerns, each entity has its own method to be generated), generate the json file, and commit your change in the `JSONGenerator` and in json files.\nThis is done in order to share and populate the development database.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanglotb%2Fskillful_network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanglotb%2Fskillful_network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanglotb%2Fskillful_network/lists"}