Backend (Go): - Project structure with chi router, pgxpool, goose migrations - JWT auth (access/refresh tokens) with Firebase token verification - NoopTokenVerifier for local dev without Firebase credentials - PostgreSQL user repository with atomic profile updates (transactions) - Mifflin-St Jeor calorie calculation based on profile data - REST API: POST /auth/login, /auth/refresh, /auth/logout, GET/PUT /profile, GET /health - Middleware: auth, CORS (localhost wildcard), logging, recovery, request_id - Unit tests (51 passing) and integration tests (testcontainers) - Docker Compose setup with postgres healthcheck and graceful shutdown Flutter client: - Riverpod state management with GoRouter navigation - Firebase Auth (email/password + Google sign-in with web popup support) - Platform-aware API URLs (web/Android/iOS) - Dio HTTP client with JWT auth interceptor and concurrent refresh handling - Secure token storage - Screens: Login, Register, Home (tabs: Menu, Recipes, Products, Profile) - Unit tests (17 passing) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
40 lines
1.3 KiB
Dart
40 lines
1.3 KiB
Dart
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
|
|
part of 'user.dart';
|
|
|
|
// **************************************************************************
|
|
// JsonSerializableGenerator
|
|
// **************************************************************************
|
|
|
|
User _$UserFromJson(Map<String, dynamic> json) => User(
|
|
id: json['id'] as String,
|
|
email: json['email'] as String,
|
|
name: json['name'] as String,
|
|
avatarUrl: json['avatar_url'] as String?,
|
|
heightCm: (json['height_cm'] as num?)?.toInt(),
|
|
weightKg: (json['weight_kg'] as num?)?.toDouble(),
|
|
age: (json['age'] as num?)?.toInt(),
|
|
gender: json['gender'] as String?,
|
|
activity: json['activity'] as String?,
|
|
goal: json['goal'] as String?,
|
|
dailyCalories: (json['daily_calories'] as num?)?.toInt(),
|
|
plan: json['plan'] as String,
|
|
preferences: json['preferences'] as Map<String, dynamic>? ?? {},
|
|
);
|
|
|
|
Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
|
|
'id': instance.id,
|
|
'email': instance.email,
|
|
'name': instance.name,
|
|
'avatar_url': instance.avatarUrl,
|
|
'height_cm': instance.heightCm,
|
|
'weight_kg': instance.weightKg,
|
|
'age': instance.age,
|
|
'gender': instance.gender,
|
|
'activity': instance.activity,
|
|
'goal': instance.goal,
|
|
'daily_calories': instance.dailyCalories,
|
|
'plan': instance.plan,
|
|
'preferences': instance.preferences,
|
|
};
|