Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Veriview

A full-stack platform for discovering and sharing authentic reviews of brands, products, and services.

Features

  • Write & browse reviews — Submit detailed reviews with star ratings (1–5), photos, and optional anonymity
  • Brand profiles — Each brand has an aggregated rating, review count, and full review history
  • Helpful votes — Upvote or downvote reviews as helpful/unhelpful
  • Search — Find brands and reviews across the platform
  • Authentication — Email/password signup or Google OAuth; JWT stored in HttpOnly cookies
  • Image uploads — Attach multiple photos to any review, served via Cloudflare CDN

How It Works

flowchart TD
    User([User]) --> Auth{Signed in?}
    Auth -- No --> Login[Sign up · Google OAuth]
    Login --> Auth
    Auth -- Yes --> Browse[Browse & Search Brands]
    Browse --> Profile[Brand Profile\nAggregated rating · Review history]
    Profile --> Review[Write a Review\nRating · Photos · Anonymous option]
    Profile --> Vote[Vote a Review Helpful / Unhelpful]
    Review --> CDN[Photos stored on Cloudflare CDN]
    CDN --> Profile
Loading

Tech Stack

Layer Technology
Frontend Next.js 15 (App Router), React 18, Tailwind CSS, TypeScript
Backend Express.js, TypeScript, Sequelize ORM
Database PostgreSQL 13
Storage Cloudflare R2 (S3-compatible)
Auth JWT, Google OAuth 2.0 (HttpOnly cookies)
Deployment Docker, Docker Compose

Getting Started

Prerequisites

  • Node.js 22+ (manual setup only)
  • Docker & Docker Compose (recommended) or PostgreSQL 13+

1. Clone the repository

git clone https://github.com/your-username/veriview.git
cd veriview

Docker (Recommended)

2. Configure environment variables

Create a .env file in the project root:

DATABASE_URL=postgresql://user:password@db:5432/veriview
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=veriview
API_URL=http://backend:4000
NEXT_PUBLIC_API_URL=http://localhost:4000
PORT=4000
CLIENT_PORT=3000

Create backend/.env for backend-specific vars:

JWT_SECRET=your_jwt_secret
BASE_URL=http://localhost:3000

# Google OAuth
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_AUTH_URI=https://accounts.google.com/o/oauth2/auth
GOOGLE_TOKEN_URI=https://oauth2.googleapis.com/token
GOOGLE_REDIRECT_URI=http://localhost:4000/api/auth/google/callback
GOOGLE_USERINFO_URL=https://www.googleapis.com/oauth2/v3/userinfo

# Cloudflare R2
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_ACCOUNT_HASH=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_URL=
CLOUDFLARE_IMAGE_DELIVERY_URL=
CLOUDFLARE_R2_PUBLIC_DOMAIN=
CLOUDFLARE_ACCESS_KEY_ID=
CLOUDFLARE_SECRET_ACCESS_KEY=
CLOUDFLARE_R2_BUCKET=
CLOUDFLARE_R2_ENDPOINT=

3. Start all services

docker-compose up --build

Manual Setup

2. Configure environment variables

Backend — create backend/.env:

PORT=4000
DATABASE_URL=postgresql://user:password@localhost:5432/veriview
DB_HOST=localhost
JWT_SECRET=your_jwt_secret
BASE_URL=http://localhost:3000

# Google OAuth
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_AUTH_URI=https://accounts.google.com/o/oauth2/auth
GOOGLE_TOKEN_URI=https://oauth2.googleapis.com/token
GOOGLE_REDIRECT_URI=http://localhost:4000/api/auth/google/callback
GOOGLE_USERINFO_URL=https://www.googleapis.com/oauth2/v3/userinfo

# Cloudflare R2
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_ACCOUNT_HASH=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_URL=
CLOUDFLARE_IMAGE_DELIVERY_URL=
CLOUDFLARE_R2_PUBLIC_DOMAIN=
CLOUDFLARE_ACCESS_KEY_ID=
CLOUDFLARE_SECRET_ACCESS_KEY=
CLOUDFLARE_R2_BUCKET=
CLOUDFLARE_R2_ENDPOINT=

Frontend — create frontend/.env.local:

NEXT_PUBLIC_API_URL=http://localhost:4000

3. Install dependencies and start

# Backend
cd backend
npm install
npm run dev

# Frontend
cd frontend
npm install
npm run dev
  • Frontend: http://localhost:3000
  • Backend: http://localhost:4000

Note: Ensure the rewrites destination in frontend/next.config.ts points to http://localhost:4000/api/:path* for local development.

License

MIT

Releases

Packages

Used by

Contributors

Languages