{"id":20844265,"url":"https://github.com/pascal-giguere/tld-observer","last_synced_at":"2025-06-20T11:37:39.632Z","repository":{"id":38433966,"uuid":"275247198","full_name":"pascal-giguere/tld-observer","owner":"pascal-giguere","description":"TLD Observer — New top-level domains, right in your inbox.","archived":false,"fork":false,"pushed_at":"2023-07-22T20:01:14.000Z","size":4989,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-20T01:08:57.520Z","etag":null,"topics":["cronjob","domain-name","email-notification","express","full-stack","gatsby","graphql","heroku","mailgun","massive","monorepo","node","postgresql","react","rest-api","styled-components","svg-animations","top-level-domains","typescript"],"latest_commit_sha":null,"homepage":"https://tld.observer","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pascal-giguere.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}},"created_at":"2020-06-26T21:02:57.000Z","updated_at":"2025-01-13T18:02:10.000Z","dependencies_parsed_at":"2025-05-09T01:58:52.612Z","dependency_job_id":null,"html_url":"https://github.com/pascal-giguere/tld-observer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pascal-giguere/tld-observer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-giguere%2Ftld-observer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-giguere%2Ftld-observer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-giguere%2Ftld-observer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-giguere%2Ftld-observer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pascal-giguere","download_url":"https://codeload.github.com/pascal-giguere/tld-observer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-giguere%2Ftld-observer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260938417,"owners_count":23085894,"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":["cronjob","domain-name","email-notification","express","full-stack","gatsby","graphql","heroku","mailgun","massive","monorepo","node","postgresql","react","rest-api","styled-components","svg-animations","top-level-domains","typescript"],"created_at":"2024-11-18T02:09:04.854Z","updated_at":"2025-06-20T11:37:34.616Z","avatar_url":"https://github.com/pascal-giguere.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TLD Observer\n\nNew top-level domains, right in your inbox.\n\n[https://tld.observer](https://tld.observer/)\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\n## About\n\nTLD Observer allows you to subscribe to email notifications for new top-level domains. Users can choose to be notified\nof newly-released TLDs, soon-to-be-released TLDs, or both.\n\n![Screenshot](doc/screenshot.png)\n\n**It comprises 4 main components:**\n\n- 👷\u0026nbsp; A cronjob-based worker process to detect new TLDs and save data about them\n- 🚀\u0026nbsp; A static website generator that will publish new website versions when new TLD data is saved\n- 👩‍💻\u0026nbsp; A public API allowing users to register to get email notifications\n- 📬\u0026nbsp; An email delivery service to send notifications based on both user and TLD data\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Tech stack\n\n**⚙️\u0026nbsp; Back-end built with:**\n\n- [TypeScript](https://www.typescriptlang.org/)\n- [Node](https://nodejs.org/)\n- [Express](https://www.express.com/)\n- [Massive](https://massivejs.org/)\n- [PostgreSQL](https://www.postgresql.org/)\n- [Heroku](https://heroku.com/)\n- [Mailgun](https://www.mailgun.com/)\n\n**💅\u0026nbsp; Front-end built with:**\n\n- [TypeScript](https://www.typescriptlang.org/)\n- [React](https://reactjs.org/)\n- [Styled-components](https://styled-components.com/)\n- [Gatsby](https://www.gatsbyjs.org/)\n- [GraphQL](https://graphql.org/)\n- [Netlify](https://www.netlify.com/)\n\n**🛠️\u0026nbsp; Other tools:**\n\n- [Cloudflare](https://www.cloudflare.com/)\n- [Sumo Logic](https://www.sumologic.com/)\n- [JWT](https://jwt.io/)\n- [db-migrate](https://db-migrate.readthedocs.io/)\n- [Jest](https://jestjs.io/)\n- [Yup](https://github.com/jquense/yup)\n- [Postman](https://www.postman.com/)\n- [Adobe Illustrator](https://www.adobe.com/products/illustrator.html)\n- [OmniGraffle](https://www.omnigroup.com/omnigraffle/)\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Architecture\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/architecture-diagram.png\" alt=\"Architecture diagram\"\u003e\n\u003c/p\u003e\n\n## Eye animation\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/logo-animation.gif\" width=\"511\" alt=\"Logo\"\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/p\u003e\n\nThe eye logo will move according to your cursor when you visit TLD Observer on a computer. Pretty cool right?\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/ellipse-diagram.png\" alt=\"Ellipse diagram\"\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/p\u003e\n\nIn order to have a realistic pupil position no matter where your cursor is located, a math equation is repeatedly solved\nas you move your cursor around: We find the intersection of the line that goes through both your cursor position and\nthe center of the eye and of an arbitrary ellipse defining the boundaries of the pupil. 🤓\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Reviews and awards\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"doc/lighthouse-score.png\" width=\"480\" alt=\"Lighthouse score\"/\u003e\n  \u003cp\u003e“A masterpiece. 5 green circles.” - \u003cem\u003eGoogle Lighthouse\u003c/em\u003e\u003c/p\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"doc/yslow-score.png\" width=\"320\" alt=\"YSlow score\"/\u003e\n  \u003cp\u003e“LGTM 👍” - \u003cem\u003eYSlow\u003c/em\u003e\u003c/p\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e“Yep, it seems fine.” - \u003cem\u003eDareboost\u003c/em\u003e\u003c/p\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e“Works well. Fonts look a little weird, but I'm used to it by now.” - \u003cem\u003eInternet Explorer\u003c/em\u003e\u003c/p\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e“Wow, it fits!” - \u003cem\u003eiPhone 5\u003c/em\u003e\u003c/p\u003e\n  \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003c/div\u003e\n\n## Support and feedback\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"doc/support-email.png\" alt=\"Support and feedback email\" width=\"300\"/\u003e\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascal-giguere%2Ftld-observer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpascal-giguere%2Ftld-observer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascal-giguere%2Ftld-observer/lists"}