{"id":18887469,"url":"https://github.com/alvartaco/notification","last_synced_at":"2026-05-05T23:31:21.905Z","repository":{"id":259544017,"uuid":"869296594","full_name":"alvartaco/notification","owner":"alvartaco","description":"Notification Aplication","archived":false,"fork":false,"pushed_at":"2024-11-12T00:29:59.000Z","size":393,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-31T11:43:59.876Z","etag":null,"topics":["design-patterns","factory","htmx","java","observer","oop","spring-boot","strategy"],"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/alvartaco.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,"zenodo":null}},"created_at":"2024-10-08T04:04:19.000Z","updated_at":"2024-11-12T00:30:03.000Z","dependencies_parsed_at":"2024-10-26T11:32:22.048Z","dependency_job_id":"b58c9b11-d889-4e13-9b4d-564ab1890bbc","html_url":"https://github.com/alvartaco/notification","commit_stats":null,"previous_names":["alvartaco/notification"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/alvartaco/notification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvartaco%2Fnotification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvartaco%2Fnotification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvartaco%2Fnotification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvartaco%2Fnotification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alvartaco","download_url":"https://codeload.github.com/alvartaco/notification/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvartaco%2Fnotification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32672514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"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":["design-patterns","factory","htmx","java","observer","oop","spring-boot","strategy"],"created_at":"2024-11-08T07:37:49.405Z","updated_at":"2026-05-05T23:31:21.886Z","avatar_url":"https://github.com/alvartaco.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Notification App.\n\nIt is required to create a system capable of receiving messages, which will have a\ncategory and the body of the message. These messages will need to be forwarded to\nthe system's users, who will already be pre-populated. In addition to being subscribed\nto message categories, these users will have specified the channels through which they\nwould like to be notified, such as SMS, Email or Push Notification.\nWith this configuration, users will only receive notifications of messages that fall within\nthe categories they are subscribed to and through the channels they have specified.\nThere will be three message categories:\n\n    • Sports\n    • Finance\n    • Movies\n\nAnd there will be three types of notifications, each requiring its own class to manage\nthe sending logic independently:\n\n    • SMS\n    • E-Mail\n    • Push Notification\n\nIt is necessary to design the architecture for sending notifications through various\nchannels. At a minimum, there should be one class for each channel, along with a\nstrategy to select the appropriate channel. Real messages need not be sent using third-\nparty services; the focus is on establishing a structure to implement the logic in the\nfuture.\n\nAdditionally, it is essential to store all the relevant information required to verify that the\nnotification has been successfully delivered to the respective subscriber. This includes\ndetails such as the message type, notification type, user data, timestamp, and any\nother pertinent information.\n\nNo user administration is required, you can use a Mock of users in the source code, and\nthey must have the following information:\n\n    • ID\n    • Name\n    • Email\n    • Phone number\n    • Subscribed [ ] here you need to list all the categories where the user issubscribed.\n    • Channels [ ] a list of the notification's channels (SMS | E-Mail | Push Notification).\n\nAs a user interface, you must display 2 main elements.\n\n1. Submission form. A simple form to send the message that contains 2 fields:\n  \n    • Category. List of available categories.\n\n    • Message. Text area, confirm that the message is not empty.\n\n2. Log history. A list of all data records in the log, sorted from newest to oldest.\n\n   • List of Notifications sent.\n\n-----------------------------------------------------------------------------------------------\n\nDetails of the application :\n\n      .   ____          _            __ _ _\n     /\\\\ / ___'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\\n    ( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\\n     \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )\n      '  |____| .__|_| |_|_| |_\\__, | / / / /\n     =========|_|==============|___/=/_/_/_/\n     \n     :: Spring Boot ::                (v3.3.4)\n\n    -\u003e Docker Image : https://hub.docker.com/r/alvartaco/notifications-app\n\n    -\u003e JDK : 21\n\n    -\u003e HTTP Port : 8080\n\n    -\u003e MAVEN\n   \n    -\u003e JDBC Client for DB Connection - H2\n\n    -\u003e Thymeleaf Java engine  for processing and creating HTML, XML, JavaScript, CSS and text\n\n    -\u003e HTMX a small JavaScript library that allows you to use custom attributes in HTML\n\n    -\u003e Dessign Pattern: Factory / Strategy for different notification channels like SMS, e-mail, Push notifications. \n    And Observer for the main objetive of Users receiving updates in their subsctipyed Message Categories.\n\n    -\u003e Git / Github :D and Git Flow\n\n    -\u003e Responsive Flex Design\n\n    -\u003e API REST\n\n    -\u003e Junit for Tests\n\n\n![img.png](img.png)\n\n\n20241010\nAdding some testing results of the first Iteration:\n\n\n![categoryTable](https://github.com/user-attachments/assets/cbddbf3c-6f00-4518-9d6c-15b82f4d867c)\n![messageTable](https://github.com/user-attachments/assets/ad6966c4-e187-4451-8d56-cbc6838baf67)\n![notificationTable](https://github.com/user-attachments/assets/950ed279-7d70-4de3-bfe3-897bf3cc285a)\n\nThe Log and some json files, related to users and categories are also uploaded in the root/xDocuments\n\nIn order to test creation of Messages, that fire the Notifications the User's that are Subscribed, using the REST API; this command can be executed:\n\n    curl -X POST localhost:8088/api/messages -H 'Content-type:application/json' -d '{\"categoryId\": \"2\", \"messageBody\": \"the boddy\"}'\n\nLatest Commit includes the Notifications Sent List:\n\n![img_1.png](img_1.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvartaco%2Fnotification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falvartaco%2Fnotification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvartaco%2Fnotification/lists"}