[object Object]

← back to Stars of Design

starsofdesign: GET /privacy + /terms — minimal legal pages (no-collect privacy notice, public-data terms, editorial-only liability). Mirrors asim. Linked from footer + sitemap. Closes parity gap.

00a2a605b222cf6d634d368e5b26145da0f25559 · 2026-05-12 19:42:05 -0700 · Steve Abrams

Files touched

Diff

commit 00a2a605b222cf6d634d368e5b26145da0f25559
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 12 19:42:05 2026 -0700

    starsofdesign: GET /privacy + /terms — minimal legal pages (no-collect privacy notice, public-data terms, editorial-only liability). Mirrors asim. Linked from footer + sitemap. Closes parity gap.
---
 routes/public.js          | 16 +++++++++++++++
 views/partials/footer.ejs |  3 ++-
 views/public/privacy.ejs  | 46 ++++++++++++++++++++++++++++++++++++++++++
 views/public/terms.ejs    | 51 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 115 insertions(+), 1 deletion(-)

diff --git a/routes/public.js b/routes/public.js
index 766bad6..6740630 100644
--- a/routes/public.js
+++ b/routes/public.js
@@ -419,6 +419,20 @@ router.get('/submit', (req, res) => {
   res.render('public/submit', { title: 'Submit a designer — Stars of Design' });
 });
 
+router.get('/privacy', (req, res) => {
+  res.render('public/privacy', {
+    title: 'Privacy — Stars of Design',
+    meta_desc_override: 'Stars of Design privacy notice — no accounts, no identifying cookies, anonymous like/comment, city+state only (no street addresses).',
+  });
+});
+
+router.get('/terms', (req, res) => {
+  res.render('public/terms', {
+    title: 'Terms of use — Stars of Design',
+    meta_desc_override: 'Stars of Design terms of use — editorial directory, public-data sourcing, user submissions, claim your profile, liability.',
+  });
+});
+
 router.get('/sitemap.xml', async (req, res, next) => {
   try {
     const base = 'https://starsofdesign.com';
@@ -437,6 +451,8 @@ router.get('/sitemap.xml', async (req, res, next) => {
       { loc: `${base}/videos`,    priority: '0.8', changefreq: 'weekly' },
       { loc: `${base}/about`,     priority: '0.5', changefreq: 'monthly' },
       { loc: `${base}/submit`,    priority: '0.4', changefreq: 'monthly' },
+      { loc: `${base}/privacy`,   priority: '0.3', changefreq: 'yearly' },
+      { loc: `${base}/terms`,     priority: '0.3', changefreq: 'yearly' },
       ...all.map((d) => ({
         loc: `${base}/designers/${d.slug}`,
         priority: '0.8',
diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs
index 047a5c9..a2a75ec 100644
--- a/views/partials/footer.ejs
+++ b/views/partials/footer.ejs
@@ -28,7 +28,8 @@
       <p>
         <a href="/designers">All designers</a><br>
         <a href="/submit">Submit a designer</a><br>
-        <a href="/about">About this directory</a>
+        <a href="/about">About this directory</a><br>
+        <a href="/privacy">Privacy</a> · <a href="/terms">Terms</a>
       </p>
     </div>
   </div>
diff --git a/views/public/privacy.ejs b/views/public/privacy.ejs
new file mode 100644
index 0000000..bd85618
--- /dev/null
+++ b/views/public/privacy.ejs
@@ -0,0 +1,46 @@
+<%- include('../partials/head', { title }) %>
+<%- include('../partials/header') %>
+
+<main class="privacy-page">
+  <section class="section">
+    <div class="wrap narrow">
+      <h1>Privacy</h1>
+      <p class="lede">Last updated 2026-05-12.</p>
+
+      <h2>What we collect</h2>
+      <p>
+        Stars of Design does not require an account, does not store identifying
+        cookies, and does not collect personal data beyond what server logs
+        naturally record (IP address, user-agent, request path) for security
+        and abuse mitigation. Comments on the /feed surface accept an anonymous
+        ID we set in your browser; no email or identifying info is required to
+        comment or like.
+      </p>
+
+      <h2>Designer + firm profiles</h2>
+      <p>
+        Designer and firm profiles are built from publicly available material:
+        published interviews, shelter-magazine features, the designer's own
+        studio site. We surface city + state only — never street addresses,
+        zip codes, or phone numbers. If your profile contains information
+        you'd like removed or corrected, email
+        <a href="mailto:info@starsofdesign.com">info@starsofdesign.com</a>.
+      </p>
+
+      <h2>Third-party services</h2>
+      <p>
+        Anonymous usage analytics (Google Analytics 4 with IP anonymization)
+        for aggregate traffic patterns. Embedded fonts via Google Fonts.
+      </p>
+
+      <h2>Contact</h2>
+      <p>
+        Questions, data takedown requests, profile updates:
+        <a href="mailto:info@starsofdesign.com">info@starsofdesign.com</a> or
+        <a href="tel:+18883734564">888-373-4564</a>.
+      </p>
+    </div>
+  </section>
+</main>
+
+<%- include('../partials/footer') %>
diff --git a/views/public/terms.ejs b/views/public/terms.ejs
new file mode 100644
index 0000000..aa6c8c3
--- /dev/null
+++ b/views/public/terms.ejs
@@ -0,0 +1,51 @@
+<%- include('../partials/head', { title }) %>
+<%- include('../partials/header') %>
+
+<main class="terms-page">
+  <section class="section">
+    <div class="wrap narrow">
+      <h1>Terms of use</h1>
+      <p class="lede">Last updated 2026-05-12.</p>
+
+      <h2>Editorial directory</h2>
+      <p>
+        Stars of Design is an editorial profile directory. Designers do not pay
+        for placement, and there is no sponsored or paid-promotion tier. We
+        make no warranty as to the accuracy or completeness of any profile.
+      </p>
+
+      <h2>Public-data sourcing</h2>
+      <p>
+        Designer and firm profiles are sourced from publicly available
+        material: interviews, shelter-magazine features, the designer's own
+        site. We do not reproduce copyrighted imagery. If a profile uses an
+        image you hold rights to in error, <a href="mailto:info@starsofdesign.com">contact us</a>
+        for immediate removal.
+      </p>
+
+      <h2>User submissions</h2>
+      <p>
+        Comments and likes are subject to a basic spam filter and moderation.
+        Anonymous IDs are set in your browser to enable like/unlike toggles
+        and rate-limiting; no identifying info is collected.
+      </p>
+
+      <h2>Claim your profile</h2>
+      <p>
+        Designers and firms may claim their profile via the
+        <a href="/submit">submission form</a> and request edits, additions,
+        or removal at any time.
+      </p>
+
+      <h2>Liability</h2>
+      <p>
+        The site is provided as-is. Stars of Design is published by Designer
+        Wallcoverings and exists to surface working designers — there is no
+        commercial transaction here. Vendor or studio links route to the
+        respective third party under their terms.
+      </p>
+    </div>
+  </section>
+</main>
+
+<%- include('../partials/footer') %>

← ed2f2d8 starsofdesign: BreadcrumbList JSON-LD across all 3 detail pa  ·  back to Stars of Design  ·  starsofdesign: smoke test harness — test/smoke.js (zero deps 9d16cb3 →