Production-grade Distributed File Sharing Platform featuring a Spring Boot 3 backend and a React 18 + Vite + Tailwind CSS frontend deployed with Let's Encrypt SSL/TLS on https://fileshare.sanketrajput.live.
[ Web Browser ]
│
├──(Port 80 HTTP)────► Nginx (301 Redirect to HTTPS / ACME Challenge)
└──(Port 443 HTTPS)──► Nginx Container (React SPA + /api/* Reverse Proxy)
│
▼
Spring Boot App Container (Port 8080)
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
PostgreSQL (Render) MinIO (S3) Redis (Cache)
- Production Domain & HTTPS: Deployed at
https://fileshare.sanketrajput.livewith automated Let's Encrypt SSL certificate issuance and auto-renewal via Certbot. - Nginx Reverse Proxy: Serves React SPA assets over HTTPS port 443 and reverse-proxies
/api/*requests tohttp://app:8080over the internal Docker network. - CORS Allow-List: Strict production CORS configuration in
SecurityConfig.javarestricting origins tohttps://fileshare.sanketrajput.live(no wildcards).
cp .env.example .env
docker compose up -d --buildAccess endpoints:
- Web App:
https://fileshare.sanketrajput.live - Swagger UI:
http://localhost:8080/swagger-ui.html
SecurityConfig.java restricts cross-origin requests exclusively to:
https://fileshare.sanketrajput.livehttp://fileshare.sanketrajput.livehttp://localhost:3000/http://localhost:5173(Local dev)
Production benchmarks are defined in /loadtest using k6 and Node.js targeting https://fileshare.sanketrajput.live.
(Metrics will be populated from actual k6 outputs after benchmark execution)
| Metric Category | p50 (Median) | p95 | p99 | Target / Threshold |
|---|---|---|---|---|
| User Authentication / Login | [Pending] |
[Pending] |
[Pending] |
< 1500 ms |
| Multipart File Upload | [Pending] |
[Pending] |
[Pending] |
< 3000 ms |
| File List Retrieval | [Pending] |
[Pending] |
[Pending] |
< 1000 ms |
| File Search (JPA Spec) | [Pending] |
[Pending] |
[Pending] |
< 1000 ms |
| Metadata GET (Cache Miss) | [Pending] |
[Pending] |
[Pending] |
DB Query + Redis Warmup |
| Metadata GET (Cache Hit) | [Pending] |
[Pending] |
[Pending] |
Direct Redis Cache (< 300 ms) |
| File Deletion | [Pending] |
[Pending] |
[Pending] |
Cleanup per Iteration |
| Kafka Event Burst | [Pending] events/s |
[Pending] |
[Pending] |
Target 10,000+ Burst Events |
| Peak Concurrent Users | [Pending] VUs |
— | — | Target 300 VUs |
| Request Failure Rate | [Pending] % |
— | — | < 5.0 % |
For full load test scripts, instructions, and results logging:
- See loadtest/README.md for running benchmarks (
k6 run loadtest/auth-and-crud-load.js). - See loadtest/RESULTS.md for raw metric output templates.
- Load Testing Suite: See loadtest/README.md for k6 & seeding scripts.
- AWS EC2 & HTTPS Guide: See deploy/README.md for step-by-step SSL issuance and EC2 setup.
- CI/CD Pipeline: GitHub Actions workflow in .github/workflows/ci.yml.