Skip to content

Black-Kamelia/Hedera

Repository files navigation

Hedera logo Hedera logo

A self-hosted screenshots/files hosting system.

Jenkins Jenkins Tests Jenkins Coverage

🤔 What is it?

Important

Hedera is currently in developement phase. As such, no stable release nor Docker image is available as of now.

You can run a dev build using Docker with this image: bkamelia/hedera:nightly (Updated every night GMT+1)

Hedera is an open-source web application built with Ktor and Nuxt 3. It is the next iteration of Selfish. Like its predecessor, it is highly inspired by XBackBone.

You can see Hedera like a self-hosted Imgur. You simply take screenshots and host them on your Hedera server.

Note

Hedera is expected to be released soon. It will be shipped as a standalone JAR and a Docker image ready to deploy.

✨ Features

  • User accounts
    You can create multiple accounts, or let users sign up. Each screenshots uploaded is bound to its user account.
  • Disk space quota
    You can set a disk quota not to exceed; this way you can upload files without worrying about stuffing your disk completely. You can choose to set a custom quota for each user, or allow unlimited storage.
  • Files visibility
    Uploaded a screenshot you would like to keep private? No problem, just change this one's visibility and you're done. Other files will get the default visibility you set.
  • Custom links
    Want to send your favorite meme but can't remember the random gigberish link? Set a custom link to type it directly.
  • Advanced filters
    A while back, you uploaded a file you're struggling to find again? Just set a bunch of filters to refine your search.
  • Third-party software integrations
    Use third-party applications to take screenshots and upload them directly to Hedera.
    Supported: ShareX, uPic, Apple Shortcut (Coming soon)

And a lot more to come later... Stay tuned 👀

🛠 Installation

Coming soon

⚙ How to update?

Coming soon

📸 Screenshots

Coming soon

🏗️ Building

Front-end

Building the front-end is pretty straightforward. You just need to run the dedicated Gradle tasks. This tasks install Node.js, sets everything up through pNPM and builds the front-end.

gradle client:build

Back-end

Building the back-end is also very easy. Simply run the default Gradle build task. This task will compile the back-end and run the tests.

gradle server:build

Full build

To build a complete production-ready JAR, run the package task. This tasks bundles the front-end, and compiles the JAR using the shadow plugin.

gradle assemble

📦 Dependencies

Core

  • Kotlin : A statically typed, modern, cross-platform, open-source programming language.
  • Ktor : Kotlin backend microservices library.
  • Exposed : Kotlin database ORM library.
  • Nuxt 3 : JavaScript frontend framework for making performant web applications, based on Vue 3.
  • VueUse : A set of useful Vue 3 Composable functions and components.
  • Primevue : A collection of rich UI components for Vue 3.

Building

  • Gradle : A build tool for Java and Kotlin.
  • Docker : A platform for developers to build, ship, and run software.
  • Docker Compose : A tool for defining and running multi-container applications.
  • Node.js : A JavaScript runtime built on Chrome's V8 JavaScript engine.
  • Vite : A JavaScript build tool for modern web development.
  • Gradle Node plugin : Gradle plugin for Node.js.

🖤 Acknowledgements

Special thanks to Ghozy Muhtarom for his work on the illustrations used throughout the application.