Skip to content

Commit 1036e22

Browse files
authored
Merge pull request #487 from permitio/tk-add-other-code-examples
add other code examples page
2 parents fc4baa2 + c9c2b57 commit 1036e22

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: Other Code Examples
3+
description: Explore our collection of example repositories demonstrating Permit.io integration
4+
sidebar_position: 6
5+
---
6+
### Why These Examples?
7+
8+
Permit.io simplifies implementing **fine-grained access control** by providing powerful tools like Policy as Code, Attribute-Based Access Control (ABAC), data sync for [ReBAC](https://docs.permit.io/how-to/build-policies/rebac/overview), and seamless integration with modern frameworks. These examples illustrate how you can:
9+
10+
- Leverage Permit.io to streamline your access management.
11+
- Integrate Permit.io with popular frameworks and platforms.
12+
- Build secure and scalable permission models tailored to your application's needs.
13+
14+
### Available Code Examples
15+
16+
The following repositories are live examples showcasing Permit.io's capabilities. Explore them to better understand how to use Permit.io in your projects:
17+
18+
import GitHubExamples from '@site/src/components/GitHubExamples';
19+
20+
<GitHubExamples />

src/components/GitHubExamples.jsx

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import React, { useEffect, useState } from 'react';
2+
3+
const GitHubIcon = () => (
4+
<svg height="20" width="20" viewBox="0 0 16 16" fill="currentColor">
5+
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/>
6+
</svg>
7+
);
8+
9+
const RepoCard = ({ repo }) => (
10+
<article className="col col--12 margin-bottom--lg" style={{ padding: 0 }}>
11+
<a
12+
href={repo.html_url}
13+
target="_blank"
14+
rel="noopener noreferrer"
15+
className="card"
16+
style={{
17+
textDecoration: 'none',
18+
color: 'inherit',
19+
backgroundColor: 'var(--ifm-color-emphasis-100)'
20+
}}
21+
>
22+
<div className="card__header">
23+
<h3 style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
24+
<GitHubIcon />
25+
{repo.name}
26+
</h3>
27+
</div>
28+
<div className="card__body">
29+
<p>{repo.description || 'No description available.'}</p>
30+
</div>
31+
</a>
32+
</article>
33+
);
34+
35+
export default function GitHubExamples() {
36+
const [repos, setRepos] = useState([]);
37+
38+
useEffect(() => {
39+
fetch('https://api.github.com/search/repositories?q=org:permitio+example+in:name+archived:false&sort=updated&order=desc')
40+
.then(response => response.json())
41+
.then(data => {
42+
const filteredRepos = data.items.filter(repo =>
43+
repo.name.toLowerCase().includes('example') ||
44+
repo.name.toLowerCase().includes('demo')
45+
);
46+
setRepos(filteredRepos);
47+
})
48+
.catch(error => console.error('Error fetching repos:', error));
49+
}, []);
50+
51+
return (
52+
<div className="row">
53+
{repos.map(repo => (
54+
<RepoCard key={repo.id} repo={repo} />
55+
))}
56+
</div>
57+
);
58+
}

0 commit comments

Comments
 (0)