diff --git a/.github/.markdownlint-cli2.jsonc b/.github/.markdownlint-cli2.jsonc new file mode 100644 index 000000000..287b3953e --- /dev/null +++ b/.github/.markdownlint-cli2.jsonc @@ -0,0 +1,16 @@ +{ + "config": { + "MD013": false, + "MD024": { + "siblings_only": true + } + }, + "globs": [ + "**/*.md", + "!**/node_modules/**", + "!**/target/**", + "!**/venv/**", + "!**/.venv/**", + "!LICENSE.md" + ] +} diff --git a/.github/workflows/pr-check-tests.yml b/.github/workflows/pr-check-tests.yml index 09be0ddee..56626b445 100644 --- a/.github/workflows/pr-check-tests.yml +++ b/.github/workflows/pr-check-tests.yml @@ -13,6 +13,11 @@ jobs: - name: Checkout Code uses: actions/checkout@v3 + - name: Markdown lint + uses: DavidAnson/markdownlint-cli2-action@v23 + with: + config: .github/.markdownlint-cli2.jsonc + - name: Set up Node.js uses: actions/setup-node@v3 with: @@ -87,4 +92,3 @@ jobs: run: | cd backend pytest - diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ffac16801..f350d0772 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -aossie.oss@gmail.com. +. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the @@ -116,7 +116,7 @@ the community. This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). @@ -124,5 +124,5 @@ enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. +. Translations are available at +. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 263af5d41..d51e249b8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Hi there! Thank you for considering contributing to **PictoPy** – we’re exci NOTE: Please do not open a PR for the issue which is not yet reviewed and labelled by the maintainer. Wait for the maintainer to give a green light. -# Setting Up the Project +## Setting Up the Project ## Setup @@ -20,40 +20,40 @@ To set up and run the docs website on your local machine: 1. Ensure you have **Python 3** and **pip** installed. Navigate to the `/docs` folder. 2. Create a virtual environment: -```bash -python -m venv .docs-env -``` + ```bash + python -m venv .docs-env + ``` 3. Activate the virtual environment: -```bash -# On macOS/Linux: -source .docs-env/bin/activate -# On Windows: -.docs-env\Scripts\activate -``` + ```bash + # On macOS/Linux: + source .docs-env/bin/activate + # On Windows: + .docs-env\Scripts\activate + ``` 4. Install the required Python packages: -```bash -pip install -r requirements.txt -``` + ```bash + pip install -r requirements.txt + ``` 5. Start the local MkDocs server: -```bash -mkdocs serve -f ../mkdocs.yml -``` + ```bash + mkdocs serve -f ../mkdocs.yml + ``` -6. Open your browser and navigate to: http://127.0.0.1:8000. +6. Open your browser and navigate to: . 7. Edit Markdown files inside the `docs/` folder. The site will automatically reload when changes are saved. 8. To build the static site for production deployment, run: -```bash -mkdocs build -f ../mkdocs.yml -``` + ```bash + mkdocs build -f ../mkdocs.yml + ``` ## Testing @@ -67,10 +67,12 @@ npm test ### Backend - FastAPI + ```bash cd backend pytest ``` + - Tauri ```bash diff --git a/COPYRIGHT.md b/COPYRIGHT.md index 2d489361b..3213684be 100644 --- a/COPYRIGHT.md +++ b/COPYRIGHT.md @@ -1,7 +1,9 @@ -Copyright © 2026 AOSSIE
+# Copyright Notice + +Copyright © 2026 AOSSIE All rights reserved. -All works in this repository may be used according to the conditions +All works in this repository may be used according to the conditions stated in the LICENSE.md file available in this repository. These works are WITHOUT ANY WARRANTY, without even the implied warranty of diff --git a/README.md b/README.md index 11e8ad732..f15072188 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +
@@ -42,16 +43,19 @@ Find out more at [https://pictopy.aossie.org/](https://pictopy.aossie.org/). ## Features -**AI-powered** +### AI-powered + * Smart tagging based on detected faces and objects * Advanced image analysis with object detection and facial recognition * Smart search and retrieval -**Gallery management** +### Gallery management + * Album management with traditional gallery features * Cross-platform compatibility -**Privacy & performance** +### Privacy & performance + * Privacy-focused design with fully offline functionality * Efficient data handling and parallel processing @@ -94,7 +98,7 @@ Find out more at [https://pictopy.aossie.org/](https://pictopy.aossie.org/). ## Want to Contribute? - +Discord 1. First, join the **[Discord Server](https://discord.gg/hjUhu33uAn) (Go to Projects->PictoPy)** to chat with everyone. 2. For detailed setup instructions, coding guidelines, and the contribution process, please check out our [CONTRIBUTING.md](./CONTRIBUTING.md) file. @@ -103,7 +107,6 @@ Don't forget to star this repository if you find it useful! ⭐ Our Code of Conduct: [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) - ## License This project is licensed under the GNU General Public License v3.0. @@ -115,4 +118,4 @@ Thanks a lot for spending your time helping TODO grow. Keep rocking 🥂 [![Contributors](https://contrib.rocks/image?repo=AOSSIE-Org/PictoPy)](https://github.com/AOSSIE-Org/PictoPy/graphs/contributors) -© 2026 AOSSIE \ No newline at end of file +© 2026 AOSSIE diff --git a/backend/dist/README.md b/backend/dist/README.md index 5e72c294e..412709314 100644 --- a/backend/dist/README.md +++ b/backend/dist/README.md @@ -1,3 +1,3 @@ -## Do not delete the "dist" folder. +# Do not delete the "dist" folder This folder is essential for the development environment to start. diff --git a/docs/Manual_Setup_Guide.md b/docs/Manual_Setup_Guide.md index 9e0293c2d..029cbaf0c 100644 --- a/docs/Manual_Setup_Guide.md +++ b/docs/Manual_Setup_Guide.md @@ -1,39 +1,39 @@ -## Manual Setup Guide +# Manual Setup Guide -### Initial Steps +## Initial Steps -#### 1. Fork the PictoPy repository: +### 1. Fork the PictoPy repository: -#### 2. Open your Terminal (Linux/MacOS) or Powershell (Windows) +### 2. Open your Terminal (Linux/MacOS) or Powershell (Windows) -#### 3. Clone your forked repository +### 3. Clone your forked repository ```bash git clone https://github.com/yourUsername/PictoPy ``` -#### 4. Change to the repository directory +### 4. Change to the repository directory ```bash cd PictoPy ``` -#### 5. Add the main repository as "upstream" +### 5. Add the main repository as "upstream" ```bash git remote add upstream https://github.com/AOSSIE-Org/PictoPy ``` -### Prerequisites +## Prerequisites -#### Install and Setup Miniconda +### Install and Setup Miniconda Before setting up the Python backend and sync-microservice, you need to have **Miniconda** installed and set up on your system. 1. **Download and Install Miniconda:** - - Visit the [Miniconda installation guide](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions) - - Follow the quickstart install instructions for your operating system - - Make sure `conda` is available in your terminal after installation + - Visit the [Miniconda installation guide](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions). + - Follow the quickstart install instructions for your operating system. + - Make sure `conda` is available in your terminal after installation. 2. **Verify Installation:** @@ -43,146 +43,121 @@ Before setting up the Python backend and sync-microservice, you need to have **M You should see the conda version number if installed correctly. -### Tauri Frontend Setup +## Tauri Frontend Setup 1. **Install Tauri prerequisites based on your OS using this** [guide](https://tauri.app/start/prerequisites/). 2. **Navigate to the Frontend Directory:** Open your terminal and use `cd` to change directories: - ``` + ```bash cd frontend ``` -3. **Install Dependencies**: +3. **Install Dependencies:** - ``` + ```bash npm install ``` -4. **Start the Tauri desktop app in development mode** +4. **Start the Tauri desktop app in development mode:** - ``` + ```bash npm run tauri dev ``` -### Python (FastAPI) Backend Setup Steps +## Python (FastAPI) Backend Setup Steps -> **Note:** For backend setup make sure that you have **Miniconda installed** (see Prerequisites section above). Additionally, for Windows, make sure that you are using Powershell for the setup, not command prompt. +> **Note:** For backend setup, make sure that you have **Miniconda installed**. See the Prerequisites section above. Additionally, for Windows, make sure that you are using Powershell for the setup, not Command Prompt. 1. **Navigate to the Backend Directory:** Open your terminal and use `cd` to change directories: - Bash - - ``` + ```bash cd backend ``` 2. **Create a Conda Environment:** Create a new conda environment with Python 3.12: - Bash/Powershell - - ``` + ```bash conda create -p .env python=3.12 ``` 3. **Activate the Conda Environment:** - Bash/Powershell - - ``` + ```bash conda activate ./.env ``` 4. **Install Dependencies:** The `requirements.txt` file lists required packages. Install them using pip: - Bash/Powershell - - ``` + ```bash pip install -r requirements.txt ``` - > Local development keeps the CPU-only `onnxruntime` package. GPU acceleration is enabled per-platform in the release workflow, while the model recommendation step uses direct hardware detection (instead of ONNX Runtime providers). + > Local development keeps the CPU-only `onnxruntime` package. GPU acceleration is enabled per-platform in the release workflow, while the model recommendation step uses direct hardware detection instead of ONNX Runtime providers. -5. **Running the backend:** To start the backend in development mode, run this command while being in the backend folder and the conda environment activated: - Bash/Powershell +5. **Run the backend:** To start the backend in development mode, run this command while you are in the backend folder and the conda environment is activated: - ``` + ```bash fastapi dev --port 52123 ``` The server will start on `http://localhost:52123` by default. In test mode, the server will automatically restart if any errors are detected or if source files are modified. - ![alt text](/docs/assets/screenshots/serverRunning.png) + ![Server running screenshot](/docs/assets/screenshots/serverRunning.png) -### Sync-Microservice Setup Steps +## Sync-Microservice Setup Steps -> **Note:** For sync-microservice setup make sure that you have **Miniconda installed** (see Prerequisites section above). Additionally, for Windows, make sure that you are using Powershell for the setup, not command prompt. +> **Note:** For sync-microservice setup, make sure that you have **Miniconda installed**. See the Prerequisites section above. Additionally, for Windows, make sure that you are using Powershell for the setup, not Command Prompt. 1. **Navigate to the Sync-Microservice Directory:** Open your terminal and use `cd` to change directories: - Bash - - ``` + ```bash cd sync-microservice ``` 2. **Create a Conda Environment:** Create a new conda environment with Python 3.12: - Bash/Powershell - - ``` + ```bash conda create -p .sync-env python=3.12 ``` 3. **Activate the Conda Environment:** - Bash/Powershell - - ``` + ```bash conda activate ./.sync-env ``` 4. **Install Dependencies:** The `requirements.txt` file lists required packages. Install them using pip: - Bash/Powershell - - ``` + ```bash pip install -r requirements.txt ``` -5. **Running the sync-microservice:** To start the sync-microservice in development mode, run this command while being in the sync-microservice folder and the conda environment activated: - - Bash/Powershell +5. **Run the sync-microservice:** To start the sync-microservice in development mode, run this command while you are in the sync-microservice folder and the conda environment is activated: - ``` + ```bash fastapi dev --port 52124 ``` The server will start on `http://localhost:52124` by default. In development mode, the server will automatically restart if any errors are detected or if source files are modified. -### Troubleshooting Common Issues +## Troubleshooting Common Issues -1. **Missing System Dependencies:** Some dependencies might need system-level libraries like `libGL.so.1` (often needed by OpenCV). Install the appropriate packages based on your distribution: +1. **Missing System Dependencies:** Some dependencies might need system-level libraries like `libGL.so.1`, which is often needed by OpenCV. Install the appropriate packages based on your distribution: **Debian/Ubuntu:** - Bash - - ``` + ```bash sudo apt update sudo apt install -y libglib2.0-dev libgl1-mesa-glx - ``` **Other Systems:** Consult your distribution's documentation for installation instructions. -2. **`gobject-2.0` Not Found Error:** Resolve this error by installing `libglib2.0-dev` (Debian/Ubuntu): - - Bash +2. **`gobject-2.0` Not Found Error:** Resolve this error by installing `libglib2.0-dev` on Debian/Ubuntu: - ``` + ```bash sudo apt install -y libglib2.0-dev pkg-config - ``` For other systems, consult your distribution's documentation. diff --git a/docs/Script_Setup_Guide.md b/docs/Script_Setup_Guide.md index 1f2f2ac25..534ec148e 100644 --- a/docs/Script_Setup_Guide.md +++ b/docs/Script_Setup_Guide.md @@ -1,18 +1,18 @@ -## Setting Up using Script +# Setting Up using Script -### Video Setup Guide +## Video Setup Guide - [Windows](https://youtu.be/nNVAE4or280?si=j_y9Xn8Kra6tPHjw) - [Ubuntu (Debian)](https://www.youtube.com/watch?v=a7I0ZRE-SHk) -> Note that the Step No. 8 given below is not mentioned in the video, please follow that step also. +> Note: Step 8 below is not mentioned in the video; please follow it as well. -### Prerequisites +## Prerequisites - [NodeJS](https://nodejs.org/en) (LTS Version Recommended) - [Git](https://git-scm.com/downloads) version control system -### Steps Performed in the Video +## Steps Performed in the Video 1. Fork the PictoPy repository: @@ -36,19 +36,19 @@ git remote add upstream https://github.com/AOSSIE-Org/PictoPy ``` -6. Run the Automatic Setup +6. Run the Automatic Setup: ```bash npm run setup ``` - > The setup script installs the CPU-only `onnxruntime` package for local development. The release workflow swaps in platform-specific GPU providers, and the onboarding recommendation uses hardware detection (rather than ONNX Runtime provider detection). - + > The setup script installs the CPU-only `onnxruntime` package for local development. The release workflow swaps in platform-specific GPU providers, and the onboarding recommendation uses hardware detection rather than ONNX Runtime provider detection. + > > **Note:** This step can take a long time depending on your internet connection and system specifications. If the script seems to stop progressing after waiting for more than 10 minutes, press Enter in your terminal window to continue. -7. Start the Backend Server +7. Start the Backend Server: - #### Windows + ### Windows ```powershell cd .\backend @@ -56,7 +56,7 @@ fastapi dev --port 52123 ``` - #### Linux + ### Linux ```bash cd ./backend @@ -64,11 +64,11 @@ fastapi dev --port 52123 ``` -8. Start the Sync-Microservice +8. Start the Sync-Microservice: Open a new terminal window, navigate to the project directory, and run: - #### Windows + ### Windows (Sync-Microservice) ```powershell cd .\sync-microservice @@ -76,7 +76,7 @@ fastapi dev --port 52124 ``` - #### Linux + ### Linux (Sync-Microservice) ```bash cd ./sync-microservice @@ -84,7 +84,7 @@ fastapi dev --port 52124 ``` -9. Start the Frontend Desktop App +9. Start the Frontend Desktop App: Open a new terminal window, navigate to the project directory, and run: @@ -93,7 +93,7 @@ npm run tauri dev ``` -10. Pre-commit Setup +10. Pre-commit Setup: Before running the `git commit` command, ensure you have the following Python packages installed globally: diff --git a/docs/backend/backend_python/api.md b/docs/backend/backend_python/api.md index 96eff1d61..517945412 100644 --- a/docs/backend/backend_python/api.md +++ b/docs/backend/backend_python/api.md @@ -1,3 +1,5 @@ + +
diff --git a/docs/backend/backend_python/database.md b/docs/backend/backend_python/database.md index db13b3ad7..7c5fd36be 100644 --- a/docs/backend/backend_python/database.md +++ b/docs/backend/backend_python/database.md @@ -5,8 +5,11 @@ PictoPy uses several SQLite databases to manage various aspects of the application. This document provides an overview of each database, its structure, and its primary operations. ## Database Schema + +

PictoPy Banner

+ Alternatively, [click here to view the interactive DB schema diagram in a new tab](https://dbdiagram.io/d/PictoPy-685704c4f039ec6d364647e1). diff --git a/docs/backend/backend_rust/api.md b/docs/backend/backend_rust/api.md index d2d4b25fb..62fdda01f 100644 --- a/docs/backend/backend_rust/api.md +++ b/docs/backend/backend_rust/api.md @@ -1,8 +1,8 @@ -## API Documentation +# API Documentation The Rust backend provides the following command that can be invoked from the frontend: -### get_resources_folder_path +## get_resources_folder_path - **Description**: Retrieves the path to the server resources directory. - **Parameters**: _None_ diff --git a/docs/frontend/memories.md b/docs/frontend/memories.md index 1a3203f4c..471c24517 100644 --- a/docs/frontend/memories.md +++ b/docs/frontend/memories.md @@ -7,9 +7,11 @@ The Memories feature automatically organizes photos into meaningful collections ## Features ### 1. On This Day + Shows photos from the same date in previous years with a prominent featured card. **Display:** + - "On this day last year" for photos from exactly 1 year ago - "[X] years ago" for photos from multiple years ago - Featured hero image with gradient overlay @@ -18,7 +20,9 @@ Shows photos from the same date in previous years with a prominent featured card ### 2. Memory Types #### Location-Based Memories + Photos grouped by GPS coordinates using DBSCAN clustering: + - **Radius**: 5km (configurable) - **Title Format**: "Trip to [City Name], [Year]" - **Example**: "Trip to Jaipur, 2025" @@ -26,7 +30,9 @@ Photos grouped by GPS coordinates using DBSCAN clustering: - **Supported Cities**: 30+ major cities worldwide (Indian, European, American, Asian, etc.) #### Date-Based Memories + Photos grouped by month for images without GPS: + - **Grouping**: Monthly clusters - **Title Format**: "[Month] [Year]" - **Flexibility**: Works even without location data @@ -34,16 +40,19 @@ Photos grouped by month for images without GPS: ### 3. Memory Sections #### Recent Memories + - **Timeframe**: Last 30 days - **Use Case**: Recent trips and events - **API**: `GET /api/memories/timeline?days=30` #### This Year + - **Timeframe**: Last 365 days (current year) - **Use Case**: Year-in-review - **API**: `GET /api/memories/timeline?days=365` #### All Memories + - **Timeframe**: All time - **Use Case**: Complete memory collection - **API**: `POST /api/memories/generate` @@ -51,11 +60,13 @@ Photos grouped by month for images without GPS: ### 4. Filtering **Filter Options:** + - **All**: Shows all memories (default) - **Location**: Only memories with GPS coordinates - **Date**: Only memories without GPS (date-based) **Implementation:** + ```typescript const applyFilter = (memories: Memory[]) => { if (filter === 'location') { @@ -73,6 +84,7 @@ const applyFilter = (memories: Memory[]) => { Full-screen modal for viewing memory photos: **Features:** + - Image grid with hover effects - Click to open MediaView - Zoom and pan support @@ -82,6 +94,7 @@ Full-screen modal for viewing memory photos: - Thumbnail strip **Controls:** + - **Zoom**: Mouse wheel or +/- keys - **Navigation**: Arrow keys or buttons - **Slideshow**: Play/Pause button or Space key @@ -91,7 +104,9 @@ Full-screen modal for viewing memory photos: ## Components ### MemoriesPage + Main page component with sections: + - Header with refresh button - Filter buttons - On This Day section @@ -100,7 +115,9 @@ Main page component with sections: - All Memories grid ### MemoryCard + Individual memory card display: + - Thumbnail image - Memory title (formatted based on type) - Date range (relative format) @@ -109,14 +126,18 @@ Individual memory card display: - Type badge (Location/Date) ### FeaturedMemoryCard + Large featured card for "On This Day": + - Hero image with gradient overlay - "On this day last year" text - Photo count and year info - Additional image previews ### MemoryViewer + Modal for viewing memory album: + - Conditionally rendered to prevent event bubbling - Grid layout of all photos - MediaView integration for full-screen viewing @@ -145,6 +166,7 @@ Using Redux Toolkit with slices: ``` **Key Actions:** + - `fetchOnThisDay()` - Get photos from same date - `fetchRecentMemories(days)` - Get timeline memories - `fetchYearMemories(days)` - Get year memories @@ -154,9 +176,11 @@ Using Redux Toolkit with slices: ## API Endpoints ### GET `/api/memories/on-this-day` + Returns photos from the same date in previous years. **Response:** + ```json { "images": [...], @@ -166,12 +190,15 @@ Returns photos from the same date in previous years. ``` ### GET `/api/memories/timeline?days=30` + Returns timeline-based memories for specified days. **Parameters:** + - `days` (query): Number of days to look back **Response:** + ```json { "memories": [...] @@ -179,14 +206,17 @@ Returns timeline-based memories for specified days. ``` ### POST `/api/memories/generate` + Generates all memories with clustering. **Parameters (query):** + - `location_radius_km` (default: 5.0) - `date_tolerance_days` (default: 3) - `min_images` (default: 2) **Response:** + ```json { "memories": [...], @@ -203,6 +233,7 @@ Generates all memories with clustering. ### Memory Clustering Algorithm **Location-based (DBSCAN):** + 1. Extract GPS coordinates from images 2. Convert to radians for haversine distance 3. Apply DBSCAN clustering (5km radius) @@ -211,6 +242,7 @@ Generates all memories with clustering. 6. Generate title with city name and year **Date-based (Monthly grouping):** + 1. Filter images without GPS 2. Group by year-month 3. Create monthly memories @@ -231,6 +263,7 @@ def _reverse_geocode(self, lat: float, lon: float) -> str: ``` **Supported Cities:** + - India: Mumbai, Delhi, Bangalore, Hyderabad, Chennai, Kolkata, Pune, Ahmedabad, Jaipur, Lucknow, Kanpur, Nagpur, Visakhapatnam, Bhopal, Patna, Vadodara - Europe: London, Paris, Berlin, Madrid, Rome, Amsterdam, Prague, Vienna, Barcelona, Budapest, Lisbon - Americas: New York, Los Angeles, Toronto, San Francisco, Chicago, Vancouver @@ -239,9 +272,11 @@ def _reverse_geocode(self, lat: float, lon: float) -> str: ## Bug Fixes & Improvements ### Event Bubbling Fix + **Problem:** Clicking MediaView controls (slideshow, info) closed the entire viewer. **Solution:** Conditional rendering of MemoryViewer backdrop: + ```tsx {!showMediaView && (
@@ -251,9 +286,11 @@ def _reverse_geocode(self, lat: float, lon: float) -> str: ``` ### Image Upload Fix + **Problem:** Images without GPS couldn't be inserted into database. **Solution:** Always include latitude/longitude fields (set to `None` if not available): + ```python image_record = { "latitude": latitude, # Can be None @@ -263,9 +300,11 @@ image_record = { ``` ### Title Display Enhancement + **Problem:** Generic "Location - Nov 2025" titles. **Solution:** Format as "Trip to [City], [Year]" using reverse geocoding: + ```typescript const year = memory.date_start ? new Date(memory.date_start).getFullYear() : ''; displayTitle = `Trip to ${displayLocation}${year ? `, ${year}` : ''}`; @@ -274,17 +313,23 @@ displayTitle = `Trip to ${displayLocation}${year ? `, ${year}` : ''}`; ## Testing ### Backend Tests + Located in `backend/tests/`: + - 100 unit tests covering all routes - Run with: `pytest tests/` ### Frontend Tests + Located in `frontend/src/pages/__tests__/`: + - Page rendering tests - Run with: `npm test` ### Manual Testing + Use `backend/test_memories_api.py` for API endpoint testing: + ```bash python test_memories_api.py ``` diff --git a/docs/frontend/screenshots.md b/docs/frontend/screenshots.md index d4cf97d15..be55f4f88 100644 --- a/docs/frontend/screenshots.md +++ b/docs/frontend/screenshots.md @@ -22,6 +22,3 @@ The settings panel allows users to configure directories, preferences, and appli ![Settings](../assets/screenshots/settings.png) *Settings panel showing directory configuration and user preferences* - - - diff --git a/docs/index.md b/docs/index.md index bbe06e715..1a1f9ae3f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,4 @@ + # PictoPy PictoPy is a modern desktop app designed to transform the handling of digital photos. It facilitates efficient gallery management with a robust focus on privacy, offering smart tagging capabilities for photos based on objects, faces, or scenes. diff --git a/docs/overview/architecture.md b/docs/overview/architecture.md index 7b2722532..89559508e 100644 --- a/docs/overview/architecture.md +++ b/docs/overview/architecture.md @@ -14,8 +14,9 @@ This combination allows us to leverage web technologies for the UI while benefit ## Backend Python +
- Backend Architecture + Backend Architecture

diff --git a/docs/overview/features.md b/docs/overview/features.md index 4643de9e1..cda0cee94 100644 --- a/docs/overview/features.md +++ b/docs/overview/features.md @@ -1,6 +1,6 @@ # PictoPy Features -### Gallery Application +## Gallery Application - **Intelligent Photo Tagging**: Automatically tags photos based on detected objects, faces, and facial recognition. - **Traditional Gallery Management**: Complete album organization and management tools. @@ -38,11 +38,13 @@ Automatically creates meaningful photo collections inspired by Google Photos: #### **On This Day** + - Shows photos from the same date in previous years - Featured card display with "On this day last year" messaging - Nostalgic look back at past moments #### **Smart Grouping** + - **Location-based Memories**: Groups photos taken at the same location (5km radius using DBSCAN clustering) - Displays as "Trip to [City Name], [Year]" (e.g., "Trip to Jaipur, 2025") - Uses reverse geocoding to show actual city names @@ -52,16 +54,19 @@ Automatically creates meaningful photo collections inspired by Google Photos: - Organized chronologically #### **Intelligent Filtering** + - Filter by All, Location, or Date memories - View counts for each category - Seamless navigation between memory types #### **Memory Sections** + - **Recent Memories**: Last 30 days of captured moments - **This Year**: All memories from the current year - **All Memories**: Complete collection organized by recency #### **Rich Viewing Experience** + - Full-screen image viewer with zoom support - Slideshow mode for automatic playback - Image metadata panel with EXIF data @@ -70,6 +75,7 @@ Automatically creates meaningful photo collections inspired by Google Photos: - Favorite marking and folder opening #### **Technical Implementation** + - Backend: Python with DBSCAN clustering algorithm - Frontend: React + Redux Toolkit for state management - Real-time memory generation with configurable parameters diff --git a/sync-microservice/README.md b/sync-microservice/README.md index 550a07425..366df1348 100644 --- a/sync-microservice/README.md +++ b/sync-microservice/README.md @@ -40,6 +40,7 @@ A file system synchronization microservice for PictoPy that monitors folder chan ``` 4. **Start the service:** + ```bash fastapi dev --port 52124 ``` @@ -79,7 +80,7 @@ A file system synchronization microservice for PictoPy that monitors folder chan ## Architecture -``` +```text sync-microservice/ ├── app/ │ ├── config/ diff --git a/sync-microservice/dist/README.md b/sync-microservice/dist/README.md index 5e72c294e..412709314 100644 --- a/sync-microservice/dist/README.md +++ b/sync-microservice/dist/README.md @@ -1,3 +1,3 @@ -## Do not delete the "dist" folder. +# Do not delete the "dist" folder This folder is essential for the development environment to start.