A secure file upload system that uses key-based authentication for file uploads. Users need a valid key to upload files, and administrators can manage these keys through a user-friendly interface.
- 🔐 Key-based authentication for file uploads
- 📤 Drag-and-drop file upload interface
- 👥 Admin panel for key management
- 🔑 Key generation, validation, and deletion
- 📱 Responsive design
- 🔒 Secure file handling
- 🌐 Environment-based configuration
- 🔄 Automatic development/production mode switching
- React.js
- React Router DOM
- Modern UI components
- Drag-and-drop functionality
- Node.js
- Express.js
- LowDB for data persistence
- Multer for file handling
- JWT for authentication
- bcrypt for security
- Node.js (v14 or higher)
- npm or yarn package manager
- Clone the repository:
git clone https://github.com/v3lip/sku.git
cd sku- Install frontend dependencies:
cd client
npm install- Install backend dependencies:
cd ../server
npm installThe client configuration is in client/src/config.js:
const config = {
// Server connection
API_URL: process.env.NODE_ENV === 'development'
? 'http://localhost:5000' // Development server
: 'http://your-server-ip:5000', // Production server
// Upload settings
CHUNK_SIZE: 1 * 1024 * 1024, // 1MB chunks for file uploads
// UI settings
MAX_FILE_NAME_LENGTH: 50, // Maximum length for displayed file names
UPLOAD_TIMEOUT: 30000, // Upload timeout in milliseconds (30 seconds)
// Preview settings
PREVIEWABLE_TYPES: [
'image/',
'video/',
'application/pdf'
]
};- Copy the example environment file:
cd server
cp .env.example .env- Edit the
.envfile with your settings:
PORT=5000
HOST=0.0.0.0
JWT_SECRET=your_secure_secret_here- For production, make sure to:
- Set a strong JWT_SECRET
- Configure CORS_ORIGINS in
server/config.jswith your client URLs - Change the default admin password after first login
- Clone and install:
git clone https://github.com/v3lip/SKU.git
cd SKU- Configure the client:
cd client
# Edit src/config.js with your server's IP and port
npm install- Configure the server:
cd ../server
cp .env.example .env
# Edit .env with your settings
npm install- Start the services:
# Terminal 1 - Server
cd server
node index.js
# Terminal 2 - Client
cd client
npm startThe application will be available at:
- Client: http://localhost:3000 (development) or your configured production URL
- Server: http://localhost:5000 (development) or your configured production URL
sku/
├── client/ # Frontend React application
│ ├── public/ # Static files
│ └── src/ # React source code
│ ├── config.js # Client configuration
│ └── pages/ # React components
├── server/ # Backend Node.js application
│ ├── uploads/ # Permanent file storage
│ ├── tmpUploads/ # Temporary file storage
│ ├── config.js # Server configuration
│ └── index.js # Main server file
└── README.md
- Key-based authentication system
- Secure file upload handling
- Temporary file storage for processing
- Admin-only key management
- JWT-based authentication for admin panel
- Environment-based configuration
- CORS protection
- Configurable file size limits
- Automatic key expiration
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License - see the LICENSE file for details.
- v3lip
- Thanks to all contributors who have helped shape this project
- Special thanks to the open-source community for the amazing tools and libraries


