Move apps to mobile directory structure

Relocated all app directories (client, design_system_viewer, staff) and their contents under the new 'apps/mobile' path. This change improves project organization and prepares for future platform-specific structuring.
This commit is contained in:
Achintha Isuru
2026-01-22 10:17:19 -05:00
parent 2f992ae5fa
commit cf59935ec8
982 changed files with 3 additions and 2532 deletions

View File

@@ -0,0 +1,24 @@
import 'package:equatable/equatable.dart';
/// Represents a required certificate definition.
///
/// Examples: "Food Hygiene Level 2", "SIA Badge".
class Certificate extends Equatable {
/// Unique identifier.
final String id;
/// Display name of the certificate.
final String name;
/// Whether this certificate is mandatory for platform access or specific roles.
final bool isRequired;
const Certificate({
required this.id,
required this.name,
required this.isRequired,
});
@override
List<Object?> get props => [id, name, isRequired];
}

View File

@@ -0,0 +1,29 @@
import 'package:equatable/equatable.dart';
/// Represents a job category / skill type.
///
/// Examples: "Waiter", "Security Guard", "Bartender".
/// Linked to a [SkillCategory].
class Skill extends Equatable {
/// Unique identifier.
final String id;
/// The broader category (e.g. "Hospitality").
final String categoryId;
/// Display name of the skill.
final String name;
/// Default hourly rate suggested for this skill.
final double basePrice;
const Skill({
required this.id,
required this.categoryId,
required this.name,
required this.basePrice,
});
@override
List<Object?> get props => [id, categoryId, name, basePrice];
}

View File

@@ -0,0 +1,18 @@
import 'package:equatable/equatable.dart';
/// Represents a broad category of skills (e.g. "Hospitality", "Logistics").
class SkillCategory extends Equatable {
/// Unique identifier.
final String id;
/// Display name.
final String name;
const SkillCategory({
required this.id,
required this.name,
});
@override
List<Object?> get props => [id, name];
}

View File

@@ -0,0 +1,32 @@
import 'package:equatable/equatable.dart';
/// Represents required equipment or uniform for a specific [Skill].
///
/// Examples: "Black Shirt" (Uniform), "Safety Boots" (Equipment).
class SkillKit extends Equatable {
/// Unique identifier.
final String id;
/// The [Skill] this kit applies to.
final String skillId;
/// Description of the item.
final String name;
/// Whether the staff member MUST possess this item.
final bool isRequired;
/// Type of kit ('uniform' or 'equipment').
final String type;
const SkillKit({
required this.id,
required this.skillId,
required this.name,
required this.isRequired,
required this.type,
});
@override
List<Object?> get props => [id, skillId, name, isRequired, type];
}

View File

@@ -0,0 +1,58 @@
import 'package:equatable/equatable.dart';
/// The expertise level of a staff member in a specific skill.
enum SkillLevel {
/// Entry level.
beginner,
/// Experienced.
skilled,
/// Expert / Managerial level.
professional,
}
/// The verification status of a claimed skill.
enum StaffSkillStatus {
/// Claimed by staff, waiting for admin approval.
pending,
/// Verified by admin (documents checked).
verified,
/// Rejected by admin.
rejected,
}
/// Represents a staff member's qualification in a specific [Skill].
class StaffSkill extends Equatable {
/// Unique identifier.
final String id;
/// The [Staff] member.
final String staffId;
/// The [Skill] they possess.
final String skillId;
/// Their expertise level.
final SkillLevel level;
/// Years of experience.
final int experienceYears;
/// Verification status.
final StaffSkillStatus status;
const StaffSkill({
required this.id,
required this.staffId,
required this.skillId,
required this.level,
required this.experienceYears,
required this.status,
});
@override
List<Object?> get props => [id, staffId, skillId, level, experienceYears, status];
}