{"id":19899128,"url":"https://github.com/abc3/beamecho","last_synced_at":"2026-05-04T23:34:02.721Z","repository":{"id":224216458,"uuid":"762735558","full_name":"abc3/beamecho","owner":"abc3","description":"BeamEcho is a tool designed to enhance user engagement for iOS apps. It allows you to send targeted push notifications to users based on data from PostgreSQL","archived":false,"fork":false,"pushed_at":"2024-02-24T21:45:28.000Z","size":1610,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T06:43:23.684Z","etag":null,"topics":["antd","apns","elixir","postgres"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abc3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-24T14:50:24.000Z","updated_at":"2024-02-28T00:53:02.000Z","dependencies_parsed_at":"2025-01-11T20:44:27.268Z","dependency_job_id":"a4252b9b-b1bf-4c81-9ef4-b99925c51923","html_url":"https://github.com/abc3/beamecho","commit_stats":null,"previous_names":["abc3/beamecho"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abc3/beamecho","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abc3%2Fbeamecho","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abc3%2Fbeamecho/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abc3%2Fbeamecho/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abc3%2Fbeamecho/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abc3","download_url":"https://codeload.github.com/abc3/beamecho/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abc3%2Fbeamecho/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261494555,"owners_count":23167154,"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":["antd","apns","elixir","postgres"],"created_at":"2024-11-12T20:07:17.224Z","updated_at":"2026-05-04T23:33:57.679Z","avatar_url":"https://github.com/abc3.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\nBeamEcho is a tool that can help you engage with the users of your iOS application. Imagine having a list of users stored in a PostgreSQL database, and you wish to send them targeted marketing messages or other communications. By adding your database as a \"source\" in BeamEcho, you can utilize SQL queries to send push notifications to specific segments of your audience.\n\nConsider a table named `demo_table` with the following structure:\n\n| id | username     | device_token | current_level | last_visit          | inserted_at         | updated_at          |\n|----|--------------|--------------|---------------|---------------------|---------------------|---------------------|\n| 2  | Martin Garcia| [REDACTED]   | 5             | 2024-02-01 19:25:16 | 2023-12-27 09:40:49 | 2024-02-01 19:25:16 |\n| 1  | John Smith   | [REDACTED]   | 5             | 2024-02-01 20:01:35 | 2023-12-27 09:40:46 | 2024-02-01 20:01:35 |\n\nThe next video will demonstrate how you can remind your users — who haven't visited your application for more than a week — by sending them an Apple push notification.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n   \u003ctd width=\"77.7%\"\u003e\n     \u003cvideo src=\"https://github.com/abc3/beamecho/assets/1172600/6d069d60-e7de-4808-a305-e59f05280527\" \u003e\n   \u003c/td\u003e\n   \u003ctd\u003e\n     \u003cvideo src=\"https://github.com/abc3/beamecho/assets/1172600/f7f99661-df57-4ef6-90f0-d008c82a8c5e\"\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n\n\n## Future Work\n\nIn the future, we plan to extend the functionality of BeamEcho in several ways:\n\n- **Additional Database Sources**: The aim is to support more types of databases as sources, including popular databases like MySQL, MongoDB, and ClickHouse.\n\n- **Android Push Notifications**: At present, BeamEcho supports sending push notifications to iOS devices. The plan is to extend this support to Android devices as well.\n\nFor feature requests or suggestions, please feel encouraged to open an issue on the GitHub repository. Community contributions and feedback are highly appreciated.\n\nStay tuned for updates!\n\n## Setup\n\n`Dockerfile` and `docker-compose.yml` are included in the project. To run the application using Docker you can use the following commands:\n\n```bash\ndocker-compose up --build\n```\nThis command will build the images if they don't exist and starts the containers.\n\nIf you want just build the image and run the container:\n\n```bash\ndocker build --no-cache -t beamecho .  \n```\n\nThis command will build a Docker image named beamecho from the Dockerfile in the current directory.\n\n### Adding a User\n\nYou can add a user to the application by making a POST request to the `/api/registration` endpoint. This is only possible if the users table is currently empty. Here's an example using `curl`:\n\n```bash\ncurl  -X POST \\\n  'http://localhost:8080/api/registration' \\\n  --header 'Accept: */*' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n  \"user\": {\n    \"email\": \"user@email.com\",\n    \"password\": \"admin_demo\",\n    \"password_confirmation\": \"admin_demo\"\n  }\n}'\n```\n\nThat's it! Now you can visit [`localhost:8080`](http://localhost:8080) from your browser.\n\n## Local setup\n\n### To start server:\n\n  1. Run `mix deps.get` to install dependencies\n\n  2. Set up your PostgreSQL database. A schema named `_beamecho` should be created in your PostgreSQL database. You can do this by running the following command in your PostgreSQL command line:\n\n    `create schema if not exists _beamecho;`\n\n    After creating the schema, apply the migrations by running the following command in your terminal, replacing `YOUR_PG_URI` with your actual PostgreSQL URI:\n\n    `DATABASE_URL=YOUR_PG_URI make db_migrate`\n\n  3. Start application with `DATABASE_URL=YOUR_PG_URI make dev`\n\n  4. As in the docker setup, you should add a user to the application:\n\n```bash\ncurl  -X POST \\\n  'http://localhost:4000/api/registration' \\\n  --header 'Accept: */*' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n  \"user\": {\n    \"email\": \"user@email.com\",\n    \"password\": \"admin_demo\",\n    \"password_confirmation\": \"admin_demo\"\n  }\n}'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabc3%2Fbeamecho","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabc3%2Fbeamecho","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabc3%2Fbeamecho/lists"}