Lunar Storage
- 2 Devlogs
- 23 Total hours
Personal storage website with auth, dashboard and permission levels
Personal storage website with auth, dashboard and permission levels
Didn’t make any for some time cuz I didn’t feel like making a devlog for each new page/thing I add :p
I’m using Spring’s OAuth2 client for it. Currently only Discord’s OAuth2 is supported, more will come in the future. It’s creating a JWT cookie and storing user’s UUID there.
Home page contains link to the GitHub repository and the storage itself. It’s also available to create an announcement that will display there, with 4 levels of it (low, medium, high and critical) each with different color.
Finished making the storage display page, it works with database and has icons based on the entry type (file/folder), if file/folder’s permission level is higher than user’s, it will show a red block icon and redirect on click to a login page instead of the file itself.
Made the home page of the dashboard, right now there are only request statistics available (requests in a day/hour/minute)
Both are stored in a separate JSON files, I’m using Gson and made a manager so it’s easier to manage and edit them.
So I’m making a personal storage website where the owner will be able to store files and manage access to them. The project is written in Java and uses the Spring framework and JWT tokens. The pages are built as Thymeleaf templates, which makes it easier to pass data from the backend to the frontend.
Currently I made it to be compatible with MySQL and PostgreSQL. writing the queries was soo boring 😭😭
It’s easy to add more DBMSs as it only requires to add a case to switch in DatabaseConfig class, create an implementation of AbstractDatabase and implementations of Repository for each table.
Created a CI/CD workflow to automatically build and push the image of LunarStorage to ghcr.io. It also builds and adds Tailwind CSS to the project resources.
Made the captcha to prevent bots from scraping the contents of the storage. The progress bar is only an estimate of progress so it may take less or longer than shown. Currently it only supports JavaScript for hashing.
well so um for now that’s it i guess, bye :3