mirror of
https://github.com/DocNR/POWR.git
synced 2025-04-19 19:01:18 +00:00
215 lines
5.0 KiB
Markdown
215 lines
5.0 KiB
Markdown
![]() |
# AI Collaboration Guidelines for POWR Project
|
||
|
|
||
|
## Project Overview
|
||
|
|
||
|
POWR is a cross-platform fitness tracking application built with React Native and Expo. It follows a local-first architecture with planned Nostr protocol integration for decentralized social features.
|
||
|
|
||
|
### Key Features
|
||
|
- Exercise and workout tracking
|
||
|
- Workout template creation and management
|
||
|
- Local-first data storage
|
||
|
- Cross-platform compatibility (iOS, Android)
|
||
|
- Future Nostr integration for social features
|
||
|
|
||
|
### Technical Stack
|
||
|
- React Native & Expo
|
||
|
- TypeScript
|
||
|
- SQLite for local storage
|
||
|
- Nostr protocol (planned)
|
||
|
|
||
|
## Collaboration Guidelines
|
||
|
|
||
|
### 1. Development Process
|
||
|
|
||
|
#### 1.1 Problem Statement
|
||
|
Before starting any implementation:
|
||
|
- Define the specific problem or feature
|
||
|
- Outline key requirements and constraints
|
||
|
- Identify success criteria
|
||
|
- Document any dependencies or prerequisites
|
||
|
|
||
|
Example:
|
||
|
```markdown
|
||
|
Problem: Users need a way to create and manage custom exercise templates
|
||
|
Requirements:
|
||
|
- Support for different exercise types
|
||
|
- Custom fields for sets/reps/weight
|
||
|
- Offline functionality
|
||
|
- Future Nostr compatibility
|
||
|
Success Criteria:
|
||
|
- Users can create, edit, and delete exercises
|
||
|
- Exercise data persists locally
|
||
|
- UI performs smoothly
|
||
|
```
|
||
|
|
||
|
#### 1.2 Design Document
|
||
|
Create a design document that includes:
|
||
|
- Technical approach
|
||
|
- Data structures
|
||
|
- Component hierarchy
|
||
|
- State management
|
||
|
- Error handling
|
||
|
- Testing strategy
|
||
|
|
||
|
Store design documents in: `@/docs/design/`
|
||
|
|
||
|
#### 1.3 Implementation Phases
|
||
|
Break implementation into manageable chunks:
|
||
|
1. Core functionality
|
||
|
2. UI/UX implementation
|
||
|
3. Data persistence
|
||
|
4. Testing and validation
|
||
|
5. Documentation
|
||
|
|
||
|
#### 1.4 Review Process
|
||
|
- Review code in logical chunks
|
||
|
- Include tests with new features
|
||
|
- Document any configuration changes
|
||
|
- Update relevant documentation
|
||
|
|
||
|
### 2. Code Quality Standards
|
||
|
|
||
|
#### 2.1 TypeScript Usage
|
||
|
- Use proper type definitions
|
||
|
- Avoid `any` types
|
||
|
- Document complex types
|
||
|
- Use interfaces for shared types
|
||
|
|
||
|
Example:
|
||
|
```typescript
|
||
|
interface Exercise {
|
||
|
id: string;
|
||
|
name: string;
|
||
|
type: ExerciseType;
|
||
|
equipment?: Equipment;
|
||
|
notes?: string;
|
||
|
created_at: number;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
#### 2.2 Documentation
|
||
|
- Include JSDoc comments for functions
|
||
|
- Document component props
|
||
|
- Explain complex logic
|
||
|
- Keep README files updated
|
||
|
|
||
|
Example:
|
||
|
```typescript
|
||
|
/**
|
||
|
* Creates a new exercise template in the local database
|
||
|
* @param exercise - The exercise data to save
|
||
|
* @returns Promise<string> - The ID of the created exercise
|
||
|
* @throws {DatabaseError} If the save operation fails
|
||
|
*/
|
||
|
async function createExercise(exercise: Exercise): Promise<string>
|
||
|
```
|
||
|
|
||
|
#### 2.3 Error Handling
|
||
|
- Use typed errors
|
||
|
- Implement error boundaries
|
||
|
- Log errors appropriately
|
||
|
- Provide user feedback
|
||
|
|
||
|
#### 2.4 Testing
|
||
|
- Write unit tests for utilities
|
||
|
- Component testing
|
||
|
- Integration tests for workflows
|
||
|
- Document test cases
|
||
|
|
||
|
### 3. Project Structure
|
||
|
|
||
|
```plaintext
|
||
|
powr/
|
||
|
├── app/ # Main application code
|
||
|
│ ├── (tabs)/ # Tab-based navigation
|
||
|
│ └── components/ # Shared components
|
||
|
├── assets/ # Static assets
|
||
|
├── docs/ # Documentation
|
||
|
│ └── design/ # Design documents
|
||
|
├── lib/ # Shared utilities
|
||
|
└── types/ # TypeScript definitions
|
||
|
```
|
||
|
|
||
|
### 4. Contribution Process
|
||
|
|
||
|
1. **Start with Documentation**
|
||
|
- Create/update design doc
|
||
|
- Document planned changes
|
||
|
- Update relevant READMEs
|
||
|
|
||
|
2. **Implementation**
|
||
|
- Follow TypeScript best practices
|
||
|
- Add tests for new features
|
||
|
- Include error handling
|
||
|
- Add logging where appropriate
|
||
|
|
||
|
3. **Review**
|
||
|
- Self-review checklist
|
||
|
- Documentation updates
|
||
|
- Test coverage
|
||
|
- Performance considerations
|
||
|
|
||
|
### 5. Future-Proofing
|
||
|
|
||
|
#### 5.1 Nostr Integration
|
||
|
- Design data structures for Nostr compatibility
|
||
|
- Plan for event-based architecture
|
||
|
- Consider relay infrastructure
|
||
|
- Document Nostr-specific features
|
||
|
|
||
|
#### 5.2 Offline First
|
||
|
- Local data persistence
|
||
|
- Sync status tracking
|
||
|
- Conflict resolution strategy
|
||
|
- Clear offline indicators
|
||
|
|
||
|
## Communication Guidelines
|
||
|
|
||
|
### 1. When Asking for Help
|
||
|
- Provide context
|
||
|
- Share relevant code
|
||
|
- Describe expected vs actual behavior
|
||
|
- Include any error messages
|
||
|
|
||
|
### 2. When Implementing Features
|
||
|
- Break down complex tasks
|
||
|
- Document assumptions
|
||
|
- Ask for clarification when needed
|
||
|
- Provide progress updates
|
||
|
|
||
|
### 3. When Reviewing Code
|
||
|
- Follow the checklist
|
||
|
- Provide constructive feedback
|
||
|
- Suggest improvements
|
||
|
- Document decisions
|
||
|
|
||
|
## Resources
|
||
|
|
||
|
### Documentation Templates
|
||
|
- Problem Statement Template
|
||
|
- Design Document Template
|
||
|
- Pull Request Template
|
||
|
|
||
|
### Style Guides
|
||
|
- TypeScript Style Guide
|
||
|
- React Native Best Practices
|
||
|
- Component Design Guidelines
|
||
|
|
||
|
### Tools
|
||
|
- ESLint Configuration
|
||
|
- Prettier Setup
|
||
|
- Testing Utilities
|
||
|
|
||
|
## Getting Started
|
||
|
|
||
|
1. Review project documentation
|
||
|
2. Set up development environment
|
||
|
3. Run initial build
|
||
|
4. Review current codebase
|
||
|
5. Start with small tasks
|
||
|
|
||
|
Remember to:
|
||
|
- Ask questions when stuck
|
||
|
- Document decisions
|
||
|
- Follow the process
|
||
|
- Think about maintainability
|