{"id":29128048,"url":"https://github.com/athulsabu2002/filevault","last_synced_at":"2026-05-05T13:37:09.506Z","repository":{"id":301687502,"uuid":"1009502757","full_name":"AthulSabu2002/fileVault","owner":"AthulSabu2002","description":"🔐 Secure file storage system with AES-256 encryption, user authentication, and complete file management. Built with Node.js, TypeScript, and Supabase.","archived":false,"fork":false,"pushed_at":"2025-06-28T07:15:39.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-28T08:26:25.268Z","etag":null,"topics":["aes-256","decryptio","encryption","expressjs","file-storage","jwt-authentication","nodejs","rest-api","supabase","typescript"],"latest_commit_sha":null,"homepage":"","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/AthulSabu2002.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":"2025-06-27T08:34:27.000Z","updated_at":"2025-06-28T07:19:29.000Z","dependencies_parsed_at":"2025-06-28T08:26:33.497Z","dependency_job_id":"528472ea-f4ba-4601-81eb-9e73833be74d","html_url":"https://github.com/AthulSabu2002/fileVault","commit_stats":null,"previous_names":["athulsabu2002/filevault"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AthulSabu2002/fileVault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AthulSabu2002%2FfileVault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AthulSabu2002%2FfileVault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AthulSabu2002%2FfileVault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AthulSabu2002%2FfileVault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AthulSabu2002","download_url":"https://codeload.github.com/AthulSabu2002/fileVault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AthulSabu2002%2FfileVault/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262690485,"owners_count":23349168,"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":["aes-256","decryptio","encryption","expressjs","file-storage","jwt-authentication","nodejs","rest-api","supabase","typescript"],"created_at":"2025-06-30T01:02:21.306Z","updated_at":"2026-05-05T13:37:09.478Z","avatar_url":"https://github.com/AthulSabu2002.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# File Vault\n\nA secure file storage and retrieval system that allows authorized users to upload, download, and manage their files.\n\n## Technologies Used\n\n- **Node.js** - Runtime environment\n- **Express.js** - Web server framework\n- **TypeScript** - Programming language\n- **Supabase** - Backend-as-a-Service for authentication and file storage\n- **Object-Oriented Programming** - Class-based architecture\n- **AES-256-GCM Encryption** - For secure file storage\n\n## Features\n\n- Secure file upload and storage\n- End-to-end file encryption and decryption\n- File retrieval for authorized users\n- User authentication and authorization\n- File metadata management\n- Clean class-based architecture\n- File renaming and deletion capabilities\n\n## Installation\n\n```bash\n# Clone the repository\ngit clone \u003crepository-url\u003e\n\n# Navigate to the project directory\ncd file_vault\n\n# Install dependencies\nnpm install\n```\n\n## Configuration\n\nCreate a `.env` file in the project root with the following variables:\n\n```\nPORT=3000\nSUPABASE_URL=your_supabase_url\nSUPABASE_KEY=your_supabase_anon_key\nENCRYPTION_KEY=your_secure_encryption_key_min_32_chars\nNODE_ENV=development\n```\n\n## Running the Application\n\n### Development Mode\n\n```bash\nnpm run dev\n```\n\n### Production Mode\n\n```bash\nnpm run build\nnpm start\n```\n\n## API Endpoints\n\n### Authentication\n\n- `POST /api/auth/signup` - Register a new user\n- `POST /api/auth/signin` - Login and receive an access token\n- `POST /api/auth/refresh` - Refresh an expired token\n\n### File Operations\n\n- `GET /api/files` - List all files accessible to the user\n- `POST /api/files/upload` - Upload a new file (with multer handling)\n- `POST /api/files/download` - Download a specific file using file ID\n- `PATCH /api/files/rename` - Update file name\n- `DELETE /api/files` - Delete a file\n\n## Project Structure\n\n```\nfile_vault/\n├── src/\n│   ├── controllers/       # Request handlers (FileController, AuthController)\n│   ├── core/              # Application core (App)\n│   ├── middlewares/       # Express middlewares (VerifyToken, ErrorMiddleware)\n│   ├── routes/            # API routes (FileRoutes, AuthRoutes)\n│   ├── types/             # Type definitions\n│   ├── utils/             # Utility functions (supabaseClient, encryptionUtils)\n│   └── server.ts          # Entry point\n├── tsconfig.json          # TypeScript configuration\n├── package.json           # Project dependencies\n└── README.md              # This file\n```\n\n## Authentication and Authorization\n\nThe application uses Supabase Authentication with JWT tokens for user management and access control. To access protected endpoints, include the token in your request headers:\n\n```\nAuthorization: Bearer \u003cyour_token\u003e\n```\n\nThe system supports:\n\n- Email/password authentication\n- Token refresh functionality\n- User-specific file access controls\n\n## Error Handling\n\nThe API returns standard HTTP status codes and JSON error responses:\n\n```json\n{\n  \"status\": \"error\",\n  \"message\": \"Error message details\"\n}\n```\n\n## Security\n\nFile Vault employs AES-256-GCM encryption for secure file storage. This ensures that files are encrypted before they are saved to the server and can only be decrypted by authorized users with the correct keys.\n\n- Files are encrypted with a secure, randomly generated key for each file.\n- The encryption key is derived from a user-specific password and is not stored on the server.\n- Only authorized users with the correct password can decrypt and access their files.\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathulsabu2002%2Ffilevault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathulsabu2002%2Ffilevault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathulsabu2002%2Ffilevault/lists"}