Custom Rod Building System Documentation
Overview
The custom rod building system allows users to track every detail of building custom fishing rods from scratch. This includes rod blanks, guides/eyelets, components, wrapping thread, finish/epoxy, and tools used.
Entities
RodBuild
The complete custom rod build - tracks all components and build details.
RodBlank
The base rod blank before components are added. Can be purchased blank or from existing rod.
RodComponent
Individual components used in rod build (reel seat, handle, butt cap, etc.).
Guide
Fishing rod guides/eyelets - the rings that line passes through. Normalized entity for reuse.
GuidePlacement
Placement of a guide on a rod build - tracks position, spacing, and orientation.
RodWrap
Wrapping thread/string used on rod build - tracks thread type, color, pattern.
RodFinish
Finish/epoxy applied to rod build - protects wraps and provides final finish.
RodBuildingTool
Tools and equipment used for rod building (wrapper, lathe, dryer, etc.).
RodBuildToolUsage
Tracks which tools were used in a rod build (many-to-many).
Example: Custom Salmon Trolling Rod
RodBuild: "Lake Michigan Salmon Trolling Rod"
RodBlank:
- Brand: St. Croix
- Model: SCIV
- Length: 8'6"
- Power: Medium Heavy
- Action: Moderate Fast
- Material: Graphite
Components:
-
Reel Seat (RodComponent)
- Brand: Fuji
- Model: DPSM
- Material: Graphite
- Size: 17mm
-
Handle (RodComponent)
- Material: Cork
- Length: 12 inches
- Type: Split grip
-
Fore Grip (RodComponent)
- Material: EVA
- Length: 4 inches
Guides (GuidePlacement):
-
Stripper Guide (Position 1)
- Guide: Fuji KLH Size 20
- Distance from butt: 24 inches
- Wrap: Size D Black thread
-
Running Guides (Positions 2-8)
- Guide: Fuji KLH Size 12
- Spacing: Progressive (decreasing)
- Wrap: Size D Black thread
-
Tip Top (Position 9)
- Guide: Fuji KLH Tip Top Size 8
- Distance from tip: 0 inches
- Wrap: Size D Black thread
Wraps (RodWrap):
- Main wrap: Size D Black (Gudebrod)
- Decorative: Size A Red (Diamond pattern)
- Trim: Size D Gold
Finish (RodFinish):
- Brand: Flex Coat
- Product: Lite
- Type: Epoxy
- Coats: 2
- Gloss: Glossy
- Application: Brush
Tools Used (RodBuildToolUsage):
- Custom Power Wrapper
- Finish Turner/Dryer
- Thread Tensioner
Usage Examples
Creating a Rod Build
// Create rod blank
var blank = new RodBlank
{
Brand = "St. Croix",
Model = "SCIV",
LengthFt = 8.5f,
Power = RodPower.MediumHeavy,
Action = RodAction.ModerateFast,
Material = RodMaterial.Graphite,
LineWeightLb = 12.0f,
LureWeightOz = 0.5f
};
// Create rod build
var build = new RodBuild
{
Name = "Lake Michigan Salmon Trolling Rod",
Description = "Custom built for Great Lakes salmon trolling",
RodBlankId = blank.Id,
BuiltAt = DateTime.UtcNow,
BuiltByUserId = userId,
BuildLocation = "Home Workshop",
IsProfessionalBuild = false,
TotalBuildCost = 350.00m
};
// Add components
var reelSeat = new RodComponent
{
RodBuildId = build.Id,
ComponentType = RodComponentType.ReelSeat,
Brand = "Fuji",
Model = "DPSM",
Material = "Graphite",
Size = "17mm",
PositionFromButtInches = 12.0f
};
var handle = new RodComponent
{
RodBuildId = build.Id,
ComponentType = RodComponentType.Handle,
Material = "Cork",
LengthInches = 12.0f,
PositionFromButtInches = 0.0f
};
// Add guides
var stripperGuide = new GuidePlacement
{
RodBuildId = build.Id,
GuideId = fujiKlh20.Id,
Position = 1,
DistanceFromButtInches = 24.0f,
SpacingFromPreviousInches = null, // First guide
Notes = "Stripper guide"
};
// Add wraps
var mainWrap = new RodWrap
{
RodBuildId = build.Id,
Brand = "Gudebrod",
ThreadType = "Size D",
Color = "Black",
WrapType = WrapType.GuideWrap,
Pattern = WrapPattern.Solid
};
// Add finish
var finish = new RodFinish
{
RodBuildId = build.Id,
Brand = "Flex Coat",
ProductName = "Lite",
FinishType = FinishType.Epoxy,
CoatsApplied = 2,
GlossLevel = FinishGloss.Glossy,
ApplicationMethod = "Brush",
AppliedAt = DateTime.UtcNow
};
// Add tools used
var toolUsage = new RodBuildToolUsage
{
RodBuildId = build.Id,
RodBuildingToolId = powerWrapper.Id,
UsageNotes = "Used for wrapping all guides"
};
Querying a Rod Build
// Get complete rod build with all components
var build = context.RodBuilds
.Include(rb => rb.RodBlank)
.Include(rb => rb.Components)
.Include(rb => rb.GuidePlacements)
.ThenInclude(gp => gp.Guide)
.Include(rb => rb.Wraps)
.Include(rb => rb.Finish)
.Include(rb => rb.ToolUsages)
.ThenInclude(tu => tu.RodBuildingTool)
.FirstOrDefault(rb => rb.Id == buildId);
// Display build details
Console.WriteLine($"Rod: {build.Name}");
Console.WriteLine($"Blank: {build.RodBlank.Brand} {build.RodBlank.Model}");
Console.WriteLine($"Built: {build.BuiltAt}");
Console.WriteLine($"Cost: ${build.TotalBuildCost}");
// Display guides
foreach (var guide in build.GuidePlacements.OrderBy(g => g.Position))
{
Console.WriteLine($"Guide {guide.Position}: {guide.Guide.Brand} {guide.Guide.Model} Size {guide.Guide.Size}");
Console.WriteLine($" Position: {guide.DistanceFromButtInches}\" from butt");
}
Guide Spacing Calculations
Common guide spacing methods:
- Progressive: Decreasing spacing from stripper to tip
- Static: Equal spacing
- Custom: User-defined spacing
The system tracks:
- Distance from butt (inches)
- Distance from tip (calculated)
- Spacing from previous guide
- Spacing to next guide
Benefits
- Complete Build Tracking - Every component and detail tracked
- Reusability - Guides, blanks, and tools can be reused across builds
- Cost Tracking - Track total build cost
- Educational - Share builds and learn from others
- Maintenance - Track condition and repair needs
- Tool Management - Track tools and their usage
- Build History - Track when and where rods were built
Future Enhancements
- Build Templates - Pre-configured build templates
- Guide Spacing Calculator - Calculate optimal guide spacing
- Build Comparison - Compare different builds
- Build Analytics - Which builds perform best
- Component Library - Library of components and guides
- Build Sharing - Public/private sharing of builds
- Build Ratings - User ratings of builds
- Build Comments - Discussion on builds
- Photo Gallery - Photos of build process and finished rod
- Build Cost Calculator - Calculate cost before building