A cloud-based secure file sharing system built with MERN stack and AWS services.
- User Authentication & Authorization (JWT)
- Secure File Upload & Download (AWS S3)
- Access Control (Public/Private links)
- Audit Logging
- Background Processing (RabbitMQ)
- Rate Limiting (Redis)
- Backend: Node.js, Express.js
- Frontend: React.js
- Database: AWS DynamoDB
- Storage: AWS S3
- Message Queue: RabbitMQ
- Cache: Redis
- Authentication: JWT
- Node.js >= 14.x
- AWS Account with S3 and DynamoDB access
- RabbitMQ Server
- Redis Server
- MongoDB (for user sessions)
.
├── backend/ # Express backend
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── middleware/ # Custom middleware
│ │ ├── models/ # Data models
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utility functions
│ └── config/ # Configuration files
└── frontend/ # React frontend
├── src/
│ ├── components/ # React components
│ ├── pages/ # Page components
│ ├── services/ # API services
│ └── utils/ # Utility functions
└── public/ # Static files
-
Navigate to the backend directory:
cd backend -
Install dependencies:
npm install
-
Create a
.envfile with the following variables:PORT=5000 NODE_ENV=development # AWS Configuration AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key AWS_REGION=your_region S3_BUCKET_NAME=your_bucket_name # JWT Configuration JWT_SECRET=your_jwt_secret JWT_EXPIRE=24h # RabbitMQ Configuration RABBITMQ_URL=amqp://localhost # Redis Configuration REDIS_URL=redis://localhost -
Start the backend server:
npm run dev
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Create a
.envfile with the following variables:REACT_APP_API_URL=http://localhost:5000/api -
Start the frontend development server:
npm start
The API documentation can be found at /api-docs when running the backend server.
- JWT-based authentication
- File encryption at rest
- Secure file sharing with expiring links
- Rate limiting to prevent abuse
- Access control and audit logging
- CORS protection
- Request validation
- XSS protection
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request