feat: Add Nanaxe server with Docker, GitHub Actions CI/CD, and auto-deployment
- Add complete server infrastructure with Gitea, API, PostgreSQL - Implement Obsidian-compatible markdown mindmap converter - Add Flutter service for server synchronization - Configure GitHub Actions for automated build and deploy - Add production docker-compose with health checks - Include VPS setup and deployment scripts - Add comprehensive deployment documentation
This commit is contained in:
@@ -34,24 +34,33 @@ class ProjectModel {
|
||||
});
|
||||
|
||||
factory ProjectModel.fromFirestore(DocumentSnapshot doc) {
|
||||
final data = doc.data() as Map<String, dynamic>;
|
||||
final data = doc.data();
|
||||
if (data == null) {
|
||||
throw Exception('Document data is null');
|
||||
}
|
||||
|
||||
final mapData = data is Map<String, dynamic>
|
||||
? data
|
||||
: (data as Map<dynamic, dynamic>)
|
||||
.map((k, v) => MapEntry(k.toString(), v));
|
||||
|
||||
return ProjectModel(
|
||||
id: doc.id,
|
||||
name: data['name'] ?? '',
|
||||
description: data['description'] ?? '',
|
||||
teamId: data['teamId'] ?? '',
|
||||
ownerId: data['ownerId'] ?? '',
|
||||
memberIds: List<String>.from(data['memberIds'] ?? []),
|
||||
status: data['status'] ?? 'active',
|
||||
startDate: (data['startDate'] as Timestamp).toDate(),
|
||||
endDate: data['endDate'] != null
|
||||
? (data['endDate'] as Timestamp).toDate()
|
||||
name: mapData['name'] ?? '',
|
||||
description: mapData['description'] ?? '',
|
||||
teamId: mapData['teamId'] ?? '',
|
||||
ownerId: mapData['ownerId'] ?? '',
|
||||
memberIds: List<String>.from(mapData['memberIds'] ?? []),
|
||||
status: mapData['status'] ?? 'active',
|
||||
startDate: (mapData['startDate'] as Timestamp).toDate(),
|
||||
endDate: mapData['endDate'] != null
|
||||
? (mapData['endDate'] as Timestamp).toDate()
|
||||
: null,
|
||||
color: data['color'] ?? '#1976D2',
|
||||
icon: data['icon'] ?? 'project',
|
||||
settings: data['settings'] ?? {},
|
||||
createdAt: (data['createdAt'] as Timestamp).toDate(),
|
||||
updatedAt: (data['updatedAt'] as Timestamp).toDate(),
|
||||
color: mapData['color'] ?? '#1976D2',
|
||||
icon: mapData['icon'] ?? 'project',
|
||||
settings: mapData['settings'] ?? {},
|
||||
createdAt: (mapData['createdAt'] as Timestamp).toDate(),
|
||||
updatedAt: (mapData['updatedAt'] as Timestamp).toDate(),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user