Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added structure for CunoFS topnav #464

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions app/(docs)/cunofs/getting-started/page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: Getting Started
docId: 56bbfdaa-d6c5-4a4f-ba2d-13b05d446a24
metadata:
description: Getting started with cunoFS
---

# cunoFS GUI User Guide v0.9.13

## Table of Contents
1. [Initial Setup](#initial-setup)
2. [Importing Credentials](#importing-credentials)
3. [Mounts](#mounts)

---

## Initial Setup
1. On first opening the app, you will be prompted for a license activation key, which you will have received via email from PetaGene. Please activate it now.
2. To verify your license period, click the **About** tab at the top, which should show your license details.

---

## Importing Credentials
cunoFS can connect to any of the major cloud storage providers using native storage credentials. If you have an S3-compatible object storage solution from another provider, you will first need to configure S3 API access. For instructions on retrieving these credentials, check out the [Getting your credentials](https://cuno-cunofs.readthedocs-hosted.com/en/stable/getting-started-configuring-credentials.html#getting-your-credentials) section of our online documentation.

1. In the application, open the **Credentials** tab.
2. On the right, click the green **+ Import new credentials** button.
3. In the modal that opens:
- Enter a new recognizable name for this set of credentials.
- Select the tab for your cloud provider.
- Fill out the relevant details in the form.

**Note**: If using the S3-compatible API for a cloud provider, select the **S3-compatible** tab and choose your provider from the dropdown. Ensure the endpoint you enter is accessible from your machine. Additional compatibility settings may be required (e.g., add an explicit region if using Wasabi).

For Storj users, we recommend using a lexicographically ordered S3 bucket to enable cunoFS’ fastest listing performance.

4. After filling in the relevant fields, click **Import** at the bottom right. This will prompt cunoFS to discover any listable and readable buckets.
5. If the import was successful, you will be taken to a page showing all discovered buckets. Please select the buckets for which you want to create mount configurations.
6. After selecting buckets to create mounts for, you will be presented with a series of panels prompting you to create mount configurations. See the [Mount Configuration](#mounts) section for more information.

---

## Mounts
1. To add a new mount, open the **Mounts** tab in the app and select the **+ Create new mount** button.
2. Set the relevant options, and click the **Add mount** button. For more information on POSIX mode, refer to the [POSIX File Access](https://cuno-cunofs.readthedocs-hosted.com/en/stable/getting-started-configuration-modes.html#posix-file-access) documentation.
3. When you are satisfied with your mount configuration, click **Add Mount**. This will store your new mount configuration.
4. Back on the **Mounts** tab, activate the mount by connecting the cloud root to the local mount point.
5. Once enabled, click on the mount name to open Finder at the mount point. This may take a moment if the mount contains many files, but access speeds will improve after the initial opening.

---
86 changes: 86 additions & 0 deletions app/(docs)/cunofs/page.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
title: Overview
hideTitle: true
metadata:
title: CunoFS by Storj
description: CunoFS Documentation
weight: 0
---

# What is cunoFS?

## Overview
cunoFS is a high-performance, cloud-native file system designed to simplify and accelerate access to cloud storage. It allows users to seamlessly integrate cloud storage into their local workflows, offering powerful features for managing, mounting, and interacting with data stored across multiple cloud providers.

cunoFS bridges the gap between local file systems and remote cloud storage by enabling quick, efficient, and reliable access to files, ensuring data integrity while supporting a wide variety of workflows.

---

## Key Features

### 1. **Multi-Cloud Compatibility**
- Supports all major cloud storage providers, including AWS S3, Google Cloud, Microsoft Azure, and more.
- Offers compatibility with S3-compatible storage solutions for extended flexibility.

### 2. **Effortless Mounting**
- Enables mounting cloud storage buckets directly onto your local machine.
- Provides configurable mount options, including support for POSIX compliance, ensuring seamless integration with local file systems.

### 3. **Streamlined Credential Management**
- Allows importing and managing credentials for various cloud providers within the intuitive GUI.
- Ensures secure handling of access keys and other sensitive data.

### 4. **Optimized Performance**
- Utilizes lexicographically ordered S3 buckets for faster listing and access speeds.
- Reduces latency and ensures a smooth user experience, even with large datasets.

### 5. **User-Friendly Interface**
- Features an intuitive graphical user interface (GUI) that simplifies complex workflows.
- Provides step-by-step guidance for setting up, configuring, and managing mounts and credentials.

### 6. **Cross-Platform Support**
- Compatible with major operating systems, making it accessible for a wide range of users and environments.

---

## Use Cases

### 1. **Data Management**
- Easily browse, upload, and download files stored in the cloud as if they were local.

### 2. **Backup and Recovery**
- Use cunoFS to integrate cloud storage into backup workflows, ensuring secure and scalable data protection.

### 3. **Collaboration**
- Share mounted storage across teams to enable collaborative workflows without compromising data security.

### 4. **Media and Entertainment**
- Simplify access to large media files stored in the cloud for editing, rendering, or distribution.

---

## Why Choose cunoFS?

### **Simplicity**
With cunoFS, connecting to and managing cloud storage is as easy as managing local files, eliminating the need for complex command-line tools or custom integrations.

### **Efficiency**
Optimize your workflow with fast file access and seamless data transfer, whether you’re working with large datasets or everyday files.

### **Flexibility**
cunoFS’s support for multiple cloud providers and customizable mount options ensures that it can adapt to any workflow or storage environment.

### **Security**
Built with robust security measures, cunoFS keeps your data safe by integrating directly with your cloud provider’s access controls.

---

## Getting Started
1. **Install cunoFS**: Download the application for your operating system.
2. **Activate Your License**: Use the activation key provided during purchase.
3. **Import Credentials**: Add cloud storage credentials using the built-in credential management tools.
4. **Create Mounts**: Set up and configure cloud storage mounts to integrate them with your local file system.
5. **Start Working**: Access your files, manage data, and streamline your workflows with cunoFS.

For more details, visit the [getting started docs](docId:56bbfdaa-d6c5-4a4f-ba2d-13b05d446a24).

2 changes: 2 additions & 0 deletions app/sitemap.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
learnBottomNav,
supportBottomNav,
blogBottomNav,
cunosfBottomNav,
} from '@/markdoc/navigation.mjs'

export default function sitemap() {
Expand All @@ -13,6 +14,7 @@ export default function sitemap() {
nodeBottomNav,
supportBottomNav,
blogBottomNav,
cunosfBottomNav,
]
.flat()
.map(({ href }) => ({ url: `${process.env.SITE_URL}${href}` }))
Expand Down
3 changes: 3 additions & 0 deletions src/components/Navigation.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
nodeNavigation,
learnNavigation,
supportNavigation,
cunofsNavigation,
} from '@/markdoc/navigation.mjs'

function NavLink({ title, href, current, root, disclosure, className }) {
Expand Down Expand Up @@ -148,6 +149,8 @@ export function Navigation({ className }) {
sideNavigation = learnNavigation
} else if (pathname.startsWith('/support')) {
sideNavigation = supportNavigation
} else if (pathname.startsWith('/cunofs')) {
sideNavigation = cunofsNavigation
}

return (
Expand Down
3 changes: 3 additions & 0 deletions src/components/PrevNextLinks.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
learnBottomNav,
supportBottomNav,
blogBottomNav,
cunofsBottomNav,
} from '@/markdoc/navigation.mjs'

function ArrowIcon(props) {
Expand Down Expand Up @@ -58,6 +59,8 @@ export function PrevNextLinks() {
allLinks = supportBottomNav
} else if (pathname.startsWith('/blog')) {
allLinks = blogBottomNav
} else if (pathname.startsWith('/cunofs')) {
allLinks = cunofsBottomNav
}

let linkIndex = allLinks.findIndex((link) => link.href === pathname)
Expand Down
1 change: 1 addition & 0 deletions src/components/Spaces.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import clsx from 'clsx'
const spaces = [
{ name: 'Home', path: '/', href: '/dcs' },
{ name: 'Learn', href: '/learn' },
{ name: 'CunoFS', href: '/cunofs' },
{ name: 'Node', href: '/node' },
{ name: 'Help Center', href: '/support' },
{ name: 'Eng Blog', href: '/blog' },
Expand Down
4 changes: 4 additions & 0 deletions src/markdoc/convertDocId.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
learnBottomNav,
supportBottomNav,
blogBottomNav,
cunofsBottomNav,
} from '@/markdoc/navigation.mjs'

function getFrontmatter(filePath) {
Expand Down Expand Up @@ -55,6 +56,9 @@ export function convertDocId(href) {
if (!entry) {
entry = blogBottomNav.find((o) => o.docId === docId)
}
if (!entry) {
entry = cunofsBottomNav.find((o) => o.docId === docId)
}

if (!entry) {
throw new Error(`Could not find docId: ${docId}`)
Expand Down
6 changes: 6 additions & 0 deletions src/markdoc/navigation.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,8 @@ export default function (nextConfig = {}) {
sortByWeightThenTitle(learn)
let support = walkDir(`${dir}/\(docs\)/support`, 'support')
sortByWeightThenTitle(support)
let cunofs = walkDir(`${dir}/\(docs\)/cunofs`, 'cunofs')
sortByWeightThenTitle(cunofs)
let blog = walkDir(`${dir}/\(blog\)/blog`, 'blog', {
hasRoot: false,
})
Expand All @@ -207,6 +209,7 @@ export default function (nextConfig = {}) {
...getRedirects(node),
...getRedirects(learn),
...getRedirects(support),
...getRedirects(cunofs),
...getRedirects(blog),
]
let firebaseConfig = JSON.parse(
Expand All @@ -227,6 +230,7 @@ export default function (nextConfig = {}) {
let nodeBottomNav = extractHrefObjects(structuredClone(node))
let learnBottomNav = extractHrefObjects(structuredClone(learn))
let supportBottomNav = extractHrefObjects(structuredClone(support))
let cunofsBottomNav = extractHrefObjects(structuredClone(cunofs))
let blogBottomNav = extractHrefObjects(structuredClone(blog))

// When this file is imported within the application
Expand All @@ -237,6 +241,8 @@ export default function (nextConfig = {}) {
export const learnNavigation = ${JSON.stringify(learn)}
export const supportNavigation = ${JSON.stringify(support)}
export const blogNavigation = ${JSON.stringify(blog)}
export const cunofsNavigation = ${JSON.stringify(cunofs)}
export const cunofsBottomNav = ${JSON.stringify(cunofsBottomNav)}
export const dcsBottomNav = ${JSON.stringify(dcsBottomNav)}
export const nodeBottomNav = ${JSON.stringify(nodeBottomNav)}
export const learnBottomNav = ${JSON.stringify(learnBottomNav)}
Expand Down
Loading