A comprehensive working replica of the AICTE (All India Council for Technical Education) portal, designed to provide similar functionality and user experience for educational institution management and student services.
- About
- Features
- Tech Stack
- Getting Started
- Project Structure
- API Documentation
- Default Credentials
- Troubleshooting
- Contributing
- License
This project is a fully functional replica of the AICTE portal system that provides:
- Institution approval and accreditation management
- Student services and verification
- Faculty information management
- Course and program administration
- Grievance management system
- Interactive dashboards with role-based access control
- RESTful API with JWT authentication
-
Institution Management
- Search AICTE approved institutions by name or state
- View institution details including approval status
- Institution registration and profile management
-
Student Services
- Student verification by ID
- View enrollment and institution details
- Student registration system
-
Grievance Portal
- Submit and track grievances
- Auto-generated ticket numbers
- Category-based grievance management
-
Authentication & Authorization
- User registration and login
- JWT-based authentication
- Role-based access control (ADMIN, USER, STUDENT, FACULTY, INSTITUTION)
-
Dashboard
- Personalized user dashboard
- Quick access to all services
- Profile management
-
Announcements
- View latest announcements
- Category-based filtering
- Priority-based display
- Framework: React 18.2.0
- Routing: React Router DOM v6
- HTTP Client: Axios
- Styling: Custom CSS with responsive design
- Build Tool: React Scripts (Create React App)
- Language: Java 17
- Framework: Spring Boot 3.2.0
- Security: Spring Security with JWT
- ORM: Spring Data JPA (Hibernate)
- Validation: Jakarta Validation
- Build Tool: Maven
- Database: PostgreSQL 15
- ORM: Hibernate/JPA
- Containerization: Docker & Docker Compose
- Web Server: Nginx (for frontend in production)
Ensure you have the following installed:
For Docker Setup:
- Docker (20.x or higher)
- Docker Compose (2.x or higher)
For Manual Setup:
- Java 17 or higher (JDK)
- Maven 3.6 or higher
- Node.js 18.x or higher
- PostgreSQL 15 or higher
- Git
This is the easiest way to get started. Docker will handle all dependencies automatically.
git clone https://github.com/saurabh-sudo/AICTE-Replica.git cd AICTE-Replicadocker-compose up -dThis command will:
- Create and start PostgreSQL database
- Build and start the Java Spring Boot backend
- Build and start the React frontend
- Initialize the database with schema
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080/api
- Database: localhost:5432
docker-compose downTo stop and remove all data including database volumes:
docker-compose down -vgit clone https://github.com/saurabh-sudo/AICTE-Replica.git cd AICTE-Replica- Start PostgreSQL service
- Create database:
createdb aicte_db- Run the database schema:
psql -U postgres -d aicte_db -f database/schema.sql- Navigate to backend directory:
cd backend- Update
src/main/resources/application.propertiesif needed:
spring.datasource.url=jdbc:postgresql://localhost:5432/aicte_db spring.datasource.username=postgres spring.datasource.password=postgres- Build the backend:
mvn clean install- Run the backend:
mvn spring-boot:runThe backend will start on http://localhost:8080
- Open a new terminal and navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend will start on http://localhost:3000
AICTE-Replica/ ├── backend/ # Java Spring Boot Backend │ ├── src/ │ │ ├── main/ │ │ │ ├── java/com/aicte/ │ │ │ │ ├── config/ # Configuration classes │ │ │ │ │ ├── SecurityConfig.java │ │ │ │ │ └── ModelMapperConfig.java │ │ │ │ ├── controller/ # REST Controllers │ │ │ │ │ ├── AuthController.java │ │ │ │ │ ├── InstitutionController.java │ │ │ │ │ ├── AnnouncementController.java │ │ │ │ │ ├── StudentController.java │ │ │ │ │ └── GrievanceController.java │ │ │ │ ├── dto/ # Data Transfer Objects │ │ │ │ ├── entity/ # JPA Entities │ │ │ │ │ ├── User.java │ │ │ │ │ ├── Institution.java │ │ │ │ │ ├── Course.java │ │ │ │ │ ├── Student.java │ │ │ │ │ ├── Announcement.java │ │ │ │ │ └── Grievance.java │ │ │ │ ├── repository/ # Spring Data Repositories │ │ │ │ ├── security/ # Security & JWT │ │ │ │ │ ├── JwtUtils.java │ │ │ │ │ ├── UserDetailsImpl.java │ │ │ │ │ ├── UserDetailsServiceImpl.java │ │ │ │ │ └── AuthTokenFilter.java │ │ │ │ ├── service/ # Business Logic │ │ │ │ └── AicteReplicaApplication.java │ │ │ └── resources/ │ │ │ └── application.properties │ │ └── test/ │ ├── Dockerfile │ └── pom.xml │ ├── frontend/ # React Frontend │ ├── public/ │ │ └── index.html │ ├── src/ │ │ ├── components/ # Reusable Components │ │ │ ├── Navbar.js │ │ │ ├── Navbar.css │ │ │ ├── Footer.js │ │ │ └── Footer.css │ │ ├── pages/ # Page Components │ │ │ ├── Home.js │ │ │ ├── Home.css │ │ │ ├── Login.js │ │ │ ├── Signup.js │ │ │ ├── Auth.css │ │ │ ├── InstitutionSearch.js │ │ │ ├── InstitutionSearch.css │ │ │ ├── StudentVerification.js │ │ │ ├── StudentVerification.css │ │ │ ├── Dashboard.js │ │ │ ├── Dashboard.css │ │ │ ├── Grievance.js │ │ │ └── Grievance.css │ │ ├── services/ # API Services │ │ │ ├── api.js │ │ │ ├── authService.js │ │ │ ├── institutionService.js │ │ │ ├── announcementService.js │ │ │ ├── studentService.js │ │ │ └── grievanceService.js │ │ ├── App.js │ │ ├── App.css │ │ ├── index.js │ │ └── index.css │ ├── Dockerfile │ ├── nginx.conf │ └── package.json │ ├── database/ │ └── schema.sql # PostgreSQL Schema │ ├── docker-compose.yml # Docker Compose Configuration ├── .gitignore └── README.md - Development:
http://localhost:8080/api
POST /api/auth/signup Content-Type: application/json { "username": "john_doe", "email": "john@example.com", "password": "password123", "fullName": "John Doe", "role": "USER" }POST /api/auth/login Content-Type: application/json { "username": "john_doe", "password": "password123" } Response: { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "Bearer", "id": 1, "username": "john_doe", "email": "john@example.com", "fullName": "John Doe", "role": "ROLE_USER" }GET /api/institutions Authorization: Bearer {token}GET /api/institutions/search/name?name={institutionName}GET /api/institutions/search/state?state={stateName}GET /api/institutions/approvedGET /api/students/verify/{studentId} Response: { "verified": true, "studentId": "STU001", "name": "Jane Smith", "institution": "ABC Engineering College", "course": "Computer Science", "enrollmentYear": 2020 }GET /api/announcementsGET /api/announcements/{id}POST /api/grievances Authorization: Bearer {token} Content-Type: application/json { "category": "Technical Issue", "subject": "Portal Login Problem", "description": "Unable to login to the portal", "priority": "HIGH" } Response: { "id": 1, "ticketNumber": "TKT1234567890", "category": "Technical Issue", "subject": "Portal Login Problem", "status": "OPEN", "priority": "HIGH" }GET /api/grievances/{ticketNumber} Authorization: Bearer {token}The database is initialized with a default admin user:
- Username:
admin - Password:
admin123 - Email:
admin@aicte.gov.in - Role:
ADMIN
You can use these credentials to login and access admin features.
- View latest announcements
- Quick access to all services
- Information about AICTE
- Search approved institutions by name
- Filter institutions by state
- View detailed institution information
- No authentication required
- Verify student enrollment
- View student details including institution and course
- No authentication required
- Register as USER, STUDENT, FACULTY, or INSTITUTION
- Secure JWT-based authentication
- Password encryption with BCrypt
- View profile information
- Quick access to services
- Personalized user experience
- Submit grievances with categories
- Auto-generated ticket numbers
- Track grievance status
- Requires authentication
Problem: Containers fail to start
# Check container logs docker-compose logs backend docker-compose logs frontend docker-compose logs postgres # Restart containers docker-compose restartProblem: Port already in use
# Check what's using the port lsof -i :3000 lsof -i :8080 lsof -i :5432 # Kill the process or change ports in docker-compose.ymlProblem: Database connection failed
- Ensure PostgreSQL is running
- Check database credentials in
application.properties - Verify database
aicte_dbexists
Problem: Schema not initialized
# Manually run schema psql -U postgres -d aicte_db -f database/schema.sqlProblem: Maven build fails
# Clean and rebuild mvn clean install -U # Skip tests if needed mvn clean install -DskipTestsProblem: Port 8080 already in use
# Find process using port lsof -i :8080 # Change port in application.properties server.port=8081Problem: npm install fails
# Clear npm cache npm cache clean --force # Delete node_modules and reinstall rm -rf node_modules package-lock.json npm installProblem: API connection refused
- Ensure backend is running on port 8080
- Check proxy configuration in
package.json - Verify API URL in
services/api.js
- Navigate to http://localhost:3000/signup
- Fill in the registration form
- Click "Sign Up"
- Navigate to http://localhost:3000/login
- Use default admin credentials or your registered user
- Click "Login"
- Navigate to http://localhost:3000/institutions
- Search by name or state
- View institution details
- Navigate to http://localhost:3000/verify-student
- Enter a student ID (if you have added any)
- View verification results
- Login first
- Navigate to http://localhost:3000/grievance
- Fill in the grievance form
- Submit and note the ticket number
We welcome contributions! Please follow these steps:
- Fork the repository
- 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
- Backend: Follow Java coding conventions and Spring Boot best practices
- Frontend: Use ESLint and React best practices
- Write meaningful commit messages
- Add comments for complex logic
- Update documentation as needed
This project is licensed under the MIT License.
- GitHub: @saurabh-sudo
- Project Link: https://github.com/saurabh-sudo/AICTE-Replica
- Spring Boot 3.2.0 - Backend framework
- Spring Security - Authentication & authorization
- JWT (JSON Web Tokens) - Secure token-based authentication
- Spring Data JPA - Database operations
- PostgreSQL - Relational database
- React 18 - Frontend framework
- React Router - Client-side routing
- Axios - HTTP client
- Docker - Containerization
- Maven - Build automation for Java
- RESTful API design with proper HTTP methods and status codes
- JWT-based authentication for stateless security
- Role-based access control (RBAC) for authorization
- Responsive design for mobile and desktop
- Dockerized deployment for easy setup and scalability
- Separation of concerns with MVC pattern
- Service layer for business logic
- Repository pattern for data access
Made with dedication for the education sector 🎓
For issues and support, please create an issue on GitHub.