{"id":22889866,"url":"https://github.com/nikamelashvili/notification-facade-system","last_synced_at":"2025-03-31T20:28:03.903Z","repository":{"id":248419910,"uuid":"822084526","full_name":"NikaMelashvili/Notification-Facade-System","owner":"NikaMelashvili","description":"Notification Facade System with JWT authentication and Promo message engine.","archived":false,"fork":false,"pushed_at":"2024-07-15T12:22:36.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-07T00:29:15.733Z","etag":null,"topics":["advertising","jwt","notifications"],"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/NikaMelashvili.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-06-30T09:15:34.000Z","updated_at":"2024-07-25T09:51:09.000Z","dependencies_parsed_at":"2024-07-14T19:38:36.937Z","dependency_job_id":"19ec6414-aa38-40e6-acea-92e8064416ad","html_url":"https://github.com/NikaMelashvili/Notification-Facade-System","commit_stats":null,"previous_names":["nikamelashvili/notification-facade-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikaMelashvili%2FNotification-Facade-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikaMelashvili%2FNotification-Facade-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikaMelashvili%2FNotification-Facade-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikaMelashvili%2FNotification-Facade-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NikaMelashvili","download_url":"https://codeload.github.com/NikaMelashvili/Notification-Facade-System/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246535171,"owners_count":20793203,"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":["advertising","jwt","notifications"],"created_at":"2024-12-13T21:57:17.445Z","updated_at":"2025-03-31T20:28:03.881Z","avatar_url":"https://github.com/NikaMelashvili.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Notification-Facade-System\n\nThis is a guide on how to use this microservice application.\nFirstly we'll need to install docker.\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/NikaMelashvili/Notification-Facade-System.git\n   ```\n\n2. **Setup MySQL with docker:**\n   ```bash\n   docker pull mysql\n   ```\n   ```bash\n   docker run --name some-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest\n   ```\n   ```bash\n   docker exec -it some-mysql mysql -uroot -p\n   ```\nAfter installing docker and starting the MySQL container we can run the sql located in main/sql repository.\n\n## System Architecture\n\nThis notification engine features DTOs for data transfer through the layers, a fully functional JWT authentication system, and a scheduler that runs every day at midnight (00:00) for sending emails, SMS, and advertisements to customers based on their preferences.\n\nTo use these features, you will need to register and obtain a SendGrid API key for email services and a Twilio API key for SMS notifications. After registering and acquiring all the necessary tools, you can insert them into the application.properties file located in the resources directory and run the server. For JWT, you'll also need to generate a 256-bit key. Once all of this is set up, the project will be fully ready to launch.\n\n## Authentication\n\nThe only exposed endpoint that you can access without a bearer token is /rest/authentication. Here, you first register (/rest/authentication/register) and get a 24-hour token. If you want to access the service with an already registered account, you just need to authenticate, and it will generate a 24-hour token just as it does for registering (/rest/authentication/authenticate). Once you register, it creates an admin account with your provided credentials.\n\nFor added security, the system uses the BCrypt algorithm for storing admin passwords and enforces PII security. After logging into the system, you can access various endpoints such as adding customers, their addresses, and their preferences for notifications, among others.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikamelashvili%2Fnotification-facade-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikamelashvili%2Fnotification-facade-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikamelashvili%2Fnotification-facade-system/lists"}