ReviewBoard is a full-stack web application built to streamline the submission, review, and approval process for business items. The platform features an intelligent risk scoring system that automatically evaluates submissions based on configurable rules, helping prioritize high-risk items for faster review.
Author: Mert Eldemir
This project is licensed under the MIT License - see the LICENSE file for details.
Frontend: Next.js 15.5.5, React 19, TypeScript, Tailwind CSS
Backend: Next.js API Routes (REST), NextAuth.js (JWT Authentication)
Database: PostgreSQL with Prisma ORM
Infrastructure: Vercel (Deployment), Supabase (Database Hosting)
Caching: Redis (Upstash)
Automation: Cron-job.org (Scheduled Tasks)
ReviewBoard is an enterprise-grade review management platform designed to streamline item submission, review, and approval workflows.
- Node.js 18+ and npm
- PostgreSQL database
- SMTP server for email verification
- GitHub OAuth application (optional)
Create a .env file with the following variables:
# Database
DATABASE_URL="postgresql://user:password@host:port/database?pgbouncer=true"
DIRECT_URL="postgresql://user:password@host:port/database"
# NextAuth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key
# Redis (Upstash)
UPSTASH_REDIS_REST_URL=your-upstash-redis-rest-url
UPSTASH_REDIS_REST_TOKEN=your-upstash-redis-rest-token
# OAuth (Optional)
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET="your-github-client-secret"
# Email (SMTP)
EMAIL_SERVER=smtp://[your-gmail].com:[your-google-app-password]@smtp.gmail.com:587
EMAIL_FROM=your-gmail
# Cron Job
CRON_SECRET=your-cron-secret-key-
Clone the repository
git clone <repository-url> cd reviewboard
-
Install dependencies
npm install
-
Set up database
npx prisma generate npm prisma migrate --name initial
-
Run development server
npm run dev
- Push code to GitHub repository
- Import project in Vercel dashboard
- Configure environment variables in Vercel settings
- Deploy automatically on push to main branch
- Create account at cron-job.org
- Create new cron job with endpoint:
https://your-domain.com/api/crons/item-status-scheduler - Set schedule to
*/10 * * * *(every 10 minutes) - Add header:
Authorization: Bearer CRON_SECRET
- Create account at Upstash Console
- Create a new Redis database
- Copy the REST API credentials:
UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
- Add these credentials to your
.envfile and Vercel environment variables - Redis is used for caching:
- User items (5-minute TTL)
- Tags (10-minute TTL)
- Automatically invalidated on data mutations