This commit is contained in:
2026-03-09 23:40:58 -04:00
parent 35116e71a9
commit 95b2c8da01
16 changed files with 672 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
- id: proj-firesoft-001
type: entity
category: project
name: Firesoft
status: in_progress
created_at: 2026-03-09
updated_at: 2026-03-10
tags:
- react-native
- expo
- typescript
- ems
- fire-department
- incident-management
workspace: /home/mike/code/Firesoft
repository: https://git.freno.me/Mike/Firesoft.git
paperclip_project_id: bf1cbed2-9943-49e0-bf64-6e2f132b8790
- id: task-fre16-001
type: task
project: firesoft
title: Phase 2.2 - Create Custom Data Hooks
status: completed
completed_at: 2026-03-10T00:27:52Z
deliverables:
- hooks/useIncidents.ts
- hooks/useTrainingRecords.ts
- hooks/useDepartments.ts
- hooks/useUsers.ts
- hooks/useDataHooks.ts
acceptance_criteria:
- Create 4 custom data hooks
- Each hook exposes data, isLoading, error, refetch
- Replace inline service calls in screens
notes: |
Successfully created all 4 hooks with consistent pattern.
Demonstrated usage by updating app/(tabs)/training/index.tsx
to use useTrainingRecords hook.
- id: pattern-001
type: pattern
category: code-quality
name: Custom Data Hook Pattern
project: firesoft
created_at: 2026-03-10
description: |
Standard pattern for custom data hooks:
- Expose: data, isLoading, error, refetch
- Use React.useState for state management
- Use React.useCallback for fetch function
- Use React.useEffect to trigger initial fetch
- Return object with all state and refetch function
example: |
interface UseDataReturn {
data: T[];
isLoading: boolean;
error: Error | null;
refetch: () => Promise<void>;
}

View File

@@ -0,0 +1,62 @@
# Firesoft Project
## Overview
EMS/Fire department incident management software built with Expo React Native.
**Status:** In Progress
**Workspace:** `/home/mike/code/Firesoft`
**Project ID:** `bf1cbed2-9943-49e0-bf64-6e2f132b8790`
**Repository:** https://git.freno.me/Mike/Firesoft.git
## Tech Stack
- **Framework:** Expo (React Native 0.81.5, React 19.1.0, Expo SDK 54)
- **Language:** TypeScript
- **Database:** Turso (libsql) with local-first architecture
- **State Management:** MobX
- **Authentication:** Clerk
- **Navigation:** Expo Router (file-based routing)
- **Theming:** Light/dark mode support
## Architecture
### Key Directories
- `app/` - File-based routing (Expo Router)
- `(auth)/` - Authentication screens
- `(tabs)/` - Main tab navigation
- `components/` - Reusable UI components
- `ui/` - Basic UI components
- `layouts/` - Screen layout wrappers
- `services/` - Business logic and API calls
- `hooks/` - Custom React hooks
- `stores/` - MobX stores
- `database/` - Turso database utilities
- `types/` - TypeScript type definitions
### Data Layer
- **Local-first:** Works offline with sync queue
- **Services:** IncidentService, ProfileService, etc.
- **Custom Hooks:** useIncidents, useTrainingRecords, useDepartments, useUsers
## Current Focus
Phase 2: Code Quality Improvements (FRE-5)
- **Completed:** FRE-16 - Custom data hooks created
- **Next:** Continue modularization and component consolidation
## Key Features
- Incident tracking and reporting
- Training records management
- Department management
- User management with roles/permissions
- Export functionality (NERIS format)
- Offline support with sync
## Last Updated
2026-03-10