Skip to content
Ruchika402Public

Latest commit

Β 

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Header

Typing SVG

License Status

Vylink is a full-stack portfolio project demonstrating secure file sharing, authentication, and cloud storage integration β€” built following OWASP Top 10 guidelines, with pre-signed S3 URLs for safe, time-limited file delivery.


πŸ“‘ Table of Contents


🌐 Live Demo

Page Link
App vylink.duckdns.org
Register /register
Login /login

Try it: register β†’ log in β†’ upload an image from the dashboard β†’ create a share link with an expiry.


πŸ›‘οΈ Security Highlights

The features that matter most for a project built around secure file delivery.

  • πŸ” JWT auth via httpOnly cookies: no tokens exposed to client-side JS
  • πŸ”‘ Google OAuth: reduces password-based attack surface
  • πŸ”’ HTTPS everywhere: Let's Encrypt certificate served through Nginx, with HSTS
  • 🧹 Bleach input sanitization: blocks stored/reflected XSS
  • πŸ›‘οΈ Full OWASP security header set: CSP, HSTS, X-Frame-Options, nosniff
  • ⏱️ 60-second expiring pre-signed S3 URLs: private bucket, no public file exposure
  • ⚑ Rate limiting on uploads and shares: throttles abuse and scraping
  • 🚫 Access control: users can only see and manage their own files

πŸ› οΈ Tech Stack

React TypeScript TailwindCSS Django Python PostgreSQL Redis AWS Docker Nginx

Category Technology
Frontend React, TypeScript, Tailwind CSS, React Router
Backend Python, Django REST Framework
Database PostgreSQL
Cache Redis
Storage AWS S3 (pre-signed URLs)
Auth JWT (httpOnly cookies), Google OAuth
Tooling Docker, Docker Compose
Server AWS EC2 (Ubuntu), Nginx reverse proxy
SSL Let's Encrypt (Certbot)
Domain DuckDNS (vylink.duckdns.org)

πŸ—οΈ Architecture

Browser ──HTTPS──► Nginx (EC2) ──► React UI
                       β”‚
                       └──► Django API ──► PostgreSQL + Redis
                                β”‚
                                └──► S3 (pre-signed URLs)
Component Role
Nginx + Let's Encrypt HTTPS entry point and reverse proxy on EC2
React Frontend UI
Django REST Framework API, JWT auth, rate limiting
PostgreSQL / Redis Data storage / caching and throttling
S3 pre-signed URLs Private bucket, temporary file access
Docker Compose Runs the backend, database, and cache as containers

πŸš€ Getting Started

Just want to try it? Use the live app: vylink.duckdns.org

Want to run it locally? You need Docker and Docker Compose.

# 1. Clone the repo
git clone https://github.com/Ruchika402/Vylink.git
cd Vylink

# 2. Create your env file from the template
cp backend/config/.env.example backend/config/.env

# 3. Build and start all containers
docker compose up -d --build

# 4. Set up the database
docker compose exec backend python manage.py migrate

# 5. Create an admin user
docker compose exec backend python manage.py createsuperuser

Fill in your values in backend/config/.env before step 3. See .env.example for every variable you need (Django, database, Redis, AWS S3). Never commit your real .env.

Open http://localhost:3000 and you're in.

βš™οΈ Run without Docker

Requires Python 3.11+, Node.js 18+, PostgreSQL, and Redis. In your .env, set the database and Redis hosts to localhost.

# Backend
cd backend
python -m venv venv
source venv/bin/activate      # Windows: venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

# Frontend (new terminal)
cd frontend
pnpm install
pnpm start

πŸ“Š Project Milestones

Phase Status
Backend API (Django + DRF) βœ… Complete
Frontend UI (React + Tailwind) βœ… Complete
Core Security βœ… Complete
Cloud Storage (S3 pre-signed URLs) βœ… Complete
Docker Containerization βœ… Complete
AWS EC2 Deployment βœ… Complete
HTTPS + Domain βœ… Complete
Logging & Monitoring πŸ“ Planned
CI/CD (GitHub Actions) πŸ“ Planned

🚧 Roadmap

  • Google OAuth redirect URI update for the production domain
  • Fix login rate limiting (5 attempts/min)
  • CI/CD pipeline with GitHub Actions
  • Structured logging and Sentry error tracking
  • More unit and integration tests
  • API documentation with Swagger/OpenAPI
  • Custom domain to replace DuckDNS

⚠️ Known Limitations

  • S3 pre-signed URLs sometimes fail signature validation (being fixed)
  • Login rate limiting has a bug (upload/share limits work)
  • Share link page shows image metadata correctly; image rendering in progress
  • Automated tests are in progress (4 security tests implemented)
  • CI/CD pipeline not yet set up

πŸ“„ License

MIT Β© 2026 Ruchika Adak


πŸ”— Connect

Live Demo GitHub

Built with security-first principles.

Releases

Packages

Contributors

Languages