A modern web application for students to rate and review professors and courses at their university, built with Spring Boot and React.
- Alessandra Barbosa de Santana
- Maria Gabriela Damásio Bezerra
- Mateus Xavier
- Raphael Rennan Soares de Miranda
- Rayane Cavalcanti da Silva
- Samuel Silva Araújo de Brito
- Trello Board - Project management and user stories
- Figma Design - UI/UX prototypes
- YouTube - Project presentation (Entrega 1)
- YouTube - Project presentation (Entrega 2)
- YouTube - Screencast HUs (Entrega 3)
- YouTube - Screencast Teste (Entrega 3)
- YouTube - Screencast HUs (Entrega 4)
- YouTube - Screencast Teste (Entrega 4)
- HU-001 https://trello.com/c/zAmOcMLL
- HU-002 https://trello.com/c/uX0xmtO0
- HU-003 https://trello.com/c/5rhhCx63
- HU-004 https://trello.com/c/XscGvAYQ
- HU-005 https://trello.com/c/ZSDhwQWt
- HU-006 https://trello.com/c/dBQdX0CE
- HU-007 https://trello.com/c/eG63XmgC
- HU-008 https://trello.com/c/ALVgJ878
- Java 21 - Latest LTS version with modern language features
- Spring Boot 3.x - Enterprise-grade framework with auto-configuration
- Spring Data JPA - Data persistence layer with Hibernate
- Spring Security - Authentication and authorization
- PostgreSQL - Robust relational database
- Maven - Dependency management and build tool
- Docker - Containerization for consistent deployments
- React 18+ - Modern UI library with hooks and concurrent features
- TypeScript - Type-safe JavaScript for better development experience
- Ant Design 5.x - Professional UI component library
- Redux Toolkit - Predictable state management
- Vite - Fast build tool and development server
- Recharts - Responsive charts and data visualization
The easiest way to run the project is using our cross-platform startup scripts:
Windows:
# Navigate to the project folder
cd ratemyclass
scripts\start.batLinux/macOS:
# Navigate to the project folder
cd ratemyclass
./scripts/start.shThe scripts will:
- Check prerequisites and port availability
- Start Docker services (PostgreSQL & Redis)
- Install frontend dependencies
- Start backend and frontend servers
- Provide status information and troubleshooting
See scripts/SCRIPTS_README.md for detailed information.
- Java 21 or higher
- Node.js 18+ and npm
- PostgreSQL 15+
- Docker and Docker Compose (optional)
-
Clone the repository
git clone https://github.com/mxs2/ratemyclass.git cd ratemyclass -
Database Setup
# Create PostgreSQL database createdb ratemyclass_dev # Or use Docker docker-compose -f docker-compose.dev.yml up database -d
-
Backend Setup
cd backend ./mvnw spring-boot:runThe API will be available at
http://localhost:8080 -
Frontend Setup
cd frontend npm install npm run devThe frontend will be available at
http://localhost:3000
-
Run everything with Docker Compose
cd docker docker-compose up -d -
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Database: localhost:5432
ratemyclass/
├── backend/ # Spring Boot backend
│ ├── src/main/java/
│ │ └── com/ratemyclass/
│ │ ├── entity/ # JPA entities
│ │ ├── repository/ # Data repositories
│ │ ├── service/ # Business logic
│ │ ├── controller/ # REST controllers
│ │ ├── dto/ # Data transfer objects
│ │ ├── config/ # Configuration classes
│ │ └── exception/ # Exception handling
│ ├── src/main/resources/
│ │ ├── application.yml # Application configuration
│ │ └── db/migration/ # Database migrations
│ └── pom.xml # Maven dependencies
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ ├── store/ # Redux store
│ │ ├── types/ # TypeScript types
│ │ ├── hooks/ # Custom React hooks
│ │ └── utils/ # Utility functions
│ ├── public/ # Static assets
│ └── package.json # npm dependencies
├── .github/workflows/ # CI/CD pipelines
├── docker/ # Docker configuration
│ ├── docker-compose.yml # Production Docker setup
│ ├── docker-compose.dev.yml # Development Docker setup
│ └── README.md # Docker documentation
├── scripts/ # Startup and utility scripts
│ ├── start.sh/.bat # Cross-platform start scripts
│ ├── stop.sh/.bat # Cross-platform stop scripts
│ ├── logs/ # Application log files
│ ├── pids/ # Process ID files
│ └── README.md # Scripts documentation
└── README.md # Project documentation
Key configuration files:
application.yml- Main configurationapplication-dev.yml- Development settingsapplication-prod.yml- Production settings
Environment variables:
DB_USERNAME=postgres
DB_PASSWORD=your_password
DATABASE_URL=jdbc:postgresql://localhost:5432/ratemyclass
JWT_SECRET=your_jwt_secret_key
CORS_ALLOWED_ORIGINS=http://localhost:3000Environment variables (create .env file):
VITE_API_BASE_URL=http://localhost:8080/api
VITE_APP_NAME=RateMyClassOnce the backend is running, access the interactive API documentation:
- Swagger UI: http://localhost:8080/api/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/api/v3/api-docs
POST /api/v1/auth/login- User loginPOST /api/v1/auth/register- User registroPOST /api/v1/auth/logout- User logout
GET /disciplinas- Lista disciplinas
GET /professores- Lista professores
GET /coordenadores- Lista coordenadores
GET | POST | UPDATE | DELETE /avaliacoes/professor- Avaliação ProfessorGET | POST | UPDATE | DELETE /avaliacoes/coordenador- Avaliação CoordenadorGET | POST | UPDATE | DELETE /avaliacoes/disciplina- Avaliação DisciplinaGET /avaliacoes- Avaliações de todos os usuários
# View application logs
docker-compose logs -f backend
docker-compose logs -f frontend
# Connect to database
docker exec -it ratemyclass-db psql -U postgres -d ratemyclass
# Check application health
curl http://localhost:8080/api/actuator/health- Backend Health: http://localhost:8080/api/actuator/health
- Frontend Health: http://localhost:3000/health
- Database Metrics: Available through Spring Boot Actuator
- JWT-based authentication
- CORS protection
- SQL injection prevention
- XSS protection headers
- Input validation and sanitization
- Rate limiting on API endpoints
This project is licensed under the MIT License - see the LICENSE file for details.
Registro de usuários cadastrados
- users
Registro de avaliações
- avaliacao_coordenador
- avaliacao_professor
- avaliacao_disciplina
Listagem dos Professores, Coordenadores e Disciplinas
- coordenadores
- professores
- disciplinas
Registro de reações(likes/deslikes) por usuário
- avaliacao_reacao
Star this repository if you find it helpful!