Project Details
This project was developed to fulfill a requirement from BPR&D for building a platform dedicated to police training institutions.
Requirements
BPR&D provided two Excel sheets containing unorganized institution details. They wanted these details to be used for creating and managing institutions on the platform.
Excel Organization
I created a well-structured Excel sheet that organized all details from the provided sheets. The original data was converted into this new, easy-to-navigate format.
Design
Since this was a new project, I focused on creating a clean, scalable design. For the frontend, I organized each feature into separate folders within /src, each with its own Redux state, reducers, handlers, and components. This modular approach greatly facilitated future updates. On the backend, I followed a standard Spring Boot structure, introducing a common JSON response format for all APIs.
Development
The project included two main features: Bulk Upload Institutions and Show Institutions.
Bulk Upload Institutions
This feature allows users to select a formatted Excel sheet, extract institution details in the browser, and submit the data to the backend for processing.
Show Institutions
This feature displays all institutions on a public dashboard with search, filtering, and pagination. Filters include state, CPO, and CAPF categories. Users can set the number of institutions per page, and a search feature enables quick lookup. Selecting an institution provides detailed information across 7-8 categories, each with 5-10 specific details. A 'Share Institution' feature is also available.
Highlights
The project emphasizes maintainability, with well-organized React and Spring Boot codebases to simplify future modifications. The UI uses a box layout, enabling scrolling only where needed rather than on the entire page.
Deployment
The frontend, built with Vite React, is deployed by copying the /dist folder contents to /var/www/ for Apache2. The backend is deployed as a Spring Boot .jar file, and MySQL is used for the database.