Invoice management system developed in Java with Spring Boot. Allows complete CRUD operations for invoices, suppliers, and customers, with MySQL database persistence.
- Features
- Architecture
- Prerequisites
- Installation
- Configuration
- API Endpoints
- Contributing
- License
- Contact
- 📄 Complete invoice management (Invoice)
- 🏢 Supplier management (Supplier)
- 👥 Customer management (Customer)
- 🔄 Complete CRUD operations for all entities
- 🗄️ Persistence with JPA/Hibernate
- 🔗 Well-structured RESTful API
- 📊 MySQL database
- 🏗️ Layered architecture (Repository, Service, Controller)
The project follows a well-defined layered architecture:
src/main/java/
├── models/ # JPA entities (Invoice, Supplier, Customer)
├── dtos/ # Data Transfer Objects
├── service/ # Business logic
├── repository/ # Data access layer
└── controller/ # REST controllers (implicit)
Before getting started, make sure you have installed:
- Clone the repository:
git clone https://github.com/antonio-macave/faktorize.git- Navigate to the project directory:
cd faktorize- Install dependencies:
mvn clean install- Create a MySQL database:
CREATE DATABASE faktorize;- Configure the
application.propertiesfile:
# Database
spring.datasource.url=jdbc:mysql://localhost:3306/faktorize
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA/Hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
# Server configuration
server.port=8080# Run with Maven
mvn spring-boot:run
# Or run the compiled JAR
java -jar target/faktorize-1.0.0.jarThe application will be available at http://localhost:8080
You can use tools like Postman, curl, or any HTTP client to test the endpoints.
GET /api/invoices- List all invoicesGET /api/invoices/{id}- Get invoice by IDPOST /api/invoices- Create new invoicePUT /api/invoices/{id}- Update invoiceDELETE /api/invoices/{id}- Delete invoice
GET /api/suppliers- List all suppliersGET /api/suppliers/{id}- Get supplier by IDPOST /api/suppliers- Create new supplierPUT /api/suppliers/{id}- Update supplierDELETE /api/suppliers/{id}- Delete supplier
GET /api/customers- List all customersGET /api/customers/{id}- Get customer by IDPOST /api/customers- Create new customerPUT /api/customers/{id}- Update customerDELETE /api/customers/{id}- Delete customer
- Java 17+ - Programming language
- Spring Boot 3.5.0 - Main framework
- Spring Data JPA - Data persistence
- MySQL - Database
- Maven - Dependency management
- Hibernate - ORM (Object-Relational Mapping)
Contributions are welcome! Follow these steps:
- Fork the project
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Java code conventions
- Add unit tests for new features
- Update documentation when necessary
- Make sure all tests pass
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
António Macave - @antonio-macave
Project Link: https://github.com/antonio-macave/faktorize
⭐ If this project was helpful to you, consider giving it a star!