Authentication + Reviews + AI Recommendations
A secure, full-stack review platform built with Spring Boot, PostgreSQL, and a three-tier AI recommendation engine.
| Layer | URL |
|---|---|
| Frontend | authreview-reviewsaver-ari-cc660f.netlify.app |
| Backend API | Hosted on Render |
The full academic project report is available here:
π Project Report (GROUP-129).pdf
Submitted to VIT Bhopal University, School of Computing Science and Engineering, April 2026.
Illustrates all interactions between Guest users, Authenticated users, and the System.
Shows the authentication flow (JWT + OTP) and the review + AI recommendation pipeline.
---
- About
- Tech Stack
- Features
- System Architecture
- AI Recommendation Engine
- API Endpoints
- Database Schema
- Getting Started
- Environment Variables
- Project Structure
- Performance
- Team
REVIEWSAVER is a full-stack web application that solves a real problem: existing review platforms suffer from fake reviews, poor authentication, and generic recommendations. REVIEWSAVER addresses all three by combining:
- Multi-factor authentication (JWT + OTP via Gmail SMTP) to ensure only verified users submit reviews
- Full review management (CRUD, search, filtering, voting) across 5 categories
- A three-tier AI recommendation engine that personalizes suggestions based on user engagement level
| Layer | Technology |
|---|---|
| Backend | Spring Boot 3.5.11, Spring Security, Spring Data JPA, Hibernate |
| Frontend | React 18.3, React Router 6.30 |
| Database | PostgreSQL 17 |
| Authentication | JWT (JSON Web Tokens), BCrypt, Gmail SMTP (OTP) |
| Deployment | Netlify (frontend), Render (backend), GitHub (version control) |
| Language | Java 17+ (backend), JavaScript ES6+ (frontend) |
- OTP-based email verification on registration (6-digit, 10-min expiry)
- Stateless JWT token issuance on login
- BCrypt password hashing
- Password reset via OTP email flow
- Profile management (username, bio, location, DOB)
- Full CRUD operations on reviews
- 5 review categories: Electronics, Movies, Restaurants, Cafes, Food
- Upvote / Downvote system
- Keyword search, category filter, and multi-field sorting (date, rating, upvotes)
- Pagination support for large datasets
- Dashboard stats (total reviews, upvotes/downvotes received)
- Three-tier progressive recommendation engine (see below)
- "Find Your Perfect Match" mood-based wizard (multi-step preference quiz)
- Real-time ranked recommendations on the user dashboard
- Trending algorithm based on upvote counts and recency scoring
- JWT authentication enforced on all protected routes
- CORS policy configuration
- 401 Unauthorized returned on all invalid/expired token attempts
REVIEWSAVER follows a three-tier MVC architecture:
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β React 18.3 Frontend β Netlify β
βββββββββββββββββββββββ¬βββββββββββββββββββββββββ
β REST API (JSON)
βββββββββββββββββββββββΌβββββββββββββββββββββββββ
β Application Logic Layer β
β Spring Boot 3.5.11 Backend β Render β
β βββββββββββββ ββββββββββββ βββββββββββββββ β
β βAuth Moduleβ βReview β β AI Engine β β
β βJWT + OTP β βCRUD Svc β β 3-Tier Reco β β
β βββββββββββββ ββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββ¬βββββββββββββββββββββββββ
β Spring Data JPA / Hibernate
βββββββββββββββββββββββΌβββββββββββββββββββββββββ
β Data Layer β
β PostgreSQL 17 (Cloud-hosted) β
β [Users Table] [Reviews Table] [Interactions Table] β
ββββββββββββββββββββββββββββββββββββββββββββββββ
The recommendation engine adapts based on how much a user has interacted with the platform:
| Tier | Trigger | Strategy |
|---|---|---|
| Tier 1 | < 5 interactions | Category & keyword-based filtering |
| Tier 2 | 5β15 interactions | NLP-powered full-text analysis |
| Tier 3 | 15+ interactions | Collaborative filtering (interaction pattern matching) |
| Trending | All users | Upvote count + recency scoring |
Users with more than 5 recorded interactions receive measurably more relevant recommendations β validated during performance testing.
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /api/auth/register |
Register new user | β |
| POST | /api/auth/verify-otp |
Verify OTP to activate account | β |
| POST | /api/auth/login |
Login, returns JWT | β |
| POST | /api/auth/forgot-password |
Send OTP for password reset | β |
| POST | /api/auth/reset-password |
Reset password with OTP | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/reviews |
List all reviews (paginated, filterable) | β |
| POST | /api/reviews |
Create a new review | β |
| PUT | /api/reviews/{id} |
Update your review | β |
| DELETE | /api/reviews/{id} |
Delete your review | β |
| POST | /api/reviews/{id}/upvote |
Upvote a review | β |
| POST | /api/reviews/{id}/downvote |
Downvote a review | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/recommendations |
Get personalized recommendations | β |
| POST | /api/recommendations/match |
"Find Your Perfect Match" query | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/user/profile |
Get current user profile | β |
| PUT | /api/user/profile |
Update profile | β |
| GET | /api/user/dashboard |
Dashboard stats | β |
Three core tables power the platform:
-- Users Table
users (id, email, password_hash, is_verified, otp, otp_expiry,
username, phone, location, dob, bio, created_at)
-- Reviews Table
reviews (id, product_name, category, content, rating,
upvotes, downvotes, author_id [FKβusers], created_at, updated_at)
-- Interactions Table
interactions (id, user_id [FKβusers], review_id [FKβreviews],
interaction_type [VIEW|VOTE|SUBMIT], created_at)- Java 17+
- Maven 3.8+
- PostgreSQL 17
- Node.js 18+ (for frontend)
# 1. Clone the repository
git clone https://github.com/RishiRaj1495/reviewsaver-backend.git
cd reviewsaver-backend
# 2. Configure environment variables (see below)
cp src/main/resources/application.properties.example src/main/resources/application.properties
# 3. Build and run
mvn clean install
mvn spring-boot:runThe backend will start at http://localhost:8080.
# Clone the frontend repo and install dependencies
git clone https://github.com/ari9516/reviewsaver-frontend.git
cd reviewsaver-frontend
npm install
npm startThe frontend will start at http://localhost:3000.
Create src/main/resources/application.properties with the following:
# Database
spring.datasource.url=jdbc:postgresql://localhost:5432/reviewsaver
spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD
spring.jpa.hibernate.ddl-auto=update
# JWT
jwt.secret=YOUR_JWT_SECRET_KEY
jwt.expiration=86400000
# Gmail SMTP (for OTP emails)
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=YOUR_GMAIL_ADDRESS
spring.mail.password=YOUR_GMAIL_APP_PASSWORD
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
# CORS
cors.allowed-origins=http://localhost:3000
β οΈ Never commit real credentials. Use environment variables or a secrets manager in production.
reviewsaver-backend/
βββ src/
β βββ main/
β βββ java/com/reviewsaver/
β β βββ auth/ # JWT, OTP, BCrypt logic
β β βββ user/ # User entity, service, controller
β β βββ review/ # Review CRUD, voting, search
β β βββ recommendation/ # 3-tier AI engine
β β βββ interaction/ # Interaction tracking
β β βββ config/ # Security, CORS configuration
β βββ resources/
β βββ application.properties
βββ docs/
β βββ Project_Report_GROUP-129.pdf β Upload report here
β βββ diagrams/
β βββ Use_Case_Diagram.png β Upload UCD image here
β βββ Data_Flow_Diagram.png β Upload DFD image here
βββ pom.xml
βββ README.md
| Operation | Avg Response Time |
|---|---|
| Login / Register | < 150ms |
| Review CRUD | < 200ms |
| Search & Pagination | < 180ms |
| AI Recommendations | < 500ms |
| OTP Email Dispatch | 2β3 seconds (Gmail SMTP) |
Security validation confirmed: all unauthorized requests to protected endpoints return 401 Unauthorized.
GROUP-129 β VIT Bhopal University, B.Tech CSE, 2028
| Name | Roll Number | Roles |
|---|---|---|
| Rishi Raj | 24BCE10149 | Frontend Lead |
| Abhilash Singh | 24BCE10706 | UI/UX and System Design |
| Arnab Kumar | 24BCE11017 | Backend Lead + Database + API |
| Brotodeep Pal | 24BCE10477 | Security + Deployment |
Project Guide: Dr. Sasmita Padhy, School of Computer Science and Engineering, VIT Bhopal University
Program Chair: Dr. Vikas Panthi
This project was developed as an academic submission for VIT Bhopal University. All rights reserved by the authors.