{"id":28229366,"url":"https://github.com/solidcouch/solid-email-notifications-direct","last_synced_at":"2026-02-17T10:33:23.579Z","repository":{"id":215503151,"uuid":"738219557","full_name":"solidcouch/solid-email-notifications-direct","owner":"solidcouch","description":"(previously simple-email-notifications) Direct email notifications for community applications built with Solid protocol","archived":false,"fork":false,"pushed_at":"2026-01-31T16:48:13.000Z","size":3346,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-31T16:50:35.644Z","etag":null,"topics":["solid-project"],"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/solidcouch.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-02T17:58:15.000Z","updated_at":"2026-01-31T16:48:15.000Z","dependencies_parsed_at":"2024-02-18T23:30:44.160Z","dependency_job_id":"18c006b0-6be5-489e-ac94-4b1e42515c6e","html_url":"https://github.com/solidcouch/solid-email-notifications-direct","commit_stats":{"total_commits":32,"total_committers":1,"mean_commits":32.0,"dds":0.0,"last_synced_commit":"4597e88921953043865ef03097e8aaaef6edff36"},"previous_names":["openhospitalitynetwork/simple-email-notifications","solidcouch/simple-email-notifications","solidcouch/solid-email-notifications-direct"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/solidcouch/solid-email-notifications-direct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidcouch%2Fsolid-email-notifications-direct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidcouch%2Fsolid-email-notifications-direct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidcouch%2Fsolid-email-notifications-direct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidcouch%2Fsolid-email-notifications-direct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solidcouch","download_url":"https://codeload.github.com/solidcouch/solid-email-notifications-direct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidcouch%2Fsolid-email-notifications-direct/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29540107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T08:11:05.436Z","status":"ssl_error","status_checked_at":"2026-02-17T08:09:38.860Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["solid-project"],"created_at":"2025-05-18T16:10:17.844Z","updated_at":"2026-02-17T10:33:23.571Z","avatar_url":"https://github.com/solidcouch.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple Solid email notifications\n\nThis service sends email from one person within a Solid group to another. It doesn't use native Solid notifications, because there are pods that don't support them.\n\n## How it works\n\n- It's a bot agent with its own identity, which must be provided by arbitrary [CommunitySolidServer](https://github.com/CommunitySolidServer/CommunitySolidServer) pod\n- It runs on a server\n- You can check whether another person in the group has set up email notifications.\n- If the other person has set up the notifications, you can send them an email through this service.\n- At the beginning, you need to verify your email, save it into your hospitality exchange settings, and give the mailer a permission to read the email; so the email notifier can access the settings when it sends you an email.\n- When you want to notify other person, the service will check whether both of you belong to the specified group(s). If you both belong, and the other person has email notifications set up, it will send the other person an email.\n\n### Verified email address discovery\n\nEmail address and verification token should be stored in (webId) - space:preferencesFile -\u003e (email settings file) to which the mailer identity has read (and maybe write) access. It can be in the main webId file, or it can be in some document discovered via publicTypeIndex. In case of hospitality exchange, it can be in hospex:PersonalHospexDocument.\n\n1. Go to person's webId\n1. Find public type index `(webId) - solid:publicTypeIndex -\u003e (publicTypeIndex)``\n1. Find instances of hospex:PersonalHospexDocument\n1. Find settings in the relevant instance (webId) - space:preferencesFile -\u003e (settings)\n1. In the settings, find (webId) - foaf:mbox -\u003e (email) and (webId) - example:emailVerificationToken -\u003e (JWT)\n\n## Usage\n\n### Configure\n\nTo authenticate itself, the mailer needs to have its own identity, it can be identity hosted on some Community Solid Server\n\nCopy `.env.sample` to `.env` and edit the latter according to your needs.\n\n_:warning: If you provide URIs with `#``, put them to `\"\"`, otherwise # may be interpreted as comment!_\n\nAlternatively, you may provide the configuration as environment variables\n\nYou can find full list of config options in [.env.sample](./.env.sample)\n\n### Provide private key for JWT\n\nYou must provide a path to a private key for signing and verifying JWT tokens in `.env` file. You can generate it:\n\n```\nopenssl ecparam -name prime256v1 -genkey -noout -out ecdsa-p256-private.pem\n```\n\nDefault algorithm is ES256, but you can specify a different one.\n\n### Run\n\nInstall for production:\n\n```sh\nyarn install --frozen-lockfile --production\n```\n\nRun:\n\n```sh\nyarn start\n```\n\n### Use\n\nService API is documented in [OpenAPI schema](./apidocs/openapi.json) (still work in progress). When you run the app with `yarn start`, you'll see the Swagger-UI documentation at `/`.\n\n## Tests\n\nInstall for development:\n\n```sh\nyarn install --frozen-lockfile\n```\n\nRun:\n\n```sh\nyarn test\n```\n\nTests are placed in [src/test/](./src/test/)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidcouch%2Fsolid-email-notifications-direct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidcouch%2Fsolid-email-notifications-direct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidcouch%2Fsolid-email-notifications-direct/lists"}