favycon.app has no DNS records at all, so favycon.vercel.app is the only
hostname this site answers on and the canonical is unambiguous. It uses the
SITE_URL constant, so it cannot disagree with og:url.
The sitemap is a single static URL. Its loc is written without a trailing
slash to match the canonical string exactly — the two forms are the same
URL per RFC 3986, but nothing here forces them to differ, so they don't.
No lastmod: a hand-maintained file would claim a freshness it can't know.
robots.txt gains the Sitemap line and a note that /api/favycon is POST-only
and answers a GET with 405. It stays out of the disallow list deliberately:
a 405 tells a crawler more than a rule it has to fetch robots.txt to find.
The package author email was a Gmail address. The site already contacts
through hello@ruisaraiva.dev, an alias forwarded to that inbox, and the
point of the alias is that a published field can be rotated without
touching the real mailbox — so the package field uses it too.
The credits still described Rui as a Full-Stack Developer, which was true
when the tool was built in 2020. Augusto's and Miguel's roles are left as
they are.
The about modal is lazily mounted, so the credits and contact address are
not in the server-rendered HTML and no crawler ever sees them. Authorship
therefore goes in the head, where it is always present: a meta author, a
rel=author link to ruisaraiva.dev, and SoftwareApplication JSON-LD.
The structured data names Rui as author and Augusto and Miguel as
contributors, because the modal credits three people and the markup should
not tell a machine a tidier story than the page tells a reader.
Also adds public/llms.txt: accepted input formats, the 310px and 512px
minimums, and exactly what the zip contains, including that favicon.svg
only appears for SVG input and manifest.json only with the PWA option. It
is written from utils/favicon.ts and the route handler rather than from
memory. Note it is a static file, so it is the one thing here that can
drift from the sizes it documents.
Two hardcoded favycon.vercel.app strings become the SITE_URL constant the
rest of the file now uses.
Two changes to the about modal, in the same file:
Rui's credit pointed at a Twitter handle and now points at ruisaraiva.dev,
with a globe icon. Augusto keeps Twitter and Miguel keeps GitHub, so the
link type is now one of three rather than a binary — hence a small lookup
instead of a second ternary in the JSX. The icon is drawn from circle,
line and ellipse primitives rather than path data, so the geometry is
exact.
Because the globe is stroked where the GitHub mark is filled, the
dark-mode rule for it has to set stroke rather than fill. Both were
checked in both themes.
The subtitle said "follow these guys on Twitter", which only one of the
three links now is, so it drops the platform.
The contact address moves from hello@favycon.app, which is no longer in
use, to hello@ruisaraiva.dev.
* feat: wip - responsive version
* chore(config): update eslint config
* fix: align drop zone footer
* fix: add prop for immutable colors
* fix: container width issue on tablet
* chore: change class name convention
* chore: add missing error styles on mobile
* style(viewport): add 100vh fix for safari
* style: update bottom info padding on mobile
* perf: remove getInitialProps function and dependencies
* chore(deps): update sharp to v0.25.0
* chore: delete unused hook
* docs: add @miguellteixeira as a contributor
* test(cypress): update page load wait
* feat(responsive): update code modal for mobile
* feat(responsive): update background images and light/dark toggle color
* feat(responsive): add about us modal on mobile
* feat(responsive): update sharable image
Co-authored-by: Miguel Teixeira <teixeira.silva.miguel@gmail.com>
* test(drag-and-drop): add tests to all preview title messages
* ci(cypress): install aditional dependencies
* test(drag-and-drop): wait 100ms on each page load for rehydration
* style(drag-and-drop): fix divivers color
fix#85
* fix(pwa): fix pwa checkbox logic
fix#82
* style(button): update hover and active states
fix#81
* style(checkbox): fix checkbox dark mode
fix#80
* style(text): make text semi bold
fix#90
* style(app): update APP text to gray color
fix#91
* style(font): add extra bold font weight
fix#92
* style(icon): fix light/dark mode colors
fix#88
* feat(about-us): add about us modal
* fix(dark-mode): fix dark mode white flash
* improvement(seo): improved seo meta tags
* improvement(copy-code): add code copied label
* improvement(dark-mode): improve dark mode white flash
* feat(drag-and-drop): add drag and drop wizard
* chore(seo): update seo share image url
* improvement(upload): add download step 3
* improvement(loading): improve loading and add transitions
* improvement: add pwa support, clipboard and animations
* improvement(seo): add html lang and update title
* fix(button): fix button font family
* feat(layout): add base page layout
Add base layout component with dark mode support
fix#15
* feat(storybook): add dark mode support to all components
* feat: add dark mode toggle component
Add dark mode toggle component with custom hook
fix#14
* feat(dark-mode): add svgs, fix flash and css modules support
* docs: update get start guide and fix typos