A Google Drive-like application built using Golang for the backend with SQLite as the database. This project includes features such as user authentication, file management, and a web interface for interaction.
- User authentication using JWT.
- File upload, download, and management.
- SQLite database for storing user and file metadata.
- Extendable project structure for scalability.
project-root/
├── cmd/
│ └── server/ # Entry point for the application
├── config/ # Configuration files and utilities
├── internal/ # Core application logic
│ ├── auth/ # Authentication logic
│ ├── assets/ # Asset (file/folder) management logic
│ ├── database/ # Database management logic
│ ├── models/ # Internal modeling logic
│ └── routes/ # API routing logic
├── pkg/ # Shared utility packages
│ ├── jwt/
│ ├── logger/
│ ├── password/
│ └── validator/
├── web/ # Static files and frontend assets
│ ├── index.html ## CURRENTLY UNUSED ( FOR COMPILED FRONTEND )
│ └── app.js
├── scripts/ # Development / Management Scripts I Use
├── .env # Environment variables
├── go.mod # Go module file
├── go.sum # Dependencies checksum
└── README.md # Documentation
- Go 1.20+
- SQLite 3
- Clone the repository:
git clone https://github.com/your-repo/google-drive-clone.git cd google-drive-clone - Install dependencies:
go mod tidy
- Set up environment variables in
.envfile.
go run cmd/server/main.go- Availability
GET /ping
- Authentication:
POST /registerPOST /login- Profile Management
GET /mePOST /meDELETE /me
- File Management:
POST /a-- Create file object / (upload) metadataGET /a/:fileID-- Get file (only works if you have permissions)PUT /a/:fileID-- Update file object / metadataPATCH /a/:fileID-- Upload file binaryDELETE /files/:id
This project is licensed under the MIT License.