{"id":30451834,"url":"https://github.com/blacksky-algorithms/tektite-cc-migration-service","last_synced_at":"2025-08-23T14:17:27.571Z","repository":{"id":309644314,"uuid":"1033422434","full_name":"blacksky-algorithms/tektite-cc-migration-service","owner":"blacksky-algorithms","description":"client side website for migrating accounts from one PDS to another","archived":false,"fork":false,"pushed_at":"2025-08-13T02:10:41.000Z","size":213,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-13T03:28:14.787Z","etag":null,"topics":["atproto","dioxus","pds"],"latest_commit_sha":null,"homepage":"https://tektite.cc","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blacksky-algorithms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-06T19:42:16.000Z","updated_at":"2025-08-13T02:58:07.000Z","dependencies_parsed_at":"2025-08-13T03:29:01.433Z","dependency_job_id":"7a52e217-d9ab-455e-b666-893bac1c148e","html_url":"https://github.com/blacksky-algorithms/tektite-cc-migration-service","commit_stats":null,"previous_names":["blacksky-algorithms/tektite-cc-migration-service"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/blacksky-algorithms/tektite-cc-migration-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2Ftektite-cc-migration-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2Ftektite-cc-migration-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2Ftektite-cc-migration-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2Ftektite-cc-migration-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blacksky-algorithms","download_url":"https://codeload.github.com/blacksky-algorithms/tektite-cc-migration-service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2Ftektite-cc-migration-service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271751928,"owners_count":24814707,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atproto","dioxus","pds"],"created_at":"2025-08-23T14:17:25.841Z","updated_at":"2025-08-23T14:17:27.565Z","avatar_url":"https://github.com/blacksky-algorithms.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ATProto PDS Migration Service\n\nA client-side migration tool for the AT Protocol ecosystem, allowing users to transfer their accounts between different Personal Data Servers (PDS) while preserving all data and identity information.\n\n![Migration Service UI](https://tektite.cc)\n\n## Overview\n\nThis migration service provides a fully client-side solution for transferring AT Protocol accounts (like Bluesky accounts) between different providers. It handles all aspects of the migration process:\n\n- Repository migration (posts, follows, etc.)\n- Blob migration (images and other attachments)\n- User preferences migration\n- PLC identity operations\n- Account activation/deactivation\n\n## Features\n\n- **Fully Client-Side**: No server component needed - all operations happen directly in the browser\n- **Resumable Migrations**: Can resume interrupted migrations from various checkpoints\n- **Cross-PDS Support**: Migrate between any compliant AT Protocol servers\n- **DNS-over-HTTPS**: Uses secure DNS-over-HTTPS for handle resolution\n- **Progress Tracking**: Detailed progress monitoring for long-running migrations\n- **Secure Credential Handling**: Proper handling of authentication tokens\n- **Custom Domain Support**: Handles FQDN migration with instructions for DNS updates\n\n## Architecture\n\nThe application is built with a modern Rust + WebAssembly stack:\n\n- **UI Layer**: Dioxus (Rust-based React-like framework)\n- **State Management**: Signal-based state with action dispatching\n- **Storage**: Multiple storage backends (LocalStorage, OPFS) with fallback strategy\n- **Networking**: Direct PDS API calls with client-side HTTP\n\n## Getting Started\n\n### Prerequisites\n\n- Rust toolchain (1.70+ recommended)\n- Dioxus CLI\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/username/atproto-migration-service.git\n   cd atproto-migration-service\n   ```\n\n2. Install the Dioxus CLI:\n   ```bash\n   cargo install dioxus-cli\n   ```\n\n3. Build and run:\n   ```bash\n   dx serve\n   ```\n\n4. Access the application at `http://localhost:8080`\n\n## Usage\n\nThe migration process consists of four main steps:\n\n1. **Login to Current PDS**: Authenticate with your current server\n2. **Select New PDS**: Choose the destination server (defaults to BlackSky)\n3. **Migration Details**: Configure your new account settings\n4. **PLC Verification**: Complete the identity transfer with email verification\n\n### Step-by-Step Guide\n\n1. Enter your existing handle or DID and password\n2. Select \"Migrate to BlackSky\" or enter a custom PDS URL\n3. Configure your new handle, password, and email\n4. Start the migration and wait for data transfer\n5. Check your email for the PLC verification code\n6. Enter the code to complete the migration\n\n## Development\n\n### Project Structure\n\n```\n.\n├── Cargo.toml          # Workspace configuration\n├── ui/                 # Shared UI components\n│   ├── src/\n│   │   ├── app/        # Main application components\n│   │   ├── components/ # Reusable UI components\n│   │   ├── features/   # Feature modules (migration, etc.)\n│   │   ├── services/   # Client-side services (DNS, PDS, etc.)\n│   │   └── utils/      # Utility functions\n├── web/                # Web application entry point\n```\n\n### Building for Production\n\n```bash\ndx build --release\n```\n\nProduction files will be output to the `dist` directory.\n\n## Contributions\n\n\u003e We ❤️ thoughtful contributions! Help us keep the diff small and the community safe.\n\n**Rules**\n\n- We may decline or delay PRs that are too large to maintain.\n- We reserve the right to lock heated threads to protect contributors’ time.\n\n**Guidelines**\n\n1. **Open an issue first** – give the community time to discuss scope \u0026 maintenance.\n2. **Prefer small patches** – anything that touches lots of upstream code is hard to carry.\n3. **Put opinionated changes behind toggles**.\n4. Avoid PRs that…\n  - Rename common terms (e.g., “Post” → “Skeet”)\n  - Add entirely new features with no prior discussion\n\nIf your idea isn’t a fit, feel free to **fork** – that’s the beauty of open source!\n\n---\n\n## Forking Guidelines\n\n- Re-brand clearly so users don’t confuse your fork with blacksky.community.\n- Point analytics / error reporting to **your** endpoints.\n- Update support links (feedback, email, terms, etc.) to your own.\n\n---\n\n## Security Disclosures\n\nFound a vulnerability?  \nEmail **rudy@blacksky.app** – we will respond\npromptly.\n\n---\n\n## License\n\n**MIT** – see [./LICENSE](./LICENSE).\n\n---\n\n## P.S.\n\nBlacksky exists because of contributors like *you*.  \nThank you for helping us build safer, community-owned social media!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksky-algorithms%2Ftektite-cc-migration-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblacksky-algorithms%2Ftektite-cc-migration-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksky-algorithms%2Ftektite-cc-migration-service/lists"}