Initial scaffold: FocusFlow shared Dart package
Models (Task, Streak, StreakEntry, Reward, User, TimeEstimate, CoworkingRoom, ApiResponse), enums (EnergyLevel, TaskStatus, RewardType, RewardStyle), constants (ApiConstants, ErrorCodes, AppLimits), validators, and generated .g.dart files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
30
example/focusflow_shared_example.dart
Normal file
30
example/focusflow_shared_example.dart
Normal file
@@ -0,0 +1,30 @@
|
||||
import 'package:focusflow_shared/focusflow_shared.dart';
|
||||
|
||||
void main() {
|
||||
// Create a task
|
||||
final task = Task(
|
||||
id: 'task-001',
|
||||
userId: 'user-001',
|
||||
title: 'Write project proposal',
|
||||
status: TaskStatus.pending.apiValue,
|
||||
energyLevel: EnergyLevel.medium.name,
|
||||
priority: 75,
|
||||
estimatedMinutes: 30,
|
||||
tags: ['work', 'writing'],
|
||||
createdAt: DateTime.now(),
|
||||
);
|
||||
|
||||
print('Task: ${task.title} (priority: ${task.priority})');
|
||||
print('Status: ${TaskStatus.pending.displayName}');
|
||||
print('Energy: ${EnergyLevel.medium.displayName}');
|
||||
|
||||
// Validate
|
||||
final titleError = TaskValidator.validateTitle(task.title);
|
||||
print('Title valid: ${titleError == null}');
|
||||
|
||||
// API path
|
||||
print('Task endpoint: ${ApiConstants.task(task.id)}');
|
||||
|
||||
// Limits
|
||||
print('Free tier max tasks: ${AppLimits.freeMaxActiveTasks}');
|
||||
}
|
||||
Reference in New Issue
Block a user