A comprehensive Spring Boot application for sharing and managing interview experiences. Built with β€οΈ using Java 17, Spring Boot 3.x, and PostgreSQL.
- Secure authentication with JWT
- Profile management with personal details
- Social links (GitHub, LinkedIn)
- Password management with strong validation
- Share detailed interview experiences
- Add multiple rounds per interview
- Mark experiences as anonymous
- Rich text descriptions
- Company and role-based organization
- Search by company, role, or keywords
- Filter by job type and interview status
- Sort by date, company, or relevance
- Personal interview statistics
- Success rate analysis
- Common interview topics
- Company-wise experience breakdown
- Java 17 - Core programming language
- Spring Boot 3.x - Application framework
- Spring Security - Authentication & Authorization
- Spring Data JPA - Data access
- Hibernate - ORM
- PostgreSQL - Primary database
- Maven - Dependency management
- Lombok - Boilerplate reduction
- Swagger/OpenAPI - Interactive API documentation
- Java 17 or higher
- Maven 3.6.3+
- PostgreSQL 13+
-
Clone the repository
git clone https://github.com/VenkateshW22/PlacePrep.git cd placeprep -
Configure Database
- Create a new PostgreSQL database
- Update
application.propertieswith your database credentials
-
Build and Run
mvn clean install mvn spring-boot:run
-
Access the Application
- API Docs:
http://localhost:8080/swagger-ui.html - API Base URL:
http://localhost:8080/api
- API Docs:
POST /api/auth/signup- Register a new userPOST /api/auth/login- Authenticate user
GET /api/users/me- Get current user profilePUT /api/users/update/me- Update profileGET /api/users/me/experiences/summary- Get user's experience summary
GET /api/experiences- Get all experiences (filterable)POST /api/experiences- Create new experienceGET /api/experiences/{id}- Get experience by IDPUT /api/experiences/{id}- Update experienceDELETE /api/experiences/{id}- Delete experienceGET /api/experiences/summary- Get experiences summary
- JWT-based authentication
- Role-based access control
- Password encryption with BCrypt
- Input validation
- CORS configuration
src/main/java/com/vk/placeprep/
βββ config/ # Configuration classes
βββ controller/ # REST controllers
βββ dto/ # Data Transfer Objects
βββ exception/ # Custom exceptions
βββ model/ # JPA entities
βββ repository/ # Data access layer
βββ security/ # Security configuration
βββ service/ # Business logic
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Spring Boot
- Inspired by platforms like LeetCode and InterviewBit
- Thanks to all contributors who have participated in this project
Made with β€οΈ by Venkatesh K