InvoiceZen is a powerful, secure, and easy-to-use application for generating professional GST-compliant invoices. Built with Spring Boot, it offers a robust backend with features like user authentication, PDF generation, and email integration.
- Secure User Authentication: JWT-based authentication and authorization.
- Professional Invoice Generation: Create and download invoices in PDF format.
- GST Ready: Automatically calculates GST for your invoices.
- Email Invoices: Send invoices directly to your clients from the application. (Note: This feature is not yet implemented)
- RESTful API: A well-documented API for integration with other services.
- Rate Limiting: Protects the application from brute-force attacks.
- Scalable Architecture: Built with modern best practices for scalability and maintainability.
- Backend: Spring Boot 3, Java 21
- Database: PostgreSQL, H2 (for development)
- Authentication: Spring Security, JWT
- Templating: Thymeleaf
- PDF Generation: iTextPDF
- API Documentation: Swagger (OpenAPI)
- Mail: Spring Boot Starter Mail
- Build Tool: Maven
+----------------+ +---------------------+ +----------------+
| Client |----->| InvoiceZen API |<---->| Database |
| (Web Browser) | | (Spring Boot) | | (PostgreSQL) |
+----------------+ +---------------------+ +----------------+
|
|
v
+----------------+
| Email Service |
| (SMTP) |
+----------------+
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Java 21
- Maven
- PostgreSQL
- Clone the repository
git clone https://github.com/your-username/Invoicezen.git
- Create a
.envfile Create a.envfile in the root directory and add the environment variables from theenv.examplefile. - Update the environment variables
Update the
.envfile with your database credentials, mail server details, and other configurations. - Run the application
mvn spring-boot:run
The application will be available at http://localhost:8080.
The API is documented using Swagger. Once the application is running, you can access the Swagger UI at:
http://localhost:8080/swagger-ui.html
To run this project, you will need to add the following environment variables to your .env file:
DATABASE_HOSTDATABASE_PORTDATABASE_NAMEDATABASE_USERNAMEDATABASE_PASSWORDDATABASE_TYPEDATABASE_DIALECTPORTSERVER_SERVLET_CONTEXT_PATHMAIL_HOSTMAIL_PORTMAIL_USERNAMEMAIL_PASSWORDMAIL_FROMAPP_NAMEAPP_DESCRIPTIONAPP_VERSIONAPP_ENVIRONMENTAPP_STATUSJPA_SHOW_SQLJPA_HIBERNATE_DDL_AUTOLOGGING_LEVELCORS_ENABLEDCORS_ALLOWED_ORIGINSCORS_ALLOWED_METHODSCORS_ALLOWED_HEADERSCORS_EXPOSED_HEADERSCORS_ALLOW_CREDENTIALSCORS_MAX_AGERATE_LIMIT_ENABLEDRATE_LIMIT_REQUESTS_MINUTESRATE_LIMIT_REQUESTS_HOURS
This project is licensed under the MIT License - see the LICENSE.md file for details.
Your Name - your.email@example.com
Project Link: https://github.com/your-username/Invoicezen