Live Demo: https://ipfees.dataman.ro/
IPFees is a jurisdiction-agnostic intellectual property fee calculation system that automates complex legal fee structures with multi-currency support. The platform provides automated fee calculations across 118 global IP jurisdictions using a Domain-Specific Language (DSL) approach, enabling legal professionals to define and modify fee calculation rules without software development expertise.
The easiest way to get started:
# Clone the repository
git clone https://github.com/vbocan/ipfees
cd ipfees/src
# Start all services
docker-compose up -dThat's it! The system includes sample data and will work immediately.
If you prefer to run without cloning the repository:
# Pull the images from Docker Hub
docker pull vbocan/ipfees:web-latest
docker pull vbocan/ipfees:api-latest
# Create a docker-compose.yml file (see example below)
# Then start the services
docker-compose up -dExample docker-compose.yml:
version: "3.8"
services:
mongodb:
image: mongo:8.0
container_name: ipfees-mongodb
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
environment:
MONGO_INITDB_DATABASE: ipfees
ipfees-web:
image: vbocan/ipfees:web-latest
container_name: ipfees-web
ports:
- "8080:8080"
depends_on:
- mongodb
environment:
- ASPNETCORE_URLS=http://+:8080
- ConnectionStrings__MongoDB=mongodb://mongodb:27017/ipfees
ipfees-api:
image: vbocan/ipfees:api-latest
container_name: ipfees-api
ports:
- "8090:8090"
depends_on:
- mongodb
environment:
- ASPNETCORE_URLS=http://+:8090
- ConnectionStrings__MongoDB=mongodb://mongodb:27017/ipfees
volumes:
mongodb_data:- Web Application (local): http://localhost:8080
- API Documentation (local): http://localhost:8090/swagger
- MongoDB (local): localhost:27017
That's it! The system includes sample data and will work immediately. For production use, configure your exchange rate API key in the settings.
# Run all tests
dotnet test
# Run specific test project
dotnet test IPFees.Core.Tests
dotnet test IPFees.Calculator.TestsIPFees leverages a modular architecture designed specifically for the demands of global IP practice, addressing complex requirements of many distinct regulatory frameworks.
For a detailed technical architecture diagram, see architecture.md.
- Backend: .NET 10.0, ASP.NET Core
- Frontend: Razor Pages, Bootstrap 5
- Database: MongoDB with GridFS
- Containerization: Docker & Docker Compose
- Background Services: .NET BackgroundService
- Expression Parsing: Custom DSL interpreter
- Testing: xUnit, Testcontainers
- DSL-Based Fee Calculation: Define complex fee structures in human-readable format without hardcoding business logic
- Multi-Jurisdiction Support: Configurable architecture supporting USPTO, EPO, WIPO, and 118 national patent offices
- Real-Time Currency Management: Multi-currency precision with real-time conversion, historical rate tracking, and three-tier fallback system
- API-First Design: Comprehensive REST APIs for integration with IP management platforms
- Bulk Processing: Portfolio-level fee estimation for large IP holdings
- Extensible Architecture: Add new jurisdictions through configuration without code changes
- Calculation Latency: <500ms for complex multi-jurisdiction calculations
- Typical 3-jurisdiction: 240-320ms (36-52% below target)
- Core DSL engine: 23.5μs for complex fee structures
- P95 latency: 420ms under normal load
- Multi-Currency Precision: 6-8 decimal places for high-value portfolios
- Currency Support: 150+ currencies with real-time conversion
- Concurrent Users: Scalable architecture supporting 25+ simultaneous users
- Extensibility: Add jurisdictions without code changes through configuration
Performance Validation: Comprehensive benchmarking completed using BenchmarkDotNet v0.14.0 with >90% confidence level. The validation includes statistical rigor (10 iterations, 99.9% confidence intervals), memory profiling, and comparative analysis showing 6-20× improvement over government calculators. See Performance Benchmark Report for detailed methodology, results, and statistical analysis.
If you use IPFees in your research, please cite:
@software{ipfees2025,
title = {IPFees: Intellectual Property Fee Calculator},
author = {Valer Bocan, PhD, CSSLP},
year = {2025},
version = {1.0.0},
url = {https://github.com/vbocan/ipfees},
license = {GPL-3.0}
}See CITATION.cff for structured citation metadata.
We welcome contributions from the community:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For major changes, please open an issue first to discuss proposed modifications. See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details. This OSI-approved copyleft license ensures that derivative works remain free and open source, while permitting academic research, commercial use, and modification.
- User Guide: See web application's built-in documentation at
/aboutand/reference - API Documentation: Interactive Swagger/OpenAPI documentation at
/swagger - Architecture: Detailed technical architecture in docs/architecture.md
- Developer Guide: Instructions for extending the system in docs/developer.md
- DSL Grammar: Fee calculation DSL specification at
/grammar
- Performance Benchmark Report: Comprehensive validation methodology and results in docs/performance_benchmark_report.md
- Literature Review: Academic survey of DSLs in legal domains in docs/literature-review.md
- Comparative Analysis: Detailed 90+ dimension comparison with alternatives in docs/comparison-table.md
- Issues: Report bugs and request features via GitHub Issues
- Discussions: Community support via GitHub Discussions
- Documentation: Comprehensive documentation in the
/docsfolder - Email: valer.bocan@upt.ro
