A production-ready Enterprise Educational & Training Institute Management System built with Spring Boot 2.7.18, JSP Views, Spring Security, Spring Data JPA, and Neon PostgreSQL.
Originally built as an on-premise Java application using MySQL and SQL Server, EduManage was modernized and containerized to run seamlessly in modern cloud environments.
Serverless Cloud PostgreSQL Integration (Neon DB):
IllegalArgumentException: iteration must be >= 4096 caused by Spring Boot 2.7.18's default PostgreSQL driver (42.3.8) by upgrading to org.postgresql:postgresql:42.7.3.Startup Blocking & Resilient Initialization:
EntityManagerFactory initialization and Tomcat server launch.DataInitializerā non-blocking and transactional so default seed accounts (admin / admin123) are safely created without throwing uncaught startup errors or halting the container.DataSourceConfigā to sanitize and trim database connection URLs and secret credentials, preventing hidden space artifacts from breaking HikariCP authentication.External Service Resilience (S3 & SMTP):
Production Multi-Stage Dockerization:
Dockerfile using standard OpenJDK 17 (eclipse-temurin:17-jre-alpine) that package the application as a standalone WAR and listen dynamically on environment-specified $PORT.PENDING state..env)Create or update a .env file in the root directory:
# Server Port
PORT=8080
# Neon PostgreSQL Database Connection
SPRING_DATASOURCE_URL=jdbc:postgresql://ep-crimson-grass-b5bw346l-pooler.c-7.us-east-2.aws.neon.tech/neondb?sslmode=require&channel_binding=require
SPRING_DATASOURCE_USERNAME=neondb_owner
SPRING_DATASOURCE_PASSWORD=your_neon_password_here
# S3-Compatible Cloud Storage Credentials
AWS_ENDPOINT_URL_S3=https://br-late-king-b5snzdyj.storage.c-7.us-east-2.aws.neon.tech
AWS_ACCESS_KEY_ID=your_access_key_here
AWS_SECRET_ACCESS_KEY=your_secret_key_here
AWS_REGION=us-east-2
# SMTP Email Configuration (Optional)
SPRING_MAIL_HOST=smtp.gmail.com
SPRING_MAIL_PORT=587
[email protected]
SPRING_MAIL_PASSWORD=your_app_password
Build the Docker Image:
docker build -t edumanage:latest .
Run the Docker Container:
docker run -d -p 8080:8080 --env-file .env --dns 8.8.8.8 --name edumanage-app edumanage:latest
Check Container Logs:
docker logs -f edumanage-app
Verify that logs contain Started EduManageApplication and >>> Default admin created: admin / admin123.
Access Application: Open browser at: http://localhost:8080ā
Compile and Package WAR:
mvn clean package -DskipTests
Run Application:
java -jar target/edumanage.war
On first boot, the system automatically initializes an admin user:
| Field | Value |
|---|---|
| Username | admin |
| Password | admin123 |
| Role | System Administrator |
edumanage/
āāā Dockerfile # Multi-stage Docker build manifest
āāā .dockerignore # Container build exclusions
āāā .env # Local environment variables & secrets
āāā pom.xml # Maven project descriptor & dependencies
āāā LICENSE # MIT License
āāā README.md # Project documentation
āāā src/
āāā main/
āāā java/com/edumanage/
ā āāā config/ # SecurityConfig, DataSourceConfig, DataInitializer, MvcConfig
ā āāā controller/ # AdminController, TrainerController, StudentController, HomeController...
ā āāā model/ # User, Inquiry, Registration, Batch, Attendance, Task, Submission
ā āāā repository/ # Spring Data JPA Repository Interfaces
ā āāā service/ # Business Logic & Email/S3 Integration
āāā resources/
ā āāā application.properties # Central application configuration
āāā webapp/
āāā WEB-INF/views/ # JSP Views & UI Components
This project is licensed under the MIT Licenseā .
Content type
Image
Digest
sha256:911d19a24ā¦
Size
113.3 MB
Last updated
9 days ago
docker pull mohdmusheer/std