Skip to main content
Before you set up Hayon, make sure the following software is installed and running on your system. Hayon is a full-stack monorepo with a Node.js/Express backend and a Next.js frontend. It relies on MongoDB, Redis, and RabbitMQ at runtime, and integrates with several external services.
Redis and RabbitMQ must be running before you start the backend. If either service is unavailable, background job processing will fail silently. Post scheduling and publishing will not work.

Required software

Node.js

Hayon requires Node.js v18 or higher. The recommended version is v20 LTS.
Install Node.js using nvm (recommended):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
nvm use 20
Or install directly from nodejs.org.
Verify your installation:
node --version
# Expected: v18.x.x or higher

pnpm

Hayon uses pnpm v9 or later as its package manager. The repository is a pnpm workspace containing backend, frontend, and schemas packages.
npm install -g pnpm
Verify:
pnpm --version
# Expected: 9.x.x or higher
If you previously installed dependencies with npm, remove any node_modules directories and package-lock.json files before running pnpm install.

MongoDB

Hayon stores all application data in MongoDB. You can run it locally or use a hosted cluster.
Follow the MongoDB Community Edition installation guide for your operating system.Start MongoDB after installation:
# macOS (Homebrew)
brew services start mongodb-community

# Ubuntu / Debian (systemd)
sudo systemctl start mongod
sudo systemctl enable mongod
Verify it is running:
mongosh --eval "db.runCommand({ connectionStatus: 1 })"

Redis

Hayon uses Redis for caching and session management. Redis must be running before the backend starts.
brew install redis
brew services start redis
Verify Redis is accepting connections:
redis-cli ping
# Expected: PONG

RabbitMQ

Hayon uses RabbitMQ as a message queue for scheduling and publishing posts in the background. RabbitMQ must be running before the backend starts.
brew install rabbitmq
brew services start rabbitmq
Verify RabbitMQ is running:
# Check status (if installed natively)
sudo rabbitmqctl status

# Or verify the port is open
curl -s http://localhost:15672

External service accounts

Hayon integrates with several external services. You will need accounts and credentials for each.
Hayon stores uploaded media (post images, profile photos) in an AWS S3 bucket.
  1. Create an AWS account if you do not have one.
  2. In the AWS Console, navigate to S3 and create a new bucket.
  3. Configure the bucket’s CORS policy to allow requests from your frontend domain.
  4. In IAM, create a new user with programmatic access and attach the AmazonS3FullAccess policy (or a scoped policy for the specific bucket).
  5. Save the Access Key ID and Secret Access Key — you will need them for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
You will also need:
  • AWS_REGION: the region where your bucket is located (e.g., us-east-1)
  • AWS_S3_BUCKET_NAME: the exact name of your S3 bucket
Hayon uses Stripe to handle subscription billing (free and pro plans).
  1. Create a Stripe account.
  2. In the Stripe Dashboard, navigate to Developers > API keys to get your secret key.
  3. Create a product and a recurring price in Products — copy the price ID for STRIPE_PRO_PRICE_ID.
  4. Set up a webhook endpoint pointing to https://your-backend-domain/api/payments/webhook.
  5. Copy the webhook signing secret for STRIPE_WEBHOOK_SECRET.
Use test mode keys (sk_test_...) during development.
Hayon uses Google for two separate integrations:Google OAuth (user authentication):
  1. Go to the Google Cloud Console.
  2. Create a new project.
  3. Enable the Google+ API or People API.
  4. Under APIs & Services > Credentials, create an OAuth 2.0 client ID.
  5. Add your backend callback URL as an authorized redirect URI: https://your-backend-domain/api/auth/google/callback.
  6. Copy the Client ID and Client Secret.
Gemini AI (AI caption generation):
  1. In the same or a new Google Cloud project, enable the Generative Language API.
  2. Under APIs & Services > Credentials, create an API key.
  3. Copy the key for GEMINI_API_KEY.

Summary checklist

1

Install Node.js v18+

Run node --version and confirm the output is v18.x.x or higher.
2

Install pnpm v9+

Run pnpm --version and confirm the output is 9.x.x or higher.
3

Start MongoDB

Ensure MongoDB is running locally or that your Atlas cluster is accessible.
4

Start Redis

Run redis-cli ping and confirm the response is PONG.
5

Start RabbitMQ

Confirm the RabbitMQ broker is running and port 5672 is open.
6

Set up external accounts

Obtain credentials for AWS S3, Stripe, Google OAuth, and Gemini AI.
Once all prerequisites are in place, continue to Backend setup.

Build docs developers (and LLMs) love