{"id":28386112,"url":"https://github.com/blacksky-algorithms/safeskies","last_synced_at":"2025-06-26T13:31:56.500Z","repository":{"id":282592118,"uuid":"893656158","full_name":"blacksky-algorithms/SAFEskies","owner":"blacksky-algorithms","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-20T00:04:03.000Z","size":2964,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-22T22:12:21.938Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://safeskies.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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":"LICENSE","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":"2024-11-25T01:00:00.000Z","updated_at":"2025-04-16T23:58:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"f64f8e46-d1b1-4d21-85aa-a04071c27d5f","html_url":"https://github.com/blacksky-algorithms/SAFEskies","commit_stats":null,"previous_names":["freedomwriter/safeskies"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/blacksky-algorithms/SAFEskies","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2FSAFEskies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2FSAFEskies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2FSAFEskies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2FSAFEskies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blacksky-algorithms","download_url":"https://codeload.github.com/blacksky-algorithms/SAFEskies/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacksky-algorithms%2FSAFEskies/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262076688,"owners_count":23255047,"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","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":[],"created_at":"2025-05-30T13:10:08.999Z","updated_at":"2025-06-26T13:31:56.487Z","avatar_url":"https://github.com/blacksky-algorithms.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAFEskies Front‑End :shield:\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Stability: Alpha](https://img.shields.io/badge/Stability-Alpha-orange.svg)]()\n\nSAFEskies (Software Against a Fearful Environment) is a BlueSky feed management interface that enables secure moderation of custom feeds. Currently configured for the **Blacksky** feed generator with extensibility for other feeds.\n\n**Requires** the [SAFEskies API](https://github.com/FreedomWriter/safe-skies-api) for backend operations.\n\n**Live Application**: [www.safeskies.app](https://www.safeskies.app)\n\n![SAFEskies Dashboard](https://api.netlify.com/api/v1/sites/372ac785-e388-44bd-b474-db998f785949/screenshots/latest)\n\n---\n\n## Table of Contents\n\n- [SAFEskies Front‑End :shield:](#safeskies-frontend-shield)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n    - [Core Functionality](#core-functionality)\n    - [Technical Highlights](#technical-highlights)\n  - [⚠️ Stability Warning](#️-stability-warning)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n    - [1. Clone Repository](#1-clone-repository)\n    - [2. Install Dependencies](#2-install-dependencies)\n  - [Configuration](#configuration)\n    - [Create .env.local:](#create-envlocal)\n  - [Running the Application](#running-the-application)\n    - [Development](#development)\n    - [Production Build](#production-build)\n    - [Testing](#testing)\n  - [Usage](#usage)\n    - [Authentication](#authentication)\n    - [Core Functions](#core-functions)\n    - [Admin vs. Moderator Capabilities](#admin-vs-moderator-capabilities)\n  - [API Dependency](#api-dependency)\n  - [Security](#security)\n    - [Critical Requirements](#critical-requirements)\n    - [Secure Practices](#secure-practices)\n  - [Contributing](#contributing)\n    - [Current Contribution Priorities](#current-contribution-priorities)\n    - [Contribution Process](#contribution-process)\n  - [License](#license)\n  - [Maintainer](#maintainer)\n\n---\n\n## Features\n\n### Core Functionality\n\n- **DID-Based Authentication**: Secure login via BlueSky OAuth\n- **Role-Based Access Control**:\n  - **Admins**: Feed creators (DID-matched) with full permissions\n  - **Moderators**: Users with post removal privileges\n- **Feed Management**:\n  - View managed feeds\n  - Promote/demote moderators\n  - Audit logs for all actions\n\n### Technical Highlights\n\n- Next.js 13 App Router architecture\n- TypeScript type safety\n- Tailwind CSS styling\n- Jest testing suite\n- Husky pre-commit hooks\n\n---\n\n## ⚠️ Stability Warning\n\n**IMPORTANT**: SAFEskies is currently in an alpha state of development. The application is functional but subject to significant changes as we work toward a stable release.\n\nYou should be aware of the following:\n\n- The API and frontend interfaces may change without backward compatibility\n- Data structures and storage mechanisms could be modified between versions\n- Documentation is still evolving along with the application\n- Deployment procedures might change as we stabilize the architecture\n\nWe encourage testing and feedback but recommend caution when using SAFEskies in production environments at this stage.\n\n---\n\n## Prerequisites\n\n- **Node.js** v18+\n- **npm** v9+ or **yarn** 1.22+\n- **Backend API**: Running instance of [SAFEskies API](https://github.com/FreedomWriter/safe-skies-api)\n- **BlueSky Account**: For authentication via OAuth\n\n---\n\n## Installation\n\n### 1. Clone Repository\n\n```bash\ngit clone https://github.com/FreedomWriter/SAFEskies.git\ncd SAFEskies\n```\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n# or\nyarn install\n```\n\n## Configuration\n\n### Create .env.local:\n\n```env\nNEXT_PUBLIC_BSKY_BASE_API_URL=https://api.bsky.app\nNEXT_PUBLIC_BSKY_BASE=https://bsky.social\nNEXT_PUBLIC_SAFE_SKIES_API=http://localhost:4000\nNEXT_PUBLIC_CLIENT_URL=http://localhost:3000\n```\n\n## Running the Application\n\n### Development\n\n```bash\nnpm run dev\n# Access at http://localhost:3000\n```\n\n### Production Build\n\n```bash\nnpm run build \u0026\u0026 npm start\n```\n\n### Testing\n\n```bash\nnpm test\n```\n\n## Usage\n\nSAFEskies provides a user-friendly interface for managing and moderating BlueSky feeds. Here's how to get started:\n\n### Authentication\n\n1. Navigate to the application at [www.safeskies.app](https://www.safeskies.app)\n2. Click \"Sign in with BlueSky\" to authenticate using your BlueSky account\n3. Grant the requested permissions to allow SAFEskies to access your feed data\n\n### Core Functions\n\n- **View Feeds**: See all feeds you have permission to moderate\n- **Moderation**: Remove posts that violate feed guidelines\n- **User Management**: Admins can promote users to moderator status or remove their privileges\n- **Audit Logs**: Review all moderation actions taken on your feeds\n\n### Admin vs. Moderator Capabilities\n\n- **Admins** (feed creators) can:\n\n  - Manage moderator permissions\n  - View complete audit logs\n  - Access all moderation functions\n  - Configure feed settings\n\n- **Moderators** can:\n  - Remove inappropriate posts\n  - View their own moderation history\n  - Access posts from managed feeds\n\nFor detailed usage instructions, please reference the [SAFEskies Documentation](https://github.com/FreedomWriter/SAFEskies/wiki) (coming soon).\n\n## API Dependency\n\nThe frontend requires a running instance of the SAFEskies API for:\n\n- OAuth authentication with BlueSky\n- DID validation\n- Role management\n- Audit logging\n- Feed configuration\n\n## Security\n\n### Critical Requirements\n\n- Never expose Bluesky app passwords in client code\n- Use HTTPS in production\n- Rotate credentials quarterly\n- Validate DIDs on both client and API\n\n### Secure Practices\n\n```bash\n# Audit dependencies\nnpm audit\n\n# Update packages\nnpm update --audit\n```\n\n## Contributing\n\nSAFEskies welcomes community contributions, but please note our current development phase focuses on establishing stability before implementing major new features.\n\n### Current Contribution Priorities\n\n- Bug fixes and stability improvements\n- Documentation improvements\n- Accessibility enhancements\n- Test coverage expansion\n\n### Contribution Process\n\n1. **Check Existing Issues**: Review open issues to see if your concern is already being addressed.\n\n2. **Open an Issue First**: Before submitting code changes, please open an issue to discuss your proposed changes.\n\n   - For bugs, include reproduction steps and expected behavior\n   - For features, explain the use case and implementation approach\n\n3. **Development Workflow**:\n\n   ```bash\n   # Fork and clone the repository\n   git clone https://github.com/your-username/SAFEskies.git\n   cd SAFEskies\n\n   # Create a descriptive feature branch\n   git checkout -b fix/issue-description\n\n   # Install dependencies\n   npm install\n\n   # Make your changes with tests\n   # Run tests to ensure no regressions\n   npm test\n   ```\n\n4. **Code Standards**:\n\n   - Follow existing code style patterns\n   - Include comments for complex logic\n   - Add tests for new functionality\n   - Update documentation to reflect changes\n\n5. **Pull Request Process**:\n   - Ensure all tests pass\n   - Reference the related issue in your PR\n   - Provide a clear description of changes\n   - Be responsive to review feedback\n\nThe maintainer will review PRs on a regular basis, prioritizing stability-focused contributions during this alpha development phase.\n\n## License\n\nMIT License - See LICENSE for details.\n\n## Maintainer\n\nMaintainer: Natalie Davis ([@codefreedomritr.bsky.social](https://bsky.app/profile/codefreedomritr.bsky.social))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksky-algorithms%2Fsafeskies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblacksky-algorithms%2Fsafeskies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacksky-algorithms%2Fsafeskies/lists"}