feat(init): mise en place initiale de P'titsPas - Documentation: CDC complet, sécifications techniques SSS-001, charte graphique, évolutions - Backend: structure NestJS avec controllers/services/routes, config Prisma - Frontend: app Flutter avec structure MVC, thème et Firebase - Changement de nom: SuperNounou devient P'titsPas

This commit is contained in:
Julien Martin
2025-04-30 10:38:47 +02:00
parent d5015b9c42
commit 9321430818
61 changed files with 9251 additions and 125 deletions
+73
View File
@@ -0,0 +1,73 @@
class Child {
final String id;
final String firstName;
final String lastName;
final DateTime? birthDate;
final DateTime? expectedBirthDate;
final String? photoUrl;
final bool hasPhotoConsent;
final DateTime? photoConsentDate;
final String status; // 'unborn', 'active', 'schooled'
final List<String> parentIds;
final bool isMultipleBirth; // true pour jumeaux, triplés, etc.
final DateTime createdAt;
final DateTime updatedAt;
Child({
required this.id,
required this.firstName,
required this.lastName,
this.birthDate,
this.expectedBirthDate,
this.photoUrl,
required this.hasPhotoConsent,
this.photoConsentDate,
required this.status,
required this.parentIds,
required this.isMultipleBirth,
required this.createdAt,
required this.updatedAt,
});
factory Child.fromJson(Map<String, dynamic> json) {
return Child(
id: json['id'],
firstName: json['firstName'],
lastName: json['lastName'],
birthDate: json['birthDate'] != null
? DateTime.parse(json['birthDate'])
: null,
expectedBirthDate: json['expectedBirthDate'] != null
? DateTime.parse(json['expectedBirthDate'])
: null,
photoUrl: json['photoUrl'],
hasPhotoConsent: json['hasPhotoConsent'] ?? false,
photoConsentDate: json['photoConsentDate'] != null
? DateTime.parse(json['photoConsentDate'])
: null,
status: json['status'] ?? 'unborn',
parentIds: List<String>.from(json['parentIds'] ?? []),
isMultipleBirth: json['isMultipleBirth'] ?? false,
createdAt: DateTime.parse(json['createdAt']),
updatedAt: DateTime.parse(json['updatedAt']),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'firstName': firstName,
'lastName': lastName,
'birthDate': birthDate?.toIso8601String(),
'expectedBirthDate': expectedBirthDate?.toIso8601String(),
'photoUrl': photoUrl,
'hasPhotoConsent': hasPhotoConsent,
'photoConsentDate': photoConsentDate?.toIso8601String(),
'status': status,
'parentIds': parentIds,
'isMultipleBirth': isMultipleBirth,
'createdAt': createdAt.toIso8601String(),
'updatedAt': updatedAt.toIso8601String(),
};
}
}
+63
View File
@@ -0,0 +1,63 @@
class Parent {
final String id;
final String userId;
final String firstName;
final String lastName;
final String email;
final String phoneNumber;
final String address;
final String city;
final String postalCode;
final List<String> childrenIds;
final DateTime createdAt;
final DateTime updatedAt;
Parent({
required this.id,
required this.userId,
required this.firstName,
required this.lastName,
required this.email,
required this.phoneNumber,
required this.address,
required this.city,
required this.postalCode,
required this.childrenIds,
required this.createdAt,
required this.updatedAt,
});
factory Parent.fromJson(Map<String, dynamic> json) {
return Parent(
id: json['id'],
userId: json['userId'],
firstName: json['firstName'],
lastName: json['lastName'],
email: json['email'],
phoneNumber: json['phoneNumber'],
address: json['address'],
city: json['city'],
postalCode: json['postalCode'],
childrenIds: List<String>.from(json['childrenIds']),
createdAt: DateTime.parse(json['createdAt']),
updatedAt: DateTime.parse(json['updatedAt']),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'userId': userId,
'firstName': firstName,
'lastName': lastName,
'email': email,
'phoneNumber': phoneNumber,
'address': address,
'city': city,
'postalCode': postalCode,
'childrenIds': childrenIds,
'createdAt': createdAt.toIso8601String(),
'updatedAt': updatedAt.toIso8601String(),
};
}
}
+35
View File
@@ -0,0 +1,35 @@
class AppUser {
final String id;
final String email;
final String role;
final DateTime createdAt;
final DateTime updatedAt;
AppUser({
required this.id,
required this.email,
required this.role,
required this.createdAt,
required this.updatedAt,
});
factory AppUser.fromJson(Map<String, dynamic> json) {
return AppUser(
id: json['id'] as String,
email: json['email'] as String,
role: json['role'] as String,
createdAt: DateTime.parse(json['createdAt'] as String),
updatedAt: DateTime.parse(json['updatedAt'] as String),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'email': email,
'role': role,
'createdAt': createdAt.toIso8601String(),
'updatedAt': updatedAt.toIso8601String(),
};
}
}