Rapidlynk is a Go-based project bundling and sharing tool. It consists of a Command Line Interface (CLI) and a backend server, allowing users to easily bundle their project files, upload them to a server, and share them via a unique ID. Other users can then use the CLI to pull and extract the project bundle using that ID.b
The project is split into two main components:
- Server: A Go HTTP server that handles file uploads and downloads.
- CLI: A command-line tool to push (upload) and pull (download) project bundles.
rapidlynk/
├── cli/ # Command Line Interface source code
│ ├── archive.go # Logic for archiving (tar.gz) project files
│ ├── http.go # HTTP client logic to interact with the server
│ ├── main.go # CLI entrypoint and command routing
│ ├── pull.go # Implementation of the 'pull' command
│ └── push.go # Implementation of the 'push' command
├── server/ # Backend server source code
│ ├── config/ # Server configuration
│ ├── handlers/ # HTTP handlers (upload, download)
│ ├── storage/ # File storage management
│ ├── utils/ # Utility functions
│ ├── main.go # Server entrypoint (runs on port 8080)
│ └── routes.go # HTTP route definitions
├── go.mod # Go module definition (module named go_cli)
└── README.md # This documentation file
- Go (version 1.22 or higher)
To start the backend server, navigate to the server directory and run the main file:
cd server
go run main.go routes.goThe server will start running on http://localhost:8080 with endpoints /upload and /download/.
You can run the CLI directly using go run or compile it into an executable.
Commands:
-
Push: Bundles the current project directory into a
tar.gzarchive, uploads it to the server, and provides a unique ID.go run ./cli push
-
Pull: Downloads the encrypted project bundle associated with a specific ID and extracts it into the current directory.
go run ./cli pull <id>:<key>
- The module name in
go.modis currentlygo_cli. - The CLI uses standard
tarcommands for extraction, so a Unix-like environment or an environment withtarinstalled is required for thepullcommand to function correctly.
- Push to a named channel:
go run ./cli push -c <channel>
- Pull by channel (downloads the latest plain tarball for that channel and extracts it):
go run ./cli pull -c <channel>
- Windows distribution is packaged with Inno Setup from
installer/rapidlynk.iss. - The installer places
rapidlynk.exein%LocalAppData%\Programs\Rapidlynk\and adds that folder to the current userPATH. - The generated installer is written to
installer\Output\.
