Skip to content

KunalSin9h/tiddi

Repository files navigation

Tiddy is self hosted image server written in Go

Powered by

TursoDB Logo     MeltCD Logo

Demo

Go to https://tiddi.kunalsin9h.com to see a demo of the project.

Features (API)

  • Upload images
  • View images
  • Delete images
  • Update images
  • Get image details

Setup Locally

Important

If you want to run the server inside a docker container, you can follow these Docker Instructions

Important

If you want to run the server using Meltcd then you can follow these Meltcd Instructions

Prerequisites

  • Go (latest version recommended)
  • SQLite (latest version recommended)
  • LibSQL An SQLite3 Fork

Steps

  1. Clone the repo
git clone https://github.com/kunalsin9h/tiddi.git
  1. Change the working directory
cd tiddi
  1. Run the server
go run cmd/main.go
  1. Open http://localhost:5656 in your browser

Environment Variables

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 file:./database/dev.db URL to the database file
HOST localhost Host on which the server will run

Example

export PORT=8080

# DB can be sqlite file or libsql url
export DB=file:./database/prod.db
# alternatively for libsql
export DB=libsql://my-db.tarso.io?authToken=autotoken

export HOST=https://tiddi.kunalsin9h.com

go run cmd/main.go

The HOST environment variable is used to generate the unique 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.

API Docs

Sample Client

The Sample Frontend is available at ./cmd/frontend directory, it is served by the server at / route.

GET /

Upload Image

POST /image/

Request:

{
  "image": [23, 112, 2,...34],
  "title": "Image Title"
}
Parameter Type Description
image []byte Required. Image bytes to upload
title string Optional. Title of the image

Response:

{
  "url": "Unique URL of the image"
}

View Image

GET /{uiid}

Image with uiid is served at this route

Get Image Details

GET /get-image/{uuid}
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 Image

DELETE /delete-image/
Parameter Type Description
uiid string Required. UIID of the image

Update 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

Tech Stack

Client: HTML, CSS, JavaScript

Server: Go, SQLite

Authors

License

MIT

Acknowledgements

Support

For support, email kunal@kunalsin9h.com

Feedback

If you have any feedback, please reach out to us at kunal@kunalsin9h.com

Contributing

Contributions are always welcome!

Enjoy! 🚀