A full-stack web application designed to streamline the duplicate invoice request process, replacing manual workflows with an automated, secure, and user-friendly portal.
- Secure Authentication: JWT-based login system for administrators
- Account Management:
- View all clients and administrators in sortable, filterable tables
- Add, edit, and delete client accounts
- Manage administrator accounts as needed
- Invoice Data Management:
- Bulk import of water and electricity billing data
- Targeted import for specific duplicates using unique identifiers
- Export duplicates as PDF files with merge capability
- Request Oversight:
- Global view of all duplicate requests in sortable, filterable tables
- Approve or reject client requests after identity verification
- Insert duplicate data for approved requests
- Secure Access: JWT-based client authentication
- Account Setup:
- Automatic account creation with initial credentials
- Email verification process for security
- Ability to update personal information (name, email, password)
- Duplicate Management:
- Submit new duplicate requests
- Export personal invoices
- Download approved duplicates as separate or merged PDF files
- Track request history and status
- Backend: Spring Boot with RESTful APIs
- Frontend: Thymeleaf templating with Bootstrap for responsive design
- Database: PostgreSQL for data persistence
- Security: JWT-based authentication and authorization
- PDF Generation: JSPDF for secure document creation
- Email Integration: Postfix for email confirmations and notifications (incomplete implementation)
Backend:
- Spring Boot
- Spring Security (JWT)
- PostgreSQL
- Thymeleaf
- Postfix
Frontend:
- Bootstrap 5
- JavaScript
- HTML/CSS
Tools:
- Maven
- Git
-
Prerequisites
- Java 17 or higher
- PostgreSQL 12+
- Maven 3.6+
- Postfix (for registration)
-
Database Configuration
CREATE DATABASE dm;
-
Application Configuration Update application.properties with your database credentials and postfix settings (unsafe):
spring.datasource.url=jdbc:postgresql://localhost:5432/dm spring.datasource.username=admin spring.datasource.password=admin spring.mail.host=localhost spring.mail.port=25 spring.mail.protocol=smtp spring.mail.properties.mail.smtp.auth=false spring.mail.properties.mail.smtp.starttls.enable=false
-
Build and Run
mvn clean install mvn spring-boot:run