A comprehensive internship management platform built with React (Frontend) and Spring Boot (Backend) featuring payment integration, automated certificate generation, and admin dashboard.
This platform allows students to enroll in a Java Developer internship program with the following features:
- Automated enrollment with offer letter generation
- Secure payment integration (Cashfree)
- Task management with deadline tracking
- Certificate generation upon completion
- Admin dashboard for managing enrollments and reviewing submissions
- Email notifications for all major events
internship-platform/
βββ backend/ # Spring Boot Java Backend
β βββ src/main/
β β βββ java/com/internify/
β β β βββ InternshipPlatformApplication.java
β β β βββ config/ # Security, CORS, etc.
β β β βββ controller/ # REST Controllers
β β β βββ dto/ # Data Transfer Objects
β β β β βββ LoginRequest.java
β β β β βββ SignupRequest.java
β β β β βββ AuthResponse.java
β β β βββ entity/ # JPA Entities
β β β β βββ User.java
β β β β βββ Enrollment.java
β β β β βββ Task.java
β β β β βββ Certificate.java
β β β β βββ Payment.java
β β β βββ repository/ # JPA Repositories
β β β β βββ UserRepository.java
β β β β βββ EnrollmentRepository.java
β β β β βββ TaskRepository.java
β β β β βββ CertificateRepository.java
β β β β βββ PaymentRepository.java
β β β βββ service/ # Business Logic (TO BE CREATED)
β β β βββ security/ # JWT & Security (TO BE CREATED)
β β β βββ exception/ # Exception Handling (TO BE CREATED)
β β β βββ util/ # Utilities (TO BE CREATED)
β β βββ resources/
β β βββ application.properties
β βββ pom.xml
β
βββ frontend/ # React Frontend
β βββ src/
β β βββ components/ # Reusable Components (TO BE CREATED)
β β βββ pages/ # Page Components (TO BE CREATED)
β β β βββ LandingPage.jsx
β β β βββ Login.jsx
β β β βββ Signup.jsx
β β β βββ Dashboard.jsx
β β β βββ Payment.jsx
β β β βββ AdminDashboard.jsx
β β βββ services/ # API Services (TO BE CREATED)
β β βββ context/ # Context API (TO BE CREATED)
β β βββ utils/ # Utilities (TO BE CREATED)
β β βββ App.jsx
β β βββ main.jsx
β β βββ index.css
β βββ index.html
β βββ package.json
β βββ vite.config.js
β βββ tailwind.config.js
β
βββ PROJECT_SETUP.md # Detailed setup guide
- β Project Structure - Complete folder hierarchy
- β Maven Configuration (pom.xml) - All dependencies added
- β Application Properties - Database, JWT, Email, Payment config
- β Main Application Class - Spring Boot entry point
- β
Entity Classes (5 entities):
- User (authentication & user management)
- Enrollment (internship enrollment tracking)
- Task (assignment management)
- Certificate (certificate generation)
- Payment (payment transactions)
- β Repository Interfaces (5 repositories) - JPA data access
- β DTO Classes - LoginRequest, SignupRequest, AuthResponse
- β Project Structure - Complete folder hierarchy
- β Package.json - All dependencies configured
- β Vite Configuration - Dev server with API proxy
- β Tailwind CSS - Complete styling setup
- β Main Files - App.jsx, main.jsx, index.html
- β Custom CSS - Animations, styles, dark theme
- β Routing Structure - React Router configured
- Java 17+
- Node.js 18+
- MySQL 8.0+
- Maven 3.6+
CREATE DATABASE internship_db;
USE internship_db;cd backend
# Update application.properties with your database credentials
# Update email and payment gateway credentials
# Build and run
mvn clean install
mvn spring-boot:runBackend will run on: http://localhost:8080
cd frontend
# Install dependencies
npm install
# Start development server
npm run devFrontend will run on: http://localhost:3000
-
Security Configuration (
config/SecurityConfig.java)- JWT authentication filter
- CORS configuration
- Security rules
-
JWT Utility (
security/JwtUtil.java)- Token generation
- Token validation
- Extract user details
-
Authentication Controller (
controller/AuthController.java)- Register endpoint
- Login endpoint
- Email verification
-
User Service (
service/UserService.java)- User registration logic
- Password encryption
- Email verification
-
Enrollment Service (
service/EnrollmentService.java)- Create enrollment
- Generate enrollment number
- Update phases
-
Payment Service (
service/PaymentService.java)- Cashfree integration
- Create payment order
- Verify payment
- Handle webhooks
-
Document Generation Service (
service/DocumentService.java)- Generate offer letter PDF
- Generate certificate PDF
- Generate invoice PDF
- QR code generation
-
Email Service (
service/EmailService.java)- Welcome email
- Offer letter email
- Payment confirmation
- Task reminders
- Certificate email
-
Task Service (
service/TaskService.java)- Create tasks
- Handle submissions
- File upload
- Review tasks
-
File Storage Service (
service/FileStorageService.java)- Upload files
- Download files
- Delete files
-
Landing Page (
pages/LandingPage.jsx)- Hero section matching the UI
- Experience gap table
- Execution roadmap
- Pricing card
-
Authentication Pages
- Login.jsx
- Signup.jsx
-
Student Dashboard (
pages/Dashboard.jsx)- Progress tracker
- Download documents
- Submit tasks
- View deadlines
-
Payment Page (
pages/Payment.jsx)- Cashfree integration
- Order summary
-
Admin Dashboard (
pages/AdminDashboard.jsx)- Statistics
- Enrollment management
- Task review
- Payment reports
-
API Service (
services/api.js)- Axios configuration
- API endpoints
- Auth interceptor
-
Auth Context (
context/AuthContext.jsx)- User state management
- Login/logout functions
- Protected routes
-
Components
- Navbar
- Footer
- Cards
- Forms
- Modals
- Spring Boot Web
- Spring Boot Data JPA
- Spring Boot Security
- Spring Boot Mail
- MySQL Connector
- JWT (jjwt)
- Apache PDFBox (PDF generation)
- Google ZXing (QR codes)
- Lombok
- Apache POI
- Springdoc OpenAPI (Swagger)
- React 18
- React Router DOM
- Axios
- React Icons
- Framer Motion (animations)
- React Toastify (notifications)
- Formik + Yup (forms)
- Chart.js (charts)
- Tailwind CSS
Update these values:
# Database
spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD
# JWT Secret (Generate a secure 256-bit key)
jwt.secret=YOUR_SECURE_JWT_SECRET_KEY
# Email Configuration
spring.mail.username=YOUR_EMAIL@gmail.com
spring.mail.password=YOUR_APP_PASSWORD
# Cashfree
cashfree.client-id=YOUR_CASHFREE_CLIENT_ID
cashfree.client-secret=YOUR_CASHFREE_SECRETCreate .env file:
VITE_API_URL=http://localhost:8080/api
VITE_APP_NAME=Internship PlatformPOST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/verify-email- Verify emailPOST /api/auth/forgot-password- Request password resetPOST /api/auth/reset-password- Reset password
POST /api/enrollments/create- Create new enrollmentGET /api/enrollments/my-enrollment- Get user's enrollmentPUT /api/enrollments/{id}/update-phase- Update phase
POST /api/payments/create-order- Create payment orderPOST /api/payments/verify- Verify paymentPOST /api/payments/webhook- Cashfree webhookGET /api/payments/{id}/invoice- Download invoice
GET /api/tasks/my-tasks- Get student's tasksPOST /api/tasks/{id}/submit- Submit taskGET /api/tasks/{id}/download- Download assignmentPUT /api/admin/tasks/{id}/review- Review submission (admin)
GET /api/documents/offer-letter- Generate offer letterGET /api/documents/certificate- Generate certificateGET /api/documents/verify/{code}- Verify certificate
GET /api/admin/dashboard- Dashboard statisticsGET /api/admin/enrollments- Get all enrollmentsGET /api/admin/payments- Payment reports
- Primary Green:
#22c55e(success, CTAs) - Dark Background:
#0a0a0a(main bg) - Card Background:
#18181b(cards, modals) - Red: For errors, alerts
- Blue: For information
- System fonts optimized for readability
- Gradient text effects for headings
- Custom buttons (
.btn-primary,.btn-secondary) - Card styles (
.card) - Input fields (
.input-field) - Animations (fade-in, slide-in, glow)
- Implement JWT Security (Backend)
- Create all Service classes (Backend)
- Create all Controller classes (Backend)
- Integrate Cashfree Payment (Backend)
- Implement PDF Generation (Backend)
- Create Landing Page (Frontend)
- Create Authentication Pages (Frontend)
- Create Student Dashboard (Frontend)
- Create Admin Dashboard (Frontend)
- Connect Frontend to Backend (API Integration)
- Testing & Bug Fixes
- Deployment
- Swagger API Docs: http://localhost:8080/swagger-ui.html (when backend runs)
- Detailed Setup: See
PROJECT_SETUP.md
This is a complete internship management system. To contribute:
- Create services and controllers for backend
- Create page components for frontend
- Connect everything together
- Test thoroughly
- Deploy!
This project is for educational purposes.
- Use Postman to test APIs
- Check Swagger docs for API documentation
- Use H2 console for quick testing (change in application.properties)
- Follow RESTful conventions
- Use React DevTools for debugging
- Check browser console for errors
- Use Tailwind CSS classes for styling
- Test responsiveness on different screens
Setup: β COMPLETE
- Project structure created
- All dependencies configured
- Database schema designed
- Basic configurations done
Development: π§ IN PROGRESS
- Need to implement services
- Need to create controllers
- Need to build UI components
- Need to integrate payment
Deployment: β³ PENDING
- Backend deployment setup
- Frontend deployment setup
- Database hosting
- Environment configuration
Created by: Your Team Last Updated: December 2024 Version: 1.0.0
- Check
PROJECT_SETUP.mdfor detailed instructions - Review entity classes for database structure
- Check application.properties for configurations
- Test with Swagger UI once services are implemented
Happy Coding! π