quorla-website/REQUIREMENTS.md
metatroncubeswdev 03f226d019 Add website requirements, agent instructions and run steps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:12:06 -04:00

102 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Quorla website: requirements
What to build for **quorlasocial.com**, the public marketing site for Quorla. Read this file and `README.md`
before changing anything.
## 1. The product (what the site must explain)
Quorla is a social media management tool for **marketing agencies** that run many client accounts. A team uploads
finished posts per client, plans the week, an admin **approves the exact post**, and Quorla publishes it on the right
platform at the **client's local time**, then reports what worked.
- **Made by:** Metatroncube Software Solutions, Waterloo, Ontario, Canada.
- **App:** https://app.quorlasocial.com (sign-in only; this site links to it, it is a separate codebase).
- **Contact:** support@quorlasocial.com.
- **Plans:** hosted (we run it) and self-hosted (agency runs it on its own server). Prices are **not decided yet**.
- **Access:** by invitation for now. The main call to action is "Request access" (email or contact form).
### What the product does today (OK to describe as available)
- Content library per client: designers and editors upload finished work; only approved items can be scheduled.
- Drafts → admin approval → publishing at the scheduled time, in the client's time zone. Nothing posts without approval.
- Platforms connected: Instagram, Facebook, YouTube, Google Business Profile, TikTok.
- Comments and DMs inbox (Instagram/Facebook) with replies drafted for a person to approve.
- AI-assisted monthly account audits, weekly content plans and weekly reports, exported as PDFs with the agency's branding.
- Team roles (admin, manager, designer, editor); admins add teammates and reset passwords.
- Respects each platform's limits (quotas) and waits instead of failing.
### Being added (say "coming soon" or leave out; never present as available)
- LinkedIn, Pinterest, Threads and Reddit publishing (built, waiting for platform approvals).
- Published-posts page with per-post results, a visual content calendar, competitor tracking, client approval links.
## 2. Hard rules
1. **Keep these URLs working at all times.** Google's OAuth verification and TikTok's app review point at them:
- `/` must explain what Quorla does and link to the Privacy Policy.
- `/privacy` and `/terms`. Change wording only on purpose and keep them in sync with the app copies in the app
repo (`dashboard/server/legal/privacy.html`, `terms.html`), update the "Effective" date when the text changes.
2. **No made-up proof.** No fake testimonials, client logos, reviews, user counts, star ratings or results. Leave a
clearly marked placeholder until real ones exist.
3. **No claims we can't back up** ("#1", "AI that grows your followers 10×", guaranteed results).
4. **Don't name or show real client accounts** (white-label: clients must not be linked to the agency publicly).
Use invented example businesses (like "Green Corner Café").
5. **No platform logos in a way that suggests partnership** (no "official partner" badges). Plain text names are fine.
6. Never put secrets, API keys or passwords in this repo.
## 3. Brand and writing
- Colours: navy `#242142` (text, primary buttons), coral `#FC6D45` (accents, highlights; don't use coral for body text
on white, the contrast is too low). Light lavender `#F6F5FB` for alternate sections.
- Fonts: Plus Jakarta Sans (headings, 700/800), Inter (body). Already loaded in `src/layouts/Base.astro`.
- Logos in `public/assets/` (`logo.png` for light backgrounds, `logo-white.png` for dark).
- Voice: like a sharp agency owner talking to another one. Short, specific, plain English. Lead with the outcome.
- Avoid: "Elevate", "Unlock", "Revolutionize", "Seamless", "In today's fast-paced world", emoji walls, buzzword lists.
## 4. Pages
| URL | Purpose | Main content |
|---|---|---|
| `/` | Explain Quorla in 10 seconds, get access requests | Hero, how it works (connect → plan → approve → publish & report), feature highlights, platforms, approval/safety, CTA. **Exists.** |
| `/features` | Detail for evaluators | One section per feature from §1 with a screenshot or illustration each |
| `/platforms` | What each platform supports | Table: platform, post types, notes (e.g. TikTok: Direct Post after review, "finish in TikTok app" meanwhile) |
| `/agencies` | Why agencies pick Quorla | Many clients in one place, approvals, client time zones, team roles, white-label reports |
| `/pricing` | Hosted vs self-hosted | Two plan cards with "Contact us" until prices are set; FAQ (data ownership, setup, which platforms) |
| `/security` | Trust page for buyers and reviewers | Approval before publishing, encrypted tokens, platform sign-in (no passwords), data deletion, self-hosted option. State the hosting location only after confirming it |
| `/contact` | Request access / book a demo | Simple form (name, agency, email, number of clients, message) + email link. See §6 for how the form sends. |
| `/blog` + `/blog/[slug]` | SEO and updates | Markdown posts in `src/content/blog/` using Astro content collections |
| `/privacy`, `/terms` | Legal | **Exist.** See rule 1 |
| `/404` | Not found | Friendly page with links home and to the app |
Navigation: Features · Platforms · Pricing · Blog · Sign in (button to the app) · Request access (primary button).
Footer: product links, legal links, contact email, © Metatroncube Software Solutions.
## 5. Technical requirements
- **Stack:** Astro 7 static site (`output: "static"`). Plain CSS in `src/styles/global.css` (keep the existing tokens);
add component CSS in `.astro` files with scoped `<style>`. No heavy UI framework unless a page truly needs it.
- **Components:** move repeated pieces into `src/components/` (Header, Footer, CTA band, FeatureCard, PlanCard).
- **Responsive:** works from 360 px phones to wide desktops; no horizontal scroll; tap targets ≥ 44 px.
- **Accessibility:** semantic headings in order, alt text on every image, visible focus states, colour contrast AA,
forms with labels and error messages.
- **Performance:** Lighthouse ≥ 90 on Performance, Accessibility, Best Practices and SEO. Images in WebP/AVIF via
Astro's `<Image>`, lazy-loaded below the fold. No external scripts except Google Fonts (and analytics if added).
- **SEO:** unique `<title>` and meta description per page (pass them to `Base.astro`), canonical URLs (already in
`Base.astro`), Open Graph image, `sitemap.xml` (`@astrojs/sitemap`), `robots.txt`, clean URLs.
- **Analytics (optional):** privacy-friendly only (e.g. Plausible or Umami). Update `/privacy` if added.
- **No cookies banner needed** as long as there are no tracking cookies.
## 6. Contact form
The site is static, so the form needs somewhere to send. Pick one and note it in the README:
1. A form service (Formspree, Web3Forms, Basin) posting to support@quorlasocial.com. Simplest. Or
2. A small endpoint in the Quorla app later.
Until then, the "Request access" buttons stay as `mailto:support@quorlasocial.com?subject=Quorla%20access`.
Add a honeypot field against spam. Don't collect anything beyond what's in §4.
## 7. Done means
- `npm run build` passes with no errors and `npm audit` shows no high/critical issues.
- Every page in §4 exists, is linked from the nav or footer, and passes the rules in §2.
- Checked at 375 px, 768 px and 1440 px wide, in light conditions (the site has no dark mode; that's fine).
- Lighthouse targets from §5 met on `/` and one inner page.
- Deployed with the steps in `README.md`, and `/`, `/privacy`, `/terms` checked live afterwards.