From 6ff6cee76095a759b2caa0810a4fa3ca6965fd2a Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Mon, 25 Sep 2023 17:41:59 -0400 Subject: [PATCH] Made a bit of the tutorial and updated cli --- documentation/images/Step2.png | Bin 0 -> 29200 bytes documentation/images/Step4Login.png | Bin 0 -> 44728 bytes documentation/images/Step4Logout.png | Bin 0 -> 20900 bytes documentation/solid-react-tutorial.md | 240 ++++++++++++++++++ package-lock.json | 8 +- packages/cli/package.json | 3 +- packages/cli/src/init.ts | 6 +- packages/demo-react/src/Layout.tsx | 8 +- .../Dashboard.tsx => blog/Blog.tsx} | 12 +- .../UploadButton.tsx => blog/MakePost.tsx} | 2 +- .../{media/MediaPost.tsx => post/Post.tsx} | 2 +- .../MediaPage.tsx => post/PostPage.tsx} | 6 +- .../src/{media => post}/PostedBy.tsx | 0 13 files changed, 265 insertions(+), 22 deletions(-) create mode 100644 documentation/images/Step2.png create mode 100644 documentation/images/Step4Login.png create mode 100644 documentation/images/Step4Logout.png create mode 100644 documentation/solid-react-tutorial.md rename packages/demo-react/src/{dashboard/Dashboard.tsx => blog/Blog.tsx} (66%) rename packages/demo-react/src/{dashboard/UploadButton.tsx => blog/MakePost.tsx} (97%) rename packages/demo-react/src/{media/MediaPost.tsx => post/Post.tsx} (94%) rename packages/demo-react/src/{media/MediaPage.tsx => post/PostPage.tsx} (66%) rename packages/demo-react/src/{media => post}/PostedBy.tsx (100%) diff --git a/documentation/images/Step2.png b/documentation/images/Step2.png new file mode 100644 index 0000000000000000000000000000000000000000..5efcc6a7f65f8ba870f6b5334503bcf29d9a2d3b GIT binary patch literal 29200 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

f#;J-HM(}4&*kqZt(DBL}DN)2E_ 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 EKdCL0uK)l5 literal 0 HcmV?d00001 diff --git a/documentation/images/Step4Logout.png b/documentation/images/Step4Logout.png new file mode 100644 index 0000000000000000000000000000000000000000..5c919042ff3fa360450ac5ad97358f02ef8de293 GIT binary patch literal 20900 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 literal 0 HcmV?d00001 diff --git a/documentation/solid-react-tutorial.md b/documentation/solid-react-tutorial.md new file mode 100644 index 0000000..0c3785c --- /dev/null +++ b/documentation/solid-react-tutorial.md @@ -0,0 +1,240 @@ +# Using LDO to build a Solid Application for React + +Solid separates the application from the storage, allowing users to put their data wherever they choose. Core to achieving this is application interoparability, the ability to use multiple apps on the same dataset. In order to make applications interoperable, Solid is standardized around RDF (Resource Description Framework), a standard for representing data. While RDF is extremely flexible, it is sometimes cumbersome to work with, that's where LDO (Linked Data Objects) comes in. + +In this tutorial, we'll build a web application for Solid using React and LDO. LDO's react library, "@ldobjects/solid-react" is designed to make it easy to manipulate data on a Solid Pod. + +We'll be making a simple micro-blogging website that allows you to write notes and upload photos. + +// TODO insert image + +This tutorial assumes that you are already familiar with React and the overall concepts associated with Solid. + +## 1. Getting Started + +First, we'll initialize the project. LDO is designed to work with TypeScript, so we want to initialize a typescript react project. + +```bash +npx create-react-app my-solid-app --template typescript +cd my-solid-app +``` + +## 2. Setting up a basic app infrastructure + +Before we can use LDO and connect to a Solid Pod, let's get the boilerplace React infrastructure out of the way. We'll set up a single page that renders your blog timeline and lets you make new posts, and we'll do this with 5 components: + +**App.tsx**: Base of the application. +```tsx +import React, { FunctionComponent } from 'react'; +import { Header } from './Header'; +import { Blog } from './Blog'; + +export const App: FunctionComponent = () => { + return ( +

+
+ +
+ ); +} +``` + +**Header.tsx**: A header component that will help the user log in. +```tsx +import { FunctionComponent } from "react"; + +export const Header: FunctionComponent = () => { + return ( +
+

Header

+
+
+ ); +}; +``` + +**Blog.tsx**: The main place for the blog timeline. We'll use this component to list all posts you've made. +```tsx +import { FunctionComponent } from "react"; +import { MakePost } from "./MakePost"; +import { Post } from "./Post"; + +export const Blog: FunctionComponent = () => { + return ( +
+ +
+ +
+ ); +}; +``` + +**MakePost.tsx**: A form to submit new posts. We've already wired it up with form elements to create a text body and upload an image for the post. We just need to fill out the `onSubmit` function. +```tsx +import { FormEvent, FunctionComponent, useCallback, useState } from "react"; + +export const MakePost: FunctionComponent = () => { + const [message, setMessage] = useState(""); + const [selectedFile, setSelectedFile] = useState(); + + const onSubmit = useCallback( + (e: FormEvent) => { + e.preventDefault(); + + // TODO upload functionality + }, + [message, selectedFile] + ); + + return ( +
+ setMessage(e.target.value)} + /> + setSelectedFile(e.target.files?.[0])} + /> + +
+ ); +}; +``` + +**Post.tsx**: A component to render a single post. +```tsx +import { FunctionComponent } from "react"; + +export const Post: FunctionComponent = () => { + return ( +
+

Post

+
+ ); +}; +``` + +When everything's done, run `npm run start` and your application should look like this: + +![What the site should like after step 2 is complete.](./images/Step2.png) + +## Step 3: Installing LDO for Solid and React + +With the main infrastructure set up, let's install LDO's Solid/React library. + +```bash +npm install @ldobjects/solid-react +``` + +This library will give us many useful hooks and components for building a Solid application, but it can't be used unless we wrap the application in a provider. Because we're building a React application in the web browser, we'll wrap the application using the `BrowserSolidLdoProvider`. + +**App.tsx** +```tsx +// ... +import { BrowserSolidLdoProvider } from '@ldobjects/solid-react'; + +export const App: FunctionComponent = () => { + return ( +
+ +
+ + +
+ ); +} +``` + +## 4. Implementing Login/Logout in the header + +Setting up login for a Solid application is easy when you're using ldo's Solid React library. With the `useSolidAuth()` hook, you can get information and methods to setup login. + +In the component below, we use the `session` object for information about the current session including `session.isLoggedIn`, a boolean indicating if the user is currently logged in, and `session.webId` to get the current user's webId. These will automatically update and rerender the component if anything changes about the current session. + +Next we use the `login(issuer: string)` method to initiate a login. Because a Solid Pod could be anywhere onthe web, we first ask the user to enter their Solid issuer then provide that to the login function. + +Finally, the `logout()` function lets you easily trigger a log out. + +**Header.tsx** +```tsx +import { useSolidAuth } from "@ldobjects/solid-react"; +import { FunctionComponent } from "react"; + +export const Header: FunctionComponent = () => { + const { session, login, logout } = useSolidAuth(); + + return ( +
+ {session.isLoggedIn ? ( + // Is the session is logged in +

+ You are logged in with the webId {session.webId}.{" "} + +

+ ) : ( + // If the session is not logged in +

+ You are not Logged In{" "} + +

+ )} +
+
+ ); +}; +``` + +Because `useSolidAuth` is a hook, you can use it anywhere in the application, even components that don't contain buttons for "login" and "logout." For example, we could use the `session` object in `Blog.tsx` to display a message if the user is not logged in. + +```tsx +import { FunctionComponent } from "react"; +import { MakePost } from "./MakePost"; +import { Post } from "./Post"; +import { useSolidAuth } from "@ldobjects/solid-react"; + +export const Blog: FunctionComponent = () => { + const { session } = useSolidAuth(); + if (!session.isLoggedIn) return

No blog available. Log in first.

; + + return ( +
+ // .. +
+ ); +}; + +``` + +Once you've implemented these changes, the application should look like this when logged out: + +![Your site when logged out after completing step 4.](./images/Step4Logout.png) + +And this when logged in: + +![Your site when in out after completing step 4.](./images/Step4Login.png) + +## 5. Setting up a shape +In step 6, we're going to use information from a user's Solid WebId profile. But, before we can do that, we want to set up a shape for the Solid Profile. + +LDO uses ShEx "Shapes" as schemas to describe how data looks in an application. We can get started by using the `init` command line tool to get the project ready to use shapes. + +```bash +npx @ldobjects/cli init +``` \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c1ae5d5..95136a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29412,7 +29412,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -36373,7 +36372,8 @@ "commander": "^9.3.0", "ejs": "^3.1.8", "fs-extra": "^10.1.0", - "loading-cli": "^1.1.0" + "loading-cli": "^1.1.0", + "prettier": "^3.0.3" }, "bin": { "ldo": "dist/index.js" @@ -48511,6 +48511,7 @@ "fs-extra": "^10.1.0", "jest": "^27.4.2", "loading-cli": "^1.1.0", + "prettier": "*", "rimraf": "^3.0.2", "ts-jest": "^27.0.7" }, @@ -68732,8 +68733,7 @@ "prettier": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" }, "prettier-linter-helpers": { "version": "1.0.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index e7e0fa9..5114305 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,7 +49,8 @@ "commander": "^9.3.0", "ejs": "^3.1.8", "fs-extra": "^10.1.0", - "loading-cli": "^1.1.0" + "loading-cli": "^1.1.0", + "prettier": "^3.0.3" }, "files": [ "dist" diff --git a/packages/cli/src/init.ts b/packages/cli/src/init.ts index a5567e7..2956d56 100644 --- a/packages/cli/src/init.ts +++ b/packages/cli/src/init.ts @@ -13,8 +13,10 @@ export interface InitOptions { export async function init(initOptions: InitOptions) { // Install dependencies - await exec("npm install ldo --save"); - await exec("npm install ldo-cli @types/shexj @types/jsonld --save-dev"); + await exec("npm install @ldobjects/ldo --save"); + await exec( + "npm install @ldobjects/cli @types/shexj @types/jsonld --save-dev", + ); // Find folder to save to let parentDirectory = initOptions.directory; diff --git a/packages/demo-react/src/Layout.tsx b/packages/demo-react/src/Layout.tsx index 9cdf3a7..bc50128 100644 --- a/packages/demo-react/src/Layout.tsx +++ b/packages/demo-react/src/Layout.tsx @@ -2,19 +2,19 @@ import { useSolidAuth } from "@ldobjects/solid-react"; import React from "react"; import type { FunctionComponent } from "react"; import { createBrowserRouter, RouterProvider } from "react-router-dom"; -import { Dashboard } from "./dashboard/Dashboard"; -import { MediaPage } from "./media/MediaPage"; +import { Blog } from "./blog/Blog"; +import { PostPage } from "./post/PostPage"; import { Header } from "./Header"; import { MainContainerProvider } from "./MainContainerProvider"; const router = createBrowserRouter([ { path: "/", - element: , + element: , }, { path: "/media/:uri", - element: , + element: , }, ]); diff --git a/packages/demo-react/src/dashboard/Dashboard.tsx b/packages/demo-react/src/blog/Blog.tsx similarity index 66% rename from packages/demo-react/src/dashboard/Dashboard.tsx rename to packages/demo-react/src/blog/Blog.tsx index 070ebc4..d9f1009 100644 --- a/packages/demo-react/src/dashboard/Dashboard.tsx +++ b/packages/demo-react/src/blog/Blog.tsx @@ -1,27 +1,27 @@ import React, { Fragment, useContext } from "react"; import type { FunctionComponent } from "react"; import { MainContainerContext } from "../MainContainerProvider"; -import { MediaPost } from "../media/MediaPost"; -import { UploadButton } from "./UploadButton"; +import { Post } from "../post/Post"; +import { MakePost } from "./MakePost"; -export const Dashboard: FunctionComponent = () => { +export const Blog: FunctionComponent = () => { const mainContainer = useContext(MainContainerContext); if (mainContainer === undefined) { return

Loading...

; } if (mainContainer.isDoingInitialFetch()) { - return

Loading Main Container

; + return

Loading Blob

; } return (
- +

{mainContainer.children().map((child) => ( - +
))} diff --git a/packages/demo-react/src/dashboard/UploadButton.tsx b/packages/demo-react/src/blog/MakePost.tsx similarity index 97% rename from packages/demo-react/src/dashboard/UploadButton.tsx rename to packages/demo-react/src/blog/MakePost.tsx index 7e287c2..d9aa58b 100644 --- a/packages/demo-react/src/dashboard/UploadButton.tsx +++ b/packages/demo-react/src/blog/MakePost.tsx @@ -5,7 +5,7 @@ import { v4 } from "uuid"; import { useLdo, useSolidAuth } from "@ldobjects/solid-react"; import { PostShShapeType } from "../.ldo/post.shapeTypes"; -export const UploadButton: FunctionComponent<{ mainContainer: Container }> = ({ +export const MakePost: FunctionComponent<{ mainContainer: Container }> = ({ mainContainer, }) => { const [message, setMessage] = useState(""); diff --git a/packages/demo-react/src/media/MediaPost.tsx b/packages/demo-react/src/post/Post.tsx similarity index 94% rename from packages/demo-react/src/media/MediaPost.tsx rename to packages/demo-react/src/post/Post.tsx index b6f985d..b389385 100644 --- a/packages/demo-react/src/media/MediaPost.tsx +++ b/packages/demo-react/src/post/Post.tsx @@ -5,7 +5,7 @@ import { PostShShapeType } from "../.ldo/post.shapeTypes"; import { useNavigate } from "react-router-dom"; import { PostedBy } from "./PostedBy"; -export const MediaPost: FunctionComponent<{ uri: string }> = ({ uri }) => { +export const Post: FunctionComponent<{ uri: string }> = ({ uri }) => { const navigate = useNavigate(); const mediaResource = useResource(`${uri}index.ttl`); const post = useSubject(PostShShapeType, mediaResource.uri); diff --git a/packages/demo-react/src/media/MediaPage.tsx b/packages/demo-react/src/post/PostPage.tsx similarity index 66% rename from packages/demo-react/src/media/MediaPage.tsx rename to packages/demo-react/src/post/PostPage.tsx index ad446ce..bc5e144 100644 --- a/packages/demo-react/src/media/MediaPage.tsx +++ b/packages/demo-react/src/post/PostPage.tsx @@ -1,16 +1,16 @@ import React from "react"; import type { FunctionComponent } from "react"; import { useNavigate, useParams } from "react-router-dom"; -import { MediaPost } from "./MediaPost"; +import { Post } from "./Post"; -export const MediaPage: FunctionComponent = () => { +export const PostPage: FunctionComponent = () => { const navigate = useNavigate(); const { uri } = useParams(); return (
- {uri ? :

No URI Present

} + {uri ? :

No URI Present

}
); }; diff --git a/packages/demo-react/src/media/PostedBy.tsx b/packages/demo-react/src/post/PostedBy.tsx similarity index 100% rename from packages/demo-react/src/media/PostedBy.tsx rename to packages/demo-react/src/post/PostedBy.tsx