Skip to content

Commit

Permalink
feat: docs
Browse files Browse the repository at this point in the history
  • Loading branch information
peam1146 committed Dec 3, 2024
1 parent c6242b6 commit daa92ca
Show file tree
Hide file tree
Showing 18 changed files with 300 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
21 changes: 21 additions & 0 deletions apps/docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
55 changes: 55 additions & 0 deletions apps/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Starlight Starter Kit: Basics

[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)

```
npm create astro@latest -- --template starlight
```

[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/withastro/starlight&create_from_path=examples/basics)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwithastro%2Fstarlight%2Ftree%2Fmain%2Fexamples%2Fbasics&project-name=my-starlight-docs&repository-name=my-starlight-docs)

> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
## 🚀 Project Structure

Inside of your Astro + Starlight project, you'll see the following folders and files:

```
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ ├── docs/
│ │ └── config.ts
│ └── env.d.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
```

Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.

Images can be added to `src/assets/` and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the `public/` directory.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## 👀 Want to learn more?

Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
29 changes: 29 additions & 0 deletions apps/docs/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// @ts-check
import { defineConfig } from 'astro/config'
import starlight from '@astrojs/starlight'

// https://astro.build/config
export default defineConfig({
integrations: [
starlight({
title: 'Softnetics RBAC',
social: {
github: 'https://github.com/softnetics/rbac',
},
sidebar: [
{
label: 'Getting Started',
autogenerate: { directory: 'getting-started' },
// items: [
// // Each item here is one entry in the navigation menu.
// { label: 'Introduction', slug: 'getting-started/introduction' },
// ],
},
{
label: 'Reference',
autogenerate: { directory: 'reference' },
},
],
}),
],
})
19 changes: 19 additions & 0 deletions apps/docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "docs",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/starlight": "^0.29.2",
"astro": "^4.16.10",
"sharp": "^0.32.5",
"@astrojs/check": "^0.9.4",
"typescript": "^5.7.2"
}
}
1 change: 1 addition & 0 deletions apps/docs/public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/docs/src/assets/houston.webp
Binary file not shown.
9 changes: 9 additions & 0 deletions apps/docs/src/content/code-example/identity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { createIdentity } from '@softnetics/rbac'

const identity = createIdentity({
policies: [policy],
identities: {
student: ['todo.viewer'],
teacher: ['todo.editor', 'todo.viewer'],
},
})
12 changes: 12 additions & 0 deletions apps/docs/src/content/code-example/policy-with-wildcard.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
createPolicy({
name: 'todo',
permissions: {
todo: ['create', 'read', 'update', 'delete'],
comment: ['create', 'read', 'delete'],
},
roles: {
viewer: ['todo.read', 'comment.read'],
editor: ['todo.*', 'comment.delete'],
admin: '*',
},
})
13 changes: 13 additions & 0 deletions apps/docs/src/content/code-example/policy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createPolicy } from '@softnetics/rbac'

const policy = createPolicy({
name: 'todo',
permissions: {
todo: ['create', 'read', 'update', 'delete'],
comment: ['create', 'read', 'update'],
},
roles: {
viewer: ['todo.read', 'comment.read'],
editor: ['todo.create', 'todo.update', 'comment.create', 'comment.update'],
},
})
6 changes: 6 additions & 0 deletions apps/docs/src/content/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { defineCollection } from 'astro:content';
import { docsSchema } from '@astrojs/starlight/schema';

export const collections = {
docs: defineCollection({ schema: docsSchema() }),
};
67 changes: 67 additions & 0 deletions apps/docs/src/content/docs/getting-started/introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
title: Introduction
description: introduction what is Softnetics RBAC.
---

import { Tabs, TabItem , Code, Aside } from '@astrojs/starlight/components';
import PolicyExample from '../../code-example/policy?raw';
import PolicyWithWildcardExample from '../../code-example/policy-with-wildcard?raw';
import IdentityExample from '../../code-example/identity?raw';

Softnetics RBAC is a role-based access control system that allows you to control access to your application based on user roles and permissions implemented with Lookup Table and Type-safety.

## Quick Start

### Install Dependencies

Install the dependencies with either `pnpm`, `yarn`, or `bun`:

<Tabs syncKey="pkg">
<TabItem label="pnpm">

```sh
pnpm add @softnetics/rbac
```

</TabItem>
<TabItem label="yarn">

```sh
yarn add @softnetics/rbac
```

</TabItem>
<TabItem label="bun">

```sh
bun add @softnetics/rbac
```

</TabItem>
</Tabs>

### Create a Policy


<Code code={PolicyExample} lang="ts" title={'policy.ts'} />

permissions are defined as a map of resource to actions
roles are defined as a map of role to permissions

<Aside type='tip'>
You also can use * to match all resources and actions
<Code code={PolicyWithWildcardExample} lang="ts" />
</Aside>

### Create identity

<Code code={IdentityExample} lang="ts" title={'identity.ts'} />

### Use RBAC

enforce a permission

```ts
identity.enforce(['student'], ['todo.todo.read']) // true
identity.enforce(['student'], ['todo.todo.create']) // false
```
11 changes: 11 additions & 0 deletions apps/docs/src/content/docs/guides/example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Example Guide
description: A guide in my new Starlight docs site.
---

Guides lead a user through a specific task they want to accomplish, often with a sequence of steps.
Writing a good guide requires thinking about what your users are trying to do.

## Further reading

- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework
36 changes: 36 additions & 0 deletions apps/docs/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: Welcome to Starlight
description: Get started building your docs site with Starlight.
template: splash
hero:
tagline: Congrats on setting up a new Starlight project!
image:
file: ../../assets/houston.webp
actions:
- text: Getting Started
link: /getting-started/introduction/
icon: right-arrow
- text: Read the Starlight docs
link: https://starlight.astro.build
icon: external
variant: minimal
---

import { Card, CardGrid } from '@astrojs/starlight/components';

## Next steps

<CardGrid stagger>
<Card title="Update content" icon="pencil">
Edit `src/content/docs/index.mdx` to see this page change.
</Card>
<Card title="Add new content" icon="add-document">
Add Markdown or MDX files to `src/content/docs` to create new pages.
</Card>
<Card title="Configure your site" icon="setting">
Edit your `sidebar` and other config in `astro.config.mjs`.
</Card>
<Card title="Read the docs" icon="open-book">
Learn more in [the Starlight Docs](https://starlight.astro.build/).
</Card>
</CardGrid>
11 changes: 11 additions & 0 deletions apps/docs/src/content/docs/reference/example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Example Reference
description: A reference page in my new Starlight docs site.
---

Reference pages are ideal for outlining how things work in terse and clear terms.
Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting.

## Further reading

- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework
2 changes: 2 additions & 0 deletions apps/docs/src/env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/// <reference path="../.astro/types.d.ts" />
/// <reference types="astro/client" />
4 changes: 4 additions & 0 deletions apps/docs/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "astro/tsconfigs/strict",
"exclude": ["./src/content/code-example/**/*"]
}
Binary file modified bun.lockb
Binary file not shown.

0 comments on commit daa92ca

Please sign in to comment.