Initialize FishIQ development foundation

This commit is contained in:
reaper
2026-08-28 10:56:14 -05:00
commit 3eb459a307
81 changed files with 1642 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
# Architecture
FishIQ begins as a modular monolith around Django and PostgreSQL, with Redis for caching and background work. The web and mobile clients consume a versioned REST API. Professor Finn, recommendations, conditions, and notifications have explicit service boundaries but remain deployable together until scale or team ownership justifies extraction.
## Core flow
User + trip + target species + water body → normalized conditions → recommendation evidence → ranked plan → Professor Finn explanation.
## Principles
- Keep precise catch locations private by default.
- Store source, timestamp, and freshness for condition data.
- Make recommendations explainable and measure outcomes.
- Keep provider integrations behind adapters.
- Never send secrets or unnecessary personal data to AI providers.
+10
View File
@@ -0,0 +1,10 @@
# Initial data model
- User owns trips, tackle items, catches, and private waypoints.
- WaterBody has geography, access metadata, and known Species.
- Trip targets one water body, a time window, and one or more species.
- ConditionSnapshot records normalized observations and forecast provenance.
- Recommendation belongs to a trip and stores evidence, setup, confidence, and engine version.
- Conversation is scoped to a user and optionally an active trip.
- Catch records outcome, conditions, presentation, and independently controlled location visibility.
+14
View File
@@ -0,0 +1,14 @@
# Architecture decisions
## ADR-001: Modular monolith first
Accepted. Deploy Django modules together while maintaining service boundaries. This reduces early operational cost and preserves a clean path to extraction.
## ADR-002: Explainable recommendations
Accepted. Store inputs, rule/model version, evidence, and confidence with every recommendation.
## ADR-003: Privacy-first location data
Accepted. Exact catch coordinates and waypoints are private unless a user deliberately changes visibility.
+14
View File
@@ -0,0 +1,14 @@
# Development setup
## Prerequisites
- Git
- Docker with Compose and permission to access its service
- Flutter SDK for native mobile development (not needed for the Docker web/API stack)
Copy `.env.example` to `.env`, then run `docker compose up --build`.
## Current devbox notes
At project creation, Git, Docker/Compose, Python, Node, npm, and pnpm were installed. Flutter/Dart were absent, and the current user could not access the Docker socket. Resolve Docker access according to the host's administration policy; do not weaken socket permissions. Install Flutter before generating platform-specific iOS/Android runner files.
+35
View File
@@ -0,0 +1,35 @@
# Roadmap
## Milestone 1 — Eufaula vertical slice
- Accounts and profiles
- Water bodies and species catalog
- Trip creation
- Condition snapshot contract
- Rules-based bass recommendation
- Professor Finn grounded trip Q&A
- Responsive web experience
## Milestone 2 — Personalization
- Digital tackle box and complete setups
- Catch log with photos and privacy controls
- Recommendations constrained to owned tackle
- Feedback loop for recommendation outcomes
- Flutter trip companion
## Milestone 3 — Field intelligence
- Maps, private waypoints, contours, and structure
- Live condition-change alerts
- Regulations with provenance and effective dates
- Community reports with anti-abuse controls
- Fish photo identification
## Milestone 4 — Scale and learning
- Community pattern aggregation with privacy thresholds
- Personalized ranking models
- Voice conversations
- Broader species and water coverage