{"id":15142597,"url":"https://github.com/adistrim/safexchange","last_synced_at":"2026-02-26T06:13:24.197Z","repository":{"id":257003994,"uuid":"857050272","full_name":"adistrim/SafeXchange","owner":"adistrim","description":"Status update: The backend is being rewritten in Rust ⚙️ -- rust/server-v2","archived":false,"fork":false,"pushed_at":"2025-03-09T05:47:43.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T04:12:39.557Z","etag":null,"topics":["aws-s3","docker","fastapi","javascript","mongodb","nextjs","python","rust"],"latest_commit_sha":null,"homepage":"https://safexchange.adistrim.in","language":"JavaScript","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/adistrim.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}},"created_at":"2024-09-13T17:47:13.000Z","updated_at":"2025-03-09T05:31:52.000Z","dependencies_parsed_at":"2024-09-14T09:15:46.046Z","dependency_job_id":"d0678490-e5af-4772-80ae-20eb4d36fa46","html_url":"https://github.com/adistrim/SafeXchange","commit_stats":{"total_commits":21,"total_committers":2,"mean_commits":10.5,"dds":0.04761904761904767,"last_synced_commit":"9469724a272aa87a34411379b51710935f7aaa1c"},"previous_names":["adistrim/safexchange"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adistrim%2FSafeXchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adistrim%2FSafeXchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adistrim%2FSafeXchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adistrim%2FSafeXchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adistrim","download_url":"https://codeload.github.com/adistrim/SafeXchange/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249184686,"owners_count":21226436,"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":["aws-s3","docker","fastapi","javascript","mongodb","nextjs","python","rust"],"created_at":"2024-09-26T09:43:01.362Z","updated_at":"2026-02-26T06:13:24.141Z","avatar_url":"https://github.com/adistrim.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SafeXchange - Secure File Sharing System\n\nSafeXchange is a secure file-sharing platform designed to facilitate the uploading and downloading of files through encrypted URLs. It provides a seamless experience for both Ops Users and Client Users, ensuring that sensitive data is shared securely and efficiently.\n\n## Features\n\n### Ops User\n- **Login**: Ops Users can log in using their credentials.\n- **Upload File**: Only Ops Users can upload files of the following types: `.pptx`, `.docx`, `.xlsx`.\n- **Download File**: Ops Users can download files using encrypted URLs.\n- **Delete File**: Ops Users can delete uploaded files from the system.\n\n### Client User\n- **Sign Up**: Client Users can create an account.\n- **Email Verification**: A verification email is sent to the registered address upon sign-up.\n- **Verification**: Clients must use the link in the email to verify their account.\n- **Login**: Client Users can log in with their credentials.\n- **Dashboard Access**: Clients can access the list of files only after verifying their email.\n- **Download File**: Client Users can download files using secure, encrypted URLs.\n- **List Files**: Client Users can view all uploaded files.\n\n## Tech Stack\n- **Backend Framework**: FastAPI (Python)\n- **Frontend Framework**: Next.js (JavaScript with App Router)\n- **Database**: MongoDB (NoSQL)\n- **File Storage**: AWS S3\n- **CDN**: AWS CloudFront\n- **Styling**: Tailwind CSS \u0026 Shadcn\n- **Deployment**:\n  - Backend: Self-hosted OVH server using Docker and Portainer for automation *\u003cspan style=\"color:orange\"\u003e(Currently not available)\u003c/span\u003e*\n  - Frontend: Vercel\n  - DNS Management: Cloudflare\n\n## Installation\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/adistrim/SafeXchange\n   ```\n2. Navigate to the project-server directory:\n   ```bash\n   cd SafeXchange/server\n   ```\n3. Setup virtual env and install dependencies for the backend:\n   ```bash\n   python3 -m venv .venv                # python3 or python depending on your system\n   source .venv/bin/activate            # For macOS/Linux\n   pip3 install -r requirements.txt     # pip3 or pip depending on your system\n   ```\n4. Install dependencies for the frontend:\n   ```bash\n   cd ../client\n   npm install\n   ```\n\n## Setup Environment Variables\n1. Create a `.env` file in the `server` directory:\n   ```bash\n   touch .env\n   ```\n2. Add the following environment variables to the `.env` file:\n   ```bash\n   MONGODB_URI=mongo_uri\n   SECRET_KEY=secret_key\n   EMAIL_FROM=email_address\n   EMAIL_PASS=email_password\n   SMTP_HOST=smtp_host\n   EMAIL_SECURE=true\n   EMAIL_PORT=email_port\n   DOMAIN=domain\n   ORIGIN_URL=origin_url\n   AWS_ACCESS_KEY_ID=aws_access_key_id\n   AWS_SECRET_ACCESS_KEY=aws_secret_access_key\n   AWS_REGION=aws_region\n   S3_BUCKET_NAME=s3_bucket_name\n   CLOUDFRONT_DOMAIN=cloudfront_domain\n   ```\n   *Replace the placeholders with your actual values*\n\n3. Create a `.env` file in the `client` directory:\n   ```bash\n   touch .env\n   ```\n\n4. Add the following environment variables to the `.env` file:\n   ```bash\n   NEXT_PUBLIC_API_URL=api_url\n   ```\n   *Replace the placeholder with your actual value*\n\n## Usage\n1. Start the backend server:\n   ```bash\n   cd server\n   uvicorn app.main:app --reload\n   ```\n2. Start the frontend development server:\n   ```bash\n   cd client\n   npm run dev\n   ```\n\n## Docker\n1. Build the Docker image for the backend:\n   ```bash\n   cd server\n   docker build -t safexchange-server -f Docker/Dockerfile .\n   ```\n2. Run the Docker container:\n   ```bash\n   docker run --env-file .env -p 8000:8000 safexchange-server\n   ```\n\n## Known Issues\n- Currently, there are no known significant issues. Please report any bugs or feature requests in the issue tracker.\n\n## Getting Help\nFor questions or support mail me at [adistrim.dev@gmail.com](mailto:adistrim.dev@gmail.com), please file an issue in this repository's Issue Tracker.\n\n## License\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadistrim%2Fsafexchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadistrim%2Fsafexchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadistrim%2Fsafexchange/lists"}