University Platform is a modern open-source solution for creating a review aggregator for educational institutions. The project is developed as a scalable Full-stack application that allows students to share real learning experiences and applicants to choose their future place of study based on transparent ratings.
Key Features:
- Transparency: Collection of honest reviews and ratings.
- Centralization: A unified database of universities with easy search and tagging.
- Community: A role-based system for content administration and user verification via email.
- Security: Rate limiting and secure authentication to prevent abuse.
The project follows the principles of Separation of Concerns:
- Backend: Stateless REST API secured with JWT.
- Frontend: Reactive interface with optimistic updates for an instant response.
- Storage: Relational database (PostgreSQL) for data and In-memory storage (Redis) for caching and session management (e.g., password reset tokens).
- Java 17 / Spring Boot 3.2.2
- Spring Security & JWT: Endpoint protection and session management.
- JPA / Hibernate: Data persistence with PostgreSQL.
- Flyway: Database schema versioning.
- Redis: Caching and temporary data storage.
- Resend SDK: Integration with email delivery service.
- Bucket4j: Rate limiting for API protection.
- React 19 / TypeScript 5.9
- Vite 7: Ultra-fast build tool.
- Tailwind CSS 4: Modern utility-first CSS framework.
- Axios: API communication.
- Lucide React: Icon set.
- React Router 7: Client-side routing.
The backend automatically generates interactive API documentation. This allows you to test endpoints in real-time without third-party tools.
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI JSON:
http://localhost:8080/v3/api-docs
To run the project, you need to create .env files in the backend/ and frontend/ directories based on the provided .env.example files.
| Key | Purpose |
|---|---|
DATABASE_URL |
PostgreSQL address (e.g., Supabase or Neon) |
DATABASE_USERNAME |
DB Login |
DATABASE_PASSWORD |
DB Password |
JWT_SECRET |
Secret key (minimum 32 characters) |
ALLOWED_ORIGINS |
Frontend URL (e.g., https://your-app.netlify.app) |
RESEND_API_KEY |
API key from resend.com |
REDIS_HOST |
Redis address (e.g., Upstash) |
REDIS_PORT |
Redis port |
| Key | Purpose |
|---|---|
VITE_API_URL |
Full URL to your Backend API |
The project is fully ready for CI/CD deployment:
- Backend: Render.com (automatic build via Dockerfile).
- Frontend: Netlify.app (Build command:
npm run build, Directory:dist). - Database: Supabase.com or Neon.tech (Managed PostgreSQL).
- Redis: Upstash.com (Serverless Redis with RESP protocol support).
cd backend
./gradlew build
./gradlew bootRuncd frontend
npm install
npm run devThis project is licensed under the MIT License.