YEEET is a secure file sharing platform built with modern web technologies. It features user authentication, chunked file uploads, real-time progress tracking, and secure file downloads.
- User authentication (register/login)
- Secure file upload with chunk processing
- Real-time upload progress tracking
- File management and downloads
- Protected routes and sessions
- Secure file storage with unique download tokens
- Node.js with Express
- TypeScript
- PostgreSQL with Drizzle ORM
- Socket.IO for real-time communications
- bcrypt for password hashing
- express-session for session management
- React 19
- Nextjs 15
- TypeScript
- Shadcn UI
- Axios
- Tauri
- Rust
- React
- TypeScript
- Vite
- React Router v7
- Socket.IO Client
- Axios
- Node.js (v18 or higher recommended)
- pnpm
- PostgreSQL
- Rust (for Tauri desktop app)
├── backend/
│ ├── src/
│ │ ├── config/ # Constants and configurations
│ │ ├── db/ # Database schemas and migrations
│ │ ├── lib/ # formatters and utility functions
│ │ ├── middleware/ # Custom middlewares
│ │ ├── routes/ # API routes
│ │ ├── services/ # Service classes
│ │ ├── tasks/ # Background tasks
│ │ ├── index.ts # Main server file
│ │ └── database.ts # Database configuration
│ └── uploads/ # File storage directory
│
├── next-client/ # Next.js web client
│ ├── app/ # App router directory
│ ├── components/ # React components
│ ├── lib/ # Utility functions and configurations
│ ├── public/ # Static assets
│ └── types/ # TypeScript types
│
└── app/ # Tauri desktop application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── contexts/ # React contexts
│ │ ├── App.tsx # Main application component
└── src-tauri/ # Rust/Tauri backend
- Clone the repository:
git clone https://github.com/your-repo/yeeet.git
cd yeeet- Install backend dependencies
cd backend
pnpm install- Configure environment variables:
Create a .env file in the backend directory:
touch .envAdd the following variables:
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_database_password
SESSION_SECRET=your_session_secret
BACKEND_URL=http://localhost:3000
CLIENT_URL=http://localhost:5173
TAURI_URL=tauri://localhost
TAURI_URL_DEV=http://localhost:1420
USE_S3_STORAGE=false # true or false
AWS_BUCKET_NAME=your-bucket-name
AWS_REGION=aws-region
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key- Install frontend dependencies
cd ../next-client
pnpm install- Configure environment variables:
Create a .env file in the next-client directory:
touch .envAdd the following variables:
VITE_SOCKET_URL=http://localhost:3000
VITE_API_URL=http://localhost:3000
VITE_CLIENT_URL=http://localhost:5173- Install app dependencies
cd ../app
pnpm install- Configure environment variables:
Create a .env file in the app directory:
touch .envAdd the following variables:
VITE_SOCKET_URL=http://localhost:3000
VITE_API_URL=http://localhost:3000
VITE_CLIENT_URL=http://localhost:5173- Run database migrations:
Please note that you need to have a PostgreSQL database created.
pnpm init-dbYou can run the dev environment using the following command:
pnpm devThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
cd app
pnpm tauri devcd next-client
pnpm buildcd app
pnpm tauri buildFor the best development experience, we recommend:
- VS Code with the following extensions:
- Tauri
- rust-analyzer
- ESLint
- Prettier
- Password hashing with bcrypt
- Session-based authentication
- Protected API routes
- Secure file downloads with unique tokens
- CORS protection
- File chunking for large uploads
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request