Skip to content

anti-work/iffy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Iffy logo Iffy logo

iffy.com | Docs

Iffy

Intelligent content moderation at scale. Keep unwanted content off your platform without managing a team of moderators.

Features:

  • Moderation Dashboard: View and manage all content moderation activity from a single place.
  • User Lifecycle: Automatically suspend users with flagged content (and handle automatic compliance when moderated content is removed).
  • Appeals Management: Handle user appeals efficiently through email notifications and a user-friendly web form.
  • Powerful Rules & Presets: Create rules to automatically moderate content based on your unique business needs.

Iffy Cloud vs Iffy Community

You may self-host Iffy Community for free, if your business has less than 1 million USD total revenue in the prior tax year, and less than 10 million USD GMV (Gross Merchandise Value). For more details, see the Iffy Community License 1.0.

Here are the differences between the managed, hosted Iffy Cloud and the free Iffy Community version.

Iffy Cloud Iffy Community
Infrastructure Easy setup. We manage everything. You set up a server and dependent services. You are responsible for installation, maintenance, upgrades, uptime, security, and service costs.
Rules/Presets 9 powerful presets: Adult content, Spam, Harassment, Non-fiat currency, Weapon components, Government services, Gambling, IPTV, and Phishing 2 basic presets: Adult content and Spam

Getting Started

Dependencies

Install postgres with a username postgres and password postgres

brew install postgresql
brew services start postgresql
createdb
psql -c "CREATE USER postgres WITH LOGIN SUPERUSER PASSWORD 'postgres';"

Install dependencies:

npm i

Environment & Services

Copy .env.example to .env.local.

Generate a FIELD_ENCRYPTION_KEY:

npx @47ng/cloak generate | head -1 | cut -d':' -f2 | tr -d ' *'

Generate an API_KEY_ENCRYPTION_KEY and an APPEAL_ENCRYPTION_KEY:

openssl rand -base64 32
Clerk
  1. Go to clerk.com and create a new app.
  2. Name the app and disable all login methods except Email.
  3. Under "Configure > Email, phone, username", limit authentication strategies to "Email verification link" and "Email verification code". Turn on "Personal information > Name"
  4. Under "Configure > Restrictions", turn on "Sign-up mode > Restricted"
  5. Under "Configure > Organization Management", turn on "Enable organizations"
  6. Under "Configure > API Keys", add CLERK_SECRET_KEY and NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY to your .env.local file.
  7. Under "Organizations", create a new organization and add your email to the "Members" list.
  8. Add the organization ID to your .env.local file as SEED_CLERK_ORGANIZATION_ID.
  9. (Optional, for testing) In the Clerk dashboard, disable the "Require the same device and browser" setting to ensure tests with Mailosaur work properly.
OpenAI
  1. Create an account at openai.com.
  2. Create a new API key at platform.openai.com/api-keys.
  3. Add the API key to your .env.local file as OPENAI_API_KEY.
Resend (Optional, for email notifications)

In order to send email with Iffy, you will additionally need a Resend API key.

  1. Create an account at resend.com.
  2. Create and verify a new domain. Add the desired from email (e.g. [email protected]) to your .env.local file as RESEND_FROM_EMAIL.
  3. Add the desired from name (e.g. Iffy) to your .env.local file as RESEND_FROM_NAME.
  4. Create a new API key at API Keys.
  5. Add the API key to your .env.local file as RESEND_API_KEY.
Shortest (Optional, for testing)

In order to write and run natural language AI tests with Shortest, you will additionally need an Anthropic API key and a Mailosaur API key.

  1. Create an account at anthropic.com.
  2. Create a new API key at Account Settings.
  3. Add the API key to your .env.local file as SHORTEST_ANTHROPIC_API_KEY.
  4. Create an account at mailosaur.com.
  5. Create a new Inbox/Server.
  6. Go to API Keys and create a standard key.
  7. Update the environment variables:
    • MAILOSAUR_API_KEY: Your API key
    • MAILOSAUR_SERVER_ID: Your server ID

Database

Set up the database, run migrations, and seed data:

createdb iffy_development
npm run dev:db:setup

Development

Run the development server:

npm run dev

Open http://localhost:3000 to access the app.

Jobs (Optional)

To run asynchronous jobs, you will need to set up a local Inngest server. In a separate terminal, run:

npm run dev:inngest

Testing

Start the development server

npm run dev

Start the local Inngest server (for asynchronous jobs)

npm run dev:inngest

Run API (unit) tests

npm run test

Run app (end-to-end) tests

npm run shortest
npm run shortest -- --no-cache # with arguments