Tiddy is self hosted image server written in Go
Go to https://tiddi.kunalsin9h.dev to see a demo of the project.
- Upload images
- View images
- Delete images
- Update images
- Get image details
If you want to run the server inside a docker container, you can follow these instructions
- Clone the repo
git clone https://github.com/kunalsin9h/tiddi.git
- Change the working directory
cd tiddi
- Create a database folder in the root directory
mkdir database
- Create a sqlite3 database file in the database folder
touch database/dev.db
- Crete
images
table in the database file
sqlite3 database/dev.db
Execute the following SQL query in the sqlite3 shell
CREATE TABLE images (
id varchar(7) primary key,
title varchar(255),
image blob not null
);
Exit the sqlite3 shell
.exit
- Run the server
go run main.go
- Open http://localhost:5656 in your browser
You can set the following environment variables to change the default settings of the server.
Environment Variable | Default Value | Description |
---|---|---|
PORT |
5656 |
Port on which the server will run |
DB |
./database/dev.db |
Path to the database file |
HOST |
localhost |
Host on which the server will run |
export PORT=8080
export DB=./database/prod.db
export HOST=https://tiddi.kunalsin9h.dev
go run main.go
or alternative way is set the environment while running the server
PORT=8080 DB=./database/prod.db HOST=https://tiddi.kunalsin9h.dev go run main.go
The
HOST
environment variable is used to generate theunique image id
of the image, it is recommended to set it to the domain name of the server.HOST
is also used in the sample frontend to fetch the image from the server.
The Sample Frontend is available at ./src/frontend
directory, it is served by the server at /
route.
GET /
POST /upload-image/
Parameter | Type | Description |
---|---|---|
image |
[]byte |
Required. Image bytes to upload |
title |
string |
Optional. Title of the image |
Response:
{
"url": "Unique URL of the image"
}
GET /{uiid}
Image with
uiid
is served at this route
POST /get-image/
Parameter | Type | Description |
---|---|---|
uiid |
string |
Required. UIID of the image |
Response:
{
"title": "Image Title",
"image": "Base64 Encoded Image"
}
UIID is the
unique image id
of the image, it is generated by the server and is returned when the image is uploaded.
DELETE /delete-image/
Parameter | Type | Description |
---|---|---|
uiid |
string |
Required. UIID of the image |
PUT /update-image/
Parameter | Type | Description |
---|---|---|
uiid |
string |
Required. UIID of the image |
image |
[]byte |
Optional. Image bytes to upload |
title |
string |
Optional. Title of the image |
Client: HTML, CSS, JavaScript
Server: Go, SQLite
For support, email kunal@kunalsin9h.dev
If you have any feedback, please reach out to us at kunal@kunalsin9h.dev
Contributions are always welcome!
Enjoy! 🚀