---
alwaysApply: false
---
# Time Safari Context

**Author**: Matthew Raymer
**Date**: 2025-08-19
**Status**: 🎯 **ACTIVE** - Core application context

## Project Overview

Time Safari is an application designed to foster community building through
gifts, gratitude, and collaborative projects. The app makes it easy and
intuitive for users of any age and capability to recognize contributions,
build trust networks, and organize collective action. It is built on services
that preserve privacy and data sovereignty.

## Core Goals

1. **Connect**: Make it easy, rewarding, and non-threatening for people to

   connect with others who have similar interests, and to initiate activities
   together.

2. **Reveal**: Widely advertise the great support and rewards that are being

   given and accepted freely, especially non-monetary ones, showing the impact
   gifts make in people's lives.

## Technical Foundation

### Architecture

- **Privacy-preserving claims architecture** via endorser.ch

- **Decentralized Identifiers (DIDs)**: User identities based on

  public/private key pairs stored on devices

- **Cryptographic Verification**: All claims and confirmations are

  cryptographically signed

- **User-Controlled Visibility**: Users explicitly control who can see their

  identifiers and data

- **Cross-Platform**: Web (PWA), Mobile (Capacitor), Desktop (Electron)

### Current Database State

- **Database**: SQLite via Absurd SQL (browser) and native SQLite

  (mobile/desktop)

- **Legacy Support**: IndexedDB (Dexie) for backward compatibility

- **Status**: Modern database architecture fully implemented

### Core Technologies

- **Frontend**: Vue 3 + TypeScript + vue-facing-decorator

- **Styling**: TailwindCSS

- **Build**: Vite with platform-specific configs

- **Testing**: Playwright E2E, Jest unit tests

- **Database**: SQLite (Absurd SQL in browser), IndexedDB (legacy)

- **State**: Pinia stores

- **Platform Services**: Abstracted behind interfaces with factory pattern

## Development Principles

### Code Organization

- **Platform Services**: Abstract platform-specific code behind interfaces

- **Service Factory**: Use `PlatformServiceFactory` for platform selection

- **Type Safety**: Strict TypeScript, no `any` types, use type guards

- **Modern Architecture**: Use current platform service patterns

### Architecture Patterns

- **Dependency Injection**: Services injected via mixins and factory pattern

- **Interface Segregation**: Small, focused interfaces over large ones

- **Composition over Inheritance**: Prefer mixins and composition

- **Single Responsibility**: Each component/service has one clear purpose

### Testing Strategy

- **E2E**: Playwright for critical user journeys

- **Unit**: Jest with F.I.R.S.T. principles

- **Platform Coverage**: Web + Capacitor (Pixel 5) in CI

- **Quality Assurance**: Comprehensive testing and validation

## Current Development Focus

### Active Development

- **Feature Development**: Build new functionality using modern platform

  services

- **Performance Optimization**: Improve app performance and user experience

- **Platform Enhancement**: Leverage platform-specific capabilities

- **Code Quality**: Maintain high standards and best practices

### Development Metrics

- **Code Quality**: High standards maintained across all platforms

- **Performance**: Optimized for all target devices

- **Testing**: Comprehensive coverage maintained

- **User Experience**: Focus on intuitive, accessible interfaces

---

**See also**:

- `.cursor/rules/app/timesafari_platforms.mdc` for platform-specific details

- `.cursor/rules/app/timesafari_development.mdc` for

  development workflow details

**Status**: Active application context
**Priority**: Critical
**Estimated Effort**: Ongoing reference
**Dependencies**: None
**Stakeholders**: Development team, Product team

- **Dependencies**: Vue 3, TypeScript, SQLite, Capacitor, Electron

- **Stakeholders**: Development team, Product team

## Model Implementation Checklist

### Before TimeSafari Development

- [ ] **Application Context**: Understand TimeSafari's community-building purpose
- [ ] **Platform Analysis**: Identify target platforms (web, mobile, desktop)
- [ ] **Architecture Review**: Review current platform service patterns
- [ ] **Testing Strategy**: Plan testing approach for all platforms

### During TimeSafari Development

- [ ] **Platform Services**: Use abstracted platform services via interfaces
- [ ] **Type Safety**: Implement strict TypeScript with type guards
- **Modern Architecture**: Follow current platform service patterns
- [ ] **Performance Focus**: Ensure performance on all target devices

### After TimeSafari Development

- [ ] **Cross-Platform Testing**: Test functionality across all platforms
- [ ] **Performance Validation**: Verify performance meets requirements
- [ ] **Code Quality**: Ensure high standards maintained
- [ ] **Documentation Update**: Update relevant documentation
