mirror of
https://github.com/pawelorzech/Fuzzel.git
synced 2026-01-29 19:54:30 +00:00
Android client for Fizzy - the card-based project management tool from 37signals
37signalsandroidclean-architecturefizzyhiltjetpack-composekotlinmaterial-designproject-managementretrofit
- Add indexed_by parameter to FizzyApiService.getCards() to fetch cards by status (all, closed, not_now) - Modify CardRepositoryImpl to fetch all card states in parallel and combine results - Update KanbanViewModel.distributeCardsToColumns() to create virtual swimlanes for NOT NOW, Triage, and DONE - always visible - Add distinct styling for virtual swimlanes in KanbanScreen: - NOT NOW: purple color, Schedule icon - Triage: orange color, Inbox icon - DONE: green color, CheckCircle icon - Hide Edit/Delete menu and Add Card button for virtual columns |
||
|---|---|---|
| app | ||
| gradle/wrapper | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Fuzzel
Fuzzel is an Android client for Fizzy, the card-based project management tool from 37signals.
Building
./gradlew assembleDebug
Architecture
The app follows Clean Architecture with the following layers:
- Domain - Business logic, models, and repository interfaces
- Data - API services, DTOs, and repository implementations
- Presentation - ViewModels and Compose UI
API Integration
The app integrates with the Fizzy API using the following key endpoints:
Authentication
POST /session- Request magic linkPOST /session/magic_link- Verify magic link code- Personal Access Token support via
GET /my/identity.json
Resources
- Boards: CRUD operations at
/boards - Cards: Operations use card
number(not ID) at/cards/{cardNumber} - Card Actions: Separate endpoints for close (
/closure), triage (/triage), priority (/goldness), watch (/watch) - Tags: Account-level tags at
/tags, card taggings at/cards/{cardNumber}/taggings - Comments: Nested under cards at
/cards/{cardNumber}/comments - Steps: Nested under cards at
/cards/{cardNumber}/steps - Notifications: Mark read via
POST /notifications/{id}/reading
Tech Stack
- Kotlin
- Jetpack Compose
- Hilt (DI)
- Retrofit + Moshi
- Coroutines + Flow