RhinoForge.API: A .NET 8 REST API crafted to serve as a robust backend for managing a comprehensive inventory of European heavy-duty, off-road, and military trucks. This project is a study case, designed to showcase advanced skills in building high-performance, maintainable, and scalable enterprise-grade solutions.
Inspired by platforms like Planet-Trucks.com and my passion for powerful, resilient European machinery (MAN, Mercedes-Benz, Scania, Volvo, etc.), RhinoForge.API aims to be the definitive backend for a specialized truck dealership or marketplace. It focuses on the unique attributes and operational demands of commercial, military, and off-road vehicles.
The project emphasizes adopting the latest and best practices in the .NET ecosystem, providing a tangible example of modern architectural patterns, efficient data handling, and robust API design.
- Comprehensive Vehicle Management: CRUD operations for detailed truck, semi-trailer, and heavy equipment listings.
- Specific attributes for engine, axle configuration (e.g., 8x8, 6x4), bodywork type (Tipper, Chassis, Military), mileage, etc.
- Image management integration (cloud storage ready).
- Advanced Search & Filtering: Powerful, performant search capabilities by various criteria (make, model, year, price, bodywork, location, features) with full-text search.
- User & Seller Management: Secure user authentication (JWT) and role-based authorization (buyers, sellers, administrators). Seller profile management.
- Inquiry System: API endpoints for potential buyers to contact sellers.
- Favorites & Saved Searches: Personalization features for authenticated users.
- API Versioning: Future-proof API design with clear versioning strategy.
- Health Checks: Endpoints for monitoring API and dependency health.
This project leverages the most current and recommended technologies and patterns in the .NET world:
- Framework: ASP.NET Core 8.0
- Language: C# 12 (utilizing latest language features)
- Architecture:
- Clean Architecture / Vertical Slice Architecture: For modularity, testability, and separation of concerns.
- Minimal APIs: Where appropriate for lean endpoint definitions.
- Data Access:
- ORM: Entity Framework Core 8.0
- Database: PostgreSQL (with potential for advanced features like JSONB for flexible data structures)
- Advanced Search: Elasticsearch (with NEST client) for high-performance, scalable full-text and filtered queries.
- Caching: Distributed Caching with Redis for performance optimization.
- Asynchronous Processing: MassTransit / RabbitMQ for reliable handling of background tasks (e.g., image processing, notifications, data synchronization).
- Authentication & Authorization: JWT Bearer Tokens with ASP.NET Core Identity and Policy-Based Authorization.
- Validation: FluentValidation for robust request data validation.
- Logging: Structured Logging with Serilog (to console, files, and potentially cloud monitoring like Application Insights).
- API Documentation: Swagger/OpenAPI (Swashbuckle.AspNetCore) for interactive documentation.
- Containerization: Docker for consistent development environments and deployment.
- Testing: Comprehensive Unit and Integration Tests (xUnit.net, Moq).
- CI/CD: Designed for seamless integration with GitHub Actions or Azure DevOps Pipelines.
- Clone the repository:
git clone [https://github.com/your-username/RhinoForge.git](https://github.com/franciscostein/RhinoForge.git) cd RhinoForge.API - Set up Docker (Recommended):
Ensure Docker Desktop is running. This project includes
docker-compose.ymlfor easily spinning up MongoDB, Redis, and RabbitMQ.docker-compose up -d
- Database Migration:
Apply EF Core migrations to set up your database schema.
dotnet ef database update --project YourProject.Infrastructure
- Run the API:
dotnet run --project RhinoForge.API
- Access Swagger UI:
Once running, navigate to
https://localhost:7001/swagger(or your configured port) in your browser to explore the API endpoints interactively.
- Geospatial search capabilities for location-based truck listings.
- Real-time notifications using SignalR.
- Integration with external vehicle history report services.
- Dedicated Admin Dashboard (could be a separate client application).
While primarily a personal study case, feedback and suggestions are welcome. Feel free to open issues or discussions on the repository.
Leandro Francisco da Costa