{"id":24841448,"url":"https://github.com/mohyware/personal-storage-service","last_synced_at":"2026-05-06T02:39:52.564Z","repository":{"id":260479724,"uuid":"880829769","full_name":"mohyware/Personal-Storage-Service","owner":"mohyware","description":"Personal storage service with Node.js, React and Prisma ORM.","archived":false,"fork":false,"pushed_at":"2024-11-08T13:53:29.000Z","size":731,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T09:32:00.795Z","etag":null,"topics":["google-drive","nodejs","postgresql","prisma","reactjs","vercel-deployment"],"latest_commit_sha":null,"homepage":"https://personal-storage-service.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/mohyware.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-10-30T12:47:06.000Z","updated_at":"2025-01-19T23:55:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"63f2829d-a8fc-4ab1-9369-8e689b1f7b9e","html_url":"https://github.com/mohyware/Personal-Storage-Service","commit_stats":null,"previous_names":["mohyware/personal-storage-service"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mohyware/Personal-Storage-Service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohyware%2FPersonal-Storage-Service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohyware%2FPersonal-Storage-Service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohyware%2FPersonal-Storage-Service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohyware%2FPersonal-Storage-Service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mohyware","download_url":"https://codeload.github.com/mohyware/Personal-Storage-Service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohyware%2FPersonal-Storage-Service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278689718,"owners_count":26028922,"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-10-06T02:00:05.630Z","response_time":65,"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":["google-drive","nodejs","postgresql","prisma","reactjs","vercel-deployment"],"created_at":"2025-01-31T07:17:50.686Z","updated_at":"2025-10-06T22:28:11.598Z","avatar_url":"https://github.com/mohyware.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Storage Service\nWelcome to my first fullstack application built using the PERN stack! This application functions as a storage service similar to Google Drive but is focused exclusively on image.\n\n## Table of Contents\n\n- [Features](#features)\n- [Testing the Deployment](#testing-the-deployment)\n- [Technologies Used](#technologies-used)\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Endpoints](#api-endpoints)\n- [Error Handling](#error-handling)\n- [License](#license)\n\n## Testing the Deployment\nRegistered account for lazy ones:\n\n- **Email:** example@gmail.com\n- **Password:** 1e#uyjG%4\n## Features\n\n- **Image Storage:** Upload and store images.\n- **Folder Management:** Create, read, update, and delete folders for organizing images.\n- **User Authentication:** Secure user access using Passport.js for authentication.\n- **Cloudinary Integration:** Utilize Cloudinary as a third-party service for image storage.\n- **Error Handling:** Comprehensive error handling for various scenarios.\n- **Security Layers:** The application employs security layers such as Helmet for HTTP header security, CORS with a whitelist for origin control, rate limiting to prevent abuse, XSS protection using `xss-clean`,and request compression for performance enhancement.\n\n## Technologies Used\n\n- **Frontend:** React.js\n- **Backend:** Node.js, Express\n- **Database:** PostgreSQL with Prisma ORM\n- **Authentication:** Passport.js\n- **Image Storage:** Cloudinary\n\n## Installation\nTo get started with this project, follow these steps:\n1. Clone the repository:\n```bash\ngit clone https://github.com/mohyware/Personal-Storage-Service\ncd Personal-Storage-Service\n```\n2. Install the dependencies for both back-end and front-end:\nnpm install\n3. Set up your environment variables in a .env file in the server directory:\n4. Run database migrations:\n```bash\nnpx prisma migrate dev\n```\n## Usage\n1. start back-end:\n```bash\ncd back-end\nnpm run start\n```\n2. start front-end:\n```bash\ncd front-end\nnpm run start\n```\nOnce the application is running, you can access its front end at http://localhost:3000. You can create an account, log in, and start uploading images to your storage space (notice that accessing back-end directly is forbidden with cors so u have to change it).\n## API Endpoints\n\nHere are some key API endpoints available in the application:\n\n- **Authentication:**\n  - `POST /api/v1/auth/register` - Register a new user\n  - `POST /api/v1/auth/login` - Log in a user\n  - `GET /api/v1/auth/logout` - Log out the user\n\n- **User Management:**\n  - `PATCH /api/v1/user/:id` - Update user information\n  - `DELETE /api/v1/user/:id` - Delete a user account\n  - `GET /api/v1/user/:id` - Retrieve user data\n\n- **Folder Management:**\n  - `POST /api/v1/folder` - Create a new folder\n  - `GET /api/v1/folder` - Retrieve all folders\n  - `PUT /api/v1/folder/:id` - Update a folder\n  - `DELETE /api/v1/folder/:id` - Delete a folder\n\n- **Image Management:**\n  - `POST /api/v1/file/upload` - Upload a new image to Cloudinary\n  - `GET /api/v1/file/download/:id` - Download an image from Cloudinary\n  - `GET /api/v1/file` - Retrieve all images\n  - `PATCH /api/v1/file/:id` - Update image details\n  - `GET /api/v1/file/:id` - Retrieve a specific image by ID\n  - `DELETE /api/v1/file/:id` - Delete an image\n\n## Error Handling\nThe application includes an error handler that captures and responds to various error scenarios, ensuring a smooth user experience and aiding in troubleshooting.\n## License\nThis project is licensed under the MIT License. See the LICENSE file for more details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohyware%2Fpersonal-storage-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohyware%2Fpersonal-storage-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohyware%2Fpersonal-storage-service/lists"}