Product Overview
BirbWatch is a bird watching and nature observation application. It helps birders log sightings, identify species, track their life list, and share observations with the community. The app is designed mobile-first for use in the field.
User Roles
| Role | Description | Access Level |
| User | Standard birder — logs sightings, manages life list | Read/write own data |
| Admin | Application administrator | Full access |
Feature Summary
| # | Feature | Priority | Status |
| 1 | Authentication | P0 | Planned |
| 2 | User Profile | P0 | Planned |
| 3 | Sighting Log | P0 | Planned |
| 4 | Species Identification | P1 | Planned |
| 5 | Life List Tracking | P1 | Planned |
| 6 | Community Sharing | P2 | Planned |
Epics
EP-001: Authentication
- Email OTP login
- Google OAuth login
- Session management
- Role-based access control
EP-002: User Profile
- View/edit profile
- Account settings
- Birding preferences
EP-003: Sighting Log
- Log sightings with species, location, date, notes
- Photo attachment
- GPS coordinates from device
- Weather auto-capture
EP-004: Species Identification
- Search species database
- Photo-based suggestions (future ML)
- Field marks and ID tips
EP-005: Life List Tracking
- Automatic life list from sightings
- Year lists, location lists, trip lists
- Statistics and milestones
EP-006: Community Sharing
- Share sightings publicly or with groups
- Community feed
- Rare bird alerts
Non-Functional Requirements
| Requirement | Target |
| Performance | Page load < 2s, API response < 500ms |
| Availability | 99.9% uptime |
| Security | OWASP Top 10 compliance |
| Mobile | Responsive, offline-capable for field logging |
| Cost | Serverless on-demand pricing |
Tech Stack
Frontend
- Vite + React + TypeScript
- shadcn/ui + Tailwind CSS
- Zod schema validation
Backend
- AWS Lambda (Node.js/TypeScript)
- API Gateway + oRPC
- DynamoDB + Aurora PostgreSQL
Infra
- Pulumi IaC (TypeScript)
- GitHub Actions CI/CD
- BetterAuth + DynamoDB adapter