* fix: navigation bar code is minimized, started seperating out components and refactoring them * feat: search components * Update search.tsx * fix: autofocus * fix: tags and search * Update page_old.tsx * Update galleries.tsx * Update tag_selector.tsx * Update tag_selector.tsx
Neroshitron
Documentation For Technical Stack
- https://nextjs.org/docs
- https://supabase.com/docs/
- https://owncast.online/docs/
- https://docs.docker.com/engine/install/
Running Backend
You will need docker installed.
You will need supabase CLI.
You need npm and nodejs installed. See documentation at start of document.
- Open your terminal and navigate to the root of the git repository.
- Make sure that docker and docker compose are installed.
- Run
docker-compose --env-file ./docker.env upwhich will start up OwnCast. - Run
supabase start - Open your terminal and navigate to the root folder of the git repository.
- Run the command
npm update. - Once the depedencies are pulled and installed you can run the command
npm run devto run the application in development mode. - Open http://localhost:3000/
Updating the database/Seeding data
Run supabase db reset. This will wipe data.
https://supabase.com/docs/guides/cli/local-development?queryGroups=access-method&access-method=kong#database-migrations
** Once the data is seeded you will need to go to the galleries bucket and add images to the folders that exist in it for the seeded galleries. **
inbucket
http://localhost:54324su/monitor This is where all mail being sent shows up from the application for developers.
OwnCast
http://localhost:8080/ Configuration is done through the Owncast administration page located on your server under /admin. The login username is admin and the password is your stream key, the default being abc123.
User Flow Diagram
Database Diagram
React Components
Gallery Component
The Gallery component is a React component used to display a gallery of images. It fetches images from an API and displays them in a Masonry layout.
Props
id(number): The ID of the gallery to fetch images from.closeMenu(function): A function to close the menu.
State
isSingle(boolean): A state to check if only a single image is to be displayed.loaded(object): A state to keep track of loaded images.selectedImage(string | null): A state to keep track of the selected image.images(string[]): A state to store the fetched images.galleryId(number): A state to store the gallery ID.
Functions
getData: An async function to fetch images from the API.generateRandomString: A function to generate a random string of a given length.handleDownload: A function to handle the download of an image.
Usage
The example below will load the images of the the gallery with an ID of 58201557-b392-471e-ac55-dcf6171cd18d and will call the function for setIsOpen(false) when the back button is clicked.
<Gallery id={"58201557-b392-471e-ac55-dcf6171cd18d"} closeMenu={() => setIsOpen(false)}></Gallery>
GalleryThumbnail Component
The GalleryThumbnail component is a React component used to display a thumbnail of a gallery. It fetches the thumbnail image from an API and displays it. When clicked, it triggers a callback function with the gallery ID.
Props
id(string): The ID of the gallery to fetch the thumbnail for.onSelect(function): A function to be called when the thumbnail is clicked. The gallery ID is passed as an argument.title(string) : The name of the gallery.subscription(subscription) : The name of the subscription required for the gallery.
State
galleryId(string): A state to store the gallery ID.thumbnailUrl(string): A state to store the fetched thumbnail URL.isLoading(boolean): A state to keep track of the loading status.
Functions
openGallery: A function to call theonSelectprop with the gallery ID.getData: An async function to fetch the thumbnail from the API.
Usage
This will render a thumbnail for the gallery with the ID of "1". When the thumbnail is clicked, it will log the gallery ID to the console.
<GalleryThumbnail id="1" onSelect={(id) => //console.log(id)} />