Skip to content

qinxiandiqi/PhotoChecker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

39 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

PhotoChecker Monorepo

A cross-platform EXIF viewer application supporting Android, HarmonyOS, Web, and Desktop (Tauri) platforms.

Your handy tool to view EXIF information of your photos! With this lightweight and simple app, you can effortlessly select any photo from your device and delve into its EXIF data. Gain insights into camera settings, date and time of capture, location, and much more. Whether you're a photography enthusiast or just curious about the technical details behind your images, PhotoChecker has got you covered.

Screenshots

๐Ÿš€ Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0

Installation

# Install dependencies
pnpm install

# Install and setup git hooks
pnpm prepare

Development

# Start Tauri development server
pnpm tauri:dev

# Build all projects
pnpm build

# Run all tests
pnpm test

# Lint all projects
pnpm lint

# Format all projects
pnpm format

๐Ÿ“ Project Structure

PhotoChecker/
โ”œโ”€โ”€ packages/           # Shared packages (future)
โ”œโ”€โ”€ apps/               # Applications (future)
โ”œโ”€โ”€ tauri/             # Tauri desktop application
โ”œโ”€โ”€ android/           # Android native application
โ”œโ”€โ”€ harmony/           # HarmonyOS application
โ”œโ”€โ”€ web/               # Web application
โ”œโ”€โ”€ package.json       # Root workspace configuration
โ”œโ”€โ”€ pnpm-workspace.yaml # pnpm workspace configuration
โ””โ”€โ”€ .gitignore         # Git ignore rules

๐Ÿ›  Available Scripts

Root Workspace Scripts

  • pnpm build - Build all projects
  • pnpm dev - Start development servers for all projects
  • pnpm test - Run all tests
  • pnpm lint - Lint all projects
  • pnpm lint:fix - Fix linting issues
  • pnpm format - Format all projects
  • pnpm format:check - Check formatting
  • pnpm typecheck - Type check all projects
  • pnpm clean - Clean all node_modules and build outputs

Platform-specific Scripts

  • pnpm tauri:dev - Start Tauri development server
  • pnpm tauri:build - Build Tauri application
  • pnpm android:build - Build Android application
  • pnpm harmony:build - Build HarmonyOS application
  • pnpm web:build - Build and serve web application

๐ŸŽฏ Platforms

Desktop (Tauri)

  • Location: ./tauri/
  • Tech Stack: React, TypeScript, Vite, Tauri 2
  • Commands: pnpm tauri:dev, pnpm tauri:build

Android

  • Location: ./android/
  • Tech Stack: Kotlin, Jetpack Compose
  • Commands: pnpm android:build

HarmonyOS

  • Location: ./harmony/
  • Tech Stack: ArkTS
  • Commands: pnpm harmony:build

Web

  • Location: ./web/
  • Tech Stack: Static files with Docker
  • Commands: pnpm web:build

๐Ÿ”ง Development Workflow

  1. Make changes to any platform-specific project
  2. Test locally using the development server for that platform
  3. Run linting with pnpm lint
  4. Format code with pnpm format
  5. Commit changes using the conventional commit format
  6. Test across platforms to ensure consistency

๐Ÿ“ Git Workflow

This monorepo uses conventional commits and automated tools for quality control:

Commit Guidelines

  • Use conventional commit format: type(scope): description
  • Interactive commits: Use pnpm commit for guided commit creation
  • Commit validation: Commits are automatically validated with commitlint

Available Commit Types

  • feat: ๆ–ฐๅŠŸ่ƒฝ (New features)
  • fix: ไฟฎๅค bug (Bug fixes)
  • docs: ๆ–‡ๆกฃๆ›ดๆ–ฐ (Documentation updates)
  • style: ไปฃ็ ๆ ผๅผ่ฐƒๆ•ด (Code formatting changes)
  • refactor: ้‡ๆž„ (Code refactoring)
  • test: ๅขžๅŠ ๆต‹่ฏ• (Adding tests)
  • build: ๆž„ๅปบ็›ธๅ…ณๅ˜ๅŠจ (Build related changes)
  • ci: CI/CD ้…็ฝฎๅ˜ๅŠจ (CI/CD configuration changes)
  • chore: ๅ…ถไป–ไฟฎๆ”น (Other changes)
  • revert: ๅ›žๆปš (Reverting changes)

Git Hooks

  • pre-commit: Runs lint-staged to format and lint staged files
  • commit-msg: Validates commit messages with commitlint

Release Management

  • pnpm release: Creates a new release with changelog
  • pnpm release:patch: Bump patch version
  • pnpm release:minor: Bump minor version
  • pnpm release:major: Bump major version

๐Ÿ“ฆ Package Management

This monorepo uses pnpm workspaces for dependency management:

  • Single lockfile: pnpm-lock.yaml at root
  • Hoisting: Dependencies are shared between packages
  • Efficient: Faster installs and less disk space

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Follow the commit message format
  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors