{"id":15152920,"url":"https://github.com/nedu-m/ipfs-uploader","last_synced_at":"2026-01-19T23:02:12.274Z","repository":{"id":247492223,"uuid":"825926919","full_name":"nedu-m/ipfs-uploader","owner":"nedu-m","description":"Upload your files to IPFS and retrieve them in their original formats.","archived":false,"fork":false,"pushed_at":"2024-08-11T21:16:53.000Z","size":979,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T11:37:30.963Z","etag":null,"topics":["ipfs","ipfs-blockchain"],"latest_commit_sha":null,"homepage":"https://interplanetry-file-uploader.vercel.app","language":"JavaScript","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/nedu-m.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}},"created_at":"2024-07-08T19:15:16.000Z","updated_at":"2024-08-11T21:16:57.000Z","dependencies_parsed_at":"2024-07-09T03:34:16.947Z","dependency_job_id":"238ef63b-7a46-41b2-9c1d-538abea6c423","html_url":"https://github.com/nedu-m/ipfs-uploader","commit_stats":null,"previous_names":["nedu-m/ipfs-uploader"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nedu-m/ipfs-uploader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedu-m%2Fipfs-uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedu-m%2Fipfs-uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedu-m%2Fipfs-uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedu-m%2Fipfs-uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nedu-m","download_url":"https://codeload.github.com/nedu-m/ipfs-uploader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nedu-m%2Fipfs-uploader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28588968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ipfs","ipfs-blockchain"],"created_at":"2024-09-26T16:41:46.379Z","updated_at":"2026-01-19T23:02:12.250Z","avatar_url":"https://github.com/nedu-m.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n\n# IPFS Uploader with Future Blockchain Integration\n[![CI/CD Pipeline](https://github.com/nedu-m/ipfs-uploader/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/nedu-m/ipfs-uploader/actions/workflows/ci-cd.yml)\n\n## Overview\n\nThe IPFS Uploader is a decentralized application (dApp) that allows users to upload files to the InterPlanetary File System (IPFS) and retrieve them using their unique Content Identifier (CID). This project is built using Next.js and Helia, providing a robust interface for file management on the IPFS network. Future updates will integrate blockchain technology to record file metadata on a smart contract, enhancing the security and traceability of the uploaded files.\n\n## Features\n\n- Upload files to IPFS\n- Retrieve files from IPFS using CID\n- Future integration with blockchain to store file metadata\n\n## Technologies Used\n\n- **Next.js**: React framework for server-side rendering and static site generation.\n- **Helia**: Library for interacting with IPFS.\n- **Libp2p**: Modular network stack for peer-to-peer applications.\n- **Bootstrap**: Peer discovery service for libp2p.\n- **Docker**: Containerization for consistent environment setup.\n- **CI/CD**: Continuous Integration and Continuous Deployment using GitHub Actions.\n- **AWS ECR**: Container registry to store Docker images.\n- **AWS ECS**: Container orchestration service for running and scaling containerized applications.\n- **Application Load Balancer (ALB)**: Distributes incoming application traffic across multiple targets for increased availability.\n\n## Project Structure\n\n```\n.\n├── public\n├── app\n│   ├── components\n│   └── pages\n├── .github\n│   ├── workflows\n│   │   └── ci.yml\n├── Dockerfile\n├── next.config.js\n├── package.json\n└── README.md\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js (version 20 or above)\n- Docker (optional, for containerization)\n- GitHub account (for CI/CD)\n\n### Installation\n\n1. **Clone the repository:**\n\n```bash\ngit clone https://github.com/nedu-m/ipfs-uploader\ncd ipfs-uploader\n```\n\n2. **Install dependencies:**\n\n```bash\nnpm install\n```\n\n3. **Run the development server:**\n\n```bash\nnpm run dev\n```\n\n4. **Build the project:**\n\n```bash\nnpm run build\n```\n\n5. **Start the production server:**\n\n```bash\nnpm start\n```\n\n### Docker Setup\n\n1. **Build the Docker image:**\n\n```bash\ndocker build -t ipfs-uploader .\n```\n\n2. **Run the Docker container:**\n\n```bash\ndocker run -p 3000:3000 ipfs-uploader\n```\n\n### Deploying to AWS ECS\n\n1. **Create an ECR Repository:**\n\n```bash\naws ecr create-repository --repository-name ipfs_uploader --region eu-north-1\n```\n\n2. **Tag and Push Docker Image to ECR:**\n\n```bash\ndocker tag ipfs_uploader:latest \u003caws_account_id\u003e.dkr.ecr.eu-north-1.amazonaws.com/ipfs_uploader:latest\ndocker push \u003caws_account_id\u003e.dkr.ecr.eu-north-1.amazonaws.com/ipfs_uploader:latest\n```\n\n3. **Create ECS Cluster:**\n\n```bash\naws ecs create-cluster --cluster-name ipfs-uploader-cluster --region eu-north-1\n```\n\n4. **Create Task Definition JSON File:**\n\n```json\n{\n  \"family\": \"ipfs-uploader-task\",\n  \"networkMode\": \"awsvpc\",\n  \"executionRoleArn\": \"arn:aws:iam::\u003caws_account_id\u003e:role/ecsTaskExecutionRole\",\n  \"taskRoleArn\": \"arn:aws:iam::\u003caws_account_id\u003e:role/ecsTaskExecutionRole\",\n  \"containerDefinitions\": [\n    {\n      \"name\": \"ipfs_uploader\",\n      \"image\": \"\u003caws_account_id\u003e.dkr.ecr.eu-north-1.amazonaws.com/ipfs_uploader:latest\",\n      \"cpu\": 512,\n      \"memory\": 1024,\n      \"essential\": true,\n      \"portMappings\": [\n        {\n          \"containerPort\": 80,\n          \"hostPort\": 80,\n          \"protocol\": \"tcp\"\n        }\n      ],\n      \"logConfiguration\": {\n        \"logDriver\": \"awslogs\",\n        \"options\": {\n          \"awslogs-group\": \"/ecs/ipfs-uploader-task\",\n          \"awslogs-region\": \"eu-north-1\",\n          \"awslogs-stream-prefix\": \"ecs\"\n        }\n      }\n    }\n  ],\n  \"requiresCompatibilities\": [\"FARGATE\"],\n  \"cpu\": \"1024\",\n  \"memory\": \"2048\"\n}\n\n```\n\n5. **Register Task Definition:**\n\n```bash\naws ecs register-task-definition --cli-input-json file://task-definition.json\n```\n\n6. **Create Security Group and Allow Inbound Traffic:**\n\n```bash\naws ec2 create-security-group --group-name ipfs-uploader-sg --description \"Security group for IPFS uploader\" --vpc-id \u003cvpc-id\u003e --region eu-north-1\naws ec2 authorize-security-group-ingress --group-id \u003csecurity-group-id\u003e --protocol tcp --port 80 --cidr 0.0.0.0/0 --region eu-north-1\n```\n\n6. **Create ECS Service:**\n\n```bash\naws ecs create-service --cluster ipfs-uploader-cluster --service-name ipfs-uploader-service --task-definition ipfs-uploader-task --desired-count 1 --launch-type FARGATE --network-configuration \"awsvpcConfiguration={subnets=[\u003csubnet-1\u003e,\u003csubnet-2\u003e,\u003csubnet-3\u003e],securityGroups=[\u003csecurity-group-id\u003e],assignPublicIp=ENABLED}\" --region eu-north-1\n```\n\n### Deploying to Vercel\n\n1. **Install Vercel CLI:**\n\n```bash\nnpm install -g vercel\n```\n\n2. **Deploy the project:**\n\n```bash\nvercel\n```\n\nFollow the prompts to link your project to your Vercel account and deploy.\n\n## Usage\n\n### Uploading a File\n\n1. **Select a file:**\n   Click on the file input to select a file from your local system.\n\n2. **Upload the file:**\n   Click on the \"Add to IPFS\" button to upload the selected file to IPFS.\n\n3. **View the CID:**\n   After uploading, the Content Identifier (CID) of the file will be displayed.\n\n### Retrieving a File\n\n1. **Click the \"Retrieve from IPFS\" button:**\n   This will retrieve the file using the displayed CID.\n\n2. **Download the file:**\n   A download link for the retrieved file will be generated.\n\n## Future Integration with Blockchain\n\nThe future version of this project will include:\n\n1. **Smart Contracts:**\n   - Deploying smart contracts to record file metadata on a blockchain network.\n\n2. **Blockchain Interactions:**\n   - Using web3.js or ethers.js to interact with the blockchain.\n\n3. **Environment Variables:**\n   - Securely managing blockchain-related keys using Vercel’s environment variables.\n\n## Contributing\n\nContributions are welcome! Please fork this repository and submit a pull request for any features, bug fixes, or enhancements.\n\n1. **Fork the repository**\n2. **Create a new branch (`git checkout -b feature-branch`)**\n3. **Commit your changes (`git commit -m 'Add new feature'`)**\n4. **Push to the branch (`git push origin feature-branch`)**\n5. **Open a Pull Request**\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnedu-m%2Fipfs-uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnedu-m%2Fipfs-uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnedu-m%2Fipfs-uploader/lists"}