A modern, full-stack cloud storage application built with Qwik and QwikCity. This project provides a user-friendly interface for file management, including upload, organization, and trash functionality.
- File Management: Upload, organize, rename, and delete files and folders
- Cloud Storage: Secure file storage with S3 integration
- User Authentication: Login and registration system
- Trash System: Soft delete with restore and permanent delete options
- Responsive UI: Built with Tailwind CSS for a modern, mobile-friendly experience
- Real-time Uploads: Progress tracking and resumable uploads
- Frontend: Qwik, TypeScript, Tailwind CSS
- Backend: QwikCity API routes (integrates with external services)
- Build Tool: Vite
- Icons: Qwikest Icons (Lucide)
- Bun v1.3 or higher
- npm or bun package manager
- Two backend services (Auth Service and Files Service) - see below
This application requires two backend services:
-
Auth Service: Handles user authentication (login, registration, token management)
- GitHub: Medo-ID/auth-service
-
Files Service: Manages file operations (upload, download, delete, rename, etc.)
- GitHub: Medo-ID/files-service
Options:
- Use the pre-built services above
- Build your own services and implement the expected API contracts
- Build a backend directly using QwikCity API routes in
/src/routes/api/(replace the proxy routes with direct implementations)
-
Clone the repository:
git clone https://github.com/your-username/up-down-cloud.git cd up-down-cloud -
Install dependencies:
npm install # or bun install -
Set up environment variables: Create a
.envfile in the root directory with the following variables:AUTH_SERVICE_ENDPOINT=your-auth-service-url FILES_SERVICE_ENDPOINT=your-files-service-urlReplace with your actual service endpoints.
-
Start the development server:
npm start # or bun startThe app will be available at
http://localhost:5173.
npm run build
# or
bun run buildnpm run preview
# or
bun run previewsrc/
├── components/ # Reusable UI components
├── routes/ # Page routes and API endpoints
│ ├── (app)/ # Protected app routes
│ └── api/ # API routes for uploads, etc.
├── context/ # Qwik context providers
├── hooks/ # Custom Qwik hooks
└── utils/ # Utility functions
This project is designed to be easily extensible. Here are some ways to add new features:
Create components in src/components/ and import them into your routes or other components.
- Add new pages in
src/routes/ - Use QwikCity's directory-based routing
- For protected routes, place them under
src/routes/(app)/
Add new API routes in src/routes/api/. Use QwikCity's RequestHandler for server-side logic.
The app uses environment variables for service endpoints. Add new services by:
- Adding new env vars
- Creating API routes to proxy requests
- Updating components to use the new endpoints
Currently integrates with external auth and file services. To add local database support:
- Add a database ORM (e.g., Prisma)
- Create database models
- Update API routes to interact with the database
The following features are planned or partially implemented:
-
Share Feature: Not yet implemented in the files service. Requires:
- Share API endpoints in the backend
- Frontend UI for managing file shares
- Permission management system
-
Move File Feature: Built in the files service but not yet in the frontend. Requires:
- UI component for move actions
- Integration with the move endpoint in the files service
This app can be deployed to various platforms:
- Vercel: Use
npm run buildand deploy thedist/folder - Netlify: Add as a static site with serverless functions
- Node.js servers: Use Express or other adapters via
qwik add
For more deployment options, see the Qwik deployment docs.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source. Feel free to use and modify it for your own projects.