Overview
Duit uses environment variables for sensitive configuration andapplication.properties for application settings. This approach keeps credentials secure and allows easy configuration across different environments.
Environment Variables
Add database configuration
Add your database credentials to the
.env file:.env
Using cloud PostgreSQL (e.g., Neon)
Using cloud PostgreSQL (e.g., Neon)
If you’re using a cloud PostgreSQL provider like Neon, your connection string will look different:Make sure to include
.env
?sslmode=require for secure connections.Application Properties
Theapplication.properties file contains non-sensitive application settings. Here are the key configurations:
Database Configuration
The application uses environment variables for database connection:src/main/resources/application.properties
Connection Pool Settings (HikariCP)
Duit uses HikariCP for efficient database connection pooling:src/main/resources/application.properties
These HikariCP settings are optimized for cloud databases with connection limits. Adjust them based on your database provider’s recommendations.
JPA/Hibernate Configuration
src/main/resources/application.properties
Understanding ddl-auto modes
Understanding ddl-auto modes
The
spring.jpa.hibernate.ddl-auto=update setting automatically updates your database schema:- update: Updates schema without data loss (recommended for development)
- create: Drops and recreates schema on startup (development only)
- create-drop: Drops schema on shutdown (testing only)
- validate: Validates schema without changes (production)
- none: No schema management (production)
Server Configuration
src/main/resources/application.properties
Session Configuration
src/main/resources/application.properties
Thymeleaf Configuration
src/main/resources/application.properties
spring.thymeleaf.cache=false disables template caching for development. Enable it in production for better performance.Error Handling Configuration
src/main/resources/application.properties
Security Settings
Duit uses Spring Security with the following features:- BCrypt password encryption: All passwords are hashed using BCrypt
- Role-based access control: Routes are protected based on user roles
/admin/**- Administrator access only/user/**- Regular users/professional/**- Professional users
- Custom error pages: 403 (Forbidden), 404 (Not Found), 500 (Server Error)
Security configuration is managed in Java code, not in
application.properties. See the Security documentation for details.Development vs Production
Verify Configuration
After configuring your environment, test your setup:http://localhost:8080.
Common Configuration Issues
Database connection failed
Database connection failed
Error:
Connection refused or Authentication failedSolutions:- Verify PostgreSQL is running:
pg_isready - Check database credentials in
.env - Ensure database
duitexists - For cloud databases, verify SSL settings and connection string
Port already in use
Port already in use
Error:
Port 8080 is already in useSolution: Change the port in application.properties:Environment variables not loading
Environment variables not loading
Error: Variables show as
${DB_URL} in logsSolutions:- Ensure
.envfile is in the project root - Verify
spring-dotenvdependency is inpom.xml - Restart your IDE/terminal after creating
.env
