Line Spooling System Documentation
Overview
The line spooling system allows users to create complex multi-segment line configurations on their reels. This is essential for techniques like Great Lakes salmon trolling where you might have:
- Backer line (braid)
- Main line (copper or lead core)
- Leader (mono or fluoro)
Entities
ReelSpooling
The complete spooling configuration for a reel. Can be associated with a GearSetup or standalone Reel.
LineSegment
Represents a single segment of line on the reel (backer, main, leader, etc.). Segments are ordered by Position (1 = bottom/backer).
LineSegmentConnection
Tracks the knot used to connect two line segments together.
Knot
Normalized knot entity with educational resources (videos, images, instructions).
Example: Great Lakes Salmon Setup
Setup Configuration
ReelSpooling: "Great Lakes Salmon - 300ft Copper"
- Total Capacity: ~400 yards
- Spooled: 2024-01-15
Segments (from bottom to top):
-
Segment 1 (Position 1, Placement: Backer)
- Type: BraidVariant
- 50# braid, 100 yards
- Color: Green
- Notes: "Backer line - fills bottom of spool"
-
Segment 2 (Position 2, Placement: Main)
- Type: CopperCoreVariant
- 45# copper, 300 feet
- Color: Copper
- Notes: "Main trolling line - sinks ~20ft per 100ft"
- Connection: Albright Knot (connects to backer)
-
Segment 3 (Position 3, Placement: Leader)
- Type: MonofilamentVariant
- 25# mono, 20 feet
- Color: Clear
- Notes: "Leader - connects to copper"
- Connection: Double Uni Knot (connects to copper)
Usage Examples
Creating a Reel Spooling
// Create reel spooling
var spooling = new ReelSpooling
{
GearSetupId = gearSetupId,
Name = "Great Lakes Salmon - 300ft Copper",
Description = "300ft of 45# copper with 100yd 50# braid backer and 20ft 25# mono leader",
TotalCapacityYards = 400,
CapacityUsedPercent = 95,
SpooledAt = DateTime.UtcNow,
SpooledByUserId = userId,
Condition = SpoolingCondition.New
};
// Add backer segment
var backerSegment = new LineSegment
{
ReelSpoolingId = spooling.Id,
Position = 1,
Placement = LineSegmentPlacement.Backer,
BraidVariantId = braidVariantId,
LengthYards = 100,
Notes = "Backer line"
};
// Add copper segment
var copperSegment = new LineSegment
{
ReelSpoolingId = spooling.Id,
Position = 2,
Placement = LineSegmentPlacement.Main,
CopperCoreVariantId = copperVariantId,
LengthFeet = 300,
Notes = "Main trolling line"
};
// Add leader segment
var leaderSegment = new LineSegment
{
ReelSpoolingId = spooling.Id,
Position = 3,
Placement = LineSegmentPlacement.Leader,
MonofilamentVariantId = monoVariantId,
LengthYards = 6.67f, // 20 feet
Notes = "Leader"
};
// Add connections (knots)
var albrightKnot = context.Knots.FirstOrDefault(k => k.Name == "Albright Knot");
var connection1 = new LineSegmentConnection
{
LineSegmentId = copperSegment.Id,
KnotId = albrightKnot.Id,
Position = ConnectionPosition.Bottom,
Notes = "Connects copper to braid backer"
};
var doubleUniKnot = context.Knots.FirstOrDefault(k => k.Name == "Double Uni");
var connection2 = new LineSegmentConnection
{
LineSegmentId = leaderSegment.Id,
KnotId = doubleUniKnot.Id,
Position = ConnectionPosition.Bottom,
Notes = "Connects leader to copper"
};
Querying a Setup
// Get complete spooling with all segments and knots
var spooling = context.ReelSpoolings
.Include(rs => rs.Segments)
.ThenInclude(ls => ls.MonofilamentVariant)
.Include(rs => rs.Segments)
.ThenInclude(ls => ls.BraidVariant)
.Include(rs => rs.Segments)
.ThenInclude(ls => ls.CopperCoreVariant)
.Include(rs => rs.Segments)
.ThenInclude(ls => ls.Connections)
.ThenInclude(lsc => lsc.Knot)
.FirstOrDefault(rs => rs.Id == spoolingId);
// Display setup
foreach (var segment in spooling.Segments.OrderBy(s => s.Position))
{
Console.WriteLine($"Position {segment.Position}: {segment.Placement}");
Console.WriteLine($" Type: {GetSegmentType(segment)}");
Console.WriteLine($" Length: {segment.LengthYards}yd / {segment.LengthFeet}ft");
// Show connection/knot
var connection = segment.Connections.FirstOrDefault(c => c.Position == ConnectionPosition.Top);
if (connection != null)
{
Console.WriteLine($" Connected with: {connection.Knot.Name}");
}
}
Finding Knots for Line Types
// Find knots suitable for braid to mono
var braidToMonoKnots = context.Knots
.Where(k => k.IsForBraidToMono || k.IsForLineToLine)
.OrderByDescending(k => k.StrengthPercent)
.ToList();
// Find knots for attaching leaders
var leaderKnots = context.Knots
.Where(k => k.IsForLineToLeader)
.OrderBy(k => k.Difficulty)
.ToList();
Knot Database
Common Knots to Seed
-
Albright Knot
- Category: LineToLine
- Difficulty: Intermediate
- Strength: 95%
- Use: Braid to mono/fluoro, line to leader
- Video: [How-to video URL]
-
Double Uni Knot
- Category: LineToLine
- Difficulty: Beginner
- Strength: 90%
- Use: Connecting similar diameter lines
-
FG Knot
- Category: LineToLeader
- Difficulty: Advanced
- Strength: 98%
- Use: Braid to leader (low profile)
-
Blood Knot
- Category: LineToLine
- Difficulty: Intermediate
- Strength: 85%
- Use: Connecting similar diameter lines
-
Uni-to-Uni Knot
- Category: LineToLine
- Difficulty: Beginner
- Strength: 90%
- Use: General line connections
Benefits
- Complete Setup Tracking - Users can see exactly how someone's setup is configured
- Educational - Knot videos/instructions help users learn
- Reusability - Same spooling can be used across multiple setups
- Detailed Analytics - Track which knots/combinations work best
- How-to Videos - Link to instructional videos for each knot
- Setup Sharing - Users can share complete spooling configurations
Future Enhancements
- Knot Ratings - User ratings/reviews of knots
- Knot Difficulty Videos - Step-by-step video tutorials
- Setup Templates - Pre-configured spooling templates
- Setup Comparison - Compare different spooling configurations
- Knot Strength Testing - User-submitted strength test results
- Setup Analytics - Which setups catch more fish
- Maintenance Reminders - Alert when line needs respooling
- Line Age Tracking - Track how long line has been on reel