📁Crooked Finger — chandlerOS
🌐 Live Site📂 Source

Crooked Finger

Crooked Finger is a deployed cross-platform application (web + native iOS) that helps crochet enthusiasts translate complex pattern notation, manage projects, and get AI-powered assistance. End-to-end self-managed deployment on Oracle Cloud with Docker, nginx, and Let's Encrypt SSL.

Next.jsSwiftFastAPIGraphQLPostgreSQLDockerOCI
Overview

Crooked Finger bridges the gap between traditional craft patterns and modern technology. It converts between crochet pattern formats, generates custom patterns on demand, and routes AI requests across Gemini and OpenRouter to balance quality and cost. Ships as both a Next.js web app and a native SwiftUI iOS app, sharing a GraphQL API backend fully self-hosted on Oracle Cloud.

Key Features
  • AI-powered pattern translation — converts abbreviations to plain-language instructions
  • Native iOS app (Swift 6, SwiftUI, MVVM) alongside the web app
  • Custom pattern generation from natural language descriptions
  • Multi-model AI routing between Gemini and OpenRouter for cost/quality optimization
  • Multimodal AI support — upload images for pattern help
  • Conversation history with cross-platform sync
  • Comprehensive pattern library for organizing templates and active projects
  • Project management with image uploads and notes
  • User authentication with JWT and Argon2 password hashing
Tech Stack
Web Frontend
  • Next.js 15
  • TypeScript
  • Tailwind CSS
  • Apollo GraphQL Client
iOS App
  • Swift 6
  • SwiftUI
  • MVVM + @Observable
  • Apollo iOS
  • Kingfisher
Backend
  • FastAPI
  • Strawberry GraphQL
  • PostgreSQL
  • Docker
AI Integration
  • Google Gemini API
  • OpenRouter API
  • Multi-model smart routing
Deployment
  • Oracle Cloud Infrastructure
  • Docker Compose
  • Nginx reverse proxy
  • Let's Encrypt SSL
Challenges & Solutions
Multi-Model AI Routing

Implemented intelligent routing between multiple AI providers — Gemini for quality, OpenRouter for cost efficiency — with configurable fallback order and real-time usage tracking to minimize API costs without degrading response quality.

Self-Managed Infrastructure

Handled end-to-end deployment on Oracle Cloud: provisioned the server, configured Docker Compose for the FastAPI backend, set up nginx as a reverse proxy, and automated SSL certificate renewal with Let's Encrypt.

Pattern Complexity

Designed AI prompts specifically for craft pattern understanding, enabling accurate translation of complex crochet and knitting notation across multiple international format conventions.

Cross-Platform Native iOS App

Built a full native iOS companion app in Swift 6 and SwiftUI, sharing the same GraphQL backend. Implemented MVVM architecture with @Observable, Apollo iOS for GraphQL, and cross-platform data sync between web and mobile.

Outcomes
  • Deployed and live at crookedfinger.chandlerhardy.com with real users
  • Shipped both a web app and native iOS app against the same GraphQL API
  • Achieved full-stack end-to-end ownership: web frontend, iOS app, backend, infrastructure, and AI integration
  • Successfully integrated multiple AI providers with smart routing to optimize cost and quality
  • Built robust authentication system with JWT and secure password hashing
Crooked Finger7 technologies