192 lines
5.2 KiB
Markdown
192 lines
5.2 KiB
Markdown
# Pottery Diary (US Edition)
|
|
|
|
> Track every step of your ceramics journey from clay to finished piece
|
|
|
|
A mobile-first diary app for pottery and ceramics makers, designed specifically for the US market with Fahrenheit temperatures, Orton cone numbers, and imperial units.
|
|
|
|
## Features
|
|
|
|
### Core Functionality
|
|
- **Project Management**: Create and organize pottery projects with photos, tags, and status tracking
|
|
- **Process Steps**: Log every stage from forming to final firing
|
|
- Forming, Drying, Bisque Firing, Glazing, Glaze Firing, and Misc steps
|
|
- **Firing Details**: Record cone numbers (04, 6, 10, etc.) with auto-suggested temperatures
|
|
- **Glaze Tracking**: Catalog of popular US glazes (Amaco, Mayco, Spectrum, Coyote, etc.)
|
|
- Add custom glazes
|
|
- Track coats, application methods, and combinations
|
|
- **Photo Documentation**: Attach multiple photos to any step
|
|
- **Notes**: Markdown-supported notes for detailed record keeping
|
|
|
|
### US-Specific
|
|
- Temperature in Fahrenheit (°F) with optional Celsius toggle
|
|
- Orton cone numbers (022 through 14)
|
|
- Imperial units (lb/oz, in) with metric toggle
|
|
- US-English copy and localization
|
|
|
|
### Technical
|
|
- **Offline-First**: All data stored locally in SQLite
|
|
- **Privacy-Focused**: No account required, analytics opt-in only
|
|
- **Accessible**: VoiceOver/TalkBack support, Dynamic Type, high contrast
|
|
- **Cross-Platform**: iOS 15+ and Android 8+
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
- Node.js 18+ and npm
|
|
- Expo CLI (`npm install -g expo-cli`)
|
|
- iOS Simulator (Mac) or Android Emulator
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Clone the repository
|
|
cd pottery-diary
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start the development server
|
|
npm start
|
|
|
|
# Run on iOS
|
|
npm run ios
|
|
|
|
# Run on Android
|
|
npm run android
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run unit tests
|
|
npm test
|
|
|
|
# Run tests in watch mode
|
|
npm run test:watch
|
|
```
|
|
|
|
### Building for Production
|
|
|
|
```bash
|
|
# Install EAS CLI
|
|
npm install -g eas-cli
|
|
|
|
# Login to Expo
|
|
eas login
|
|
|
|
# Configure the project
|
|
eas build:configure
|
|
|
|
# Build for iOS
|
|
eas build --platform ios
|
|
|
|
# Build for Android
|
|
eas build --platform android
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
pottery-diary/
|
|
├── src/
|
|
│ ├── components/ # Reusable UI components
|
|
│ ├── features/ # Feature-specific code (future expansion)
|
|
│ ├── lib/
|
|
│ │ ├── db/ # SQLite database and repositories
|
|
│ │ ├── utils/ # Utility functions (conversions, cone converter)
|
|
│ │ ├── analytics/ # Privacy-first analytics abstraction
|
|
│ │ └── theme/ # Design tokens and styling
|
|
│ ├── navigation/ # React Navigation setup
|
|
│ ├── screens/ # Screen components
|
|
│ └── types/ # TypeScript type definitions
|
|
├── assets/
|
|
│ └── seed/ # Seed data (glaze catalog)
|
|
├── __tests__/ # Unit tests
|
|
└── docs/ # Documentation
|
|
```
|
|
|
|
## Technology Stack
|
|
|
|
- **Framework**: React Native (Expo SDK 54)
|
|
- **Language**: TypeScript
|
|
- **Database**: SQLite (expo-sqlite)
|
|
- **Navigation**: React Navigation v7
|
|
- **State**: React hooks (no external state management)
|
|
- **Testing**: Jest + React Native Testing Library
|
|
- **Build**: EAS Build
|
|
|
|
## Database Schema
|
|
|
|
### Key Tables
|
|
- `projects`: Project metadata, tags, status
|
|
- `steps`: Process steps with type-specific fields
|
|
- `firing_fields`: Cone, temperature, duration for firing steps
|
|
- `glazing_fields`: Glaze selections, coats, application method
|
|
- `glazes`: Catalog of glazes (seed + custom)
|
|
- `settings`: User preferences (units, analytics opt-in)
|
|
|
|
## Contributing
|
|
|
|
This is a reference implementation for the PRD. Contributions welcome for:
|
|
- Additional glaze catalog entries
|
|
- Bug fixes and performance improvements
|
|
- Accessibility enhancements
|
|
- Localization for other regions
|
|
|
|
Please ensure:
|
|
1. All tests pass (`npm test`)
|
|
2. TypeScript compiles without errors
|
|
3. Code follows existing patterns
|
|
4. Accessibility labels are present
|
|
|
|
## Privacy & Security
|
|
|
|
- **No Account Required**: All data stored locally on device
|
|
- **Analytics Opt-In**: Disabled by default
|
|
- **No Third-Party Tracking**: No ads, no data selling
|
|
- **CCPA Compliant**: Data stays on your device
|
|
- **Open Source**: Code is transparent and auditable
|
|
|
|
See [SECURITY.md](./SECURITY.md) and [PRIVACY.md](./PRIVACY.md) for details.
|
|
|
|
## Roadmap
|
|
|
|
### v1.0 (Current)
|
|
- ✅ Project and step management
|
|
- ✅ Cone-based firing tracking
|
|
- ✅ Glaze catalog and custom glazes
|
|
- ✅ Photo attachments
|
|
- ✅ Settings and unit preferences
|
|
|
|
### v1.1 (Planned)
|
|
- [ ] Project export (Markdown + ZIP)
|
|
- [ ] Search and filtering
|
|
- [ ] iCloud/Google Drive backup
|
|
- [ ] Reminders for next steps
|
|
|
|
### v1.2 (Future)
|
|
- [ ] PDF export for projects
|
|
- [ ] Template projects (duplicate)
|
|
- [ ] Expanded glaze catalog
|
|
- [ ] Tips & news feed integration
|
|
|
|
## License
|
|
|
|
MIT License - see [LICENSE](./LICENSE) for details
|
|
|
|
## Support
|
|
|
|
- Report issues: [GitHub Issues](https://github.com/yourusername/pottery-diary/issues)
|
|
- Documentation: [docs/](./docs/)
|
|
- PRD: [docs/PRD.md](./docs/PRD.md)
|
|
|
|
## Acknowledgments
|
|
|
|
- Glaze data sourced from manufacturer specifications
|
|
- Orton cone temperature chart based on standard firing rates
|
|
- Designed for US ceramics community
|
|
|
|
---
|
|
|
|
Made with care for makers 🏺
|